diff --git a/.pulumi-java-gen.version b/.pulumi-java-gen.version
index a881cf79f2..1db0edecc0 100644
--- a/.pulumi-java-gen.version
+++ b/.pulumi-java-gen.version
@@ -1 +1 @@
-0.20.0
\ No newline at end of file
+0.21.0
\ No newline at end of file
diff --git a/patches/0001-Allow-disabling-the-partner-name.patch b/patches/0001-Allow-disabling-the-partner-name.patch
index 05db7c4ebd..72994bceb3 100644
--- a/patches/0001-Allow-disabling-the-partner-name.patch
+++ b/patches/0001-Allow-disabling-the-partner-name.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] Allow disabling the partner name
Add options to set or disable partner name.
diff --git a/google-beta/provider/provider.go b/google-beta/provider/provider.go
-index 16a0bcf26..8f31ba934 100644
+index 02e416341..97cef6303 100644
--- a/google-beta/provider/provider.go
+++ b/google-beta/provider/provider.go
@@ -125,6 +125,19 @@ func Provider() *schema.Provider {
@@ -29,7 +29,7 @@ index 16a0bcf26..8f31ba934 100644
"request_reason": {
Type: schema.TypeString,
Optional: true,
-@@ -943,6 +956,21 @@ func ProviderConfigure(ctx context.Context, d *schema.ResourceData, p *schema.Pr
+@@ -948,6 +961,21 @@ func ProviderConfigure(ctx context.Context, d *schema.ResourceData, p *schema.Pr
UserAgent: p.UserAgent("terraform-provider-google-beta", version.ProviderVersion),
}
diff --git a/patches/0002-Add-nil-checks-for-sql-database-instance-flattening.patch b/patches/0002-Add-nil-checks-for-sql-database-instance-flattening.patch
index 514366a237..704212760a 100644
--- a/patches/0002-Add-nil-checks-for-sql-database-instance-flattening.patch
+++ b/patches/0002-Add-nil-checks-for-sql-database-instance-flattening.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add nil checks for sql database instance flattening
diff --git a/google-beta/services/sql/resource_sql_database_instance.go b/google-beta/services/sql/resource_sql_database_instance.go
-index b0c5b32c7..94ae4dc64 100644
+index 90ed41ee9..68417874b 100644
--- a/google-beta/services/sql/resource_sql_database_instance.go
+++ b/google-beta/services/sql/resource_sql_database_instance.go
@@ -2180,6 +2180,10 @@ func resourceSqlDatabaseInstanceImport(d *schema.ResourceData, meta interface{})
diff --git a/patches/0003-rebase-bigquery_dataset.patch b/patches/0003-rebase-bigquery_dataset.patch
index d64d218acd..e228de297a 100644
--- a/patches/0003-rebase-bigquery_dataset.patch
+++ b/patches/0003-rebase-bigquery_dataset.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] rebase bigquery_dataset
diff --git a/google-beta/services/bigquery/resource_bigquery_dataset.go b/google-beta/services/bigquery/resource_bigquery_dataset.go
-index 32a63f07d..a981f8d87 100644
+index 961e8f318..dbcc430c3 100644
--- a/google-beta/services/bigquery/resource_bigquery_dataset.go
+++ b/google-beta/services/bigquery/resource_bigquery_dataset.go
-@@ -762,8 +762,13 @@ func resourceBigQueryDatasetRead(d *schema.ResourceData, meta interface{}) error
+@@ -797,8 +797,13 @@ func resourceBigQueryDatasetRead(d *schema.ResourceData, meta interface{}) error
if err := d.Set("effective_labels", flattenBigQueryDatasetEffectiveLabels(res["labels"], d, config)); err != nil {
return fmt.Errorf("Error reading Dataset: %s", err)
}
diff --git a/patches/0005-docs-patching.patch b/patches/0005-docs-patching.patch
index abc4687924..349d1c70a0 100644
--- a/patches/0005-docs-patching.patch
+++ b/patches/0005-docs-patching.patch
@@ -160,10 +160,10 @@ index ab54b615d..2ed6376e4 100644
* `default_expiration` -
(Optional)
diff --git a/website/docs/r/bigquery_job.html.markdown b/website/docs/r/bigquery_job.html.markdown
-index 8eeb84614..4d5284637 100644
+index 56f90a480..6777bfca7 100644
--- a/website/docs/r/bigquery_job.html.markdown
+++ b/website/docs/r/bigquery_job.html.markdown
-@@ -721,8 +721,8 @@ The following arguments are supported:
+@@ -711,8 +711,8 @@ The following arguments are supported:
* `null_marker` -
(Optional)
@@ -175,7 +175,7 @@ index 8eeb84614..4d5284637 100644
an empty value.
diff --git a/website/docs/r/bigquery_table.html.markdown b/website/docs/r/bigquery_table.html.markdown
-index 75c460cc7..294d64298 100644
+index 0a4893bed..6d4b314ce 100644
--- a/website/docs/r/bigquery_table.html.markdown
+++ b/website/docs/r/bigquery_table.html.markdown
@@ -11,7 +11,7 @@ Creates a table resource in a dataset for Google BigQuery. For more information
@@ -200,7 +200,7 @@ index 75c460cc7..294d64298 100644
* `table_constraints` - (Optional) Defines the primary key and foreign keys.
Structure is [documented below](#nested_table_constraints).
-@@ -275,8 +273,8 @@ The following arguments are supported:
+@@ -280,8 +278,8 @@ The following arguments are supported:
CSV file. If your data does not contain quoted sections, set the
property value to an empty string. If your data contains quoted newline
characters, you must also set the `allow_quoted_newlines` property to true.
@@ -669,7 +669,7 @@ index df91843c5..40b452e03 100644
## Attributes Reference
diff --git a/website/docs/r/compute_instance.html.markdown b/website/docs/r/compute_instance.html.markdown
-index acd46bad2..47060bb12 100644
+index a9d0efc64..794b8b8d4 100644
--- a/website/docs/r/compute_instance.html.markdown
+++ b/website/docs/r/compute_instance.html.markdown
@@ -140,7 +140,7 @@ The following arguments are supported:
@@ -825,7 +825,7 @@ index c7a253e6d..fd7c0580c 100644
## Attributes Reference
diff --git a/website/docs/r/compute_instance_template.html.markdown b/website/docs/r/compute_instance_template.html.markdown
-index 88a604fa4..9c8259586 100644
+index b73f4c095..7b4923115 100644
--- a/website/docs/r/compute_instance_template.html.markdown
+++ b/website/docs/r/compute_instance_template.html.markdown
@@ -183,12 +183,11 @@ resource "google_compute_instance_template" "foobar" {
@@ -3363,7 +3363,7 @@ index fe9f8b04a..f1ca040b9 100644
~> **Note:** Once created, this resource cannot be updated or destroyed. These
diff --git a/website/docs/r/redis_instance.html.markdown b/website/docs/r/redis_instance.html.markdown
-index 3399b32cf..4b19f8a4e 100644
+index f4e44aed8..f9ed9e443 100644
--- a/website/docs/r/redis_instance.html.markdown
+++ b/website/docs/r/redis_instance.html.markdown
@@ -66,7 +66,7 @@ resource "google_redis_instance" "cache" {
@@ -3558,7 +3558,7 @@ index b6e4a06bd..a775c628e 100644
The `encryption_config` block supports:
diff --git a/website/docs/r/sql_database_instance.html.markdown b/website/docs/r/sql_database_instance.html.markdown
-index edcfd4544..c645159d5 100644
+index f6193b91d..3be112b5e 100644
--- a/website/docs/r/sql_database_instance.html.markdown
+++ b/website/docs/r/sql_database_instance.html.markdown
@@ -10,12 +10,12 @@ Creates a new Google SQL Database Instance. For more information, see the [offic
diff --git a/patches/0007-Remove-duplicative-resource-token.patch b/patches/0007-Remove-duplicative-resource-token.patch
index 5898c88ca3..71f2205804 100644
--- a/patches/0007-Remove-duplicative-resource-token.patch
+++ b/patches/0007-Remove-duplicative-resource-token.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Remove duplicative resource token
diff --git a/google-beta/provider/provider.go b/google-beta/provider/provider.go
-index 8f31ba934..d21aebbde 100644
+index 97cef6303..24b310860 100644
--- a/google-beta/provider/provider.go
+++ b/google-beta/provider/provider.go
-@@ -916,6 +916,15 @@ func Provider() *schema.Provider {
+@@ -921,6 +921,15 @@ func Provider() *schema.Provider {
func DatasourceMap() map[string]*schema.Resource {
datasourceMap, _ := DatasourceMapWithErrors()
diff --git a/patches/0008-Fix-794-with-an-unconditional-read.patch b/patches/0008-Fix-794-with-an-unconditional-read.patch
index 847814a79e..f1d8c3995d 100644
--- a/patches/0008-Fix-794-with-an-unconditional-read.patch
+++ b/patches/0008-Fix-794-with-an-unconditional-read.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Fix #794 with an unconditional read.
diff --git a/google-beta/services/sql/resource_sql_database_instance.go b/google-beta/services/sql/resource_sql_database_instance.go
-index 94ae4dc64..b20e756d1 100644
+index 68417874b..b601cb663 100644
--- a/google-beta/services/sql/resource_sql_database_instance.go
+++ b/google-beta/services/sql/resource_sql_database_instance.go
@@ -2009,10 +2009,11 @@ func resourceSqlDatabaseInstanceUpdate(d *schema.ResourceData, meta interface{})
diff --git a/patches/0010-Rename-default-provisioning-label-to-goog-pulumi-pro.patch b/patches/0010-Rename-default-provisioning-label-to-goog-pulumi-pro.patch
index 3134b4b44a..e15b1c4332 100644
--- a/patches/0010-Rename-default-provisioning-label-to-goog-pulumi-pro.patch
+++ b/patches/0010-Rename-default-provisioning-label-to-goog-pulumi-pro.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Rename default provisioning label to goog-pulumi-provisioned
diff --git a/google-beta/transport/config.go b/google-beta/transport/config.go
-index 840d0cb0e..9bc2c3ab2 100644
+index 742d3fc5e..184515ff6 100644
--- a/google-beta/transport/config.go
+++ b/google-beta/transport/config.go
-@@ -668,7 +668,7 @@ var DefaultClientScopes = []string{
+@@ -671,7 +671,7 @@ var DefaultClientScopes = []string{
"https://www.googleapis.com/auth/userinfo.email",
}
diff --git a/provider/cmd/pulumi-resource-gcp/bridge-metadata.json b/provider/cmd/pulumi-resource-gcp/bridge-metadata.json
index d5c56640ef..636ebbd12e 100644
--- a/provider/cmd/pulumi-resource-gcp/bridge-metadata.json
+++ b/provider/cmd/pulumi-resource-gcp/bridge-metadata.json
@@ -2057,6 +2057,9 @@
}
}
}
+ },
+ "vulnerability_scanning_config": {
+ "maxItemsOne": true
}
}
},
@@ -2518,6 +2521,9 @@
"maxItemsOne": false,
"elem": {
"fields": {
+ "condition": {
+ "maxItemsOne": true
+ },
"dataset": {
"maxItemsOne": true,
"elem": {
@@ -2555,6 +2561,9 @@
"current": "gcp:bigquery/datasetAccess:DatasetAccess",
"majorVersion": 8,
"fields": {
+ "condition": {
+ "maxItemsOne": true
+ },
"dataset": {
"maxItemsOne": true,
"elem": {
@@ -2765,6 +2774,23 @@
"encryption_configuration": {
"maxItemsOne": true
},
+ "external_catalog_table_options": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "storage_descriptor": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "serde_info": {
+ "maxItemsOne": true
+ }
+ }
+ }
+ }
+ }
+ }
+ },
"external_data_configuration": {
"maxItemsOne": true,
"elem": {
@@ -3352,6 +3378,28 @@
}
}
},
+ "google_chronicle_watchlist": {
+ "current": "gcp:chronicle/watchlist:Watchlist",
+ "majorVersion": 8,
+ "fields": {
+ "entity_count": {
+ "maxItemsOne": false
+ },
+ "entity_population_mechanism": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "manual": {
+ "maxItemsOne": true
+ }
+ }
+ }
+ },
+ "watchlist_user_preferences": {
+ "maxItemsOne": true
+ }
+ }
+ },
"google_cloud_asset_folder_feed": {
"current": "gcp:cloudasset/folderFeed:FolderFeed",
"majorVersion": 8,
@@ -5200,6 +5248,9 @@
"maxItemsOne": true,
"elem": {
"fields": {
+ "airflow_metadata_retention_config": {
+ "maxItemsOne": false
+ },
"task_logs_retention_config": {
"maxItemsOne": false
}
@@ -16203,6 +16254,9 @@
"maxItemsOne": true,
"elem": {
"fields": {
+ "binary_log_position": {
+ "maxItemsOne": true
+ },
"exclude_objects": {
"maxItemsOne": true,
"elem": {
@@ -16227,6 +16281,9 @@
}
}
},
+ "gtid": {
+ "maxItemsOne": true
+ },
"include_objects": {
"maxItemsOne": true,
"elem": {
@@ -19700,6 +19757,176 @@
}
}
},
+ "google_gkeonprem_vmware_admin_cluster": {
+ "current": "gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster",
+ "majorVersion": 8,
+ "fields": {
+ "addon_node": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "auto_resize_config": {
+ "maxItemsOne": true
+ }
+ }
+ }
+ },
+ "anti_affinity_groups": {
+ "maxItemsOne": true
+ },
+ "authorization": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "viewer_users": {
+ "maxItemsOne": false
+ }
+ }
+ }
+ },
+ "auto_repair_config": {
+ "maxItemsOne": true
+ },
+ "control_plane_node": {
+ "maxItemsOne": true
+ },
+ "fleet": {
+ "maxItemsOne": false
+ },
+ "load_balancer": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "f5_config": {
+ "maxItemsOne": true
+ },
+ "manual_lb_config": {
+ "maxItemsOne": true
+ },
+ "metal_lb_config": {
+ "maxItemsOne": true
+ },
+ "vip_config": {
+ "maxItemsOne": true
+ }
+ }
+ }
+ },
+ "network_config": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "dhcp_ip_config": {
+ "maxItemsOne": true
+ },
+ "ha_control_plane_config": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "control_plane_ip_block": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "ips": {
+ "maxItemsOne": false
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "host_config": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "dns_search_domains": {
+ "maxItemsOne": false
+ },
+ "dns_servers": {
+ "maxItemsOne": false
+ },
+ "ntp_servers": {
+ "maxItemsOne": false
+ }
+ }
+ }
+ },
+ "pod_address_cidr_blocks": {
+ "maxItemsOne": false
+ },
+ "service_address_cidr_blocks": {
+ "maxItemsOne": false
+ },
+ "static_ip_config": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "ip_blocks": {
+ "maxItemsOne": false,
+ "elem": {
+ "fields": {
+ "ips": {
+ "maxItemsOne": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "platform_config": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "bundles": {
+ "maxItemsOne": false,
+ "elem": {
+ "fields": {
+ "status": {
+ "maxItemsOne": false,
+ "elem": {
+ "fields": {
+ "conditions": {
+ "maxItemsOne": false
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "maxItemsOne": false,
+ "elem": {
+ "fields": {
+ "conditions": {
+ "maxItemsOne": false
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "status": {
+ "maxItemsOne": false,
+ "elem": {
+ "fields": {
+ "conditions": {
+ "maxItemsOne": false
+ }
+ }
+ }
+ },
+ "vcenter": {
+ "maxItemsOne": true
+ }
+ }
+ },
"google_gkeonprem_vmware_cluster": {
"current": "gcp:gkeonprem/vMwareCluster:VMwareCluster",
"majorVersion": 8,
@@ -22930,6 +23157,19 @@
}
}
},
+ "google_network_security_intercept_endpoint_group": {
+ "current": "gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup",
+ "majorVersion": 8
+ },
+ "google_network_security_intercept_endpoint_group_association": {
+ "current": "gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation",
+ "majorVersion": 8,
+ "fields": {
+ "locations_details": {
+ "maxItemsOne": false
+ }
+ }
+ },
"google_network_security_mirroring_deployment": {
"current": "gcp:networksecurity/mirroringDeployment:MirroringDeployment",
"majorVersion": 8
@@ -27662,6 +27902,10 @@
}
}
},
+ "google_storage_folder": {
+ "current": "gcp:storage/folder:Folder",
+ "majorVersion": 8
+ },
"google_storage_hmac_key": {
"current": "gcp:storage/hmacKey:HmacKey",
"majorVersion": 8
@@ -27786,6 +28030,35 @@
}
}
},
+ "replication_spec": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "gcs_data_sink": {
+ "maxItemsOne": true
+ },
+ "gcs_data_source": {
+ "maxItemsOne": true
+ },
+ "object_conditions": {
+ "maxItemsOne": true,
+ "elem": {
+ "fields": {
+ "exclude_prefixes": {
+ "maxItemsOne": false
+ },
+ "include_prefixes": {
+ "maxItemsOne": false
+ }
+ }
+ }
+ },
+ "transfer_options": {
+ "maxItemsOne": true
+ }
+ }
+ }
+ },
"schedule": {
"maxItemsOne": true,
"elem": {
@@ -29507,6 +29780,9 @@
}
}
}
+ },
+ "vulnerability_scanning_config": {
+ "maxItemsOne": false
}
}
},
@@ -29693,6 +29969,9 @@
"maxItemsOne": false,
"elem": {
"fields": {
+ "condition": {
+ "maxItemsOne": false
+ },
"dataset": {
"maxItemsOne": false,
"elem": {
@@ -30869,6 +31148,9 @@
"maxItemsOne": false,
"elem": {
"fields": {
+ "airflow_metadata_retention_config": {
+ "maxItemsOne": false
+ },
"task_logs_retention_config": {
"maxItemsOne": false
}
@@ -33749,6 +34031,181 @@
"current": "gcp:gkebackup/getRestorePlanIamPolicy:getRestorePlanIamPolicy",
"majorVersion": 8
},
+ "google_gke_hub_feature": {
+ "current": "gcp:gkehub/getFeature:getFeature",
+ "majorVersion": 8,
+ "fields": {
+ "fleet_default_member_config": {
+ "maxItemsOne": false,
+ "elem": {
+ "fields": {
+ "configmanagement": {
+ "maxItemsOne": false,
+ "elem": {
+ "fields": {
+ "config_sync": {
+ "maxItemsOne": false,
+ "elem": {
+ "fields": {
+ "git": {
+ "maxItemsOne": false
+ },
+ "oci": {
+ "maxItemsOne": false
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "mesh": {
+ "maxItemsOne": false
+ },
+ "policycontroller": {
+ "maxItemsOne": false,
+ "elem": {
+ "fields": {
+ "policy_controller_hub_config": {
+ "maxItemsOne": false,
+ "elem": {
+ "fields": {
+ "deployment_configs": {
+ "maxItemsOne": false,
+ "elem": {
+ "fields": {
+ "container_resources": {
+ "maxItemsOne": false,
+ "elem": {
+ "fields": {
+ "limits": {
+ "maxItemsOne": false
+ },
+ "requests": {
+ "maxItemsOne": false
+ }
+ }
+ }
+ },
+ "pod_toleration": {
+ "maxItemsOne": false
+ }
+ }
+ }
+ },
+ "exemptable_namespaces": {
+ "maxItemsOne": false
+ },
+ "monitoring": {
+ "maxItemsOne": false,
+ "elem": {
+ "fields": {
+ "backends": {
+ "maxItemsOne": false
+ }
+ }
+ }
+ },
+ "policy_content": {
+ "maxItemsOne": false,
+ "elem": {
+ "fields": {
+ "bundles": {
+ "maxItemsOne": false,
+ "elem": {
+ "fields": {
+ "exempted_namespaces": {
+ "maxItemsOne": false
+ }
+ }
+ }
+ },
+ "template_library": {
+ "maxItemsOne": false
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "resource_state": {
+ "maxItemsOne": false
+ },
+ "spec": {
+ "maxItemsOne": false,
+ "elem": {
+ "fields": {
+ "clusterupgrade": {
+ "maxItemsOne": false,
+ "elem": {
+ "fields": {
+ "gke_upgrade_overrides": {
+ "maxItemsOne": false,
+ "elem": {
+ "fields": {
+ "post_conditions": {
+ "maxItemsOne": false
+ },
+ "upgrade": {
+ "maxItemsOne": false
+ }
+ }
+ }
+ },
+ "post_conditions": {
+ "maxItemsOne": false
+ },
+ "upstream_fleets": {
+ "maxItemsOne": false
+ }
+ }
+ }
+ },
+ "fleetobservability": {
+ "maxItemsOne": false,
+ "elem": {
+ "fields": {
+ "logging_config": {
+ "maxItemsOne": false,
+ "elem": {
+ "fields": {
+ "default_config": {
+ "maxItemsOne": false
+ },
+ "fleet_scope_logs_config": {
+ "maxItemsOne": false
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "multiclusteringress": {
+ "maxItemsOne": false
+ }
+ }
+ }
+ },
+ "state": {
+ "maxItemsOne": false,
+ "elem": {
+ "fields": {
+ "state": {
+ "maxItemsOne": false
+ }
+ }
+ }
+ }
+ }
+ },
"google_gke_hub_feature_iam_policy": {
"current": "gcp:gkehub/getFeatureIamPolicy:getFeatureIamPolicy",
"majorVersion": 8
@@ -33937,6 +34394,10 @@
"current": "gcp:iap/getWebTypeComputeIamPolicy:getWebTypeComputeIamPolicy",
"majorVersion": 8
},
+ "google_kms_autokey_config": {
+ "current": "gcp:kms/getAutokeyConfig:getAutokeyConfig",
+ "majorVersion": 8
+ },
"google_kms_crypto_key": {
"current": "gcp:kms/getKMSCryptoKey:getKMSCryptoKey",
"majorVersion": 8,
@@ -34033,6 +34494,10 @@
"current": "gcp:kms/getEkmConnectionIamPolicy:getEkmConnectionIamPolicy",
"majorVersion": 8
},
+ "google_kms_key_handle": {
+ "current": "gcp:kms/getKeyHandle:getKeyHandle",
+ "majorVersion": 8
+ },
"google_kms_key_ring": {
"current": "gcp:kms/getKMSKeyRing:getKMSKeyRing",
"majorVersion": 8
@@ -36614,6 +37079,14 @@
"effective_labels",
"terraform_labels"
],
+ "google_network_security_intercept_endpoint_group": [
+ "effective_labels",
+ "terraform_labels"
+ ],
+ "google_network_security_intercept_endpoint_group_association": [
+ "effective_labels",
+ "terraform_labels"
+ ],
"google_network_security_mirroring_deployment": [
"effective_labels",
"terraform_labels"
@@ -36980,6 +37453,10 @@
"effective_labels",
"terraform_labels"
],
+ "google_gke_hub_feature": [
+ "effective_labels",
+ "terraform_labels"
+ ],
"google_gke_hub_membership_binding": [
"effective_labels",
"terraform_labels"
@@ -37249,6 +37726,7 @@
"gcp:certificatemanager/certificateMapEntry:CertificateMapEntry": 0,
"gcp:certificatemanager/dnsAuthorization:DnsAuthorization": 0,
"gcp:certificatemanager/trustConfig:TrustConfig": 0,
+ "gcp:chronicle/watchlist:Watchlist": 0,
"gcp:cloudasset/folderFeed:FolderFeed": 0,
"gcp:cloudasset/organizationFeed:OrganizationFeed": 0,
"gcp:cloudasset/projectFeed:ProjectFeed": 0,
@@ -37688,6 +38166,7 @@
"gcp:gkeonprem/bareMetalNodePool:BareMetalNodePool": 0,
"gcp:gkeonprem/vMwareCluster:VMwareCluster": 0,
"gcp:gkeonprem/vMwareNodePool:VMwareNodePool": 0,
+ "gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster": 0,
"gcp:healthcare/consentStore:ConsentStore": 0,
"gcp:healthcare/consentStoreIamBinding:ConsentStoreIamBinding": 0,
"gcp:healthcare/consentStoreIamMember:ConsentStoreIamMember": 0,
@@ -37852,6 +38331,8 @@
"gcp:networksecurity/gatewaySecurityPolicyRule:GatewaySecurityPolicyRule": 0,
"gcp:networksecurity/interceptDeployment:InterceptDeployment": 0,
"gcp:networksecurity/interceptDeploymentGroup:InterceptDeploymentGroup": 0,
+ "gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup": 0,
+ "gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation": 0,
"gcp:networksecurity/mirroringDeployment:MirroringDeployment": 0,
"gcp:networksecurity/mirroringDeploymentGroup:MirroringDeploymentGroup": 0,
"gcp:networksecurity/mirroringEndpointGroup:MirroringEndpointGroup": 0,
@@ -38048,6 +38529,7 @@
"gcp:storage/bucketObject:BucketObject": 0,
"gcp:storage/defaultObjectACL:DefaultObjectACL": 0,
"gcp:storage/defaultObjectAccessControl:DefaultObjectAccessControl": 0,
+ "gcp:storage/folder:Folder": 0,
"gcp:storage/hmacKey:HmacKey": 0,
"gcp:storage/insightsReportConfig:InsightsReportConfig": 0,
"gcp:storage/managedFolder:ManagedFolder": 0,
@@ -38306,6 +38788,7 @@
"gcp:gemini/getRepositoryGroupIamPolicy:getRepositoryGroupIamPolicy": 0,
"gcp:gkebackup/getBackupPlanIamPolicy:getBackupPlanIamPolicy": 0,
"gcp:gkebackup/getRestorePlanIamPolicy:getRestorePlanIamPolicy": 0,
+ "gcp:gkehub/getFeature:getFeature": 0,
"gcp:gkehub/getFeatureIamPolicy:getFeatureIamPolicy": 0,
"gcp:gkehub/getMembershipBinding:getMembershipBinding": 0,
"gcp:gkehub/getMembershipIamPolicy:getMembershipIamPolicy": 0,
@@ -38330,6 +38813,7 @@
"gcp:iap/getWebRegionBackendServiceIamPolicy:getWebRegionBackendServiceIamPolicy": 0,
"gcp:iap/getWebTypeAppEngineIamPolicy:getWebTypeAppEngineIamPolicy": 0,
"gcp:iap/getWebTypeComputeIamPolicy:getWebTypeComputeIamPolicy": 0,
+ "gcp:kms/getAutokeyConfig:getAutokeyConfig": 0,
"gcp:kms/getCryptoKeyIamPolicy:getCryptoKeyIamPolicy": 0,
"gcp:kms/getCryptoKeyLatestVersion:getCryptoKeyLatestVersion": 0,
"gcp:kms/getCryptoKeyVersions:getCryptoKeyVersions": 0,
@@ -38341,6 +38825,7 @@
"gcp:kms/getKMSSecret:getKMSSecret": 0,
"gcp:kms/getKMSSecretAsymmetric:getKMSSecretAsymmetric": 0,
"gcp:kms/getKMSSecretCiphertext:getKMSSecretCiphertext": 0,
+ "gcp:kms/getKeyHandle:getKeyHandle": 0,
"gcp:kms/getKeyRingIamPolicy:getKeyRingIamPolicy": 0,
"gcp:kms/getKeyRings:getKeyRings": 0,
"gcp:logging/getFolderSettings:getFolderSettings": 0,
diff --git a/provider/cmd/pulumi-resource-gcp/schema.json b/provider/cmd/pulumi-resource-gcp/schema.json
index f9394bda1e..b865490071 100644
--- a/provider/cmd/pulumi-resource-gcp/schema.json
+++ b/provider/cmd/pulumi-resource-gcp/schema.json
@@ -42,6 +42,7 @@
"blockchainnodeengine": "BlockchainNodeEngine",
"certificateauthority": "CertificateAuthority",
"certificatemanager": "CertificateManager",
+ "chronicle": "Chronicle",
"cloudasset": "CloudAsset",
"cloudbuild": "CloudBuild",
"cloudbuildv2": "CloudBuildV2",
@@ -271,6 +272,9 @@
"certificateManagerCustomEndpoint": {
"type": "string"
},
+ "chronicleCustomEndpoint": {
+ "type": "string"
+ },
"cloudAssetCustomEndpoint": {
"type": "string"
},
@@ -921,7 +925,7 @@
"items": {
"type": "string"
},
- "description": "CIDR block IP subnetwork specification. Must be IPv4.\n"
+ "description": "A list of CIDR block IP subnetwork specification. Must be IPv4.\n"
}
},
"type": "object",
@@ -6902,6 +6906,31 @@
},
"type": "object"
},
+ "gcp:artifactregistry/RepositoryVulnerabilityScanningConfig:RepositoryVulnerabilityScanningConfig": {
+ "properties": {
+ "enablementConfig": {
+ "type": "string",
+ "description": "This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository.\nPossible values are: `INHERITED`, `DISABLED`.\n"
+ },
+ "enablementState": {
+ "type": "string",
+ "description": "(Output)\nThis field returns whether scanning is active for this repository.\n"
+ },
+ "enablementStateReason": {
+ "type": "string",
+ "description": "(Output)\nThis provides an explanation for the state of scanning on this repository.\n"
+ }
+ },
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "enablementState",
+ "enablementStateReason"
+ ]
+ }
+ }
+ },
"gcp:artifactregistry/getRepositoryCleanupPolicy:getRepositoryCleanupPolicy": {
"properties": {
"action": {
@@ -7498,6 +7527,33 @@
}
}
},
+ "gcp:artifactregistry/getRepositoryVulnerabilityScanningConfig:getRepositoryVulnerabilityScanningConfig": {
+ "properties": {
+ "enablementConfig": {
+ "type": "string",
+ "description": "This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository. Possible values: [\"INHERITED\", \"DISABLED\"]\n"
+ },
+ "enablementState": {
+ "type": "string",
+ "description": "This field returns whether scanning is active for this repository.\n"
+ },
+ "enablementStateReason": {
+ "type": "string",
+ "description": "This provides an explanation for the state of scanning on this repository.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "enablementConfig",
+ "enablementState",
+ "enablementStateReason"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
"gcp:assuredworkloads/WorkloadComplianceStatus:WorkloadComplianceStatus": {
"properties": {
"acknowledgedViolationCounts": {
@@ -7882,15 +7938,15 @@
},
"backupVaultId": {
"type": "string",
- "description": "Name of the Backup Vault associated with Backup.\n"
+ "description": "The ID of the Backup Vault of the Data Source in which the Backup belongs.\n"
},
"dataSourceId": {
"type": "string",
- "description": "Name of the Data Source associated with Backup.\n"
+ "description": "The ID of the Data Source in which the Backup belongs.\n"
},
"location": {
"type": "string",
- "description": "Location of the resource.\n"
+ "description": "The location in which the Backup belongs.\n"
},
"name": {
"type": "string",
@@ -8294,7 +8350,7 @@
},
"location": {
"type": "string",
- "description": "Location of the resource: \u003cregion\u003e/\u003czone\u003e/\"global\"/\"unspecified\".\n"
+ "description": "The location in which the Data Source belongs.\n"
},
"type": {
"type": "string",
@@ -9038,6 +9094,10 @@
},
"gcp:bigquery/DatasetAccess:DatasetAccess": {
"properties": {
+ "condition": {
+ "$ref": "#/types/gcp:bigquery/DatasetAccessCondition:DatasetAccessCondition",
+ "description": "Condition for the binding. If CEL expression in this field is true, this\naccess binding will be considered.\nStructure is documented below.\n"
+ },
"dataset": {
"$ref": "#/types/gcp:bigquery/DatasetAccessDataset:DatasetAccessDataset",
"description": "Grants all resources of particular types in a particular dataset read access to the current dataset.\nStructure is documented below.\n"
@@ -9118,6 +9178,34 @@
"projectId"
]
},
+ "gcp:bigquery/DatasetAccessCondition:DatasetAccessCondition": {
+ "properties": {
+ "description": {
+ "type": "string",
+ "description": "Description of the expression. This is a longer text which describes the expression,\ne.g. when hovered over it in a UI.\n",
+ "willReplaceOnChanges": true
+ },
+ "expression": {
+ "type": "string",
+ "description": "Textual representation of an expression in Common Expression Language syntax.\n",
+ "willReplaceOnChanges": true
+ },
+ "location": {
+ "type": "string",
+ "description": "String indicating the location of the expression for error reporting, e.g. a file\nname and a position in the file.\n",
+ "willReplaceOnChanges": true
+ },
+ "title": {
+ "type": "string",
+ "description": "Title for the expression, i.e. a short string describing its purpose.\nThis can be used e.g. in UIs which allow to enter the expression.\n",
+ "willReplaceOnChanges": true
+ }
+ },
+ "type": "object",
+ "required": [
+ "expression"
+ ]
+ },
"gcp:bigquery/DatasetAccessDataset:DatasetAccessDataset": {
"properties": {
"dataset": {
@@ -10295,6 +10383,70 @@
}
}
},
+ "gcp:bigquery/TableExternalCatalogTableOptions:TableExternalCatalogTableOptions": {
+ "properties": {
+ "connectionId": {
+ "type": "string",
+ "description": "The connection specifying the credentials to be used to read external storage, such as Azure Blob, Cloud Storage, or S3. The connection is needed to read the open source table from BigQuery Engine. The connection_id can have the form \u003cproject_id\u003e.\u003clocation_id\u003e.\u003cconnection_id\u003e or projects/\u003cproject_id\u003e/locations/\u003clocation_id\u003e/connections/\u003cconnection_id\u003e.\n"
+ },
+ "parameters": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A map of key value pairs defining the parameters and properties of the open source table. Corresponds with hive meta store table parameters. Maximum size of 4Mib.\n"
+ },
+ "storageDescriptor": {
+ "$ref": "#/types/gcp:bigquery/TableExternalCatalogTableOptionsStorageDescriptor:TableExternalCatalogTableOptionsStorageDescriptor",
+ "description": "A storage descriptor containing information about the physical storage of this table.\n"
+ }
+ },
+ "type": "object"
+ },
+ "gcp:bigquery/TableExternalCatalogTableOptionsStorageDescriptor:TableExternalCatalogTableOptionsStorageDescriptor": {
+ "properties": {
+ "inputFormat": {
+ "type": "string",
+ "description": "Specifies the fully qualified class name of the InputFormat (e.g. \"org.apache.hadoop.hive.ql.io.orc.OrcInputFormat\"). The maximum length is 128 characters.\n"
+ },
+ "locationUri": {
+ "type": "string",
+ "description": "The physical location of the table (e.g. 'gs://spark-dataproc-data/pangea-data/case_sensitive/' or 'gs://spark-dataproc-data/pangea-data/*'). The maximum length is 2056 bytes.\n"
+ },
+ "outputFormat": {
+ "type": "string",
+ "description": "Specifies the fully qualified class name of the OutputFormat (e.g. \"org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat\"). The maximum length is 128 characters.\n"
+ },
+ "serdeInfo": {
+ "$ref": "#/types/gcp:bigquery/TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo:TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo",
+ "description": "Serializer and deserializer information.\n"
+ }
+ },
+ "type": "object"
+ },
+ "gcp:bigquery/TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo:TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo": {
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the SerDe. The maximum length is 256 characters.\n"
+ },
+ "parameters": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Key-value pairs that define the initialization parameters for the serialization library. Maximum size 10 Kib.\n"
+ },
+ "serializationLibrary": {
+ "type": "string",
+ "description": "Specifies a fully-qualified class name of the serialization library that is responsible for the translation of data between table representation and the underlying low-level input and output format structures. The maximum length is 256 characters.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "serializationLibrary"
+ ]
+ },
"gcp:bigquery/TableExternalDataConfiguration:TableExternalDataConfiguration": {
"properties": {
"autodetect": {
@@ -10813,6 +10965,13 @@
},
"gcp:bigquery/getDatasetAccess:getDatasetAccess": {
"properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:bigquery/getDatasetAccessCondition:getDatasetAccessCondition"
+ },
+ "description": "Condition for the binding. If CEL expression in this field is true, this\naccess binding will be considered.\n"
+ },
"datasets": {
"type": "array",
"items": {
@@ -10861,6 +11020,7 @@
},
"type": "object",
"required": [
+ "conditions",
"datasets",
"domain",
"groupByEmail",
@@ -10877,6 +11037,38 @@
}
}
},
+ "gcp:bigquery/getDatasetAccessCondition:getDatasetAccessCondition": {
+ "properties": {
+ "description": {
+ "type": "string",
+ "description": "Description of the expression. This is a longer text which describes the expression,\ne.g. when hovered over it in a UI.\n"
+ },
+ "expression": {
+ "type": "string",
+ "description": "Textual representation of an expression in Common Expression Language syntax.\n"
+ },
+ "location": {
+ "type": "string",
+ "description": "String indicating the location of the expression for error reporting, e.g. a file\nname and a position in the file.\n"
+ },
+ "title": {
+ "type": "string",
+ "description": "Title for the expression, i.e. a short string describing its purpose.\nThis can be used e.g. in UIs which allow to enter the expression.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "description",
+ "expression",
+ "location",
+ "title"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
"gcp:bigquery/getDatasetAccessDataset:getDatasetAccessDataset": {
"properties": {
"datasets": {
@@ -15964,6 +16156,55 @@
}
}
},
+ "gcp:chronicle/WatchlistEntityCount:WatchlistEntityCount": {
+ "properties": {
+ "asset": {
+ "type": "integer",
+ "description": "(Output)\nOutput only. Count of asset type entities in the watchlist.\n"
+ },
+ "user": {
+ "type": "integer",
+ "description": "(Output)\nOutput only. Count of user type entities in the watchlist.\n"
+ }
+ },
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "asset",
+ "user"
+ ]
+ }
+ }
+ },
+ "gcp:chronicle/WatchlistEntityPopulationMechanism:WatchlistEntityPopulationMechanism": {
+ "properties": {
+ "manual": {
+ "$ref": "#/types/gcp:chronicle/WatchlistEntityPopulationMechanismManual:WatchlistEntityPopulationMechanismManual",
+ "description": "Entities are added manually.\n\n- - -\n"
+ }
+ },
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "manual"
+ ]
+ }
+ }
+ },
+ "gcp:chronicle/WatchlistEntityPopulationMechanismManual:WatchlistEntityPopulationMechanismManual": {
+ "type": "object"
+ },
+ "gcp:chronicle/WatchlistWatchlistUserPreferences:WatchlistWatchlistUserPreferences": {
+ "properties": {
+ "pinned": {
+ "type": "boolean",
+ "description": "Optional. Whether the watchlist is pinned on the dashboard.\n"
+ }
+ },
+ "type": "object"
+ },
"gcp:cloudasset/FolderFeedCondition:FolderFeedCondition": {
"properties": {
"description": {
@@ -25967,7 +26208,7 @@
"properties": {
"maxInstanceCount": {
"type": "integer",
- "description": "Maximum number of serving instances that this resource should have.\n"
+ "description": "Maximum number of serving instances that this resource should have. Must not be less than minimum instance count. If absent, Cloud Run will calculate\na default value based on the project's available container instances quota in the region and specified instance size.\n"
},
"minInstanceCount": {
"type": "integer",
@@ -27815,11 +28056,11 @@
"properties": {
"maxInstanceCount": {
"type": "integer",
- "description": "Maximum number of serving instances that this resource should have.\n"
+ "description": "Maximum number of serving instances that this resource should have. Must not be less than minimum instance count. If absent, Cloud Run will calculate\na default value based on the project's available container instances quota in the region and specified instance size.\n"
},
"minInstanceCount": {
"type": "integer",
- "description": "Minimum number of serving instances that this resource should have.\n"
+ "description": "Minimum number of serving instances that this resource should have. Defaults to 0. Must not be greater than maximum instance count.\n"
}
},
"type": "object",
@@ -28855,6 +29096,13 @@
},
"gcp:composer/EnvironmentConfigDataRetentionConfig:EnvironmentConfigDataRetentionConfig": {
"properties": {
+ "airflowMetadataRetentionConfigs": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:composer/EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig:EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig"
+ },
+ "description": "Optional. The configuration setting for database retention.\n"
+ },
"taskLogsRetentionConfigs": {
"type": "array",
"items": {
@@ -28864,9 +29112,34 @@
}
},
"type": "object",
- "required": [
- "taskLogsRetentionConfigs"
- ]
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "airflowMetadataRetentionConfigs"
+ ]
+ }
+ }
+ },
+ "gcp:composer/EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig:EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig": {
+ "properties": {
+ "retentionDays": {
+ "type": "integer",
+ "description": "How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer.\n"
+ },
+ "retentionMode": {
+ "type": "string",
+ "description": "Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer.\n"
+ }
+ },
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "retentionDays",
+ "retentionMode"
+ ]
+ }
+ }
},
"gcp:composer/EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig:EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig": {
"properties": {
@@ -29635,6 +29908,13 @@
},
"gcp:composer/getEnvironmentConfigDataRetentionConfig:getEnvironmentConfigDataRetentionConfig": {
"properties": {
+ "airflowMetadataRetentionConfigs": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:composer/getEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig:getEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig"
+ },
+ "description": "Optional. The configuration setting for database retention.\n"
+ },
"taskLogsRetentionConfigs": {
"type": "array",
"items": {
@@ -29645,6 +29925,7 @@
},
"type": "object",
"required": [
+ "airflowMetadataRetentionConfigs",
"taskLogsRetentionConfigs"
],
"language": {
@@ -29653,6 +29934,28 @@
}
}
},
+ "gcp:composer/getEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig:getEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig": {
+ "properties": {
+ "retentionDays": {
+ "type": "integer",
+ "description": "How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer.\n"
+ },
+ "retentionMode": {
+ "type": "string",
+ "description": "Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "retentionDays",
+ "retentionMode"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
"gcp:composer/getEnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig:getEnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig": {
"properties": {
"storageMode": {
@@ -32652,7 +32955,7 @@
},
"resourcePolicies": {
"type": "string",
- "description": "A list of self_links of resource policies to attach to the instance's boot disk. Modifying this list will cause the instance to recreate. Currently a max of 1 resource policy is supported.\n",
+ "description": "A list of self_links of resource policies to attach to the instance's boot disk. Modifying this list will cause the instance to recreate, so any external values are not set until the user specifies this field. Currently a max of 1 resource policy is supported.\n",
"willReplaceOnChanges": true
},
"size": {
@@ -33257,6 +33560,10 @@
"type": "boolean",
"description": "Specifies if the instance should be restarted if it was terminated by Compute Engine (not a user).\n"
},
+ "availabilityDomain": {
+ "type": "integer",
+ "description": "Specifies the availability domain, which this instance should be scheduled on.\n"
+ },
"hostErrorTimeoutSeconds": {
"type": "integer",
"description": "Specify the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.\n"
@@ -33314,6 +33621,7 @@
"nodejs": {
"requiredOutputs": [
"automaticRestart",
+ "availabilityDomain",
"hostErrorTimeoutSeconds",
"instanceTerminationAction",
"localSsdRecoveryTimeout",
@@ -34061,6 +34369,10 @@
"type": "boolean",
"description": "Specifies if the instance should be restarted if it was terminated by Compute Engine (not a user).\n"
},
+ "availabilityDomain": {
+ "type": "integer",
+ "description": "Specifies the availability domain, which this instance should be scheduled on.\n"
+ },
"hostErrorTimeoutSeconds": {
"type": "integer",
"description": "Specify the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.\n"
@@ -34118,6 +34430,7 @@
"nodejs": {
"requiredOutputs": [
"automaticRestart",
+ "availabilityDomain",
"hostErrorTimeoutSeconds",
"instanceTerminationAction",
"localSsdRecoveryTimeout",
@@ -34998,6 +35311,10 @@
"type": "boolean",
"description": "Specifies if the instance should be\nrestarted if it was terminated by Compute Engine (not a user).\nDefaults to true.\n"
},
+ "availabilityDomain": {
+ "type": "integer",
+ "description": "Specifies the availability domain to place the instance in. The value must be a number between 1 and the number of availability domains specified in the spread placement policy attached to the instance.\n"
+ },
"hostErrorTimeoutSeconds": {
"type": "integer",
"description": "Specifies the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.\n"
@@ -35716,6 +36033,11 @@
"description": "Specifies whether the instance should be\nautomatically restarted if it is terminated by Compute Engine (not\nterminated by a user). This defaults to true.\n",
"willReplaceOnChanges": true
},
+ "availabilityDomain": {
+ "type": "integer",
+ "description": "Specifies the availability domain to place the instance in. The value must be a number between 1 and the number of availability domains specified in the spread placement policy attached to the instance.\n",
+ "willReplaceOnChanges": true
+ },
"hostErrorTimeoutSeconds": {
"type": "integer",
"description": "Specifies the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.\n",
@@ -39239,6 +39561,11 @@
"description": "Specifies whether the instance should be\nautomatically restarted if it is terminated by Compute Engine (not\nterminated by a user). This defaults to true.\n",
"willReplaceOnChanges": true
},
+ "availabilityDomain": {
+ "type": "integer",
+ "description": "Specifies the availability domain to place the instance in. The value must be a number between 1 and the number of availability domains specified in the spread placement policy attached to the instance.\n",
+ "willReplaceOnChanges": true
+ },
"hostErrorTimeoutSeconds": {
"type": "integer",
"description": "Specifies the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.\n",
@@ -42805,7 +43132,7 @@
},
"seconds": {
"type": "string",
- "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n",
+ "description": "Span of time at a resolution of a second. Must be from 600 to 604800 inclusive. Note: minimum and maximum allowed range for requestedRunDuration is 10 minutes (600 seconds) and 7 days(604800 seconds) correspondingly.\n",
"willReplaceOnChanges": true
}
},
@@ -42821,14 +43148,14 @@
"items": {
"$ref": "#/types/gcp:compute/ResizeRequestStatusError:ResizeRequestStatusError"
},
- "description": "(Output)\n[Output only] Fatal errors encountered during the queueing or provisioning phases of the ResizeRequest that caused the transition to the FAILED state. Contrary to the lastAttempt errors, this field is final and errors are never removed from here, as the ResizeRequest is not going to retry.\nStructure is documented below.\n"
+ "description": "(Output)\nFatal errors encountered during the queueing or provisioning phases of the ResizeRequest that caused the transition to the FAILED state. Contrary to the lastAttempt errors, this field is final and errors are never removed from here, as the ResizeRequest is not going to retry.\nStructure is documented below.\n"
},
"lastAttempts": {
"type": "array",
"items": {
"$ref": "#/types/gcp:compute/ResizeRequestStatusLastAttempt:ResizeRequestStatusLastAttempt"
},
- "description": "(Output)\n[Output only] Information about the last attempt to fulfill the request. The value is temporary since the ResizeRequest can retry, as long as it's still active and the last attempt value can either be cleared or replaced with a different error. Since ResizeRequest retries infrequently, the value may be stale and no longer show an active problem. The value is cleared when ResizeRequest transitions to the final state (becomes inactive). If the final state is FAILED the error describing it will be storred in the \"error\" field only.\nStructure is documented below.\n"
+ "description": "(Output)\nInformation about the last attempt to fulfill the request. The value is temporary since the ResizeRequest can retry, as long as it's still active and the last attempt value can either be cleared or replaced with a different error. Since ResizeRequest retries infrequently, the value may be stale and no longer show an active problem. The value is cleared when ResizeRequest transitions to the final state (becomes inactive). If the final state is FAILED the error describing it will be storred in the \"error\" field only.\nStructure is documented below.\n"
}
},
"type": "object",
@@ -42848,7 +43175,7 @@
"items": {
"$ref": "#/types/gcp:compute/ResizeRequestStatusErrorError:ResizeRequestStatusErrorError"
},
- "description": "(Output)\n[Output Only] The array of errors encountered while processing this operation.\nStructure is documented below.\n"
+ "description": "(Output)\nThe array of errors encountered while processing this operation.\nStructure is documented below.\n"
}
},
"type": "object",
@@ -42864,18 +43191,18 @@
"properties": {
"code": {
"type": "string",
- "description": "(Output)\n[Output Only] The error type identifier for this error.\n"
+ "description": "(Output)\nThe error type identifier for this error.\n"
},
"errorDetails": {
"type": "array",
"items": {
"$ref": "#/types/gcp:compute/ResizeRequestStatusErrorErrorErrorDetail:ResizeRequestStatusErrorErrorErrorDetail"
},
- "description": "(Output)\n[Output Only] An optional list of messages that contain the error details. There is a set of defined message types to use for providing details.The syntax depends on the error code. For example, QuotaExceededInfo will have details when the error code is QUOTA_EXCEEDED.\nStructure is documented below.\n"
+ "description": "(Output)\nAn array of messages that contain the error details. There is a set of defined message types to use for providing details.The syntax depends on the error code. For example, QuotaExceededInfo will have details when the error code is QUOTA_EXCEEDED.\nStructure is documented below.\n"
},
"location": {
"type": "string",
- "description": "(Output)\nOutput Only] Indicates the field in the request that caused the error. This property is optional.\n"
+ "description": "(Output)\nIndicates the field in the request that caused the error. This property is optional.\n"
},
"message": {
"type": "string",
@@ -42901,28 +43228,28 @@
"items": {
"$ref": "#/types/gcp:compute/ResizeRequestStatusErrorErrorErrorDetailErrorInfo:ResizeRequestStatusErrorErrorErrorDetailErrorInfo"
},
- "description": "(Output)\n[Output Only]\nStructure is documented below.\n"
+ "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
},
"helps": {
"type": "array",
"items": {
"$ref": "#/types/gcp:compute/ResizeRequestStatusErrorErrorErrorDetailHelp:ResizeRequestStatusErrorErrorErrorDetailHelp"
},
- "description": "(Output)\n[Output Only]\nStructure is documented below.\n"
+ "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
},
"localizedMessages": {
"type": "array",
"items": {
"$ref": "#/types/gcp:compute/ResizeRequestStatusErrorErrorErrorDetailLocalizedMessage:ResizeRequestStatusErrorErrorErrorDetailLocalizedMessage"
},
- "description": "(Output)\n[Output Only]\nStructure is documented below.\n"
+ "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
},
"quotaInfos": {
"type": "array",
"items": {
"$ref": "#/types/gcp:compute/ResizeRequestStatusErrorErrorErrorDetailQuotaInfo:ResizeRequestStatusErrorErrorErrorDetailQuotaInfo"
},
- "description": "(Output)\n[Output Only]\nStructure is documented below.\n"
+ "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
}
},
"type": "object",
@@ -42941,18 +43268,18 @@
"properties": {
"domain": {
"type": "string",
- "description": "(Output)\nThe logical grouping to which the \"reason\" belongs. The error domain is typically the registered service name of the tool or product that generates the error. Example: \"pubsub.googleapis.com\". If the error is generated by some common infrastructure, the error domain must be a globally unique value that identifies the infrastructure. For Google API infrastructure, the error domain is \"googleapis.com\".\n"
+ "description": "(Output)\nThe logical grouping to which the \"reason\" belongs. The error domain is typically the registered service name of the tool or product that generates the error. Example: \"pubsub.googleapis.com\".\n"
},
"metadatas": {
"type": "object",
"additionalProperties": {
"type": "string"
},
- "description": "(Output)\nAdditional structured details about this error.\nKeys must match /[a-z][a-zA-Z0-9-_]+/ but should ideally be lowerCamelCase. Also they must be limited to 64 characters in length. When identifying the current value of an exceeded limit, the units should be contained in the key, not the value. For example, rather than {\"instanceLimit\": \"100/request\"}, should be returned as, {\"instanceLimitPerRequest\": \"100\"}, if the client exceeds the number of instances that can be created in a single (batch) request.\n"
+ "description": "(Output)\nAdditional structured details about this error.\n"
},
"reason": {
"type": "string",
- "description": "(Output)\nThe reason of the error. This is a constant value that identifies the proximate cause of the error. Error reasons are unique within a particular domain of errors. This should be at most 63 characters and match a regular expression of [A-Z][A-Z0-9_]+[A-Z0-9], which represents UPPER_SNAKE_CASE.\n"
+ "description": "(Output)\nThe reason of the error. This is a constant value that identifies the proximate cause of the error. Error reasons are unique within a particular domain of errors.\n"
}
},
"type": "object",
@@ -42973,7 +43300,7 @@
"items": {
"$ref": "#/types/gcp:compute/ResizeRequestStatusErrorErrorErrorDetailHelpLink:ResizeRequestStatusErrorErrorErrorDetailHelpLink"
},
- "description": "(Output)\n[Output Only]\nStructure is documented below.\n"
+ "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
}
},
"type": "object",
@@ -43078,7 +43405,7 @@
"items": {
"$ref": "#/types/gcp:compute/ResizeRequestStatusLastAttemptError:ResizeRequestStatusLastAttemptError"
},
- "description": "(Output)\n[Output only] Fatal errors encountered during the queueing or provisioning phases of the ResizeRequest that caused the transition to the FAILED state. Contrary to the lastAttempt errors, this field is final and errors are never removed from here, as the ResizeRequest is not going to retry.\nStructure is documented below.\n"
+ "description": "(Output)\nFatal errors encountered during the queueing or provisioning phases of the ResizeRequest that caused the transition to the FAILED state. Contrary to the lastAttempt errors, this field is final and errors are never removed from here, as the ResizeRequest is not going to retry.\nStructure is documented below.\n"
}
},
"type": "object",
@@ -43097,7 +43424,7 @@
"items": {
"$ref": "#/types/gcp:compute/ResizeRequestStatusLastAttemptErrorError:ResizeRequestStatusLastAttemptErrorError"
},
- "description": "(Output)\n[Output Only] The array of errors encountered while processing this operation.\nStructure is documented below.\n"
+ "description": "(Output)\nThe array of errors encountered while processing this operation.\nStructure is documented below.\n"
}
},
"type": "object",
@@ -43113,18 +43440,18 @@
"properties": {
"code": {
"type": "string",
- "description": "(Output)\n[Output Only] The error type identifier for this error.\n"
+ "description": "(Output)\nThe error type identifier for this error.\n"
},
"errorDetails": {
"type": "array",
"items": {
"$ref": "#/types/gcp:compute/ResizeRequestStatusLastAttemptErrorErrorErrorDetail:ResizeRequestStatusLastAttemptErrorErrorErrorDetail"
},
- "description": "(Output)\n[Output Only] An optional list of messages that contain the error details. There is a set of defined message types to use for providing details.The syntax depends on the error code. For example, QuotaExceededInfo will have details when the error code is QUOTA_EXCEEDED.\nStructure is documented below.\n"
+ "description": "(Output)\nAn array of messages that contain the error details. There is a set of defined message types to use for providing details.The syntax depends on the error code. For example, QuotaExceededInfo will have details when the error code is QUOTA_EXCEEDED.\nStructure is documented below.\n"
},
"location": {
"type": "string",
- "description": "(Output)\nOutput Only] Indicates the field in the request that caused the error. This property is optional.\n"
+ "description": "(Output)\nIndicates the field in the request that caused the error. This property is optional.\n"
},
"message": {
"type": "string",
@@ -43150,28 +43477,28 @@
"items": {
"$ref": "#/types/gcp:compute/ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo:ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo"
},
- "description": "(Output)\n[Output Only]\nStructure is documented below.\n"
+ "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
},
"helps": {
"type": "array",
"items": {
"$ref": "#/types/gcp:compute/ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp:ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp"
},
- "description": "(Output)\n[Output Only]\nStructure is documented below.\n"
+ "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
},
"localizedMessages": {
"type": "array",
"items": {
"$ref": "#/types/gcp:compute/ResizeRequestStatusLastAttemptErrorErrorErrorDetailLocalizedMessage:ResizeRequestStatusLastAttemptErrorErrorErrorDetailLocalizedMessage"
},
- "description": "(Output)\n[Output Only]\nStructure is documented below.\n"
+ "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
},
"quotaInfos": {
"type": "array",
"items": {
"$ref": "#/types/gcp:compute/ResizeRequestStatusLastAttemptErrorErrorErrorDetailQuotaInfo:ResizeRequestStatusLastAttemptErrorErrorErrorDetailQuotaInfo"
},
- "description": "(Output)\n[Output Only]\nStructure is documented below.\n"
+ "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
}
},
"type": "object",
@@ -43190,18 +43517,18 @@
"properties": {
"domain": {
"type": "string",
- "description": "(Output)\nThe logical grouping to which the \"reason\" belongs. The error domain is typically the registered service name of the tool or product that generates the error. Example: \"pubsub.googleapis.com\". If the error is generated by some common infrastructure, the error domain must be a globally unique value that identifies the infrastructure. For Google API infrastructure, the error domain is \"googleapis.com\".\n"
+ "description": "(Output)\nThe logical grouping to which the \"reason\" belongs. The error domain is typically the registered service name of the tool or product that generates the error. Example: \"pubsub.googleapis.com\".\n"
},
"metadatas": {
"type": "object",
"additionalProperties": {
"type": "string"
},
- "description": "(Output)\nAdditional structured details about this error.\nKeys must match /[a-z][a-zA-Z0-9-_]+/ but should ideally be lowerCamelCase. Also they must be limited to 64 characters in length. When identifying the current value of an exceeded limit, the units should be contained in the key, not the value. For example, rather than {\"instanceLimit\": \"100/request\"}, should be returned as, {\"instanceLimitPerRequest\": \"100\"}, if the client exceeds the number of instances that can be created in a single (batch) request.\n"
+ "description": "(Output)\nAdditional structured details about this error.\n"
},
"reason": {
"type": "string",
- "description": "(Output)\nThe reason of the error. This is a constant value that identifies the proximate cause of the error. Error reasons are unique within a particular domain of errors. This should be at most 63 characters and match a regular expression of [A-Z][A-Z0-9_]+[A-Z0-9], which represents UPPER_SNAKE_CASE.\n"
+ "description": "(Output)\nThe reason of the error. This is a constant value that identifies the proximate cause of the error. Error reasons are unique within a particular domain of errors.\n"
}
},
"type": "object",
@@ -43222,7 +43549,7 @@
"items": {
"$ref": "#/types/gcp:compute/ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpLink:ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpLink"
},
- "description": "(Output)\n[Output Only]\nStructure is documented below.\n"
+ "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
}
},
"type": "object",
@@ -49744,6 +50071,10 @@
"type": "boolean",
"description": "Specifies if the instance should be\nrestarted if it was terminated by Compute Engine (not a user).\n"
},
+ "availabilityDomain": {
+ "type": "integer",
+ "description": "Specifies the availability domain, which this instance should be scheduled on.\n"
+ },
"hostErrorTimeoutSeconds": {
"type": "integer",
"description": "Beta Time in seconds for host error detection.\n"
@@ -49803,6 +50134,7 @@
"type": "object",
"required": [
"automaticRestart",
+ "availabilityDomain",
"hostErrorTimeoutSeconds",
"instanceTerminationAction",
"localSsdRecoveryTimeouts",
@@ -50520,6 +50852,10 @@
"type": "boolean",
"description": "Specifies whether the instance should be\nautomatically restarted if it is terminated by Compute Engine (not\nterminated by a user). This defaults to true.\n"
},
+ "availabilityDomain": {
+ "type": "integer",
+ "description": "Specifies the availability domain, which this instance should be scheduled on.\n"
+ },
"hostErrorTimeoutSeconds": {
"type": "integer",
"description": "Beta Time in seconds for host error detection.\n"
@@ -50580,6 +50916,7 @@
"type": "object",
"required": [
"automaticRestart",
+ "availabilityDomain",
"hostErrorTimeoutSeconds",
"instanceTerminationAction",
"localSsdRecoveryTimeouts",
@@ -52036,6 +52373,10 @@
"type": "boolean",
"description": "Specifies whether the instance should be\nautomatically restarted if it is terminated by Compute Engine (not\nterminated by a user). This defaults to true.\n"
},
+ "availabilityDomain": {
+ "type": "integer",
+ "description": "Specifies the availability domain, which this instance should be scheduled on.\n"
+ },
"hostErrorTimeoutSeconds": {
"type": "integer",
"description": "Beta Time in seconds for host error detection.\n"
@@ -52096,6 +52437,7 @@
"type": "object",
"required": [
"automaticRestart",
+ "availabilityDomain",
"hostErrorTimeoutSeconds",
"instanceTerminationAction",
"localSsdRecoveryTimeouts",
@@ -80971,10 +81313,18 @@
},
"gcp:datastream/StreamSourceConfigMysqlSourceConfig:StreamSourceConfigMysqlSourceConfig": {
"properties": {
+ "binaryLogPosition": {
+ "$ref": "#/types/gcp:datastream/StreamSourceConfigMysqlSourceConfigBinaryLogPosition:StreamSourceConfigMysqlSourceConfigBinaryLogPosition",
+ "description": "CDC reader reads from binary logs replication cdc method.\n"
+ },
"excludeObjects": {
"$ref": "#/types/gcp:datastream/StreamSourceConfigMysqlSourceConfigExcludeObjects:StreamSourceConfigMysqlSourceConfigExcludeObjects",
"description": "MySQL objects to exclude from the stream.\nStructure is documented below.\n"
},
+ "gtid": {
+ "$ref": "#/types/gcp:datastream/StreamSourceConfigMysqlSourceConfigGtid:StreamSourceConfigMysqlSourceConfigGtid",
+ "description": "CDC reader reads from gtid based replication.\n"
+ },
"includeObjects": {
"$ref": "#/types/gcp:datastream/StreamSourceConfigMysqlSourceConfigIncludeObjects:StreamSourceConfigMysqlSourceConfigIncludeObjects",
"description": "MySQL objects to retrieve from the source.\nStructure is documented below.\n"
@@ -80998,6 +81348,9 @@
}
}
},
+ "gcp:datastream/StreamSourceConfigMysqlSourceConfigBinaryLogPosition:StreamSourceConfigMysqlSourceConfigBinaryLogPosition": {
+ "type": "object"
+ },
"gcp:datastream/StreamSourceConfigMysqlSourceConfigExcludeObjects:StreamSourceConfigMysqlSourceConfigExcludeObjects": {
"properties": {
"mysqlDatabases": {
@@ -81091,6 +81444,9 @@
}
}
},
+ "gcp:datastream/StreamSourceConfigMysqlSourceConfigGtid:StreamSourceConfigMysqlSourceConfigGtid": {
+ "type": "object"
+ },
"gcp:datastream/StreamSourceConfigMysqlSourceConfigIncludeObjects:StreamSourceConfigMysqlSourceConfigIncludeObjects": {
"properties": {
"mysqlDatabases": {
@@ -82008,6 +82364,8 @@
"language": {
"nodejs": {
"requiredOutputs": [
+ "appInstallationId",
+ "authorizerCredential",
"githubApp",
"installationUri"
]
@@ -82145,7 +82503,7 @@
},
"useTimeoutBasedEndpointing": {
"type": "boolean",
- "description": "Use timeout based endpointing, interpreting endpointer sensitivy as seconds of timeout value.\n"
+ "description": "Use timeout based endpointing, interpreting endpointer sensitivity as seconds of timeout value.\n"
}
},
"type": "object"
@@ -87990,7 +88348,7 @@
},
"kmsKeyName": {
"type": "string",
- "description": "The resource ID of a Cloud KMS key. If set, the database created will\nbe a Customer-managed Encryption Key (CMEK) database encrypted with\nthis key. This feature is allowlist only in initial launch.\nOnly keys in the same location as this database are allowed to be used\nfor encryption. For Firestore's nam5 multi-region, this corresponds to Cloud KMS\nmulti-region us. For Firestore's eur3 multi-region, this corresponds to\nCloud KMS multi-region europe. See https://cloud.google.com/kms/docs/locations.\nThis value should be the KMS key resource ID in the format of\n`projects/{project_id}/locations/{kms_location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`.\nHow to retrive this resource ID is listed at\nhttps://cloud.google.com/kms/docs/getting-resource-ids#getting_the_id_for_a_key_and_version.\n",
+ "description": "The resource ID of a Cloud KMS key. If set, the database created will\nbe a Customer-managed Encryption Key (CMEK) database encrypted with\nthis key. This feature is allowlist only in initial launch.\nOnly keys in the same location as this database are allowed to be used\nfor encryption. For Firestore's nam5 multi-region, this corresponds to Cloud KMS\nmulti-region us. For Firestore's eur3 multi-region, this corresponds to\nCloud KMS multi-region europe. See https://cloud.google.com/kms/docs/locations.\nThis value should be the KMS key resource ID in the format of\n`projects/{project_id}/locations/{kms_location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`.\nHow to retrieve this resource ID is listed at\nhttps://cloud.google.com/kms/docs/getting-resource-ids#getting_the_id_for_a_key_and_version.\n",
"willReplaceOnChanges": true
}
},
@@ -90552,6 +90910,884 @@
}
}
},
+ "gcp:gkehub/getFeatureFleetDefaultMemberConfig:getFeatureFleetDefaultMemberConfig": {
+ "properties": {
+ "configmanagements": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureFleetDefaultMemberConfigConfigmanagement:getFeatureFleetDefaultMemberConfigConfigmanagement"
+ },
+ "description": "Config Management spec\n"
+ },
+ "meshes": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureFleetDefaultMemberConfigMesh:getFeatureFleetDefaultMemberConfigMesh"
+ },
+ "description": "Service Mesh spec\n"
+ },
+ "policycontrollers": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureFleetDefaultMemberConfigPolicycontroller:getFeatureFleetDefaultMemberConfigPolicycontroller"
+ },
+ "description": "Policy Controller spec\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "configmanagements",
+ "meshes",
+ "policycontrollers"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureFleetDefaultMemberConfigConfigmanagement:getFeatureFleetDefaultMemberConfigConfigmanagement": {
+ "properties": {
+ "configSyncs": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureFleetDefaultMemberConfigConfigmanagementConfigSync:getFeatureFleetDefaultMemberConfigConfigmanagementConfigSync"
+ },
+ "description": "ConfigSync configuration for the cluster\n"
+ },
+ "management": {
+ "type": "string",
+ "description": "Set this field to MANAGEMENT_AUTOMATIC to enable Config Sync auto-upgrades, and set this field to MANAGEMENT_MANUAL or MANAGEMENT_UNSPECIFIED to disable Config Sync auto-upgrades. Possible values: [\"MANAGEMENT_UNSPECIFIED\", \"MANAGEMENT_AUTOMATIC\", \"MANAGEMENT_MANUAL\"]\n"
+ },
+ "version": {
+ "type": "string",
+ "description": "Version of Config Sync installed\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "configSyncs",
+ "management",
+ "version"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureFleetDefaultMemberConfigConfigmanagementConfigSync:getFeatureFleetDefaultMemberConfigConfigmanagementConfigSync": {
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Enables the installation of ConfigSync. If set to true, ConfigSync resources will be created and the other ConfigSync fields will be applied if exist. If set to false, all other ConfigSync fields will be ignored, ConfigSync resources will be deleted. If omitted, ConfigSync resources will be managed depends on the presence of the git or oci field.\n"
+ },
+ "gits": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit:getFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit"
+ },
+ "description": "Git repo configuration for the cluster\n"
+ },
+ "ocis": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci:getFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci"
+ },
+ "description": "OCI repo configuration for the cluster\n"
+ },
+ "preventDrift": {
+ "type": "boolean",
+ "description": "Set to true to enable the Config Sync admission webhook to prevent drifts. If set to 'false', disables the Config Sync admission webhook and does not prevent drifts.\n"
+ },
+ "sourceFormat": {
+ "type": "string",
+ "description": "Specifies whether the Config Sync Repo is in hierarchical or unstructured mode\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "enabled",
+ "gits",
+ "ocis",
+ "preventDrift",
+ "sourceFormat"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit:getFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit": {
+ "properties": {
+ "gcpServiceAccountEmail": {
+ "type": "string",
+ "description": "The Google Cloud Service Account Email used for auth when secretType is gcpServiceAccount\n"
+ },
+ "httpsProxy": {
+ "type": "string",
+ "description": "URL for the HTTPS Proxy to be used when communicating with the Git repo\n"
+ },
+ "policyDir": {
+ "type": "string",
+ "description": "The path within the Git repository that represents the top level of the repo to sync\n"
+ },
+ "secretType": {
+ "type": "string",
+ "description": "Type of secret configured for access to the Git repo\n"
+ },
+ "syncBranch": {
+ "type": "string",
+ "description": "The branch of the repository to sync from. Default: master\n"
+ },
+ "syncRepo": {
+ "type": "string",
+ "description": "The URL of the Git repository to use as the source of truth\n"
+ },
+ "syncRev": {
+ "type": "string",
+ "description": "Git revision (tag or hash) to check out. Default HEAD\n"
+ },
+ "syncWaitSecs": {
+ "type": "string",
+ "description": "Period in seconds between consecutive syncs. Default: 15\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "gcpServiceAccountEmail",
+ "httpsProxy",
+ "policyDir",
+ "secretType",
+ "syncBranch",
+ "syncRepo",
+ "syncRev",
+ "syncWaitSecs"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci:getFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci": {
+ "properties": {
+ "gcpServiceAccountEmail": {
+ "type": "string",
+ "description": "The Google Cloud Service Account Email used for auth when secretType is gcpServiceAccount\n"
+ },
+ "policyDir": {
+ "type": "string",
+ "description": "The absolute path of the directory that contains the local resources. Default: the root directory of the image\n"
+ },
+ "secretType": {
+ "type": "string",
+ "description": "Type of secret configured for access to the Git repo\n"
+ },
+ "syncRepo": {
+ "type": "string",
+ "description": "The OCI image repository URL for the package to sync from\n"
+ },
+ "syncWaitSecs": {
+ "type": "string",
+ "description": "Period in seconds between consecutive syncs. Default: 15\n"
+ },
+ "version": {
+ "type": "string",
+ "description": "Version of Config Sync installed\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "gcpServiceAccountEmail",
+ "policyDir",
+ "secretType",
+ "syncRepo",
+ "syncWaitSecs",
+ "version"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureFleetDefaultMemberConfigMesh:getFeatureFleetDefaultMemberConfigMesh": {
+ "properties": {
+ "management": {
+ "type": "string",
+ "description": "Whether to automatically manage Service Mesh Possible values: [\"MANAGEMENT_UNSPECIFIED\", \"MANAGEMENT_AUTOMATIC\", \"MANAGEMENT_MANUAL\"]\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "management"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureFleetDefaultMemberConfigPolicycontroller:getFeatureFleetDefaultMemberConfigPolicycontroller": {
+ "properties": {
+ "policyControllerHubConfigs": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig:getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig"
+ },
+ "description": "Configuration of Policy Controller\n"
+ },
+ "version": {
+ "type": "string",
+ "description": "Configures the version of Policy Controller\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "policyControllerHubConfigs",
+ "version"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig:getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig": {
+ "properties": {
+ "auditIntervalSeconds": {
+ "type": "integer",
+ "description": "Interval for Policy Controller Audit scans (in seconds). When set to 0, this disables audit functionality altogether.\n"
+ },
+ "constraintViolationLimit": {
+ "type": "integer",
+ "description": "The maximum number of audit violations to be stored in a constraint. If not set, the internal default of 20 will be used.\n"
+ },
+ "deploymentConfigs": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig:getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig"
+ },
+ "description": "Map of deployment configs to deployments (\"admission\", \"audit\", \"mutation\").\n"
+ },
+ "exemptableNamespaces": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster.\n"
+ },
+ "installSpec": {
+ "type": "string",
+ "description": "Configures the mode of the Policy Controller installation Possible values: [\"INSTALL_SPEC_UNSPECIFIED\", \"INSTALL_SPEC_NOT_INSTALLED\", \"INSTALL_SPEC_ENABLED\", \"INSTALL_SPEC_SUSPENDED\", \"INSTALL_SPEC_DETACHED\"]\n"
+ },
+ "logDeniesEnabled": {
+ "type": "boolean",
+ "description": "Logs all denies and dry run failures.\n"
+ },
+ "monitorings": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoring:getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoring"
+ },
+ "description": "Monitoring specifies the configuration of monitoring Policy Controller.\n"
+ },
+ "mutationEnabled": {
+ "type": "boolean",
+ "description": "Enables the ability to mutate resources using Policy Controller.\n"
+ },
+ "policyContents": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent:getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent"
+ },
+ "description": "Specifies the desired policy content on the cluster.\n"
+ },
+ "referentialRulesEnabled": {
+ "type": "boolean",
+ "description": "Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "auditIntervalSeconds",
+ "constraintViolationLimit",
+ "deploymentConfigs",
+ "exemptableNamespaces",
+ "installSpec",
+ "logDeniesEnabled",
+ "monitorings",
+ "mutationEnabled",
+ "policyContents",
+ "referentialRulesEnabled"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig:getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig": {
+ "properties": {
+ "component": {
+ "type": "string"
+ },
+ "containerResources": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource:getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource"
+ },
+ "description": "Container resource requirements.\n"
+ },
+ "podAffinity": {
+ "type": "string",
+ "description": "Pod affinity configuration. Possible values: [\"AFFINITY_UNSPECIFIED\", \"NO_AFFINITY\", \"ANTI_AFFINITY\"]\n"
+ },
+ "podTolerations": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration:getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration"
+ },
+ "description": "Pod tolerations of node taints.\n"
+ },
+ "replicaCount": {
+ "type": "integer",
+ "description": "Pod replica count.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "component",
+ "containerResources",
+ "podAffinity",
+ "podTolerations",
+ "replicaCount"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource:getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource": {
+ "properties": {
+ "limits": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit:getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit"
+ },
+ "description": "Limits describes the maximum amount of compute resources allowed for use by the running container.\n"
+ },
+ "requests": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest:getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest"
+ },
+ "description": "Requests describes the amount of compute resources reserved for the container by the kube-scheduler.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "limits",
+ "requests"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit:getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit": {
+ "properties": {
+ "cpu": {
+ "type": "string",
+ "description": "CPU requirement expressed in Kubernetes resource units.\n"
+ },
+ "memory": {
+ "type": "string",
+ "description": "Memory requirement expressed in Kubernetes resource units.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "cpu",
+ "memory"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest:getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest": {
+ "properties": {
+ "cpu": {
+ "type": "string",
+ "description": "CPU requirement expressed in Kubernetes resource units.\n"
+ },
+ "memory": {
+ "type": "string",
+ "description": "Memory requirement expressed in Kubernetes resource units.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "cpu",
+ "memory"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration:getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration": {
+ "properties": {
+ "effect": {
+ "type": "string",
+ "description": "Matches a taint effect.\n"
+ },
+ "key": {
+ "type": "string",
+ "description": "Matches a taint key (not necessarily unique).\n"
+ },
+ "operator": {
+ "type": "string",
+ "description": "Matches a taint operator.\n"
+ },
+ "value": {
+ "type": "string",
+ "description": "Matches a taint value.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "effect",
+ "key",
+ "operator",
+ "value"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoring:getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoring": {
+ "properties": {
+ "backends": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Specifies the list of backends Policy Controller will export to. An empty list would effectively disable metrics export. Possible values: [\"MONITORING_BACKEND_UNSPECIFIED\", \"PROMETHEUS\", \"CLOUD_MONITORING\"]\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "backends"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent:getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent": {
+ "properties": {
+ "bundles": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle:getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle"
+ },
+ "description": "Configures which bundles to install and their corresponding install specs.\n"
+ },
+ "templateLibraries": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibrary:getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibrary"
+ },
+ "description": "Configures the installation of the Template Library.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "bundles",
+ "templateLibraries"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle:getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle": {
+ "properties": {
+ "bundle": {
+ "type": "string"
+ },
+ "exemptedNamespaces": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The set of namespaces to be exempted from the bundle.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "bundle",
+ "exemptedNamespaces"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibrary:getFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibrary": {
+ "properties": {
+ "installation": {
+ "type": "string",
+ "description": "Configures the manner in which the template library is installed on the cluster. Possible values: [\"INSTALLATION_UNSPECIFIED\", \"NOT_INSTALLED\", \"ALL\"]\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "installation"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureResourceState:getFeatureResourceState": {
+ "properties": {
+ "hasResources": {
+ "type": "boolean",
+ "description": "Whether this Feature has outstanding resources that need to be cleaned up before it can be disabled.\n"
+ },
+ "state": {
+ "type": "string",
+ "description": "The current state of the Feature resource in the Hub API.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "hasResources",
+ "state"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureSpec:getFeatureSpec": {
+ "properties": {
+ "clusterupgrades": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureSpecClusterupgrade:getFeatureSpecClusterupgrade"
+ },
+ "description": "Clusterupgrade feature spec.\n"
+ },
+ "fleetobservabilities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureSpecFleetobservability:getFeatureSpecFleetobservability"
+ },
+ "description": "Fleet Observability feature spec.\n"
+ },
+ "multiclusteringresses": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureSpecMulticlusteringress:getFeatureSpecMulticlusteringress"
+ },
+ "description": "Multicluster Ingress-specific spec.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "clusterupgrades",
+ "fleetobservabilities",
+ "multiclusteringresses"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureSpecClusterupgrade:getFeatureSpecClusterupgrade": {
+ "properties": {
+ "gkeUpgradeOverrides": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureSpecClusterupgradeGkeUpgradeOverride:getFeatureSpecClusterupgradeGkeUpgradeOverride"
+ },
+ "description": "Configuration overrides for individual upgrades.\n"
+ },
+ "postConditions": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureSpecClusterupgradePostCondition:getFeatureSpecClusterupgradePostCondition"
+ },
+ "description": "Post conditions to override for the specified upgrade.\n"
+ },
+ "upstreamFleets": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Specified if other fleet should be considered as a source of upgrades. Currently, at most one upstream fleet is allowed. The fleet name should be either fleet project number or id.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "gkeUpgradeOverrides",
+ "postConditions",
+ "upstreamFleets"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureSpecClusterupgradeGkeUpgradeOverride:getFeatureSpecClusterupgradeGkeUpgradeOverride": {
+ "properties": {
+ "postConditions": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureSpecClusterupgradeGkeUpgradeOverridePostCondition:getFeatureSpecClusterupgradeGkeUpgradeOverridePostCondition"
+ },
+ "description": "Post conditions to override for the specified upgrade.\n"
+ },
+ "upgrades": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade:getFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade"
+ },
+ "description": "Which upgrade to override.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "postConditions",
+ "upgrades"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureSpecClusterupgradeGkeUpgradeOverridePostCondition:getFeatureSpecClusterupgradeGkeUpgradeOverridePostCondition": {
+ "properties": {
+ "soaking": {
+ "type": "string",
+ "description": "Amount of time to \"soak\" after a rollout has been finished before marking it COMPLETE. Cannot exceed 30 days.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "soaking"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade:getFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade": {
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the upgrade, e.g., \"k8s_control_plane\". It should be a valid upgrade name. It must not exceet 99 characters.\n"
+ },
+ "version": {
+ "type": "string",
+ "description": "Version of the upgrade, e.g., \"1.22.1-gke.100\". It should be a valid version. It must not exceet 99 characters.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "name",
+ "version"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureSpecClusterupgradePostCondition:getFeatureSpecClusterupgradePostCondition": {
+ "properties": {
+ "soaking": {
+ "type": "string",
+ "description": "Amount of time to \"soak\" after a rollout has been finished before marking it COMPLETE. Cannot exceed 30 days.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "soaking"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureSpecFleetobservability:getFeatureSpecFleetobservability": {
+ "properties": {
+ "loggingConfigs": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureSpecFleetobservabilityLoggingConfig:getFeatureSpecFleetobservabilityLoggingConfig"
+ },
+ "description": "Specified if fleet logging feature is enabled for the entire fleet. If UNSPECIFIED, fleet logging feature is disabled for the entire fleet.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "loggingConfigs"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureSpecFleetobservabilityLoggingConfig:getFeatureSpecFleetobservabilityLoggingConfig": {
+ "properties": {
+ "defaultConfigs": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureSpecFleetobservabilityLoggingConfigDefaultConfig:getFeatureSpecFleetobservabilityLoggingConfigDefaultConfig"
+ },
+ "description": "Specified if applying the default routing config to logs not specified in other configs.\n"
+ },
+ "fleetScopeLogsConfigs": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfig:getFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfig"
+ },
+ "description": "Specified if applying the routing config to all logs for all fleet scopes.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "defaultConfigs",
+ "fleetScopeLogsConfigs"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureSpecFleetobservabilityLoggingConfigDefaultConfig:getFeatureSpecFleetobservabilityLoggingConfigDefaultConfig": {
+ "properties": {
+ "mode": {
+ "type": "string",
+ "description": "Specified if fleet logging feature is enabled. Possible values: [\"MODE_UNSPECIFIED\", \"COPY\", \"MOVE\"]\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "mode"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfig:getFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfig": {
+ "properties": {
+ "mode": {
+ "type": "string",
+ "description": "Specified if fleet logging feature is enabled. Possible values: [\"MODE_UNSPECIFIED\", \"COPY\", \"MOVE\"]\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "mode"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureSpecMulticlusteringress:getFeatureSpecMulticlusteringress": {
+ "properties": {
+ "configMembership": {
+ "type": "string",
+ "description": "Fully-qualified Membership name which hosts the MultiClusterIngress CRD. Example: 'projects/foo-proj/locations/global/memberships/bar'\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "configMembership"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureState:getFeatureState": {
+ "properties": {
+ "states": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureStateState:getFeatureStateState"
+ },
+ "description": "Output only. The \"running state\" of the Feature in this Hub.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "states"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
+ "gcp:gkehub/getFeatureStateState:getFeatureStateState": {
+ "properties": {
+ "code": {
+ "type": "string",
+ "description": "The high-level, machine-readable status of this Feature.\n"
+ },
+ "description": {
+ "type": "string",
+ "description": "A human-readable description of the current status.\n"
+ },
+ "updateTime": {
+ "type": "string",
+ "description": "The time this status and any related Feature-specific details were updated. A timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\"\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "code",
+ "description",
+ "updateTime"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredInputs": []
+ }
+ }
+ },
"gcp:gkehub/getMembershipBindingState:getMembershipBindingState": {
"properties": {
"code": {
@@ -92707,116 +93943,1017 @@
}
}
},
- "gcp:gkeonprem/VMwareClusterStorage:VMwareClusterStorage": {
- "properties": {
- "vsphereCsiDisabled": {
- "type": "boolean",
- "description": "Whether or not to deploy vSphere CSI components in the VMware User Cluster.\nEnabled by default.\n"
- }
- },
- "type": "object",
- "required": [
- "vsphereCsiDisabled"
- ]
- },
- "gcp:gkeonprem/VMwareClusterUpgradePolicy:VMwareClusterUpgradePolicy": {
- "properties": {
- "controlPlaneOnly": {
- "type": "boolean",
- "description": "Controls whether the upgrade applies to the control plane only.\n"
- }
- },
- "type": "object"
- },
- "gcp:gkeonprem/VMwareClusterValidationCheck:VMwareClusterValidationCheck": {
+ "gcp:gkeonprem/VMwareClusterStorage:VMwareClusterStorage": {
+ "properties": {
+ "vsphereCsiDisabled": {
+ "type": "boolean",
+ "description": "Whether or not to deploy vSphere CSI components in the VMware User Cluster.\nEnabled by default.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "vsphereCsiDisabled"
+ ]
+ },
+ "gcp:gkeonprem/VMwareClusterUpgradePolicy:VMwareClusterUpgradePolicy": {
+ "properties": {
+ "controlPlaneOnly": {
+ "type": "boolean",
+ "description": "Controls whether the upgrade applies to the control plane only.\n"
+ }
+ },
+ "type": "object"
+ },
+ "gcp:gkeonprem/VMwareClusterValidationCheck:VMwareClusterValidationCheck": {
+ "properties": {
+ "options": {
+ "type": "string",
+ "description": "(Output)\nOptions used for the validation check.\n"
+ },
+ "scenario": {
+ "type": "string",
+ "description": "(Output)\nThe scenario when the preflight checks were run..\n"
+ },
+ "statuses": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkeonprem/VMwareClusterValidationCheckStatus:VMwareClusterValidationCheckStatus"
+ },
+ "description": "(Output)\nSpecifies the detailed validation check status\nStructure is documented below.\n"
+ }
+ },
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "options",
+ "scenario",
+ "statuses"
+ ]
+ }
+ }
+ },
+ "gcp:gkeonprem/VMwareClusterValidationCheckStatus:VMwareClusterValidationCheckStatus": {
+ "properties": {
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkeonprem/VMwareClusterValidationCheckStatusResult:VMwareClusterValidationCheckStatusResult"
+ },
+ "description": "(Output)\nIndividual checks which failed as part of the Preflight check execution.\nStructure is documented below.\n"
+ }
+ },
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "results"
+ ]
+ }
+ }
+ },
+ "gcp:gkeonprem/VMwareClusterValidationCheckStatusResult:VMwareClusterValidationCheckStatusResult": {
+ "properties": {
+ "category": {
+ "type": "string",
+ "description": "(Output)\nThe category of the validation.\n"
+ },
+ "description": {
+ "type": "string",
+ "description": "(Output)\nThe description of the validation check.\n"
+ },
+ "details": {
+ "type": "string",
+ "description": "(Output)\nDetailed failure information, which might be unformatted.\n"
+ },
+ "options": {
+ "type": "string",
+ "description": "(Output)\nOptions used for the validation check.\n"
+ },
+ "reason": {
+ "type": "string",
+ "description": "(Output)\nMachine-readable message indicating details about last transition.\n"
+ }
+ },
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "category",
+ "description",
+ "details",
+ "options",
+ "reason"
+ ]
+ }
+ }
+ },
+ "gcp:gkeonprem/VMwareClusterVcenter:VMwareClusterVcenter": {
+ "properties": {
+ "address": {
+ "type": "string",
+ "description": "(Output)\nThe vCenter IP address.\n"
+ },
+ "caCertData": {
+ "type": "string",
+ "description": "Contains the vCenter CA certificate public key for SSL verification.\n"
+ },
+ "cluster": {
+ "type": "string",
+ "description": "The name of the vCenter cluster for the user cluster.\n"
+ },
+ "datacenter": {
+ "type": "string",
+ "description": "The name of the vCenter datacenter for the user cluster.\n"
+ },
+ "datastore": {
+ "type": "string",
+ "description": "The name of the vCenter datastore for the user cluster.\n"
+ },
+ "folder": {
+ "type": "string",
+ "description": "The name of the vCenter folder for the user cluster.\n"
+ },
+ "resourcePool": {
+ "type": "string",
+ "description": "The name of the vCenter resource pool for the user cluster.\n"
+ },
+ "storagePolicyName": {
+ "type": "string",
+ "description": "The name of the vCenter storage policy for the user cluster.\n"
+ }
+ },
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "address"
+ ]
+ }
+ }
+ },
+ "gcp:gkeonprem/VMwareNodePoolConfig:VMwareNodePoolConfig": {
+ "properties": {
+ "bootDiskSizeGb": {
+ "type": "integer",
+ "description": "VMware disk size to be used during creation.\n"
+ },
+ "cpus": {
+ "type": "integer",
+ "description": "The number of CPUs for each node in the node pool.\n"
+ },
+ "enableLoadBalancer": {
+ "type": "boolean",
+ "description": "Allow node pool traffic to be load balanced. Only works for clusters with\nMetalLB load balancers.\n"
+ },
+ "image": {
+ "type": "string",
+ "description": "The OS image name in vCenter, only valid when using Windows.\n"
+ },
+ "imageType": {
+ "type": "string",
+ "description": "The OS image to be used for each node in a node pool.\nCurrently `cos`, `cos_cgv2`, `ubuntu`, `ubuntu_cgv2`, `ubuntu_containerd` and `windows` are supported.\n"
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "The map of Kubernetes labels (key/value pairs) to be applied to each node.\nThese will added in addition to any default label(s) that\nKubernetes may apply to the node.\nIn case of conflict in label keys, the applied set may differ depending on\nthe Kubernetes version -- it's best to assume the behavior is undefined\nand conflicts should be avoided.\n"
+ },
+ "memoryMb": {
+ "type": "integer",
+ "description": "The megabytes of memory for each node in the node pool.\n"
+ },
+ "replicas": {
+ "type": "integer",
+ "description": "The number of nodes in the node pool.\n"
+ },
+ "taints": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkeonprem/VMwareNodePoolConfigTaint:VMwareNodePoolConfigTaint"
+ },
+ "description": "The initial taints assigned to nodes of this node pool.\nStructure is documented below.\n"
+ },
+ "vsphereConfig": {
+ "$ref": "#/types/gcp:gkeonprem/VMwareNodePoolConfigVsphereConfig:VMwareNodePoolConfigVsphereConfig",
+ "description": "Specifies the vSphere config for node pool.\nStructure is documented below.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "imageType"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "imageType",
+ "labels"
+ ]
+ }
+ }
+ },
+ "gcp:gkeonprem/VMwareNodePoolConfigTaint:VMwareNodePoolConfigTaint": {
+ "properties": {
+ "effect": {
+ "type": "string",
+ "description": "Available taint effects.\nPossible values are: `EFFECT_UNSPECIFIED`, `NO_SCHEDULE`, `PREFER_NO_SCHEDULE`, `NO_EXECUTE`.\n"
+ },
+ "key": {
+ "type": "string",
+ "description": "Key associated with the effect.\n"
+ },
+ "value": {
+ "type": "string",
+ "description": "Value associated with the effect.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "key",
+ "value"
+ ]
+ },
+ "gcp:gkeonprem/VMwareNodePoolConfigVsphereConfig:VMwareNodePoolConfigVsphereConfig": {
+ "properties": {
+ "datastore": {
+ "type": "string",
+ "description": "The name of the vCenter datastore. Inherited from the user cluster.\n"
+ },
+ "hostGroups": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Vsphere host groups to apply to all VMs in the node pool\n"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkeonprem/VMwareNodePoolConfigVsphereConfigTag:VMwareNodePoolConfigVsphereConfigTag"
+ },
+ "description": "Tags to apply to VMs.\nStructure is documented below.\n"
+ }
+ },
+ "type": "object"
+ },
+ "gcp:gkeonprem/VMwareNodePoolConfigVsphereConfigTag:VMwareNodePoolConfigVsphereConfigTag": {
+ "properties": {
+ "category": {
+ "type": "string",
+ "description": "The Vsphere tag category.\n"
+ },
+ "tag": {
+ "type": "string",
+ "description": "The Vsphere tag name.\n\n- - -\n"
+ }
+ },
+ "type": "object"
+ },
+ "gcp:gkeonprem/VMwareNodePoolNodePoolAutoscaling:VMwareNodePoolNodePoolAutoscaling": {
+ "properties": {
+ "maxReplicas": {
+ "type": "integer",
+ "description": "Maximum number of replicas in the NodePool.\n"
+ },
+ "minReplicas": {
+ "type": "integer",
+ "description": "Minimum number of replicas in the NodePool.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "maxReplicas",
+ "minReplicas"
+ ]
+ },
+ "gcp:gkeonprem/VMwareNodePoolStatus:VMwareNodePoolStatus": {
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkeonprem/VMwareNodePoolStatusCondition:VMwareNodePoolStatusCondition"
+ },
+ "description": "(Output)\nResourceConditions provide a standard mechanism for higher-level status reporting from user cluster controller.\nStructure is documented below.\n"
+ },
+ "errorMessage": {
+ "type": "string",
+ "description": "(Output)\nHuman-friendly representation of the error message from the user cluster\ncontroller. The error message can be temporary as the user cluster\ncontroller creates a cluster or node pool. If the error message persists\nfor a longer period of time, it can be used to surface error message to\nindicate real problems requiring user intervention.\n"
+ }
+ },
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "conditions",
+ "errorMessage"
+ ]
+ }
+ }
+ },
+ "gcp:gkeonprem/VMwareNodePoolStatusCondition:VMwareNodePoolStatusCondition": {
+ "properties": {
+ "lastTransitionTime": {
+ "type": "string",
+ "description": "(Output)\nLast time the condition transit from one status to another.\n"
+ },
+ "message": {
+ "type": "string",
+ "description": "(Output)\nHuman-readable message indicating details about last transition.\n"
+ },
+ "reason": {
+ "type": "string",
+ "description": "(Output)\nMachine-readable message indicating details about last transition.\n"
+ },
+ "state": {
+ "type": "string",
+ "description": "(Output)\nThe lifecycle state of the condition.\n"
+ },
+ "type": {
+ "type": "string",
+ "description": "(Output)\nType of the condition.\n(e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady)\n"
+ }
+ },
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "lastTransitionTime",
+ "message",
+ "reason",
+ "state",
+ "type"
+ ]
+ }
+ }
+ },
+ "gcp:gkeonprem/VmwareAdminClusterAddonNode:VmwareAdminClusterAddonNode": {
+ "properties": {
+ "autoResizeConfig": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterAddonNodeAutoResizeConfig:VmwareAdminClusterAddonNodeAutoResizeConfig",
+ "description": "Specifies auto resize config.\nStructure is documented below.\n"
+ }
+ },
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "autoResizeConfig"
+ ]
+ }
+ }
+ },
+ "gcp:gkeonprem/VmwareAdminClusterAddonNodeAutoResizeConfig:VmwareAdminClusterAddonNodeAutoResizeConfig": {
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Whether to enable controle plane node auto resizing.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "enabled"
+ ]
+ },
+ "gcp:gkeonprem/VmwareAdminClusterAntiAffinityGroups:VmwareAdminClusterAntiAffinityGroups": {
+ "properties": {
+ "aagConfigDisabled": {
+ "type": "boolean",
+ "description": "Spread nodes across at least three physical hosts (requires at least three\nhosts).\nEnabled by default.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "aagConfigDisabled"
+ ]
+ },
+ "gcp:gkeonprem/VmwareAdminClusterAuthorization:VmwareAdminClusterAuthorization": {
+ "properties": {
+ "viewerUsers": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterAuthorizationViewerUser:VmwareAdminClusterAuthorizationViewerUser"
+ },
+ "description": "Users that will be granted the cluster-admin role on the cluster, providing\nfull access to the cluster.\nStructure is documented below.\n"
+ }
+ },
+ "type": "object"
+ },
+ "gcp:gkeonprem/VmwareAdminClusterAuthorizationViewerUser:VmwareAdminClusterAuthorizationViewerUser": {
+ "properties": {
+ "username": {
+ "type": "string",
+ "description": "The name of the user, e.g. `my-gcp-id@gmail.com`.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "username"
+ ]
+ },
+ "gcp:gkeonprem/VmwareAdminClusterAutoRepairConfig:VmwareAdminClusterAutoRepairConfig": {
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Whether auto repair is enabled.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "enabled"
+ ]
+ },
+ "gcp:gkeonprem/VmwareAdminClusterControlPlaneNode:VmwareAdminClusterControlPlaneNode": {
+ "properties": {
+ "cpus": {
+ "type": "integer",
+ "description": "The number of vCPUs for the control-plane node of the admin cluster.\n"
+ },
+ "memory": {
+ "type": "integer",
+ "description": "The number of mebibytes of memory for the control-plane node of the admin cluster.\n"
+ },
+ "replicas": {
+ "type": "integer",
+ "description": "The number of control plane nodes for this VMware admin cluster.\n"
+ }
+ },
+ "type": "object"
+ },
+ "gcp:gkeonprem/VmwareAdminClusterFleet:VmwareAdminClusterFleet": {
+ "properties": {
+ "membership": {
+ "type": "string",
+ "description": "(Output)\nThe name of the managed Fleet Membership resource associated to this cluster.\nMembership names are formatted as\n`projects/\u003cproject-number\u003e/locations/\u003clocation\u003e/memberships/\u003ccluster-id\u003e`.\n"
+ }
+ },
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "membership"
+ ]
+ }
+ }
+ },
+ "gcp:gkeonprem/VmwareAdminClusterLoadBalancer:VmwareAdminClusterLoadBalancer": {
+ "properties": {
+ "f5Config": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterLoadBalancerF5Config:VmwareAdminClusterLoadBalancerF5Config",
+ "description": "Configuration for F5 Big IP typed load balancers.\nStructure is documented below.\n"
+ },
+ "manualLbConfig": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterLoadBalancerManualLbConfig:VmwareAdminClusterLoadBalancerManualLbConfig",
+ "description": "Manually configured load balancers.\nStructure is documented below.\n"
+ },
+ "metalLbConfig": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterLoadBalancerMetalLbConfig:VmwareAdminClusterLoadBalancerMetalLbConfig",
+ "description": "Metal LB load balancers.\nStructure is documented below.\n"
+ },
+ "vipConfig": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterLoadBalancerVipConfig:VmwareAdminClusterLoadBalancerVipConfig",
+ "description": "Specified the VMware Load Balancer Config\nStructure is documented below.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "vipConfig"
+ ]
+ },
+ "gcp:gkeonprem/VmwareAdminClusterLoadBalancerF5Config:VmwareAdminClusterLoadBalancerF5Config": {
+ "properties": {
+ "address": {
+ "type": "string",
+ "description": "The load balancer's IP address.\n"
+ },
+ "partition": {
+ "type": "string",
+ "description": "he preexisting partition to be used by the load balancer. T\nhis partition is usually created for the admin cluster for example:\n'my-f5-admin-partition'.\n"
+ },
+ "snatPool": {
+ "type": "string",
+ "description": "The pool name. Only necessary, if using SNAT.\n"
+ }
+ },
+ "type": "object"
+ },
+ "gcp:gkeonprem/VmwareAdminClusterLoadBalancerManualLbConfig:VmwareAdminClusterLoadBalancerManualLbConfig": {
+ "properties": {
+ "addonsNodePort": {
+ "type": "integer",
+ "description": "NodePort for add-ons server in the admin cluster.\n"
+ },
+ "controlPlaneNodePort": {
+ "type": "integer",
+ "description": "NodePort for control plane service. The Kubernetes API server in the admin\ncluster is implemented as a Service of type NodePort (ex. 30968).\n"
+ },
+ "ingressHttpNodePort": {
+ "type": "integer",
+ "description": "NodePort for ingress service's http. The ingress service in the admin\ncluster is implemented as a Service of type NodePort (ex. 32527).\n"
+ },
+ "ingressHttpsNodePort": {
+ "type": "integer",
+ "description": "NodePort for ingress service's https. The ingress service in the admin\ncluster is implemented as a Service of type NodePort (ex. 30139).\n"
+ },
+ "konnectivityServerNodePort": {
+ "type": "integer",
+ "description": "NodePort for konnectivity server service running as a sidecar in each\nkube-apiserver pod (ex. 30564).\n"
+ }
+ },
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "addonsNodePort",
+ "controlPlaneNodePort",
+ "ingressHttpNodePort",
+ "ingressHttpsNodePort",
+ "konnectivityServerNodePort"
+ ]
+ }
+ }
+ },
+ "gcp:gkeonprem/VmwareAdminClusterLoadBalancerMetalLbConfig:VmwareAdminClusterLoadBalancerMetalLbConfig": {
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Metal LB is enabled.\n"
+ }
+ },
+ "type": "object"
+ },
+ "gcp:gkeonprem/VmwareAdminClusterLoadBalancerVipConfig:VmwareAdminClusterLoadBalancerVipConfig": {
+ "properties": {
+ "addonsVip": {
+ "type": "string",
+ "description": "The VIP to configure the load balancer for add-ons.\n\n\u003ca name=\"nested_f5_config\"\u003e\u003c/a\u003eThe `f5_config` block supports:\n"
+ },
+ "controlPlaneVip": {
+ "type": "string",
+ "description": "The VIP which you previously set aside for the Kubernetes\nAPI of this VMware Admin Cluster.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "controlPlaneVip"
+ ]
+ },
+ "gcp:gkeonprem/VmwareAdminClusterNetworkConfig:VmwareAdminClusterNetworkConfig": {
+ "properties": {
+ "dhcpIpConfig": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterNetworkConfigDhcpIpConfig:VmwareAdminClusterNetworkConfigDhcpIpConfig",
+ "description": "Configuration settings for a DHCP IP configuration.\nStructure is documented below.\n"
+ },
+ "haControlPlaneConfig": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterNetworkConfigHaControlPlaneConfig:VmwareAdminClusterNetworkConfigHaControlPlaneConfig",
+ "description": "Configuration for HA admin cluster control plane.\nStructure is documented below.\n"
+ },
+ "hostConfig": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterNetworkConfigHostConfig:VmwareAdminClusterNetworkConfigHostConfig",
+ "description": "Represents common network settings irrespective of the host's IP address.\nStructure is documented below.\n"
+ },
+ "podAddressCidrBlocks": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "All pods in the cluster are assigned an RFC1918 IPv4 address from these ranges.\nOnly a single range is supported. This field cannot be changed after creation.\n"
+ },
+ "serviceAddressCidrBlocks": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "All services in the cluster are assigned an RFC1918 IPv4 address\nfrom these ranges. Only a single range is supported.. This field\ncannot be changed after creation.\n"
+ },
+ "staticIpConfig": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterNetworkConfigStaticIpConfig:VmwareAdminClusterNetworkConfigStaticIpConfig",
+ "description": "Configuration settings for a static IP configuration.\nStructure is documented below.\n"
+ },
+ "vcenterNetwork": {
+ "type": "string",
+ "description": "vcenter_network specifies vCenter network name.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "podAddressCidrBlocks",
+ "serviceAddressCidrBlocks"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "dhcpIpConfig",
+ "hostConfig",
+ "podAddressCidrBlocks",
+ "serviceAddressCidrBlocks"
+ ]
+ }
+ }
+ },
+ "gcp:gkeonprem/VmwareAdminClusterNetworkConfigDhcpIpConfig:VmwareAdminClusterNetworkConfigDhcpIpConfig": {
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "enabled is a flag to mark if DHCP IP allocation is\nused for VMware admin clusters.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "enabled"
+ ]
+ },
+ "gcp:gkeonprem/VmwareAdminClusterNetworkConfigHaControlPlaneConfig:VmwareAdminClusterNetworkConfigHaControlPlaneConfig": {
+ "properties": {
+ "controlPlaneIpBlock": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock:VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock",
+ "description": "Static IP addresses for the control plane nodes.\nStructure is documented below.\n"
+ }
+ },
+ "type": "object"
+ },
+ "gcp:gkeonprem/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock:VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock": {
+ "properties": {
+ "gateway": {
+ "type": "string",
+ "description": "The network gateway used by the VMware Admin Cluster.\n"
+ },
+ "ips": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp:VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp"
+ },
+ "description": "The node's network configurations used by the VMware Admin Cluster.\nStructure is documented below.\n"
+ },
+ "netmask": {
+ "type": "string",
+ "description": "The netmask used by the VMware Admin Cluster.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "gateway",
+ "ips",
+ "netmask"
+ ]
+ },
+ "gcp:gkeonprem/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp:VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp": {
+ "properties": {
+ "hostname": {
+ "type": "string",
+ "description": "Hostname of the machine. VM's name will be used if this field is empty.\n\n- - -\n"
+ },
+ "ip": {
+ "type": "string",
+ "description": "IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24).\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "ip"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "hostname",
+ "ip"
+ ]
+ }
+ }
+ },
+ "gcp:gkeonprem/VmwareAdminClusterNetworkConfigHostConfig:VmwareAdminClusterNetworkConfigHostConfig": {
+ "properties": {
+ "dnsSearchDomains": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "DNS search domains.\n"
+ },
+ "dnsServers": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "DNS servers.\n"
+ },
+ "ntpServers": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "NTP servers.\n"
+ }
+ },
+ "type": "object"
+ },
+ "gcp:gkeonprem/VmwareAdminClusterNetworkConfigStaticIpConfig:VmwareAdminClusterNetworkConfigStaticIpConfig": {
+ "properties": {
+ "ipBlocks": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock:VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock"
+ },
+ "description": "Represents the configuration values for static IP allocation to nodes.\nStructure is documented below.\n"
+ }
+ },
+ "type": "object"
+ },
+ "gcp:gkeonprem/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock:VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock": {
+ "properties": {
+ "gateway": {
+ "type": "string",
+ "description": "The network gateway used by the VMware Admin Cluster.\n"
+ },
+ "ips": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp:VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp"
+ },
+ "description": "The node's network configurations used by the VMware Admin Cluster.\nStructure is documented below.\n"
+ },
+ "netmask": {
+ "type": "string",
+ "description": "The netmask used by the VMware Admin Cluster.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "gateway",
+ "ips",
+ "netmask"
+ ]
+ },
+ "gcp:gkeonprem/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp:VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp": {
+ "properties": {
+ "hostname": {
+ "type": "string",
+ "description": "Hostname of the machine. VM's name will be used if this field is empty.\n\n- - -\n"
+ },
+ "ip": {
+ "type": "string",
+ "description": "IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24).\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "ip"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "hostname",
+ "ip"
+ ]
+ }
+ }
+ },
+ "gcp:gkeonprem/VmwareAdminClusterPlatformConfig:VmwareAdminClusterPlatformConfig": {
+ "properties": {
+ "bundles": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterPlatformConfigBundle:VmwareAdminClusterPlatformConfigBundle"
+ },
+ "description": "(Output)\nThe list of bundles installed in the admin cluster.\nStructure is documented below.\n"
+ },
+ "platformVersion": {
+ "type": "string",
+ "description": "(Output)\nThe platform version e.g. 1.13.2.\n"
+ },
+ "requiredPlatformVersion": {
+ "type": "string",
+ "description": "The required platform version e.g. 1.13.1.\nIf the current platform version is lower than the target version,\nthe platform version will be updated to the target version.\nIf the target version is not installed in the platform\n(bundle versions), download the target version bundle.\n"
+ },
+ "statuses": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterPlatformConfigStatus:VmwareAdminClusterPlatformConfigStatus"
+ },
+ "description": "(Output)\nResourceStatus representing detailed cluster state.\nStructure is documented below.\n\n\n\u003ca name=\"nested_status\"\u003e\u003c/a\u003eThe `status` block contains:\n"
+ }
+ },
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "bundles",
+ "platformVersion",
+ "statuses"
+ ]
+ }
+ }
+ },
+ "gcp:gkeonprem/VmwareAdminClusterPlatformConfigBundle:VmwareAdminClusterPlatformConfigBundle": {
+ "properties": {
+ "statuses": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterPlatformConfigBundleStatus:VmwareAdminClusterPlatformConfigBundleStatus"
+ },
+ "description": "ResourceStatus representing detailed cluster state.\nStructure is documented below.\n"
+ },
+ "version": {
+ "type": "string",
+ "description": "The version of the bundle.\n"
+ }
+ },
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "statuses",
+ "version"
+ ]
+ }
+ }
+ },
+ "gcp:gkeonprem/VmwareAdminClusterPlatformConfigBundleStatus:VmwareAdminClusterPlatformConfigBundleStatus": {
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterPlatformConfigBundleStatusCondition:VmwareAdminClusterPlatformConfigBundleStatusCondition"
+ },
+ "description": "(Output)\nResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller.\nStructure is documented below.\n"
+ },
+ "errorMessage": {
+ "type": "string",
+ "description": "(Output)\nHuman-friendly representation of the error message from the admin cluster\ncontroller. The error message can be temporary as the admin cluster\ncontroller creates a cluster or node pool. If the error message persists\nfor a longer period of time, it can be used to surface error message to\nindicate real problems requiring user intervention.\n"
+ }
+ },
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "conditions",
+ "errorMessage"
+ ]
+ }
+ }
+ },
+ "gcp:gkeonprem/VmwareAdminClusterPlatformConfigBundleStatusCondition:VmwareAdminClusterPlatformConfigBundleStatusCondition": {
+ "properties": {
+ "lastTransitionTime": {
+ "type": "string",
+ "description": "(Output)\nLast time the condition transit from one status to another.\n"
+ },
+ "message": {
+ "type": "string",
+ "description": "(Output)\nHuman-readable message indicating details about last transition.\n"
+ },
+ "reason": {
+ "type": "string",
+ "description": "(Output)\nMachine-readable message indicating details about last transition.\n"
+ },
+ "state": {
+ "type": "string",
+ "description": "(Output)\nThe lifecycle state of the condition.\n"
+ },
+ "type": {
+ "type": "string",
+ "description": "(Output)\nType of the condition.\n(e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady)\n"
+ }
+ },
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "lastTransitionTime",
+ "message",
+ "reason",
+ "state",
+ "type"
+ ]
+ }
+ }
+ },
+ "gcp:gkeonprem/VmwareAdminClusterPlatformConfigStatus:VmwareAdminClusterPlatformConfigStatus": {
+ "properties": {
+ "conditions": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterPlatformConfigStatusCondition:VmwareAdminClusterPlatformConfigStatusCondition"
+ },
+ "description": "(Output)\nResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller.\nStructure is documented below.\n"
+ },
+ "errorMessage": {
+ "type": "string",
+ "description": "(Output)\nHuman-friendly representation of the error message from the admin cluster\ncontroller. The error message can be temporary as the admin cluster\ncontroller creates a cluster or node pool. If the error message persists\nfor a longer period of time, it can be used to surface error message to\nindicate real problems requiring user intervention.\n"
+ }
+ },
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "conditions",
+ "errorMessage"
+ ]
+ }
+ }
+ },
+ "gcp:gkeonprem/VmwareAdminClusterPlatformConfigStatusCondition:VmwareAdminClusterPlatformConfigStatusCondition": {
+ "properties": {
+ "lastTransitionTime": {
+ "type": "string",
+ "description": "(Output)\nLast time the condition transit from one status to another.\n"
+ },
+ "message": {
+ "type": "string",
+ "description": "(Output)\nHuman-readable message indicating details about last transition.\n"
+ },
+ "reason": {
+ "type": "string",
+ "description": "(Output)\nMachine-readable message indicating details about last transition.\n"
+ },
+ "state": {
+ "type": "string",
+ "description": "(Output)\nThe lifecycle state of the condition.\n"
+ },
+ "type": {
+ "type": "string",
+ "description": "(Output)\nType of the condition.\n(e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady)\n"
+ }
+ },
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "lastTransitionTime",
+ "message",
+ "reason",
+ "state",
+ "type"
+ ]
+ }
+ }
+ },
+ "gcp:gkeonprem/VmwareAdminClusterStatus:VmwareAdminClusterStatus": {
"properties": {
- "options": {
- "type": "string",
- "description": "(Output)\nOptions used for the validation check.\n"
- },
- "scenario": {
- "type": "string",
- "description": "(Output)\nThe scenario when the preflight checks were run..\n"
- },
- "statuses": {
- "type": "array",
- "items": {
- "$ref": "#/types/gcp:gkeonprem/VMwareClusterValidationCheckStatus:VMwareClusterValidationCheckStatus"
- },
- "description": "(Output)\nSpecifies the detailed validation check status\nStructure is documented below.\n"
- }
- },
- "type": "object",
- "language": {
- "nodejs": {
- "requiredOutputs": [
- "options",
- "scenario",
- "statuses"
- ]
- }
- }
- },
- "gcp:gkeonprem/VMwareClusterValidationCheckStatus:VMwareClusterValidationCheckStatus": {
- "properties": {
- "results": {
+ "conditions": {
"type": "array",
"items": {
- "$ref": "#/types/gcp:gkeonprem/VMwareClusterValidationCheckStatusResult:VMwareClusterValidationCheckStatusResult"
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterStatusCondition:VmwareAdminClusterStatusCondition"
},
- "description": "(Output)\nIndividual checks which failed as part of the Preflight check execution.\nStructure is documented below.\n"
+ "description": "(Output)\nResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller.\nStructure is documented below.\n"
+ },
+ "errorMessage": {
+ "type": "string",
+ "description": "(Output)\nHuman-friendly representation of the error message from the admin cluster\ncontroller. The error message can be temporary as the admin cluster\ncontroller creates a cluster or node pool. If the error message persists\nfor a longer period of time, it can be used to surface error message to\nindicate real problems requiring user intervention.\n"
}
},
"type": "object",
"language": {
"nodejs": {
"requiredOutputs": [
- "results"
+ "conditions",
+ "errorMessage"
]
}
}
},
- "gcp:gkeonprem/VMwareClusterValidationCheckStatusResult:VMwareClusterValidationCheckStatusResult": {
+ "gcp:gkeonprem/VmwareAdminClusterStatusCondition:VmwareAdminClusterStatusCondition": {
"properties": {
- "category": {
+ "lastTransitionTime": {
"type": "string",
- "description": "(Output)\nThe category of the validation.\n"
+ "description": "(Output)\nLast time the condition transit from one status to another.\n"
},
- "description": {
+ "message": {
"type": "string",
- "description": "(Output)\nThe description of the validation check.\n"
+ "description": "(Output)\nHuman-readable message indicating details about last transition.\n"
},
- "details": {
+ "reason": {
"type": "string",
- "description": "(Output)\nDetailed failure information, which might be unformatted.\n"
+ "description": "(Output)\nMachine-readable message indicating details about last transition.\n"
},
- "options": {
+ "state": {
"type": "string",
- "description": "(Output)\nOptions used for the validation check.\n"
+ "description": "(Output)\nThe lifecycle state of the condition.\n"
},
- "reason": {
+ "type": {
"type": "string",
- "description": "(Output)\nMachine-readable message indicating details about last transition.\n"
+ "description": "(Output)\nType of the condition.\n(e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady)\n"
}
},
"type": "object",
"language": {
"nodejs": {
"requiredOutputs": [
- "category",
- "description",
- "details",
- "options",
- "reason"
+ "lastTransitionTime",
+ "message",
+ "reason",
+ "state",
+ "type"
]
}
}
},
- "gcp:gkeonprem/VMwareClusterVcenter:VMwareClusterVcenter": {
+ "gcp:gkeonprem/VmwareAdminClusterVcenter:VmwareAdminClusterVcenter": {
"properties": {
"address": {
"type": "string",
- "description": "(Output)\nThe vCenter IP address.\n"
+ "description": "The vCenter IP address.\n"
},
"caCertData": {
"type": "string",
@@ -92824,234 +94961,35 @@
},
"cluster": {
"type": "string",
- "description": "The name of the vCenter cluster for the user cluster.\n"
+ "description": "The name of the vCenter cluster for the admin cluster.\n"
+ },
+ "dataDisk": {
+ "type": "string",
+ "description": "The name of the virtual machine disk (VMDK) for the admin cluster.\n"
},
"datacenter": {
"type": "string",
- "description": "The name of the vCenter datacenter for the user cluster.\n"
+ "description": "The name of the vCenter datacenter for the admin cluster.\n"
},
"datastore": {
"type": "string",
- "description": "The name of the vCenter datastore for the user cluster.\n"
+ "description": "The name of the vCenter datastore for the admin cluster.\n"
},
"folder": {
"type": "string",
- "description": "The name of the vCenter folder for the user cluster.\n"
+ "description": "The name of the vCenter folder for the admin cluster.\n"
},
"resourcePool": {
"type": "string",
- "description": "The name of the vCenter resource pool for the user cluster.\n"
+ "description": "The name of the vCenter resource pool for the admin cluster.\n"
},
"storagePolicyName": {
"type": "string",
"description": "The name of the vCenter storage policy for the user cluster.\n"
}
},
- "type": "object",
- "language": {
- "nodejs": {
- "requiredOutputs": [
- "address"
- ]
- }
- }
- },
- "gcp:gkeonprem/VMwareNodePoolConfig:VMwareNodePoolConfig": {
- "properties": {
- "bootDiskSizeGb": {
- "type": "integer",
- "description": "VMware disk size to be used during creation.\n"
- },
- "cpus": {
- "type": "integer",
- "description": "The number of CPUs for each node in the node pool.\n"
- },
- "enableLoadBalancer": {
- "type": "boolean",
- "description": "Allow node pool traffic to be load balanced. Only works for clusters with\nMetalLB load balancers.\n"
- },
- "image": {
- "type": "string",
- "description": "The OS image name in vCenter, only valid when using Windows.\n"
- },
- "imageType": {
- "type": "string",
- "description": "The OS image to be used for each node in a node pool.\nCurrently `cos`, `cos_cgv2`, `ubuntu`, `ubuntu_cgv2`, `ubuntu_containerd` and `windows` are supported.\n"
- },
- "labels": {
- "type": "object",
- "additionalProperties": {
- "type": "string"
- },
- "description": "The map of Kubernetes labels (key/value pairs) to be applied to each node.\nThese will added in addition to any default label(s) that\nKubernetes may apply to the node.\nIn case of conflict in label keys, the applied set may differ depending on\nthe Kubernetes version -- it's best to assume the behavior is undefined\nand conflicts should be avoided.\n"
- },
- "memoryMb": {
- "type": "integer",
- "description": "The megabytes of memory for each node in the node pool.\n"
- },
- "replicas": {
- "type": "integer",
- "description": "The number of nodes in the node pool.\n"
- },
- "taints": {
- "type": "array",
- "items": {
- "$ref": "#/types/gcp:gkeonprem/VMwareNodePoolConfigTaint:VMwareNodePoolConfigTaint"
- },
- "description": "The initial taints assigned to nodes of this node pool.\nStructure is documented below.\n"
- },
- "vsphereConfig": {
- "$ref": "#/types/gcp:gkeonprem/VMwareNodePoolConfigVsphereConfig:VMwareNodePoolConfigVsphereConfig",
- "description": "Specifies the vSphere config for node pool.\nStructure is documented below.\n"
- }
- },
- "type": "object",
- "required": [
- "imageType"
- ],
- "language": {
- "nodejs": {
- "requiredOutputs": [
- "imageType",
- "labels"
- ]
- }
- }
- },
- "gcp:gkeonprem/VMwareNodePoolConfigTaint:VMwareNodePoolConfigTaint": {
- "properties": {
- "effect": {
- "type": "string",
- "description": "Available taint effects.\nPossible values are: `EFFECT_UNSPECIFIED`, `NO_SCHEDULE`, `PREFER_NO_SCHEDULE`, `NO_EXECUTE`.\n"
- },
- "key": {
- "type": "string",
- "description": "Key associated with the effect.\n"
- },
- "value": {
- "type": "string",
- "description": "Value associated with the effect.\n"
- }
- },
- "type": "object",
- "required": [
- "key",
- "value"
- ]
- },
- "gcp:gkeonprem/VMwareNodePoolConfigVsphereConfig:VMwareNodePoolConfigVsphereConfig": {
- "properties": {
- "datastore": {
- "type": "string",
- "description": "The name of the vCenter datastore. Inherited from the user cluster.\n"
- },
- "hostGroups": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "description": "Vsphere host groups to apply to all VMs in the node pool\n"
- },
- "tags": {
- "type": "array",
- "items": {
- "$ref": "#/types/gcp:gkeonprem/VMwareNodePoolConfigVsphereConfigTag:VMwareNodePoolConfigVsphereConfigTag"
- },
- "description": "Tags to apply to VMs.\nStructure is documented below.\n"
- }
- },
"type": "object"
},
- "gcp:gkeonprem/VMwareNodePoolConfigVsphereConfigTag:VMwareNodePoolConfigVsphereConfigTag": {
- "properties": {
- "category": {
- "type": "string",
- "description": "The Vsphere tag category.\n"
- },
- "tag": {
- "type": "string",
- "description": "The Vsphere tag name.\n\n- - -\n"
- }
- },
- "type": "object"
- },
- "gcp:gkeonprem/VMwareNodePoolNodePoolAutoscaling:VMwareNodePoolNodePoolAutoscaling": {
- "properties": {
- "maxReplicas": {
- "type": "integer",
- "description": "Maximum number of replicas in the NodePool.\n"
- },
- "minReplicas": {
- "type": "integer",
- "description": "Minimum number of replicas in the NodePool.\n"
- }
- },
- "type": "object",
- "required": [
- "maxReplicas",
- "minReplicas"
- ]
- },
- "gcp:gkeonprem/VMwareNodePoolStatus:VMwareNodePoolStatus": {
- "properties": {
- "conditions": {
- "type": "array",
- "items": {
- "$ref": "#/types/gcp:gkeonprem/VMwareNodePoolStatusCondition:VMwareNodePoolStatusCondition"
- },
- "description": "(Output)\nResourceConditions provide a standard mechanism for higher-level status reporting from user cluster controller.\nStructure is documented below.\n"
- },
- "errorMessage": {
- "type": "string",
- "description": "(Output)\nHuman-friendly representation of the error message from the user cluster\ncontroller. The error message can be temporary as the user cluster\ncontroller creates a cluster or node pool. If the error message persists\nfor a longer period of time, it can be used to surface error message to\nindicate real problems requiring user intervention.\n"
- }
- },
- "type": "object",
- "language": {
- "nodejs": {
- "requiredOutputs": [
- "conditions",
- "errorMessage"
- ]
- }
- }
- },
- "gcp:gkeonprem/VMwareNodePoolStatusCondition:VMwareNodePoolStatusCondition": {
- "properties": {
- "lastTransitionTime": {
- "type": "string",
- "description": "(Output)\nLast time the condition transit from one status to another.\n"
- },
- "message": {
- "type": "string",
- "description": "(Output)\nHuman-readable message indicating details about last transition.\n"
- },
- "reason": {
- "type": "string",
- "description": "(Output)\nMachine-readable message indicating details about last transition.\n"
- },
- "state": {
- "type": "string",
- "description": "(Output)\nThe lifecycle state of the condition.\n"
- },
- "type": {
- "type": "string",
- "description": "(Output)\nType of the condition.\n(e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady)\n"
- }
- },
- "type": "object",
- "language": {
- "nodejs": {
- "requiredOutputs": [
- "lastTransitionTime",
- "message",
- "reason",
- "state",
- "type"
- ]
- }
- }
- },
"gcp:healthcare/ConsentStoreIamBindingCondition:ConsentStoreIamBindingCondition": {
"properties": {
"description": {
@@ -96271,7 +98209,7 @@
"properties": {
"description": {
"type": "string",
- "description": "An arbitrary description for the Conection.\n"
+ "description": "An arbitrary description for the Connection.\n"
},
"state": {
"type": "string",
@@ -96497,7 +98435,7 @@
"properties": {
"description": {
"type": "string",
- "description": "An arbitrary description for the Conection.\n"
+ "description": "An arbitrary description for the Connection.\n"
},
"state": {
"type": "string",
@@ -100658,16 +102596,14 @@
"items": {
"type": "string"
},
- "description": "IP ranges encompassing the subnets to be excluded from peering.\n",
- "willReplaceOnChanges": true
+ "description": "IP ranges encompassing the subnets to be excluded from peering.\n"
},
"includeExportRanges": {
"type": "array",
"items": {
"type": "string"
},
- "description": "IP ranges allowed to be included from peering.\n",
- "willReplaceOnChanges": true
+ "description": "IP ranges allowed to be included from peering.\n"
},
"network": {
"type": "string",
@@ -100754,16 +102690,14 @@
"items": {
"type": "string"
},
- "description": "IP ranges encompassing the subnets to be excluded from peering.\n",
- "willReplaceOnChanges": true
+ "description": "IP ranges encompassing the subnets to be excluded from peering.\n"
},
"includeExportRanges": {
"type": "array",
"items": {
"type": "string"
},
- "description": "IP ranges allowed to be included from peering.\n",
- "willReplaceOnChanges": true
+ "description": "IP ranges allowed to be included from peering.\n"
},
"uri": {
"type": "string",
@@ -101506,6 +103440,27 @@
}
}
},
+ "gcp:networksecurity/InterceptEndpointGroupAssociationLocationsDetail:InterceptEndpointGroupAssociationLocationsDetail": {
+ "properties": {
+ "location": {
+ "type": "string",
+ "description": "The location of the Intercept Endpoint Group Association, currently restricted to `global`.\n\n\n- - -\n"
+ },
+ "state": {
+ "type": "string",
+ "description": "(Output)\nThe association state in this location.\nPossible values:\nSTATE_UNSPECIFIED\nACTIVE\nOUT_OF_SYNC\n"
+ }
+ },
+ "type": "object",
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "location",
+ "state"
+ ]
+ }
+ }
+ },
"gcp:networksecurity/MirroringDeploymentGroupConnectedEndpointGroup:MirroringDeploymentGroupConnectedEndpointGroup": {
"properties": {
"name": {
@@ -120425,6 +122380,131 @@
"pubsubTopic"
]
},
+ "gcp:storage/TransferJobReplicationSpec:TransferJobReplicationSpec": {
+ "properties": {
+ "gcsDataSink": {
+ "$ref": "#/types/gcp:storage/TransferJobReplicationSpecGcsDataSink:TransferJobReplicationSpecGcsDataSink",
+ "description": "A Google Cloud Storage data sink. Structure documented below.\n"
+ },
+ "gcsDataSource": {
+ "$ref": "#/types/gcp:storage/TransferJobReplicationSpecGcsDataSource:TransferJobReplicationSpecGcsDataSource",
+ "description": "A Google Cloud Storage data source. Structure documented below.\n"
+ },
+ "objectConditions": {
+ "$ref": "#/types/gcp:storage/TransferJobReplicationSpecObjectConditions:TransferJobReplicationSpecObjectConditions",
+ "description": "Only objects that satisfy these object conditions are included in the set of data source and data sink objects. Object conditions based on objects' `last_modification_time` do not exclude objects in a data sink. Structure documented below.\n"
+ },
+ "transferOptions": {
+ "$ref": "#/types/gcp:storage/TransferJobReplicationSpecTransferOptions:TransferJobReplicationSpecTransferOptions",
+ "description": "Characteristics of how to treat files from datasource and sink during job. If the option `delete_objects_unique_in_sink` is true, object conditions based on objects' `last_modification_time` are ignored and do not exclude objects in a data source or a data sink. Structure documented below.\n"
+ }
+ },
+ "type": "object"
+ },
+ "gcp:storage/TransferJobReplicationSpecGcsDataSink:TransferJobReplicationSpecGcsDataSink": {
+ "properties": {
+ "bucketName": {
+ "type": "string",
+ "description": "Google Cloud Storage bucket name.\n"
+ },
+ "path": {
+ "type": "string",
+ "description": "Root path to transfer objects. Must be an empty string or full path name that ends with a '/'. This field is treated as an object prefix. As such, it should generally not begin with a '/'.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "bucketName"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "bucketName",
+ "path"
+ ]
+ }
+ }
+ },
+ "gcp:storage/TransferJobReplicationSpecGcsDataSource:TransferJobReplicationSpecGcsDataSource": {
+ "properties": {
+ "bucketName": {
+ "type": "string",
+ "description": "Google Cloud Storage bucket name.\n"
+ },
+ "path": {
+ "type": "string",
+ "description": "Root path to transfer objects. Must be an empty string or full path name that ends with a '/'. This field is treated as an object prefix. As such, it should generally not begin with a '/'.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "bucketName"
+ ],
+ "language": {
+ "nodejs": {
+ "requiredOutputs": [
+ "bucketName",
+ "path"
+ ]
+ }
+ }
+ },
+ "gcp:storage/TransferJobReplicationSpecObjectConditions:TransferJobReplicationSpecObjectConditions": {
+ "properties": {
+ "excludePrefixes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "`exclude_prefixes` must follow the requirements described for `include_prefixes`. See [Requirements](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#ObjectConditions).\n"
+ },
+ "includePrefixes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "If `include_prefixes` is specified, objects that satisfy the object conditions must have names that start with one of the `include_prefixes` and that do not start with any of the `exclude_prefixes`. If `include_prefixes` is not specified, all objects except those that have names starting with one of the `exclude_prefixes` must satisfy the object conditions. See [Requirements](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#ObjectConditions).\n"
+ },
+ "lastModifiedBefore": {
+ "type": "string",
+ "description": "If specified, only objects with a \"last modification time\" before this timestamp and objects that don't have a \"last modification time\" are transferred. A timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".\n"
+ },
+ "lastModifiedSince": {
+ "type": "string",
+ "description": "If specified, only objects with a \"last modification time\" on or after this timestamp and objects that don't have a \"last modification time\" are transferred. A timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".\n"
+ },
+ "maxTimeElapsedSinceLastModification": {
+ "type": "string",
+ "description": "A duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\".\n"
+ },
+ "minTimeElapsedSinceLastModification": {
+ "type": "string",
+ "description": "A duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\".\n"
+ }
+ },
+ "type": "object"
+ },
+ "gcp:storage/TransferJobReplicationSpecTransferOptions:TransferJobReplicationSpecTransferOptions": {
+ "properties": {
+ "deleteObjectsFromSourceAfterTransfer": {
+ "type": "boolean",
+ "description": "Whether objects should be deleted from the source after they are transferred to the sink. Note that this option and `delete_objects_unique_in_sink` are mutually exclusive.\n"
+ },
+ "deleteObjectsUniqueInSink": {
+ "type": "boolean",
+ "description": "Whether objects that exist only in the sink should be deleted. Note that this option and\n`delete_objects_from_source_after_transfer` are mutually exclusive.\n"
+ },
+ "overwriteObjectsAlreadyExistingInSink": {
+ "type": "boolean",
+ "description": "Whether overwriting objects that already exist in the sink is allowed.\n"
+ },
+ "overwriteWhen": {
+ "type": "string",
+ "description": "When to overwrite objects that already exist in the sink. If not set, overwrite behavior is determined by `overwrite_objects_already_existing_in_sink`. Possible values: ALWAYS, DIFFERENT, NEVER.\n"
+ }
+ },
+ "type": "object"
+ },
"gcp:storage/TransferJobSchedule:TransferJobSchedule": {
"properties": {
"repeatInterval": {
@@ -124420,10 +126500,7 @@
"description": "If this field is set together with contentsDeltaUri when calling IndexService.UpdateIndex,\nthen existing content of the Index will be replaced by the data from the contentsDeltaUri.\n"
}
},
- "type": "object",
- "required": [
- "contentsDeltaUri"
- ]
+ "type": "object"
},
"gcp:vertex/AiIndexMetadataConfig:AiIndexMetadataConfig": {
"properties": {
@@ -127044,6 +129121,9 @@
"certificateManagerCustomEndpoint": {
"type": "string"
},
+ "chronicleCustomEndpoint": {
+ "type": "string"
+ },
"cloudAssetCustomEndpoint": {
"type": "string"
},
@@ -127596,6 +129676,9 @@
"certificateManagerCustomEndpoint": {
"type": "string"
},
+ "chronicleCustomEndpoint": {
+ "type": "string"
+ },
"cloudAssetCustomEndpoint": {
"type": "string"
},
@@ -138118,7 +140201,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/v8/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 Multi Region\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 repositoryId: \"my-repository\",\n description: \"example docker repository\",\n location: \"us\",\n format: \"DOCKER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n repository_id=\"my-repository\",\n description=\"example docker repository\",\n location=\"us\",\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 RepositoryId = \"my-repository\",\n Description = \"example docker repository\",\n Location = \"us\",\n Format = \"DOCKER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository\"),\n\t\t\tLocation: pulumi.String(\"us\"),\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 .repositoryId(\"my-repository\")\n .description(\"example docker repository\")\n .location(\"us\")\n .format(\"DOCKER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n repositoryId: my-repository\n description: example docker repository\n location: us\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/v8/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/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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.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/v8/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/v8/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/v8/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/v8/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/v8/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/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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: \u0026secretmanager.SecretReplicationAutoArgs{},\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.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/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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: \u0026secretmanager.SecretReplicationAutoArgs{},\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.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/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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: \u0026secretmanager.SecretReplicationAutoArgs{},\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.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/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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: \u0026secretmanager.SecretReplicationAutoArgs{},\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.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/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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: \u0026secretmanager.SecretReplicationAutoArgs{},\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.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### Artifact Registry Repository Remote Common Repository With Docker\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst upstreamRepo = new gcp.artifactregistry.Repository(\"upstream_repo\", {\n location: \"us-central1\",\n repositoryId: \"example-upstream-repo\",\n description: \"example upstream repository\",\n format: \"DOCKER\",\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-common-remote\",\n description: \"example remote common repository with docker upstream\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"pull-through cache of another Artifact Registry repository\",\n commonRepository: {\n uri: upstreamRepo.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nupstream_repo = gcp.artifactregistry.Repository(\"upstream_repo\",\n location=\"us-central1\",\n repository_id=\"example-upstream-repo\",\n description=\"example upstream repository\",\n format=\"DOCKER\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-common-remote\",\n description=\"example remote common repository with docker upstream\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"pull-through cache of another Artifact Registry repository\",\n \"common_repository\": {\n \"uri\": upstream_repo.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 upstreamRepo = new Gcp.ArtifactRegistry.Repository(\"upstream_repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-upstream-repo\",\n Description = \"example upstream repository\",\n Format = \"DOCKER\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-common-remote\",\n Description = \"example remote common repository with docker upstream\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"pull-through cache of another Artifact Registry repository\",\n CommonRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigCommonRepositoryArgs\n {\n Uri = upstreamRepo.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tupstreamRepo, err := artifactregistry.NewRepository(ctx, \"upstream_repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-upstream-repo\"),\n\t\t\tDescription: pulumi.String(\"example upstream 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\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-common-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote common repository with docker upstream\"),\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(\"pull-through cache of another Artifact Registry repository\"),\n\t\t\t\tCommonRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigCommonRepositoryArgs{\n\t\t\t\t\tUri: upstreamRepo.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.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigCommonRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var upstreamRepo = new Repository(\"upstreamRepo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-upstream-repo\")\n .description(\"example upstream repository\")\n .format(\"DOCKER\")\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-common-remote\")\n .description(\"example remote common repository with docker upstream\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"pull-through cache of another Artifact Registry repository\")\n .commonRepository(RepositoryRemoteRepositoryConfigCommonRepositoryArgs.builder()\n .uri(upstreamRepo.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n upstreamRepo:\n type: gcp:artifactregistry:Repository\n name: upstream_repo\n properties:\n location: us-central1\n repositoryId: example-upstream-repo\n description: example upstream repository\n format: DOCKER\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-common-remote\n description: example remote common repository with docker upstream\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: pull-through cache of another Artifact Registry repository\n commonRepository:\n uri: ${upstreamRepo.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Common Repository With Artifact Registry Uri\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 upstreamRepo = new gcp.artifactregistry.Repository(\"upstream_repo\", {\n location: \"us-central1\",\n repositoryId: \"example-upstream-repo\",\n description: \"example upstream repository\",\n format: \"DOCKER\",\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-common-remote\",\n description: \"example remote common repository with docker upstream\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"pull-through cache of another Artifact Registry repository by URL\",\n commonRepository: {\n uri: \"https://us-central1-docker.pkg.dev//example-upstream-repo\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nupstream_repo = gcp.artifactregistry.Repository(\"upstream_repo\",\n location=\"us-central1\",\n repository_id=\"example-upstream-repo\",\n description=\"example upstream repository\",\n format=\"DOCKER\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-common-remote\",\n description=\"example remote common repository with docker upstream\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"pull-through cache of another Artifact Registry repository by URL\",\n \"common_repository\": {\n \"uri\": \"https://us-central1-docker.pkg.dev//example-upstream-repo\",\n },\n })\n```\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 upstreamRepo = new Gcp.ArtifactRegistry.Repository(\"upstream_repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-upstream-repo\",\n Description = \"example upstream repository\",\n Format = \"DOCKER\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-common-remote\",\n Description = \"example remote common repository with docker upstream\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"pull-through cache of another Artifact Registry repository by URL\",\n CommonRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigCommonRepositoryArgs\n {\n Uri = \"https://us-central1-docker.pkg.dev//example-upstream-repo\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"upstream_repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-upstream-repo\"),\n\t\t\tDescription: pulumi.String(\"example upstream 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\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-common-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote common repository with docker upstream\"),\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(\"pull-through cache of another Artifact Registry repository by URL\"),\n\t\t\t\tCommonRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigCommonRepositoryArgs{\n\t\t\t\t\tUri: pulumi.String(\"https://us-central1-docker.pkg.dev//example-upstream-repo\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\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.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigCommonRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\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 upstreamRepo = new Repository(\"upstreamRepo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-upstream-repo\")\n .description(\"example upstream repository\")\n .format(\"DOCKER\")\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-common-remote\")\n .description(\"example remote common repository with docker upstream\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"pull-through cache of another Artifact Registry repository by URL\")\n .commonRepository(RepositoryRemoteRepositoryConfigCommonRepositoryArgs.builder()\n .uri(\"https://us-central1-docker.pkg.dev//example-upstream-repo\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n upstreamRepo:\n type: gcp:artifactregistry:Repository\n name: upstream_repo\n properties:\n location: us-central1\n repositoryId: example-upstream-repo\n description: example upstream repository\n format: DOCKER\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-common-remote\n description: example remote common repository with docker upstream\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: pull-through cache of another Artifact Registry repository by URL\n commonRepository:\n uri: https://us-central1-docker.pkg.dev//example-upstream-repo\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Common Repository With Custom Upstream\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 common docker remote with credentials\",\n disableUpstreamValidation: true,\n commonRepository: {\n uri: \"https://registry-1.docker.io\",\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 common docker remote with credentials\",\n \"disable_upstream_validation\": True,\n \"common_repository\": {\n \"uri\": \"https://registry-1.docker.io\",\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 common docker remote with credentials\",\n DisableUpstreamValidation = true,\n CommonRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigCommonRepositoryArgs\n {\n Uri = \"https://registry-1.docker.io\",\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/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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: \u0026secretmanager.SecretReplicationAutoArgs{},\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.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 common docker remote with credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tCommonRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigCommonRepositoryArgs{\n\t\t\t\t\tUri: pulumi.String(\"https://registry-1.docker.io\"),\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.RepositoryRemoteRepositoryConfigCommonRepositoryArgs;\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 common docker remote with credentials\")\n .disableUpstreamValidation(true)\n .commonRepository(RepositoryRemoteRepositoryConfigCommonRepositoryArgs.builder()\n .uri(\"https://registry-1.docker.io\")\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 common docker remote with credentials\n disableUpstreamValidation: true\n commonRepository:\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\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\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",
+ "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/v8/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 Multi Region\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 repositoryId: \"my-repository\",\n description: \"example docker repository\",\n location: \"us\",\n format: \"DOCKER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n repository_id=\"my-repository\",\n description=\"example docker repository\",\n location=\"us\",\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 RepositoryId = \"my-repository\",\n Description = \"example docker repository\",\n Location = \"us\",\n Format = \"DOCKER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository\"),\n\t\t\tLocation: pulumi.String(\"us\"),\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 .repositoryId(\"my-repository\")\n .description(\"example docker repository\")\n .location(\"us\")\n .format(\"DOCKER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n repositoryId: my-repository\n description: example docker repository\n location: us\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/v8/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/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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.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/v8/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/v8/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/v8/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/v8/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/v8/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/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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: \u0026secretmanager.SecretReplicationAutoArgs{},\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.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/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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: \u0026secretmanager.SecretReplicationAutoArgs{},\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.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/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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: \u0026secretmanager.SecretReplicationAutoArgs{},\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.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/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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: \u0026secretmanager.SecretReplicationAutoArgs{},\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.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/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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: \u0026secretmanager.SecretReplicationAutoArgs{},\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.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### Artifact Registry Repository Remote Common Repository With Docker\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst upstreamRepo = new gcp.artifactregistry.Repository(\"upstream_repo\", {\n location: \"us-central1\",\n repositoryId: \"example-upstream-repo\",\n description: \"example upstream repository\",\n format: \"DOCKER\",\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-common-remote\",\n description: \"example remote common repository with docker upstream\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"pull-through cache of another Artifact Registry repository\",\n commonRepository: {\n uri: upstreamRepo.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nupstream_repo = gcp.artifactregistry.Repository(\"upstream_repo\",\n location=\"us-central1\",\n repository_id=\"example-upstream-repo\",\n description=\"example upstream repository\",\n format=\"DOCKER\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-common-remote\",\n description=\"example remote common repository with docker upstream\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"pull-through cache of another Artifact Registry repository\",\n \"common_repository\": {\n \"uri\": upstream_repo.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 upstreamRepo = new Gcp.ArtifactRegistry.Repository(\"upstream_repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-upstream-repo\",\n Description = \"example upstream repository\",\n Format = \"DOCKER\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-common-remote\",\n Description = \"example remote common repository with docker upstream\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"pull-through cache of another Artifact Registry repository\",\n CommonRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigCommonRepositoryArgs\n {\n Uri = upstreamRepo.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tupstreamRepo, err := artifactregistry.NewRepository(ctx, \"upstream_repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-upstream-repo\"),\n\t\t\tDescription: pulumi.String(\"example upstream 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\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-common-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote common repository with docker upstream\"),\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(\"pull-through cache of another Artifact Registry repository\"),\n\t\t\t\tCommonRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigCommonRepositoryArgs{\n\t\t\t\t\tUri: upstreamRepo.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.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigCommonRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var upstreamRepo = new Repository(\"upstreamRepo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-upstream-repo\")\n .description(\"example upstream repository\")\n .format(\"DOCKER\")\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-common-remote\")\n .description(\"example remote common repository with docker upstream\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"pull-through cache of another Artifact Registry repository\")\n .commonRepository(RepositoryRemoteRepositoryConfigCommonRepositoryArgs.builder()\n .uri(upstreamRepo.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n upstreamRepo:\n type: gcp:artifactregistry:Repository\n name: upstream_repo\n properties:\n location: us-central1\n repositoryId: example-upstream-repo\n description: example upstream repository\n format: DOCKER\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-common-remote\n description: example remote common repository with docker upstream\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: pull-through cache of another Artifact Registry repository\n commonRepository:\n uri: ${upstreamRepo.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Common Repository With Artifact Registry Uri\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 upstreamRepo = new gcp.artifactregistry.Repository(\"upstream_repo\", {\n location: \"us-central1\",\n repositoryId: \"example-upstream-repo\",\n description: \"example upstream repository\",\n format: \"DOCKER\",\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-common-remote\",\n description: \"example remote common repository with docker upstream\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"pull-through cache of another Artifact Registry repository by URL\",\n commonRepository: {\n uri: project.then(project =\u003e `https://us-central1-docker.pkg.dev/${project.projectId}/example-upstream-repo`),\n },\n },\n}, {\n dependsOn: [upstreamRepo],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nupstream_repo = gcp.artifactregistry.Repository(\"upstream_repo\",\n location=\"us-central1\",\n repository_id=\"example-upstream-repo\",\n description=\"example upstream repository\",\n format=\"DOCKER\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-common-remote\",\n description=\"example remote common repository with docker upstream\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"pull-through cache of another Artifact Registry repository by URL\",\n \"common_repository\": {\n \"uri\": f\"https://us-central1-docker.pkg.dev/{project.project_id}/example-upstream-repo\",\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[upstream_repo]))\n```\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 upstreamRepo = new Gcp.ArtifactRegistry.Repository(\"upstream_repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-upstream-repo\",\n Description = \"example upstream repository\",\n Format = \"DOCKER\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-common-remote\",\n Description = \"example remote common repository with docker upstream\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"pull-through cache of another Artifact Registry repository by URL\",\n CommonRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigCommonRepositoryArgs\n {\n Uri = $\"https://us-central1-docker.pkg.dev/{project.Apply(getProjectResult =\u003e getProjectResult.ProjectId)}/example-upstream-repo\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n upstreamRepo,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tupstreamRepo, err := artifactregistry.NewRepository(ctx, \"upstream_repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-upstream-repo\"),\n\t\t\tDescription: pulumi.String(\"example upstream 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\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-common-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote common repository with docker upstream\"),\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(\"pull-through cache of another Artifact Registry repository by URL\"),\n\t\t\t\tCommonRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigCommonRepositoryArgs{\n\t\t\t\t\tUri: pulumi.Sprintf(\"https://us-central1-docker.pkg.dev/%v/example-upstream-repo\", project.ProjectId),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tupstreamRepo,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\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.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigCommonRepositoryArgs;\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 upstreamRepo = new Repository(\"upstreamRepo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-upstream-repo\")\n .description(\"example upstream repository\")\n .format(\"DOCKER\")\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-common-remote\")\n .description(\"example remote common repository with docker upstream\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"pull-through cache of another Artifact Registry repository by URL\")\n .commonRepository(RepositoryRemoteRepositoryConfigCommonRepositoryArgs.builder()\n .uri(String.format(\"https://us-central1-docker.pkg.dev/%s/example-upstream-repo\", project.applyValue(getProjectResult -\u003e getProjectResult.projectId())))\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(upstreamRepo)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n upstreamRepo:\n type: gcp:artifactregistry:Repository\n name: upstream_repo\n properties:\n location: us-central1\n repositoryId: example-upstream-repo\n description: example upstream repository\n format: DOCKER\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-common-remote\n description: example remote common repository with docker upstream\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: pull-through cache of another Artifact Registry repository by URL\n commonRepository:\n uri: https://us-central1-docker.pkg.dev/${project.projectId}/example-upstream-repo\n options:\n dependsOn:\n - ${upstreamRepo}\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Common Repository With Custom Upstream\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 common docker remote with credentials\",\n disableUpstreamValidation: true,\n commonRepository: {\n uri: \"https://registry-1.docker.io\",\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 common docker remote with credentials\",\n \"disable_upstream_validation\": True,\n \"common_repository\": {\n \"uri\": \"https://registry-1.docker.io\",\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 common docker remote with credentials\",\n DisableUpstreamValidation = true,\n CommonRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigCommonRepositoryArgs\n {\n Uri = \"https://registry-1.docker.io\",\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/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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: \u0026secretmanager.SecretReplicationAutoArgs{},\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.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 common docker remote with credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tCommonRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigCommonRepositoryArgs{\n\t\t\t\t\tUri: pulumi.String(\"https://registry-1.docker.io\"),\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.RepositoryRemoteRepositoryConfigCommonRepositoryArgs;\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 common docker remote with credentials\")\n .disableUpstreamValidation(true)\n .commonRepository(RepositoryRemoteRepositoryConfigCommonRepositoryArgs.builder()\n .uri(\"https://registry-1.docker.io\")\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 common docker remote with credentials\n disableUpstreamValidation: true\n commonRepository:\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 Vulnerability Scanning\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 vulnerability scanning config\",\n format: \"DOCKER\",\n vulnerabilityScanningConfig: {\n enablementConfig: \"INHERITED\",\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 vulnerability scanning config\",\n format=\"DOCKER\",\n vulnerability_scanning_config={\n \"enablement_config\": \"INHERITED\",\n })\n```\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 vulnerability scanning config\",\n Format = \"DOCKER\",\n VulnerabilityScanningConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryVulnerabilityScanningConfigArgs\n {\n EnablementConfig = \"INHERITED\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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 vulnerability scanning config\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tVulnerabilityScanningConfig: \u0026artifactregistry.RepositoryVulnerabilityScanningConfigArgs{\n\t\t\t\tEnablementConfig: pulumi.String(\"INHERITED\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.RepositoryVulnerabilityScanningConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 vulnerability scanning config\")\n .format(\"DOCKER\")\n .vulnerabilityScanningConfig(RepositoryVulnerabilityScanningConfigArgs.builder()\n .enablementConfig(\"INHERITED\")\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 vulnerability scanning config\n format: DOCKER\n vulnerabilityScanningConfig:\n enablementConfig: INHERITED\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\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",
"properties": {
"cleanupPolicies": {
"type": "array",
@@ -138209,6 +140292,10 @@
"virtualRepositoryConfig": {
"$ref": "#/types/gcp:artifactregistry/RepositoryVirtualRepositoryConfig:RepositoryVirtualRepositoryConfig",
"description": "Configuration specific for a Virtual Repository.\nStructure is documented below.\n"
+ },
+ "vulnerabilityScanningConfig": {
+ "$ref": "#/types/gcp:artifactregistry/RepositoryVulnerabilityScanningConfig:RepositoryVulnerabilityScanningConfig",
+ "description": "Configuration for vulnerability scanning of artifacts stored in this repository.\nStructure is documented below.\n"
}
},
"required": [
@@ -138220,7 +140307,8 @@
"project",
"repositoryId",
"pulumiLabels",
- "updateTime"
+ "updateTime",
+ "vulnerabilityScanningConfig"
],
"inputProperties": {
"cleanupPolicies": {
@@ -138291,6 +140379,10 @@
"virtualRepositoryConfig": {
"$ref": "#/types/gcp:artifactregistry/RepositoryVirtualRepositoryConfig:RepositoryVirtualRepositoryConfig",
"description": "Configuration specific for a Virtual Repository.\nStructure is documented below.\n"
+ },
+ "vulnerabilityScanningConfig": {
+ "$ref": "#/types/gcp:artifactregistry/RepositoryVulnerabilityScanningConfig:RepositoryVulnerabilityScanningConfig",
+ "description": "Configuration for vulnerability scanning of artifacts stored in this repository.\nStructure is documented below.\n"
}
},
"requiredInputs": [
@@ -138396,6 +140488,10 @@
"virtualRepositoryConfig": {
"$ref": "#/types/gcp:artifactregistry/RepositoryVirtualRepositoryConfig:RepositoryVirtualRepositoryConfig",
"description": "Configuration specific for a Virtual Repository.\nStructure is documented below.\n"
+ },
+ "vulnerabilityScanningConfig": {
+ "$ref": "#/types/gcp:artifactregistry/RepositoryVulnerabilityScanningConfig:RepositoryVulnerabilityScanningConfig",
+ "description": "Configuration for vulnerability scanning of artifacts stored in this repository.\nStructure is documented below.\n"
}
},
"type": "object"
@@ -142383,6 +144479,10 @@
"$ref": "#/types/gcp:bigquery/DatasetAccessAuthorizedDataset:DatasetAccessAuthorizedDataset",
"description": "Grants all resources of particular types in a particular dataset read access to the current dataset.\nStructure is documented below.\n"
},
+ "condition": {
+ "$ref": "#/types/gcp:bigquery/DatasetAccessCondition:DatasetAccessCondition",
+ "description": "Condition for the binding. If CEL expression in this field is true, this\naccess binding will be considered.\nStructure is documented below.\n"
+ },
"datasetId": {
"type": "string",
"description": "A unique ID for this dataset, without the project name. The ID\nmust contain only letters (a-z, A-Z), numbers (0-9), or\nunderscores (_). The maximum length is 1,024 characters.\n\n\n- - -\n"
@@ -142435,6 +144535,11 @@
"description": "Grants all resources of particular types in a particular dataset read access to the current dataset.\nStructure is documented below.\n",
"willReplaceOnChanges": true
},
+ "condition": {
+ "$ref": "#/types/gcp:bigquery/DatasetAccessCondition:DatasetAccessCondition",
+ "description": "Condition for the binding. If CEL expression in this field is true, this\naccess binding will be considered.\nStructure is documented below.\n",
+ "willReplaceOnChanges": true
+ },
"datasetId": {
"type": "string",
"description": "A unique ID for this dataset, without the project name. The ID\nmust contain only letters (a-z, A-Z), numbers (0-9), or\nunderscores (_). The maximum length is 1,024 characters.\n\n\n- - -\n",
@@ -142501,6 +144606,11 @@
"description": "Grants all resources of particular types in a particular dataset read access to the current dataset.\nStructure is documented below.\n",
"willReplaceOnChanges": true
},
+ "condition": {
+ "$ref": "#/types/gcp:bigquery/DatasetAccessCondition:DatasetAccessCondition",
+ "description": "Condition for the binding. If CEL expression in this field is true, this\naccess binding will be considered.\nStructure is documented below.\n",
+ "willReplaceOnChanges": true
+ },
"datasetId": {
"type": "string",
"description": "A unique ID for this dataset, without the project name. The ID\nmust contain only letters (a-z, A-Z), numbers (0-9), or\nunderscores (_). The maximum length is 1,024 characters.\n\n\n- - -\n",
@@ -143142,7 +145252,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 \"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/v8/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/v8/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/v8/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(\n bucket=object.bucket,\n name=object.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['bucket']}/{resolved_outputs['name']}\")\n],\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/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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.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(\n bucket=test_bucket_object.bucket,\n name=test_bucket_object.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['bucket']}/{resolved_outputs['name']}\")\n],\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/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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 datasetId: sourceDataset[range.value].datasetId,\n tableId: `job_copy_${range.value}_table`,\n deletionProtection: false,\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.kms.CryptoKeyIAMMember(\"encrypt_role\", {\n cryptoKeyId: cryptoKey.id,\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 dataset_id=source_dataset[range[\"value\"]].dataset_id,\n table_id=f\"job_copy_{range['value']}_table\",\n deletion_protection=False,\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.kms.CryptoKeyIAMMember(\"encrypt_role\",\n crypto_key_id=crypto_key.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 DatasetId = sourceDataset[range.Value].DatasetId,\n TableId = $\"job_copy_{range.Value}_table\",\n DeletionProtection = false,\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.Kms.CryptoKeyIAMMember(\"encrypt_role\", new()\n {\n CryptoKeyId = cryptoKey.Id,\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/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\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.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\tDatasetId: sourceDataset[val0].DatasetId,\n\t\t\t\tTableId: pulumi.Sprintf(\"job_copy_%v_table\", val0),\n\t\t\t\tDeletionProtection: pulumi.Bool(false),\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 := kms.NewCryptoKeyIAMMember(ctx, \"encrypt_role\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.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.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\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 .datasetId(sourceDataset[range.value()].datasetId())\n .tableId(String.format(\"job_copy_%s_table\", range.value()))\n .deletionProtection(false)\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 CryptoKeyIAMMember(\"encryptRole\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\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/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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/v8/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/v8/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/v8/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(\n bucket=object.bucket,\n name=object.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['bucket']}/{resolved_outputs['name']}\")\n],\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/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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.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(\n bucket=test_bucket_object.bucket,\n name=test_bucket_object.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['bucket']}/{resolved_outputs['name']}\")\n],\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/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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 datasetId: sourceDataset[range.value].datasetId,\n tableId: `job_copy_${range.value}_table`,\n deletionProtection: false,\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 project = gcp.organizations.getProject({\n projectId: \"my-project-name\",\n});\nconst encryptRole = new gcp.kms.CryptoKeyIAMMember(\"encrypt_role\", {\n cryptoKeyId: \"example-key\",\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: \"example-key\",\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: \"example-key\",\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 dataset_id=source_dataset[range[\"value\"]].dataset_id,\n table_id=f\"job_copy_{range['value']}_table\",\n deletion_protection=False,\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\")\nproject = gcp.organizations.get_project(project_id=\"my-project-name\")\nencrypt_role = gcp.kms.CryptoKeyIAMMember(\"encrypt_role\",\n crypto_key_id=\"example-key\",\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\": \"example-key\",\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\": \"example-key\",\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 DatasetId = sourceDataset[range.Value].DatasetId,\n TableId = $\"job_copy_{range.Value}_table\",\n DeletionProtection = false,\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 project = Gcp.Organizations.GetProject.Invoke(new()\n {\n ProjectId = \"my-project-name\",\n });\n\n var encryptRole = new Gcp.Kms.CryptoKeyIAMMember(\"encrypt_role\", new()\n {\n CryptoKeyId = \"example-key\",\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 = \"example-key\",\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 = \"example-key\",\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/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\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.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\tDatasetId: sourceDataset[val0].DatasetId,\n\t\t\t\tTableId: pulumi.Sprintf(\"job_copy_%v_table\", val0),\n\t\t\t\tDeletionProtection: pulumi.Bool(false),\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\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 := kms.NewCryptoKeyIAMMember(ctx, \"encrypt_role\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"example-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.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: pulumi.String(\"example-key\"),\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: pulumi.String(\"example-key\"),\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.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.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 .datasetId(sourceDataset[range.value()].datasetId())\n .tableId(String.format(\"job_copy_%s_table\", range.value()))\n .deletionProtection(false)\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 final var project = OrganizationsFunctions.getProject(GetProjectArgs.builder()\n .projectId(\"my-project-name\")\n .build());\n\n var encryptRole = new CryptoKeyIAMMember(\"encryptRole\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"example-key\")\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(\"example-key\")\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(\"example-key\")\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/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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",
@@ -143898,6 +146008,10 @@
"type": "integer",
"description": "The time when this table expires, in\nmilliseconds since the epoch. If not present, the table will persist\nindefinitely. Expired tables will be deleted and their storage\nreclaimed.\n"
},
+ "externalCatalogTableOptions": {
+ "$ref": "#/types/gcp:bigquery/TableExternalCatalogTableOptions:TableExternalCatalogTableOptions",
+ "description": "Options defining open source compatible table.\n"
+ },
"externalDataConfiguration": {
"$ref": "#/types/gcp:bigquery/TableExternalDataConfiguration:TableExternalDataConfiguration",
"description": "Describes the data format,\nlocation, and other properties of a table stored outside of BigQuery.\nBy defining these properties, the data source can then be queried as\nif it were a standard BigQuery table. Structure is documented below.\n"
@@ -144054,6 +146168,10 @@
"type": "integer",
"description": "The time when this table expires, in\nmilliseconds since the epoch. If not present, the table will persist\nindefinitely. Expired tables will be deleted and their storage\nreclaimed.\n"
},
+ "externalCatalogTableOptions": {
+ "$ref": "#/types/gcp:bigquery/TableExternalCatalogTableOptions:TableExternalCatalogTableOptions",
+ "description": "Options defining open source compatible table.\n"
+ },
"externalDataConfiguration": {
"$ref": "#/types/gcp:bigquery/TableExternalDataConfiguration:TableExternalDataConfiguration",
"description": "Describes the data format,\nlocation, and other properties of a table stored outside of BigQuery.\nBy defining these properties, the data source can then be queried as\nif it were a standard BigQuery table. Structure is documented below.\n"
@@ -144181,6 +146299,10 @@
"type": "integer",
"description": "The time when this table expires, in\nmilliseconds since the epoch. If not present, the table will persist\nindefinitely. Expired tables will be deleted and their storage\nreclaimed.\n"
},
+ "externalCatalogTableOptions": {
+ "$ref": "#/types/gcp:bigquery/TableExternalCatalogTableOptions:TableExternalCatalogTableOptions",
+ "description": "Options defining open source compatible table.\n"
+ },
"externalDataConfiguration": {
"$ref": "#/types/gcp:bigquery/TableExternalDataConfiguration:TableExternalDataConfiguration",
"description": "Describes the data format,\nlocation, and other properties of a table stored outside of BigQuery.\nBy defining these properties, the data source can then be queried as\nif it were a standard BigQuery table. Structure is documented below.\n"
@@ -150870,6 +152992,190 @@
"type": "object"
}
},
+ "gcp:chronicle/watchlist:Watchlist": {
+ "description": "## Example Usage\n\n### Chronicle Watchlist 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.chronicle.Watchlist(\"example\", {\n location: \"us\",\n instance: \"00000000-0000-0000-0000-000000000000\",\n watchlistId: \"watchlist-name\",\n description: \"watchlist-description\",\n displayName: \"watchlist-name\",\n multiplyingFactor: 1,\n entityPopulationMechanism: {\n manual: {},\n },\n watchlistUserPreferences: {\n pinned: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.chronicle.Watchlist(\"example\",\n location=\"us\",\n instance=\"00000000-0000-0000-0000-000000000000\",\n watchlist_id=\"watchlist-name\",\n description=\"watchlist-description\",\n display_name=\"watchlist-name\",\n multiplying_factor=1,\n entity_population_mechanism={\n \"manual\": {},\n },\n watchlist_user_preferences={\n \"pinned\": 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 example = new Gcp.Chronicle.Watchlist(\"example\", new()\n {\n Location = \"us\",\n Instance = \"00000000-0000-0000-0000-000000000000\",\n WatchlistId = \"watchlist-name\",\n Description = \"watchlist-description\",\n DisplayName = \"watchlist-name\",\n MultiplyingFactor = 1,\n EntityPopulationMechanism = new Gcp.Chronicle.Inputs.WatchlistEntityPopulationMechanismArgs\n {\n Manual = null,\n },\n WatchlistUserPreferences = new Gcp.Chronicle.Inputs.WatchlistWatchlistUserPreferencesArgs\n {\n Pinned = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/chronicle\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := chronicle.NewWatchlist(ctx, \"example\", \u0026chronicle.WatchlistArgs{\n\t\t\tLocation: pulumi.String(\"us\"),\n\t\t\tInstance: pulumi.String(\"00000000-0000-0000-0000-000000000000\"),\n\t\t\tWatchlistId: pulumi.String(\"watchlist-name\"),\n\t\t\tDescription: pulumi.String(\"watchlist-description\"),\n\t\t\tDisplayName: pulumi.String(\"watchlist-name\"),\n\t\t\tMultiplyingFactor: pulumi.Float64(1),\n\t\t\tEntityPopulationMechanism: \u0026chronicle.WatchlistEntityPopulationMechanismArgs{\n\t\t\t\tManual: \u0026chronicle.WatchlistEntityPopulationMechanismManualArgs{},\n\t\t\t},\n\t\t\tWatchlistUserPreferences: \u0026chronicle.WatchlistWatchlistUserPreferencesArgs{\n\t\t\t\tPinned: 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.chronicle.Watchlist;\nimport com.pulumi.gcp.chronicle.WatchlistArgs;\nimport com.pulumi.gcp.chronicle.inputs.WatchlistEntityPopulationMechanismArgs;\nimport com.pulumi.gcp.chronicle.inputs.WatchlistEntityPopulationMechanismManualArgs;\nimport com.pulumi.gcp.chronicle.inputs.WatchlistWatchlistUserPreferencesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 Watchlist(\"example\", WatchlistArgs.builder()\n .location(\"us\")\n .instance(\"00000000-0000-0000-0000-000000000000\")\n .watchlistId(\"watchlist-name\")\n .description(\"watchlist-description\")\n .displayName(\"watchlist-name\")\n .multiplyingFactor(1)\n .entityPopulationMechanism(WatchlistEntityPopulationMechanismArgs.builder()\n .manual()\n .build())\n .watchlistUserPreferences(WatchlistWatchlistUserPreferencesArgs.builder()\n .pinned(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:chronicle:Watchlist\n properties:\n location: us\n instance: 00000000-0000-0000-0000-000000000000\n watchlistId: watchlist-name\n description: watchlist-description\n displayName: watchlist-name\n multiplyingFactor: 1\n entityPopulationMechanism:\n manual: {}\n watchlistUserPreferences:\n pinned: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWatchlist can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/instances/{{instance}}/watchlists/{{watchlist_id}}`\n\n* `{{project}}/{{location}}/{{instance}}/{{watchlist_id}}`\n\n* `{{location}}/{{instance}}/{{watchlist_id}}`\n\nWhen using the `pulumi import` command, Watchlist can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:chronicle/watchlist:Watchlist default projects/{{project}}/locations/{{location}}/instances/{{instance}}/watchlists/{{watchlist_id}}\n```\n\n```sh\n$ pulumi import gcp:chronicle/watchlist:Watchlist default {{project}}/{{location}}/{{instance}}/{{watchlist_id}}\n```\n\n```sh\n$ pulumi import gcp:chronicle/watchlist:Watchlist default {{location}}/{{instance}}/{{watchlist_id}}\n```\n\n",
+ "properties": {
+ "createTime": {
+ "type": "string",
+ "description": "Output only. Time the watchlist was created.\n"
+ },
+ "description": {
+ "type": "string",
+ "description": "Optional. Description of the watchlist.\n"
+ },
+ "displayName": {
+ "type": "string",
+ "description": "Required. Display name of the watchlist.\nNote that it must be at least one character and less than 63 characters\n(https://google.aip.dev/148).\n"
+ },
+ "entityCounts": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:chronicle/WatchlistEntityCount:WatchlistEntityCount"
+ },
+ "description": "Count of different types of entities in the watchlist.\nStructure is documented below.\n"
+ },
+ "entityPopulationMechanism": {
+ "$ref": "#/types/gcp:chronicle/WatchlistEntityPopulationMechanism:WatchlistEntityPopulationMechanism",
+ "description": "Mechanism to populate entities in the watchlist.\nStructure is documented below.\n"
+ },
+ "instance": {
+ "type": "string",
+ "description": "The unique identifier for the Chronicle instance, which is the same as the customer ID.\n"
+ },
+ "location": {
+ "type": "string",
+ "description": "The location of the resource. This is the geographical region where the Chronicle instance resides, such as \"us\" or \"europe-west2\".\n"
+ },
+ "multiplyingFactor": {
+ "type": "number",
+ "description": "Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified.\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "Identifier. Resource name of the watchlist. This unique identifier is generated using values provided for the URL parameters.\nFormat:\nprojects/{project}/locations/{location}/instances/{instance}/watchlists/{watchlist}\n"
+ },
+ "project": {
+ "type": "string"
+ },
+ "updateTime": {
+ "type": "string",
+ "description": "Output only. Time the watchlist was last updated.\n"
+ },
+ "watchlistId": {
+ "type": "string",
+ "description": "Optional. The ID to use for the watchlist,\nwhich will become the final component of the watchlist's resource name.\nThis value should be 4-63 characters, and valid characters\nare /a-z-/.\n"
+ },
+ "watchlistUserPreferences": {
+ "$ref": "#/types/gcp:chronicle/WatchlistWatchlistUserPreferences:WatchlistWatchlistUserPreferences",
+ "description": "A collection of user preferences for watchlist UI configuration.\n"
+ }
+ },
+ "required": [
+ "createTime",
+ "displayName",
+ "entityCounts",
+ "entityPopulationMechanism",
+ "instance",
+ "location",
+ "name",
+ "project",
+ "updateTime",
+ "watchlistId",
+ "watchlistUserPreferences"
+ ],
+ "inputProperties": {
+ "description": {
+ "type": "string",
+ "description": "Optional. Description of the watchlist.\n"
+ },
+ "displayName": {
+ "type": "string",
+ "description": "Required. Display name of the watchlist.\nNote that it must be at least one character and less than 63 characters\n(https://google.aip.dev/148).\n"
+ },
+ "entityPopulationMechanism": {
+ "$ref": "#/types/gcp:chronicle/WatchlistEntityPopulationMechanism:WatchlistEntityPopulationMechanism",
+ "description": "Mechanism to populate entities in the watchlist.\nStructure is documented below.\n"
+ },
+ "instance": {
+ "type": "string",
+ "description": "The unique identifier for the Chronicle instance, which is the same as the customer ID.\n",
+ "willReplaceOnChanges": true
+ },
+ "location": {
+ "type": "string",
+ "description": "The location of the resource. This is the geographical region where the Chronicle instance resides, such as \"us\" or \"europe-west2\".\n",
+ "willReplaceOnChanges": true
+ },
+ "multiplyingFactor": {
+ "type": "number",
+ "description": "Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified.\n"
+ },
+ "project": {
+ "type": "string",
+ "willReplaceOnChanges": true
+ },
+ "watchlistId": {
+ "type": "string",
+ "description": "Optional. The ID to use for the watchlist,\nwhich will become the final component of the watchlist's resource name.\nThis value should be 4-63 characters, and valid characters\nare /a-z-/.\n",
+ "willReplaceOnChanges": true
+ },
+ "watchlistUserPreferences": {
+ "$ref": "#/types/gcp:chronicle/WatchlistWatchlistUserPreferences:WatchlistWatchlistUserPreferences",
+ "description": "A collection of user preferences for watchlist UI configuration.\n"
+ }
+ },
+ "requiredInputs": [
+ "displayName",
+ "entityPopulationMechanism",
+ "instance",
+ "location",
+ "watchlistId"
+ ],
+ "stateInputs": {
+ "description": "Input properties used for looking up and filtering Watchlist resources.\n",
+ "properties": {
+ "createTime": {
+ "type": "string",
+ "description": "Output only. Time the watchlist was created.\n"
+ },
+ "description": {
+ "type": "string",
+ "description": "Optional. Description of the watchlist.\n"
+ },
+ "displayName": {
+ "type": "string",
+ "description": "Required. Display name of the watchlist.\nNote that it must be at least one character and less than 63 characters\n(https://google.aip.dev/148).\n"
+ },
+ "entityCounts": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:chronicle/WatchlistEntityCount:WatchlistEntityCount"
+ },
+ "description": "Count of different types of entities in the watchlist.\nStructure is documented below.\n"
+ },
+ "entityPopulationMechanism": {
+ "$ref": "#/types/gcp:chronicle/WatchlistEntityPopulationMechanism:WatchlistEntityPopulationMechanism",
+ "description": "Mechanism to populate entities in the watchlist.\nStructure is documented below.\n"
+ },
+ "instance": {
+ "type": "string",
+ "description": "The unique identifier for the Chronicle instance, which is the same as the customer ID.\n",
+ "willReplaceOnChanges": true
+ },
+ "location": {
+ "type": "string",
+ "description": "The location of the resource. This is the geographical region where the Chronicle instance resides, such as \"us\" or \"europe-west2\".\n",
+ "willReplaceOnChanges": true
+ },
+ "multiplyingFactor": {
+ "type": "number",
+ "description": "Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified.\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "Identifier. Resource name of the watchlist. This unique identifier is generated using values provided for the URL parameters.\nFormat:\nprojects/{project}/locations/{location}/instances/{instance}/watchlists/{watchlist}\n"
+ },
+ "project": {
+ "type": "string",
+ "willReplaceOnChanges": true
+ },
+ "updateTime": {
+ "type": "string",
+ "description": "Output only. Time the watchlist was last updated.\n"
+ },
+ "watchlistId": {
+ "type": "string",
+ "description": "Optional. The ID to use for the watchlist,\nwhich will become the final component of the watchlist's resource name.\nThis value should be 4-63 characters, and valid characters\nare /a-z-/.\n",
+ "willReplaceOnChanges": true
+ },
+ "watchlistUserPreferences": {
+ "$ref": "#/types/gcp:chronicle/WatchlistWatchlistUserPreferences:WatchlistWatchlistUserPreferences",
+ "description": "A collection of user preferences for watchlist UI configuration.\n"
+ }
+ },
+ "type": "object"
+ }
+ },
"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 deletionProtection: false,\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 deletion_protection=False)\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 DeletionProtection = false,\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/v8/go/gcp/cloudasset\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tDeletionProtection: pulumi.Bool(false),\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 .deletionProtection(false)\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\n deletionProtection: false\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": {
@@ -163597,7 +165903,7 @@
}
},
"gcp:compute/firewallPolicyAssociation:FirewallPolicyAssociation": {
- "description": "Allows associating hierarchical firewall policies with the target where they are applied. This allows creating policies and rules in a different location than they are applied.\n\nFor more information on applying hierarchical firewall policies see the [official documentation](https://cloud.google.com/vpc/docs/firewall-policies#managing_hierarchical_firewall_policy_resources)\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.compute.FirewallPolicy(\"default\", {\n parent: \"organizations/12345\",\n shortName: \"my-policy\",\n description: \"Example Resource\",\n});\nconst defaultFirewallPolicyAssociation = new gcp.compute.FirewallPolicyAssociation(\"default\", {\n firewallPolicy: _default.id,\n attachmentTarget: folder.name,\n name: \"my-association\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.FirewallPolicy(\"default\",\n parent=\"organizations/12345\",\n short_name=\"my-policy\",\n description=\"Example Resource\")\ndefault_firewall_policy_association = gcp.compute.FirewallPolicyAssociation(\"default\",\n firewall_policy=default.id,\n attachment_target=folder[\"name\"],\n name=\"my-association\")\n```\n```csharp\nusing 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.FirewallPolicy(\"default\", new()\n {\n Parent = \"organizations/12345\",\n ShortName = \"my-policy\",\n Description = \"Example Resource\",\n });\n\n var defaultFirewallPolicyAssociation = new Gcp.Compute.FirewallPolicyAssociation(\"default\", new()\n {\n FirewallPolicy = @default.Id,\n AttachmentTarget = folder.Name,\n Name = \"my-association\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewFirewallPolicy(ctx, \"default\", \u0026compute.FirewallPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/12345\"),\n\t\t\tShortName: pulumi.String(\"my-policy\"),\n\t\t\tDescription: pulumi.String(\"Example Resource\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewFirewallPolicyAssociation(ctx, \"default\", \u0026compute.FirewallPolicyAssociationArgs{\n\t\t\tFirewallPolicy: _default.ID(),\n\t\t\tAttachmentTarget: pulumi.Any(folder.Name),\n\t\t\tName: pulumi.String(\"my-association\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.FirewallPolicy;\nimport com.pulumi.gcp.compute.FirewallPolicyArgs;\nimport com.pulumi.gcp.compute.FirewallPolicyAssociation;\nimport com.pulumi.gcp.compute.FirewallPolicyAssociationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new FirewallPolicy(\"default\", FirewallPolicyArgs.builder()\n .parent(\"organizations/12345\")\n .shortName(\"my-policy\")\n .description(\"Example Resource\")\n .build());\n\n var defaultFirewallPolicyAssociation = new FirewallPolicyAssociation(\"defaultFirewallPolicyAssociation\", FirewallPolicyAssociationArgs.builder()\n .firewallPolicy(default_.id())\n .attachmentTarget(folder.name())\n .name(\"my-association\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:FirewallPolicy\n properties:\n parent: organizations/12345\n shortName: my-policy\n description: Example Resource\n defaultFirewallPolicyAssociation:\n type: gcp:compute:FirewallPolicyAssociation\n name: default\n properties:\n firewallPolicy: ${default.id}\n attachmentTarget: ${folder.name}\n name: my-association\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFirewallPolicyAssociation can be imported using any of these accepted formats:\n\n* `locations/global/firewallPolicies/{{firewall_policy}}/associations/{{name}}`\n\n* `{{firewall_policy}}/{{name}}`\n\nWhen using the `pulumi import` command, FirewallPolicyAssociation can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/firewallPolicyAssociation:FirewallPolicyAssociation default locations/global/firewallPolicies/{{firewall_policy}}/associations/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/firewallPolicyAssociation:FirewallPolicyAssociation default {{firewall_policy}}/{{name}}\n```\n\n",
+ "description": "Allows associating hierarchical firewall policies with the target where they are applied. This allows creating policies and rules in a different location than they are applied.\nFor more information on applying hierarchical firewall policies see the [official documentation](https://cloud.google.com/firewall/docs/firewall-policies#managing_hierarchical_firewall_policy_resources)\n\n\nTo get more information about FirewallPolicyAssociation, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/firewallPolicies/addAssociation)\n\n## Example Usage\n\n### Firewall Policy Association\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 displayName: \"my-folder\",\n parent: \"organizations/123456789\",\n deletionProtection: false,\n});\nconst policy = new gcp.compute.FirewallPolicy(\"policy\", {\n parent: \"organizations/123456789\",\n shortName: \"my-policy\",\n description: \"Example Resource\",\n});\nconst _default = new gcp.compute.FirewallPolicyAssociation(\"default\", {\n firewallPolicy: policy.id,\n attachmentTarget: folder.name,\n name: \"my-association\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.organizations.Folder(\"folder\",\n display_name=\"my-folder\",\n parent=\"organizations/123456789\",\n deletion_protection=False)\npolicy = gcp.compute.FirewallPolicy(\"policy\",\n parent=\"organizations/123456789\",\n short_name=\"my-policy\",\n description=\"Example Resource\")\ndefault = gcp.compute.FirewallPolicyAssociation(\"default\",\n firewall_policy=policy.id,\n attachment_target=folder.name,\n name=\"my-association\")\n```\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 DisplayName = \"my-folder\",\n Parent = \"organizations/123456789\",\n DeletionProtection = false,\n });\n\n var policy = new Gcp.Compute.FirewallPolicy(\"policy\", new()\n {\n Parent = \"organizations/123456789\",\n ShortName = \"my-policy\",\n Description = \"Example Resource\",\n });\n\n var @default = new Gcp.Compute.FirewallPolicyAssociation(\"default\", new()\n {\n FirewallPolicy = policy.Id,\n AttachmentTarget = folder.Name,\n Name = \"my-association\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tfolder, err := organizations.NewFolder(ctx, \"folder\", \u0026organizations.FolderArgs{\n\t\t\tDisplayName: pulumi.String(\"my-folder\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\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\tpolicy, err := compute.NewFirewallPolicy(ctx, \"policy\", \u0026compute.FirewallPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tShortName: pulumi.String(\"my-policy\"),\n\t\t\tDescription: pulumi.String(\"Example Resource\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewFirewallPolicyAssociation(ctx, \"default\", \u0026compute.FirewallPolicyAssociationArgs{\n\t\t\tFirewallPolicy: policy.ID(),\n\t\t\tAttachmentTarget: folder.Name,\n\t\t\tName: pulumi.String(\"my-association\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\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.FirewallPolicy;\nimport com.pulumi.gcp.compute.FirewallPolicyArgs;\nimport com.pulumi.gcp.compute.FirewallPolicyAssociation;\nimport com.pulumi.gcp.compute.FirewallPolicyAssociationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 .displayName(\"my-folder\")\n .parent(\"organizations/123456789\")\n .deletionProtection(false)\n .build());\n\n var policy = new FirewallPolicy(\"policy\", FirewallPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .shortName(\"my-policy\")\n .description(\"Example Resource\")\n .build());\n\n var default_ = new FirewallPolicyAssociation(\"default\", FirewallPolicyAssociationArgs.builder()\n .firewallPolicy(policy.id())\n .attachmentTarget(folder.name())\n .name(\"my-association\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:organizations:Folder\n properties:\n displayName: my-folder\n parent: organizations/123456789\n deletionProtection: false\n policy:\n type: gcp:compute:FirewallPolicy\n properties:\n parent: organizations/123456789\n shortName: my-policy\n description: Example Resource\n default:\n type: gcp:compute:FirewallPolicyAssociation\n properties:\n firewallPolicy: ${policy.id}\n attachmentTarget: ${folder.name}\n name: my-association\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFirewallPolicyAssociation can be imported using any of these accepted formats:\n\n* `locations/global/firewallPolicies/{{firewall_policy}}/associations/{{name}}`\n\n* `{{firewall_policy}}/{{name}}`\n\nWhen using the `pulumi import` command, FirewallPolicyAssociation can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/firewallPolicyAssociation:FirewallPolicyAssociation default locations/global/firewallPolicies/{{firewall_policy}}/associations/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/firewallPolicyAssociation:FirewallPolicyAssociation default {{firewall_policy}}/{{name}}\n```\n\n",
"properties": {
"attachmentTarget": {
"type": "string",
@@ -163605,11 +165911,11 @@
},
"firewallPolicy": {
"type": "string",
- "description": "The firewall policy ID of the association.\n"
+ "description": "The firewall policy of the resource.\n\n\n- - -\n"
},
"name": {
"type": "string",
- "description": "The name for an association.\n\n\n\n- - -\n"
+ "description": "The name for an association.\n"
},
"shortName": {
"type": "string",
@@ -163630,12 +165936,12 @@
},
"firewallPolicy": {
"type": "string",
- "description": "The firewall policy ID of the association.\n",
+ "description": "The firewall policy of the resource.\n\n\n- - -\n",
"willReplaceOnChanges": true
},
"name": {
"type": "string",
- "description": "The name for an association.\n\n\n\n- - -\n",
+ "description": "The name for an association.\n",
"willReplaceOnChanges": true
}
},
@@ -163653,12 +165959,12 @@
},
"firewallPolicy": {
"type": "string",
- "description": "The firewall policy ID of the association.\n",
+ "description": "The firewall policy of the resource.\n\n\n- - -\n",
"willReplaceOnChanges": true
},
"name": {
"type": "string",
- "description": "The name for an association.\n\n\n\n- - -\n",
+ "description": "The name for an association.\n",
"willReplaceOnChanges": true
},
"shortName": {
@@ -171830,13 +174136,18 @@
"type": "string",
"description": "Set the order that Firewall Rules and Firewall Policies are evaluated.\nDefault value is `AFTER_CLASSIC_FIREWALL`.\nPossible values are: `BEFORE_CLASSIC_FIREWALL`, `AFTER_CLASSIC_FIREWALL`.\n"
},
+ "networkId": {
+ "type": "string",
+ "description": "The unique identifier for the resource. This identifier is defined by the server.\n"
+ },
"networkProfile": {
"type": "string",
"description": "A full or partial URL of the network profile to apply to this network.\nThis field can be set only at resource creation time. For example, the\nfollowing are valid URLs:\n* https://www.googleapis.com/compute/beta/projects/{projectId}/global/networkProfiles/{network_profile_name}\n* projects/{projectId}/global/networkProfiles/{network_profile_name}\n"
},
"numericId": {
"type": "string",
- "description": "The unique identifier for the resource. This identifier is defined by the server.\n"
+ "description": "(Deprecated)\nThe unique identifier for the resource. This identifier is defined by the server.\n",
+ "deprecationMessage": "`numeric_id` is deprecated and will be removed in a future major release. Use `network_id` instead."
},
"project": {
"type": "string",
@@ -171859,6 +174170,7 @@
"internalIpv6Range",
"mtu",
"name",
+ "networkId",
"numericId",
"project",
"routingMode",
@@ -171987,6 +174299,10 @@
"type": "string",
"description": "Set the order that Firewall Rules and Firewall Policies are evaluated.\nDefault value is `AFTER_CLASSIC_FIREWALL`.\nPossible values are: `BEFORE_CLASSIC_FIREWALL`, `AFTER_CLASSIC_FIREWALL`.\n"
},
+ "networkId": {
+ "type": "string",
+ "description": "The unique identifier for the resource. This identifier is defined by the server.\n"
+ },
"networkProfile": {
"type": "string",
"description": "A full or partial URL of the network profile to apply to this network.\nThis field can be set only at resource creation time. For example, the\nfollowing are valid URLs:\n* https://www.googleapis.com/compute/beta/projects/{projectId}/global/networkProfiles/{network_profile_name}\n* projects/{projectId}/global/networkProfiles/{network_profile_name}\n",
@@ -171994,7 +174310,8 @@
},
"numericId": {
"type": "string",
- "description": "The unique identifier for the resource. This identifier is defined by the server.\n"
+ "description": "(Deprecated)\nThe unique identifier for the resource. This identifier is defined by the server.\n",
+ "deprecationMessage": "`numeric_id` is deprecated and will be removed in a future major release. Use `network_id` instead."
},
"project": {
"type": "string",
@@ -178407,6 +180724,7 @@
"required": [
"name",
"project",
+ "pscData",
"region",
"selfLink"
],
@@ -181003,7 +183321,7 @@
}
},
"gcp:compute/resizeRequest:ResizeRequest": {
- "description": "Represents a Managed Instance Group Resize Request\n\nResize Requests are the Managed Instance Group implementation of Dynamic Workload Scheduler Flex Start.\n\nWith Dynamic Workload Scheduler in Flex Start mode, you submit a GPU capacity request for your AI/ML jobs by indicating how many you need, a duration, and your preferred region. Dynamic Workload Scheduler intelligently persists the request; once the capacity becomes available, it automatically provisions your VMs enabling your workloads to run continuously for the entire duration of the capacity allocation.\n\n\nTo get more information about ResizeRequest, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagerResizeRequests)\n* How-to Guides\n * [QUICKSTART_TITLE](https://cloud.google.com/compute/docs/instance-groups/create-resize-requests-mig)\n\n## Example Usage\n\n### Compute Mig Resize Request\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst a3Dws = new gcp.compute.RegionInstanceTemplate(\"a3_dws\", {\n name: \"a3-dws\",\n region: \"us-central1\",\n description: \"This template is used to create a mig instance that is compatible with DWS resize requests.\",\n instanceDescription: \"A3 GPU\",\n machineType: \"a3-highgpu-8g\",\n canIpForward: false,\n scheduling: {\n automaticRestart: false,\n onHostMaintenance: \"TERMINATE\",\n },\n disks: [{\n sourceImage: \"cos-cloud/cos-105-lts\",\n autoDelete: true,\n boot: true,\n diskType: \"pd-ssd\",\n diskSizeGb: 960,\n mode: \"READ_WRITE\",\n }],\n guestAccelerators: [{\n type: \"nvidia-h100-80gb\",\n count: 8,\n }],\n reservationAffinity: {\n type: \"NO_RESERVATION\",\n },\n shieldedInstanceConfig: {\n enableVtpm: true,\n enableIntegrityMonitoring: true,\n },\n networkInterfaces: [{\n network: \"default\",\n }],\n});\nconst a3DwsInstanceGroupManager = new gcp.compute.InstanceGroupManager(\"a3_dws\", {\n name: \"a3-dws\",\n baseInstanceName: \"a3-dws\",\n zone: \"us-central1-a\",\n versions: [{\n instanceTemplate: a3Dws.selfLink,\n }],\n instanceLifecyclePolicy: {\n defaultActionOnFailure: \"DO_NOTHING\",\n },\n waitForInstances: false,\n});\nconst a3ResizeRequest = new gcp.compute.ResizeRequest(\"a3_resize_request\", {\n name: \"a3-dws\",\n instanceGroupManager: a3DwsInstanceGroupManager.name,\n zone: \"us-central1-a\",\n description: \"Test resize request resource\",\n resizeBy: 2,\n requestedRunDuration: {\n seconds: \"14400\",\n nanos: 0,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\na3_dws = gcp.compute.RegionInstanceTemplate(\"a3_dws\",\n name=\"a3-dws\",\n region=\"us-central1\",\n description=\"This template is used to create a mig instance that is compatible with DWS resize requests.\",\n instance_description=\"A3 GPU\",\n machine_type=\"a3-highgpu-8g\",\n can_ip_forward=False,\n scheduling={\n \"automatic_restart\": False,\n \"on_host_maintenance\": \"TERMINATE\",\n },\n disks=[{\n \"source_image\": \"cos-cloud/cos-105-lts\",\n \"auto_delete\": True,\n \"boot\": True,\n \"disk_type\": \"pd-ssd\",\n \"disk_size_gb\": 960,\n \"mode\": \"READ_WRITE\",\n }],\n guest_accelerators=[{\n \"type\": \"nvidia-h100-80gb\",\n \"count\": 8,\n }],\n reservation_affinity={\n \"type\": \"NO_RESERVATION\",\n },\n shielded_instance_config={\n \"enable_vtpm\": True,\n \"enable_integrity_monitoring\": True,\n },\n network_interfaces=[{\n \"network\": \"default\",\n }])\na3_dws_instance_group_manager = gcp.compute.InstanceGroupManager(\"a3_dws\",\n name=\"a3-dws\",\n base_instance_name=\"a3-dws\",\n zone=\"us-central1-a\",\n versions=[{\n \"instance_template\": a3_dws.self_link,\n }],\n instance_lifecycle_policy={\n \"default_action_on_failure\": \"DO_NOTHING\",\n },\n wait_for_instances=False)\na3_resize_request = gcp.compute.ResizeRequest(\"a3_resize_request\",\n name=\"a3-dws\",\n instance_group_manager=a3_dws_instance_group_manager.name,\n zone=\"us-central1-a\",\n description=\"Test resize request resource\",\n resize_by=2,\n requested_run_duration={\n \"seconds\": \"14400\",\n \"nanos\": 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 a3Dws = new Gcp.Compute.RegionInstanceTemplate(\"a3_dws\", new()\n {\n Name = \"a3-dws\",\n Region = \"us-central1\",\n Description = \"This template is used to create a mig instance that is compatible with DWS resize requests.\",\n InstanceDescription = \"A3 GPU\",\n MachineType = \"a3-highgpu-8g\",\n CanIpForward = false,\n Scheduling = new Gcp.Compute.Inputs.RegionInstanceTemplateSchedulingArgs\n {\n AutomaticRestart = false,\n OnHostMaintenance = \"TERMINATE\",\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceTemplateDiskArgs\n {\n SourceImage = \"cos-cloud/cos-105-lts\",\n AutoDelete = true,\n Boot = true,\n DiskType = \"pd-ssd\",\n DiskSizeGb = 960,\n Mode = \"READ_WRITE\",\n },\n },\n GuestAccelerators = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceTemplateGuestAcceleratorArgs\n {\n Type = \"nvidia-h100-80gb\",\n Count = 8,\n },\n },\n ReservationAffinity = new Gcp.Compute.Inputs.RegionInstanceTemplateReservationAffinityArgs\n {\n Type = \"NO_RESERVATION\",\n },\n ShieldedInstanceConfig = new Gcp.Compute.Inputs.RegionInstanceTemplateShieldedInstanceConfigArgs\n {\n EnableVtpm = true,\n EnableIntegrityMonitoring = true,\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n });\n\n var a3DwsInstanceGroupManager = new Gcp.Compute.InstanceGroupManager(\"a3_dws\", new()\n {\n Name = \"a3-dws\",\n BaseInstanceName = \"a3-dws\",\n Zone = \"us-central1-a\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n InstanceTemplate = a3Dws.SelfLink,\n },\n },\n InstanceLifecyclePolicy = new Gcp.Compute.Inputs.InstanceGroupManagerInstanceLifecyclePolicyArgs\n {\n DefaultActionOnFailure = \"DO_NOTHING\",\n },\n WaitForInstances = false,\n });\n\n var a3ResizeRequest = new Gcp.Compute.ResizeRequest(\"a3_resize_request\", new()\n {\n Name = \"a3-dws\",\n InstanceGroupManager = a3DwsInstanceGroupManager.Name,\n Zone = \"us-central1-a\",\n Description = \"Test resize request resource\",\n ResizeBy = 2,\n RequestedRunDuration = new Gcp.Compute.Inputs.ResizeRequestRequestedRunDurationArgs\n {\n Seconds = \"14400\",\n Nanos = 0,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ta3Dws, err := compute.NewRegionInstanceTemplate(ctx, \"a3_dws\", \u0026compute.RegionInstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"a3-dws\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"This template is used to create a mig instance that is compatible with DWS resize requests.\"),\n\t\t\tInstanceDescription: pulumi.String(\"A3 GPU\"),\n\t\t\tMachineType: pulumi.String(\"a3-highgpu-8g\"),\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tScheduling: \u0026compute.RegionInstanceTemplateSchedulingArgs{\n\t\t\t\tAutomaticRestart: pulumi.Bool(false),\n\t\t\t\tOnHostMaintenance: pulumi.String(\"TERMINATE\"),\n\t\t\t},\n\t\t\tDisks: compute.RegionInstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.RegionInstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(\"cos-cloud/cos-105-lts\"),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t\tDiskType: pulumi.String(\"pd-ssd\"),\n\t\t\t\t\tDiskSizeGb: pulumi.Int(960),\n\t\t\t\t\tMode: pulumi.String(\"READ_WRITE\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tGuestAccelerators: compute.RegionInstanceTemplateGuestAcceleratorArray{\n\t\t\t\t\u0026compute.RegionInstanceTemplateGuestAcceleratorArgs{\n\t\t\t\t\tType: pulumi.String(\"nvidia-h100-80gb\"),\n\t\t\t\t\tCount: pulumi.Int(8),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReservationAffinity: \u0026compute.RegionInstanceTemplateReservationAffinityArgs{\n\t\t\t\tType: pulumi.String(\"NO_RESERVATION\"),\n\t\t\t},\n\t\t\tShieldedInstanceConfig: \u0026compute.RegionInstanceTemplateShieldedInstanceConfigArgs{\n\t\t\t\tEnableVtpm: pulumi.Bool(true),\n\t\t\t\tEnableIntegrityMonitoring: pulumi.Bool(true),\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.RegionInstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.RegionInstanceTemplateNetworkInterfaceArgs{\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\ta3DwsInstanceGroupManager, err := compute.NewInstanceGroupManager(ctx, \"a3_dws\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"a3-dws\"),\n\t\t\tBaseInstanceName: pulumi.String(\"a3-dws\"),\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: a3Dws.SelfLink,\n\t\t\t\t},\n\t\t\t},\n\t\t\tInstanceLifecyclePolicy: \u0026compute.InstanceGroupManagerInstanceLifecyclePolicyArgs{\n\t\t\t\tDefaultActionOnFailure: pulumi.String(\"DO_NOTHING\"),\n\t\t\t},\n\t\t\tWaitForInstances: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewResizeRequest(ctx, \"a3_resize_request\", \u0026compute.ResizeRequestArgs{\n\t\t\tName: pulumi.String(\"a3-dws\"),\n\t\t\tInstanceGroupManager: a3DwsInstanceGroupManager.Name,\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tDescription: pulumi.String(\"Test resize request resource\"),\n\t\t\tResizeBy: pulumi.Int(2),\n\t\t\tRequestedRunDuration: \u0026compute.ResizeRequestRequestedRunDurationArgs{\n\t\t\t\tSeconds: pulumi.String(\"14400\"),\n\t\t\t\tNanos: pulumi.Int(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.compute.RegionInstanceTemplate;\nimport com.pulumi.gcp.compute.RegionInstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceTemplateSchedulingArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceTemplateGuestAcceleratorArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceTemplateReservationAffinityArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceTemplateShieldedInstanceConfigArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceTemplateNetworkInterfaceArgs;\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.InstanceGroupManagerInstanceLifecyclePolicyArgs;\nimport com.pulumi.gcp.compute.ResizeRequest;\nimport com.pulumi.gcp.compute.ResizeRequestArgs;\nimport com.pulumi.gcp.compute.inputs.ResizeRequestRequestedRunDurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var a3Dws = new RegionInstanceTemplate(\"a3Dws\", RegionInstanceTemplateArgs.builder()\n .name(\"a3-dws\")\n .region(\"us-central1\")\n .description(\"This template is used to create a mig instance that is compatible with DWS resize requests.\")\n .instanceDescription(\"A3 GPU\")\n .machineType(\"a3-highgpu-8g\")\n .canIpForward(false)\n .scheduling(RegionInstanceTemplateSchedulingArgs.builder()\n .automaticRestart(false)\n .onHostMaintenance(\"TERMINATE\")\n .build())\n .disks(RegionInstanceTemplateDiskArgs.builder()\n .sourceImage(\"cos-cloud/cos-105-lts\")\n .autoDelete(true)\n .boot(true)\n .diskType(\"pd-ssd\")\n .diskSizeGb(\"960\")\n .mode(\"READ_WRITE\")\n .build())\n .guestAccelerators(RegionInstanceTemplateGuestAcceleratorArgs.builder()\n .type(\"nvidia-h100-80gb\")\n .count(8)\n .build())\n .reservationAffinity(RegionInstanceTemplateReservationAffinityArgs.builder()\n .type(\"NO_RESERVATION\")\n .build())\n .shieldedInstanceConfig(RegionInstanceTemplateShieldedInstanceConfigArgs.builder()\n .enableVtpm(true)\n .enableIntegrityMonitoring(true)\n .build())\n .networkInterfaces(RegionInstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .build());\n\n var a3DwsInstanceGroupManager = new InstanceGroupManager(\"a3DwsInstanceGroupManager\", InstanceGroupManagerArgs.builder()\n .name(\"a3-dws\")\n .baseInstanceName(\"a3-dws\")\n .zone(\"us-central1-a\")\n .versions(InstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(a3Dws.selfLink())\n .build())\n .instanceLifecyclePolicy(InstanceGroupManagerInstanceLifecyclePolicyArgs.builder()\n .defaultActionOnFailure(\"DO_NOTHING\")\n .build())\n .waitForInstances(false)\n .build());\n\n var a3ResizeRequest = new ResizeRequest(\"a3ResizeRequest\", ResizeRequestArgs.builder()\n .name(\"a3-dws\")\n .instanceGroupManager(a3DwsInstanceGroupManager.name())\n .zone(\"us-central1-a\")\n .description(\"Test resize request resource\")\n .resizeBy(2)\n .requestedRunDuration(ResizeRequestRequestedRunDurationArgs.builder()\n .seconds(14400)\n .nanos(0)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n a3Dws:\n type: gcp:compute:RegionInstanceTemplate\n name: a3_dws\n properties:\n name: a3-dws\n region: us-central1\n description: This template is used to create a mig instance that is compatible with DWS resize requests.\n instanceDescription: A3 GPU\n machineType: a3-highgpu-8g\n canIpForward: false\n scheduling:\n automaticRestart: false\n onHostMaintenance: TERMINATE\n disks:\n - sourceImage: cos-cloud/cos-105-lts\n autoDelete: true\n boot: true\n diskType: pd-ssd\n diskSizeGb: '960'\n mode: READ_WRITE\n guestAccelerators:\n - type: nvidia-h100-80gb\n count: 8\n reservationAffinity:\n type: NO_RESERVATION\n shieldedInstanceConfig:\n enableVtpm: true\n enableIntegrityMonitoring: true\n networkInterfaces:\n - network: default\n a3DwsInstanceGroupManager:\n type: gcp:compute:InstanceGroupManager\n name: a3_dws\n properties:\n name: a3-dws\n baseInstanceName: a3-dws\n zone: us-central1-a\n versions:\n - instanceTemplate: ${a3Dws.selfLink}\n instanceLifecyclePolicy:\n defaultActionOnFailure: DO_NOTHING\n waitForInstances: false\n a3ResizeRequest:\n type: gcp:compute:ResizeRequest\n name: a3_resize_request\n properties:\n name: a3-dws\n instanceGroupManager: ${a3DwsInstanceGroupManager.name}\n zone: us-central1-a\n description: Test resize request resource\n resizeBy: 2\n requestedRunDuration:\n seconds: 14400\n nanos: 0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResizeRequest can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/instanceGroupManagers/{{instance_group_manager}}/resizeRequests/{{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, ResizeRequest can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/resizeRequest:ResizeRequest default projects/{{project}}/zones/{{zone}}/instanceGroupManagers/{{instance_group_manager}}/resizeRequests/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/resizeRequest:ResizeRequest default {{project}}/{{zone}}/{{instance_group_manager}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/resizeRequest:ResizeRequest default {{zone}}/{{instance_group_manager}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/resizeRequest:ResizeRequest default {{instance_group_manager}}/{{name}}\n```\n\n",
+ "description": "Represents a Managed Instance Group Resize Request\n\nResize Requests are the Managed Instance Group implementation of Dynamic Workload Scheduler Flex Start.\n\nWith Dynamic Workload Scheduler in Flex Start mode, you submit a GPU capacity request for your AI/ML jobs by indicating how many you need, a duration, and your preferred zone. Dynamic Workload Scheduler intelligently persists the request; once the capacity becomes available, it automatically provisions your VMs enabling your workloads to run continuously for the entire duration of the capacity allocation.\n\n\nTo get more information about ResizeRequest, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagerResizeRequests)\n* How-to Guides\n * [About resize requests in a MIG](https://cloud.google.com/compute/docs/instance-groups/about-resize-requests-mig)\n\n## Example Usage\n\n### Compute Mig Resize Request\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst a3Dws = new gcp.compute.RegionInstanceTemplate(\"a3_dws\", {\n name: \"a3-dws\",\n region: \"us-central1\",\n description: \"This template is used to create a mig instance that is compatible with DWS resize requests.\",\n instanceDescription: \"A3 GPU\",\n machineType: \"a3-highgpu-8g\",\n canIpForward: false,\n scheduling: {\n automaticRestart: false,\n onHostMaintenance: \"TERMINATE\",\n },\n disks: [{\n sourceImage: \"cos-cloud/cos-105-lts\",\n autoDelete: true,\n boot: true,\n diskType: \"pd-ssd\",\n diskSizeGb: 960,\n mode: \"READ_WRITE\",\n }],\n guestAccelerators: [{\n type: \"nvidia-h100-80gb\",\n count: 8,\n }],\n reservationAffinity: {\n type: \"NO_RESERVATION\",\n },\n shieldedInstanceConfig: {\n enableVtpm: true,\n enableIntegrityMonitoring: true,\n },\n networkInterfaces: [{\n network: \"default\",\n }],\n});\nconst a3DwsInstanceGroupManager = new gcp.compute.InstanceGroupManager(\"a3_dws\", {\n name: \"a3-dws\",\n baseInstanceName: \"a3-dws\",\n zone: \"us-central1-a\",\n versions: [{\n instanceTemplate: a3Dws.selfLink,\n }],\n instanceLifecyclePolicy: {\n defaultActionOnFailure: \"DO_NOTHING\",\n },\n waitForInstances: false,\n});\nconst a3ResizeRequest = new gcp.compute.ResizeRequest(\"a3_resize_request\", {\n name: \"a3-dws\",\n instanceGroupManager: a3DwsInstanceGroupManager.name,\n zone: \"us-central1-a\",\n description: \"Test resize request resource\",\n resizeBy: 2,\n requestedRunDuration: {\n seconds: \"14400\",\n nanos: 0,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\na3_dws = gcp.compute.RegionInstanceTemplate(\"a3_dws\",\n name=\"a3-dws\",\n region=\"us-central1\",\n description=\"This template is used to create a mig instance that is compatible with DWS resize requests.\",\n instance_description=\"A3 GPU\",\n machine_type=\"a3-highgpu-8g\",\n can_ip_forward=False,\n scheduling={\n \"automatic_restart\": False,\n \"on_host_maintenance\": \"TERMINATE\",\n },\n disks=[{\n \"source_image\": \"cos-cloud/cos-105-lts\",\n \"auto_delete\": True,\n \"boot\": True,\n \"disk_type\": \"pd-ssd\",\n \"disk_size_gb\": 960,\n \"mode\": \"READ_WRITE\",\n }],\n guest_accelerators=[{\n \"type\": \"nvidia-h100-80gb\",\n \"count\": 8,\n }],\n reservation_affinity={\n \"type\": \"NO_RESERVATION\",\n },\n shielded_instance_config={\n \"enable_vtpm\": True,\n \"enable_integrity_monitoring\": True,\n },\n network_interfaces=[{\n \"network\": \"default\",\n }])\na3_dws_instance_group_manager = gcp.compute.InstanceGroupManager(\"a3_dws\",\n name=\"a3-dws\",\n base_instance_name=\"a3-dws\",\n zone=\"us-central1-a\",\n versions=[{\n \"instance_template\": a3_dws.self_link,\n }],\n instance_lifecycle_policy={\n \"default_action_on_failure\": \"DO_NOTHING\",\n },\n wait_for_instances=False)\na3_resize_request = gcp.compute.ResizeRequest(\"a3_resize_request\",\n name=\"a3-dws\",\n instance_group_manager=a3_dws_instance_group_manager.name,\n zone=\"us-central1-a\",\n description=\"Test resize request resource\",\n resize_by=2,\n requested_run_duration={\n \"seconds\": \"14400\",\n \"nanos\": 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 a3Dws = new Gcp.Compute.RegionInstanceTemplate(\"a3_dws\", new()\n {\n Name = \"a3-dws\",\n Region = \"us-central1\",\n Description = \"This template is used to create a mig instance that is compatible with DWS resize requests.\",\n InstanceDescription = \"A3 GPU\",\n MachineType = \"a3-highgpu-8g\",\n CanIpForward = false,\n Scheduling = new Gcp.Compute.Inputs.RegionInstanceTemplateSchedulingArgs\n {\n AutomaticRestart = false,\n OnHostMaintenance = \"TERMINATE\",\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceTemplateDiskArgs\n {\n SourceImage = \"cos-cloud/cos-105-lts\",\n AutoDelete = true,\n Boot = true,\n DiskType = \"pd-ssd\",\n DiskSizeGb = 960,\n Mode = \"READ_WRITE\",\n },\n },\n GuestAccelerators = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceTemplateGuestAcceleratorArgs\n {\n Type = \"nvidia-h100-80gb\",\n Count = 8,\n },\n },\n ReservationAffinity = new Gcp.Compute.Inputs.RegionInstanceTemplateReservationAffinityArgs\n {\n Type = \"NO_RESERVATION\",\n },\n ShieldedInstanceConfig = new Gcp.Compute.Inputs.RegionInstanceTemplateShieldedInstanceConfigArgs\n {\n EnableVtpm = true,\n EnableIntegrityMonitoring = true,\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n });\n\n var a3DwsInstanceGroupManager = new Gcp.Compute.InstanceGroupManager(\"a3_dws\", new()\n {\n Name = \"a3-dws\",\n BaseInstanceName = \"a3-dws\",\n Zone = \"us-central1-a\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n InstanceTemplate = a3Dws.SelfLink,\n },\n },\n InstanceLifecyclePolicy = new Gcp.Compute.Inputs.InstanceGroupManagerInstanceLifecyclePolicyArgs\n {\n DefaultActionOnFailure = \"DO_NOTHING\",\n },\n WaitForInstances = false,\n });\n\n var a3ResizeRequest = new Gcp.Compute.ResizeRequest(\"a3_resize_request\", new()\n {\n Name = \"a3-dws\",\n InstanceGroupManager = a3DwsInstanceGroupManager.Name,\n Zone = \"us-central1-a\",\n Description = \"Test resize request resource\",\n ResizeBy = 2,\n RequestedRunDuration = new Gcp.Compute.Inputs.ResizeRequestRequestedRunDurationArgs\n {\n Seconds = \"14400\",\n Nanos = 0,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ta3Dws, err := compute.NewRegionInstanceTemplate(ctx, \"a3_dws\", \u0026compute.RegionInstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"a3-dws\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"This template is used to create a mig instance that is compatible with DWS resize requests.\"),\n\t\t\tInstanceDescription: pulumi.String(\"A3 GPU\"),\n\t\t\tMachineType: pulumi.String(\"a3-highgpu-8g\"),\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tScheduling: \u0026compute.RegionInstanceTemplateSchedulingArgs{\n\t\t\t\tAutomaticRestart: pulumi.Bool(false),\n\t\t\t\tOnHostMaintenance: pulumi.String(\"TERMINATE\"),\n\t\t\t},\n\t\t\tDisks: compute.RegionInstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.RegionInstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(\"cos-cloud/cos-105-lts\"),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t\tDiskType: pulumi.String(\"pd-ssd\"),\n\t\t\t\t\tDiskSizeGb: pulumi.Int(960),\n\t\t\t\t\tMode: pulumi.String(\"READ_WRITE\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tGuestAccelerators: compute.RegionInstanceTemplateGuestAcceleratorArray{\n\t\t\t\t\u0026compute.RegionInstanceTemplateGuestAcceleratorArgs{\n\t\t\t\t\tType: pulumi.String(\"nvidia-h100-80gb\"),\n\t\t\t\t\tCount: pulumi.Int(8),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReservationAffinity: \u0026compute.RegionInstanceTemplateReservationAffinityArgs{\n\t\t\t\tType: pulumi.String(\"NO_RESERVATION\"),\n\t\t\t},\n\t\t\tShieldedInstanceConfig: \u0026compute.RegionInstanceTemplateShieldedInstanceConfigArgs{\n\t\t\t\tEnableVtpm: pulumi.Bool(true),\n\t\t\t\tEnableIntegrityMonitoring: pulumi.Bool(true),\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.RegionInstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.RegionInstanceTemplateNetworkInterfaceArgs{\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\ta3DwsInstanceGroupManager, err := compute.NewInstanceGroupManager(ctx, \"a3_dws\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"a3-dws\"),\n\t\t\tBaseInstanceName: pulumi.String(\"a3-dws\"),\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: a3Dws.SelfLink,\n\t\t\t\t},\n\t\t\t},\n\t\t\tInstanceLifecyclePolicy: \u0026compute.InstanceGroupManagerInstanceLifecyclePolicyArgs{\n\t\t\t\tDefaultActionOnFailure: pulumi.String(\"DO_NOTHING\"),\n\t\t\t},\n\t\t\tWaitForInstances: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewResizeRequest(ctx, \"a3_resize_request\", \u0026compute.ResizeRequestArgs{\n\t\t\tName: pulumi.String(\"a3-dws\"),\n\t\t\tInstanceGroupManager: a3DwsInstanceGroupManager.Name,\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tDescription: pulumi.String(\"Test resize request resource\"),\n\t\t\tResizeBy: pulumi.Int(2),\n\t\t\tRequestedRunDuration: \u0026compute.ResizeRequestRequestedRunDurationArgs{\n\t\t\t\tSeconds: pulumi.String(\"14400\"),\n\t\t\t\tNanos: pulumi.Int(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.compute.RegionInstanceTemplate;\nimport com.pulumi.gcp.compute.RegionInstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceTemplateSchedulingArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceTemplateGuestAcceleratorArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceTemplateReservationAffinityArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceTemplateShieldedInstanceConfigArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceTemplateNetworkInterfaceArgs;\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.InstanceGroupManagerInstanceLifecyclePolicyArgs;\nimport com.pulumi.gcp.compute.ResizeRequest;\nimport com.pulumi.gcp.compute.ResizeRequestArgs;\nimport com.pulumi.gcp.compute.inputs.ResizeRequestRequestedRunDurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var a3Dws = new RegionInstanceTemplate(\"a3Dws\", RegionInstanceTemplateArgs.builder()\n .name(\"a3-dws\")\n .region(\"us-central1\")\n .description(\"This template is used to create a mig instance that is compatible with DWS resize requests.\")\n .instanceDescription(\"A3 GPU\")\n .machineType(\"a3-highgpu-8g\")\n .canIpForward(false)\n .scheduling(RegionInstanceTemplateSchedulingArgs.builder()\n .automaticRestart(false)\n .onHostMaintenance(\"TERMINATE\")\n .build())\n .disks(RegionInstanceTemplateDiskArgs.builder()\n .sourceImage(\"cos-cloud/cos-105-lts\")\n .autoDelete(true)\n .boot(true)\n .diskType(\"pd-ssd\")\n .diskSizeGb(\"960\")\n .mode(\"READ_WRITE\")\n .build())\n .guestAccelerators(RegionInstanceTemplateGuestAcceleratorArgs.builder()\n .type(\"nvidia-h100-80gb\")\n .count(8)\n .build())\n .reservationAffinity(RegionInstanceTemplateReservationAffinityArgs.builder()\n .type(\"NO_RESERVATION\")\n .build())\n .shieldedInstanceConfig(RegionInstanceTemplateShieldedInstanceConfigArgs.builder()\n .enableVtpm(true)\n .enableIntegrityMonitoring(true)\n .build())\n .networkInterfaces(RegionInstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .build());\n\n var a3DwsInstanceGroupManager = new InstanceGroupManager(\"a3DwsInstanceGroupManager\", InstanceGroupManagerArgs.builder()\n .name(\"a3-dws\")\n .baseInstanceName(\"a3-dws\")\n .zone(\"us-central1-a\")\n .versions(InstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(a3Dws.selfLink())\n .build())\n .instanceLifecyclePolicy(InstanceGroupManagerInstanceLifecyclePolicyArgs.builder()\n .defaultActionOnFailure(\"DO_NOTHING\")\n .build())\n .waitForInstances(false)\n .build());\n\n var a3ResizeRequest = new ResizeRequest(\"a3ResizeRequest\", ResizeRequestArgs.builder()\n .name(\"a3-dws\")\n .instanceGroupManager(a3DwsInstanceGroupManager.name())\n .zone(\"us-central1-a\")\n .description(\"Test resize request resource\")\n .resizeBy(2)\n .requestedRunDuration(ResizeRequestRequestedRunDurationArgs.builder()\n .seconds(14400)\n .nanos(0)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n a3Dws:\n type: gcp:compute:RegionInstanceTemplate\n name: a3_dws\n properties:\n name: a3-dws\n region: us-central1\n description: This template is used to create a mig instance that is compatible with DWS resize requests.\n instanceDescription: A3 GPU\n machineType: a3-highgpu-8g\n canIpForward: false\n scheduling:\n automaticRestart: false\n onHostMaintenance: TERMINATE\n disks:\n - sourceImage: cos-cloud/cos-105-lts\n autoDelete: true\n boot: true\n diskType: pd-ssd\n diskSizeGb: '960'\n mode: READ_WRITE\n guestAccelerators:\n - type: nvidia-h100-80gb\n count: 8\n reservationAffinity:\n type: NO_RESERVATION\n shieldedInstanceConfig:\n enableVtpm: true\n enableIntegrityMonitoring: true\n networkInterfaces:\n - network: default\n a3DwsInstanceGroupManager:\n type: gcp:compute:InstanceGroupManager\n name: a3_dws\n properties:\n name: a3-dws\n baseInstanceName: a3-dws\n zone: us-central1-a\n versions:\n - instanceTemplate: ${a3Dws.selfLink}\n instanceLifecyclePolicy:\n defaultActionOnFailure: DO_NOTHING\n waitForInstances: false\n a3ResizeRequest:\n type: gcp:compute:ResizeRequest\n name: a3_resize_request\n properties:\n name: a3-dws\n instanceGroupManager: ${a3DwsInstanceGroupManager.name}\n zone: us-central1-a\n description: Test resize request resource\n resizeBy: 2\n requestedRunDuration:\n seconds: 14400\n nanos: 0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResizeRequest can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/instanceGroupManagers/{{instance_group_manager}}/resizeRequests/{{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, ResizeRequest can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/resizeRequest:ResizeRequest default projects/{{project}}/zones/{{zone}}/instanceGroupManagers/{{instance_group_manager}}/resizeRequests/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/resizeRequest:ResizeRequest default {{project}}/{{zone}}/{{instance_group_manager}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/resizeRequest:ResizeRequest default {{zone}}/{{instance_group_manager}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/resizeRequest:ResizeRequest default {{instance_group_manager}}/{{name}}\n```\n\n",
"properties": {
"creationTimestamp": {
"type": "string",
@@ -181015,7 +183333,7 @@
},
"instanceGroupManager": {
"type": "string",
- "description": "The name of the managed instance group. The name should conform to RFC1035 or be a resource ID.\nAuthorization requires the following IAM permission on the specified resource instanceGroupManager:\n*compute.instanceGroupManagers.update\n\n\n- - -\n"
+ "description": "The reference of the instance group manager this ResizeRequest is a part of.\n\n\n- - -\n"
},
"name": {
"type": "string",
@@ -181035,18 +183353,18 @@
},
"state": {
"type": "string",
- "description": "[Output only] Current state of the request.\n"
+ "description": "Current state of the request.\n"
},
"statuses": {
"type": "array",
"items": {
"$ref": "#/types/gcp:compute/ResizeRequestStatus:ResizeRequestStatus"
},
- "description": "[Output only] Status of the request.\nStructure is documented below.\n"
+ "description": "Status of the request.\nStructure is documented below.\n"
},
"zone": {
"type": "string",
- "description": "Name of the compute zone scoping this request. Name should conform to RFC1035.\n"
+ "description": "The reference of the compute zone scoping this request.\n"
}
},
"required": [
@@ -181067,7 +183385,7 @@
},
"instanceGroupManager": {
"type": "string",
- "description": "The name of the managed instance group. The name should conform to RFC1035 or be a resource ID.\nAuthorization requires the following IAM permission on the specified resource instanceGroupManager:\n*compute.instanceGroupManagers.update\n\n\n- - -\n",
+ "description": "The reference of the instance group manager this ResizeRequest is a part of.\n\n\n- - -\n",
"willReplaceOnChanges": true
},
"name": {
@@ -181092,7 +183410,7 @@
},
"zone": {
"type": "string",
- "description": "Name of the compute zone scoping this request. Name should conform to RFC1035.\n",
+ "description": "The reference of the compute zone scoping this request.\n",
"willReplaceOnChanges": true
}
},
@@ -181115,7 +183433,7 @@
},
"instanceGroupManager": {
"type": "string",
- "description": "The name of the managed instance group. The name should conform to RFC1035 or be a resource ID.\nAuthorization requires the following IAM permission on the specified resource instanceGroupManager:\n*compute.instanceGroupManagers.update\n\n\n- - -\n",
+ "description": "The reference of the instance group manager this ResizeRequest is a part of.\n\n\n- - -\n",
"willReplaceOnChanges": true
},
"name": {
@@ -181140,18 +183458,18 @@
},
"state": {
"type": "string",
- "description": "[Output only] Current state of the request.\n"
+ "description": "Current state of the request.\n"
},
"statuses": {
"type": "array",
"items": {
"$ref": "#/types/gcp:compute/ResizeRequestStatus:ResizeRequestStatus"
},
- "description": "[Output only] Status of the request.\nStructure is documented below.\n"
+ "description": "Status of the request.\nStructure is documented below.\n"
},
"zone": {
"type": "string",
- "description": "Name of the compute zone scoping this request. Name should conform to RFC1035.\n",
+ "description": "The reference of the compute zone scoping this request.\n",
"willReplaceOnChanges": true
}
},
@@ -201173,7 +203491,7 @@
}
},
"gcp:dataproc/batch:Batch": {
- "description": "Dataproc Serverless Batches lets you run Spark workloads without requiring you to\nprovision and manage your own Dataproc cluster.\n\n\nTo get more information about Batch, see:\n\n* [API documentation](https://cloud.google.com/dataproc-serverless/docs/reference/rest/v1/projects.locations.batches)\n* How-to Guides\n * [Dataproc Serverless Batches Intro](https://cloud.google.com/dataproc-serverless/docs/overview)\n\n## Example Usage\n\n### Dataproc Batch Spark\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst exampleBatchSpark = new gcp.dataproc.Batch(\"example_batch_spark\", {\n batchId: \"tf-test-batch_75125\",\n location: \"us-central1\",\n labels: {\n batch_test: \"terraform\",\n },\n runtimeConfig: {\n properties: {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n },\n environmentConfig: {\n executionConfig: {\n subnetworkUri: \"default\",\n ttl: \"3600s\",\n networkTags: [\"tag1\"],\n },\n },\n sparkBatch: {\n mainClass: \"org.apache.spark.examples.SparkPi\",\n args: [\"10\"],\n jarFileUris: [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_batch_spark = gcp.dataproc.Batch(\"example_batch_spark\",\n batch_id=\"tf-test-batch_75125\",\n location=\"us-central1\",\n labels={\n \"batch_test\": \"terraform\",\n },\n runtime_config={\n \"properties\": {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n },\n environment_config={\n \"execution_config\": {\n \"subnetwork_uri\": \"default\",\n \"ttl\": \"3600s\",\n \"network_tags\": [\"tag1\"],\n },\n },\n spark_batch={\n \"main_class\": \"org.apache.spark.examples.SparkPi\",\n \"args\": [\"10\"],\n \"jar_file_uris\": [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleBatchSpark = new Gcp.Dataproc.Batch(\"example_batch_spark\", new()\n {\n BatchId = \"tf-test-batch_75125\",\n Location = \"us-central1\",\n Labels = \n {\n { \"batch_test\", \"terraform\" },\n },\n RuntimeConfig = new Gcp.Dataproc.Inputs.BatchRuntimeConfigArgs\n {\n Properties = \n {\n { \"spark.dynamicAllocation.enabled\", \"false\" },\n { \"spark.executor.instances\", \"2\" },\n },\n },\n EnvironmentConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigArgs\n {\n ExecutionConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigExecutionConfigArgs\n {\n SubnetworkUri = \"default\",\n Ttl = \"3600s\",\n NetworkTags = new[]\n {\n \"tag1\",\n },\n },\n },\n SparkBatch = new Gcp.Dataproc.Inputs.BatchSparkBatchArgs\n {\n MainClass = \"org.apache.spark.examples.SparkPi\",\n Args = new[]\n {\n \"10\",\n },\n JarFileUris = new[]\n {\n \"file:///usr/lib/spark/examples/jars/spark-examples.jar\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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.NewBatch(ctx, \"example_batch_spark\", \u0026dataproc.BatchArgs{\n\t\t\tBatchId: pulumi.String(\"tf-test-batch_75125\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"batch_test\": pulumi.String(\"terraform\"),\n\t\t\t},\n\t\t\tRuntimeConfig: \u0026dataproc.BatchRuntimeConfigArgs{\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.dynamicAllocation.enabled\": pulumi.String(\"false\"),\n\t\t\t\t\t\"spark.executor.instances\": pulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvironmentConfig: \u0026dataproc.BatchEnvironmentConfigArgs{\n\t\t\t\tExecutionConfig: \u0026dataproc.BatchEnvironmentConfigExecutionConfigArgs{\n\t\t\t\t\tSubnetworkUri: pulumi.String(\"default\"),\n\t\t\t\t\tTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\tNetworkTags: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSparkBatch: \u0026dataproc.BatchSparkBatchArgs{\n\t\t\t\tMainClass: pulumi.String(\"org.apache.spark.examples.SparkPi\"),\n\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10\"),\n\t\t\t\t},\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},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.Batch;\nimport com.pulumi.gcp.dataproc.BatchArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchRuntimeConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigExecutionConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchSparkBatchArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleBatchSpark = new Batch(\"exampleBatchSpark\", BatchArgs.builder()\n .batchId(\"tf-test-batch_75125\")\n .location(\"us-central1\")\n .labels(Map.of(\"batch_test\", \"terraform\"))\n .runtimeConfig(BatchRuntimeConfigArgs.builder()\n .properties(Map.ofEntries(\n Map.entry(\"spark.dynamicAllocation.enabled\", \"false\"),\n Map.entry(\"spark.executor.instances\", \"2\")\n ))\n .build())\n .environmentConfig(BatchEnvironmentConfigArgs.builder()\n .executionConfig(BatchEnvironmentConfigExecutionConfigArgs.builder()\n .subnetworkUri(\"default\")\n .ttl(\"3600s\")\n .networkTags(\"tag1\")\n .build())\n .build())\n .sparkBatch(BatchSparkBatchArgs.builder()\n .mainClass(\"org.apache.spark.examples.SparkPi\")\n .args(\"10\")\n .jarFileUris(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleBatchSpark:\n type: gcp:dataproc:Batch\n name: example_batch_spark\n properties:\n batchId: tf-test-batch_75125\n location: us-central1\n labels:\n batch_test: terraform\n runtimeConfig:\n properties:\n spark.dynamicAllocation.enabled: 'false'\n spark.executor.instances: '2'\n environmentConfig:\n executionConfig:\n subnetworkUri: default\n ttl: 3600s\n networkTags:\n - tag1\n sparkBatch:\n mainClass: org.apache.spark.examples.SparkPi\n args:\n - '10'\n jarFileUris:\n - file:///usr/lib/spark/examples/jars/spark-examples.jar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Batch Spark 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 gcsAccount = gcp.storage.getProjectServiceAccount({});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n uniformBucketLevelAccess: true,\n name: \"dataproc-bucket\",\n location: \"US\",\n forceDestroy: true,\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 cryptoKeyMember1 = new gcp.kms.CryptoKeyIAMMember(\"crypto_key_member_1\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@dataproc-accounts.iam.gserviceaccount.com`),\n});\nconst ms = new gcp.dataproc.MetastoreService(\"ms\", {\n serviceId: \"dataproc-batch\",\n location: \"us-central1\",\n port: 9080,\n tier: \"DEVELOPER\",\n maintenanceWindow: {\n hourOfDay: 2,\n dayOfWeek: \"SUNDAY\",\n },\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n },\n});\nconst basic = new gcp.dataproc.Cluster(\"basic\", {\n name: \"dataproc-batch\",\n region: \"us-central1\",\n clusterConfig: {\n softwareConfig: {\n overrideProperties: {\n \"dataproc:dataproc.allow.zero.workers\": \"true\",\n \"spark:spark.history.fs.logDirectory\": pulumi.interpolate`gs://${bucket.name}/*/spark-job-history`,\n },\n },\n endpointConfig: {\n enableHttpPortAccess: true,\n },\n masterConfig: {\n numInstances: 1,\n machineType: \"e2-standard-2\",\n diskConfig: {\n bootDiskSizeGb: 35,\n },\n },\n metastoreConfig: {\n dataprocMetastoreService: ms.name,\n },\n },\n});\nconst exampleBatchSpark = new gcp.dataproc.Batch(\"example_batch_spark\", {\n batchId: \"dataproc-batch\",\n location: \"us-central1\",\n labels: {\n batch_test: \"terraform\",\n },\n runtimeConfig: {\n properties: {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n version: \"2.2\",\n },\n environmentConfig: {\n executionConfig: {\n ttl: \"3600s\",\n networkTags: [\"tag1\"],\n kmsKey: cryptoKey.id,\n networkUri: \"default\",\n serviceAccount: project.then(project =\u003e `${project.number}-compute@developer.gserviceaccount.com`),\n stagingBucket: bucket.name,\n },\n peripheralsConfig: {\n metastoreService: ms.name,\n sparkHistoryServerConfig: {\n dataprocCluster: basic.id,\n },\n },\n },\n sparkBatch: {\n mainClass: \"org.apache.spark.examples.SparkPi\",\n args: [\"10\"],\n jarFileUris: [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n },\n}, {\n dependsOn: [cryptoKeyMember1],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ngcs_account = gcp.storage.get_project_service_account()\nbucket = gcp.storage.Bucket(\"bucket\",\n uniform_bucket_level_access=True,\n name=\"dataproc-bucket\",\n location=\"US\",\n force_destroy=True)\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\")\ncrypto_key_member1 = gcp.kms.CryptoKeyIAMMember(\"crypto_key_member_1\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@dataproc-accounts.iam.gserviceaccount.com\")\nms = gcp.dataproc.MetastoreService(\"ms\",\n service_id=\"dataproc-batch\",\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\": \"3.1.2\",\n })\nbasic = gcp.dataproc.Cluster(\"basic\",\n name=\"dataproc-batch\",\n region=\"us-central1\",\n cluster_config={\n \"software_config\": {\n \"override_properties\": {\n \"dataproc:dataproc.allow.zero.workers\": \"true\",\n \"spark:spark.history.fs.logDirectory\": bucket.name.apply(lambda name: f\"gs://{name}/*/spark-job-history\"),\n },\n },\n \"endpoint_config\": {\n \"enable_http_port_access\": True,\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 \"metastore_config\": {\n \"dataproc_metastore_service\": ms.name,\n },\n })\nexample_batch_spark = gcp.dataproc.Batch(\"example_batch_spark\",\n batch_id=\"dataproc-batch\",\n location=\"us-central1\",\n labels={\n \"batch_test\": \"terraform\",\n },\n runtime_config={\n \"properties\": {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n \"version\": \"2.2\",\n },\n environment_config={\n \"execution_config\": {\n \"ttl\": \"3600s\",\n \"network_tags\": [\"tag1\"],\n \"kms_key\": crypto_key.id,\n \"network_uri\": \"default\",\n \"service_account\": f\"{project.number}-compute@developer.gserviceaccount.com\",\n \"staging_bucket\": bucket.name,\n },\n \"peripherals_config\": {\n \"metastore_service\": ms.name,\n \"spark_history_server_config\": {\n \"dataproc_cluster\": basic.id,\n },\n },\n },\n spark_batch={\n \"main_class\": \"org.apache.spark.examples.SparkPi\",\n \"args\": [\"10\"],\n \"jar_file_uris\": [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_member1]))\n```\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 gcsAccount = Gcp.Storage.GetProjectServiceAccount.Invoke();\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n UniformBucketLevelAccess = true,\n Name = \"dataproc-bucket\",\n Location = \"US\",\n ForceDestroy = true,\n });\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 cryptoKeyMember1 = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key_member_1\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@dataproc-accounts.iam.gserviceaccount.com\",\n });\n\n var ms = new Gcp.Dataproc.MetastoreService(\"ms\", new()\n {\n ServiceId = \"dataproc-batch\",\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 = \"3.1.2\",\n },\n });\n\n var basic = new Gcp.Dataproc.Cluster(\"basic\", new()\n {\n Name = \"dataproc-batch\",\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 { \"spark:spark.history.fs.logDirectory\", bucket.Name.Apply(name =\u003e $\"gs://{name}/*/spark-job-history\") },\n },\n },\n EndpointConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigEndpointConfigArgs\n {\n EnableHttpPortAccess = true,\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 MetastoreConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMetastoreConfigArgs\n {\n DataprocMetastoreService = ms.Name,\n },\n },\n });\n\n var exampleBatchSpark = new Gcp.Dataproc.Batch(\"example_batch_spark\", new()\n {\n BatchId = \"dataproc-batch\",\n Location = \"us-central1\",\n Labels = \n {\n { \"batch_test\", \"terraform\" },\n },\n RuntimeConfig = new Gcp.Dataproc.Inputs.BatchRuntimeConfigArgs\n {\n Properties = \n {\n { \"spark.dynamicAllocation.enabled\", \"false\" },\n { \"spark.executor.instances\", \"2\" },\n },\n Version = \"2.2\",\n },\n EnvironmentConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigArgs\n {\n ExecutionConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigExecutionConfigArgs\n {\n Ttl = \"3600s\",\n NetworkTags = new[]\n {\n \"tag1\",\n },\n KmsKey = cryptoKey.Id,\n NetworkUri = \"default\",\n ServiceAccount = $\"{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n StagingBucket = bucket.Name,\n },\n PeripheralsConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigPeripheralsConfigArgs\n {\n MetastoreService = ms.Name,\n SparkHistoryServerConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigPeripheralsConfigSparkHistoryServerConfigArgs\n {\n DataprocCluster = basic.Id,\n },\n },\n },\n SparkBatch = new Gcp.Dataproc.Inputs.BatchSparkBatchArgs\n {\n MainClass = \"org.apache.spark.examples.SparkPi\",\n Args = new[]\n {\n \"10\",\n },\n JarFileUris = new[]\n {\n \"file:///usr/lib/spark/examples/jars/spark-examples.jar\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyMember1,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.GetProjectServiceAccount(ctx, \u0026storage.GetProjectServiceAccountArgs{}, 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\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t\tName: pulumi.String(\"dataproc-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\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\tcryptoKeyMember1, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key_member_1\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@dataproc-accounts.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tms, err := dataproc.NewMetastoreService(ctx, \"ms\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tServiceId: pulumi.String(\"dataproc-batch\"),\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(\"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\tbasic, err := dataproc.NewCluster(ctx, \"basic\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"dataproc-batch\"),\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\t\"spark:spark.history.fs.logDirectory\": bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/*/spark-job-history\", 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\tEndpointConfig: \u0026dataproc.ClusterClusterConfigEndpointConfigArgs{\n\t\t\t\t\tEnableHttpPortAccess: pulumi.Bool(true),\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\tMetastoreConfig: \u0026dataproc.ClusterClusterConfigMetastoreConfigArgs{\n\t\t\t\t\tDataprocMetastoreService: ms.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 = dataproc.NewBatch(ctx, \"example_batch_spark\", \u0026dataproc.BatchArgs{\n\t\t\tBatchId: pulumi.String(\"dataproc-batch\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"batch_test\": pulumi.String(\"terraform\"),\n\t\t\t},\n\t\t\tRuntimeConfig: \u0026dataproc.BatchRuntimeConfigArgs{\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.dynamicAllocation.enabled\": pulumi.String(\"false\"),\n\t\t\t\t\t\"spark.executor.instances\": pulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t\tVersion: pulumi.String(\"2.2\"),\n\t\t\t},\n\t\t\tEnvironmentConfig: \u0026dataproc.BatchEnvironmentConfigArgs{\n\t\t\t\tExecutionConfig: \u0026dataproc.BatchEnvironmentConfigExecutionConfigArgs{\n\t\t\t\t\tTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\tNetworkTags: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\t\t},\n\t\t\t\t\tKmsKey: cryptoKey.ID(),\n\t\t\t\t\tNetworkUri: pulumi.String(\"default\"),\n\t\t\t\t\tServiceAccount: pulumi.Sprintf(\"%v-compute@developer.gserviceaccount.com\", project.Number),\n\t\t\t\t\tStagingBucket: bucket.Name,\n\t\t\t\t},\n\t\t\t\tPeripheralsConfig: \u0026dataproc.BatchEnvironmentConfigPeripheralsConfigArgs{\n\t\t\t\t\tMetastoreService: ms.Name,\n\t\t\t\t\tSparkHistoryServerConfig: \u0026dataproc.BatchEnvironmentConfigPeripheralsConfigSparkHistoryServerConfigArgs{\n\t\t\t\t\t\tDataprocCluster: basic.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSparkBatch: \u0026dataproc.BatchSparkBatchArgs{\n\t\t\t\tMainClass: pulumi.String(\"org.apache.spark.examples.SparkPi\"),\n\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10\"),\n\t\t\t\t},\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},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyMember1,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\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.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetProjectServiceAccountArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\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.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.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.ClusterClusterConfigEndpointConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigDiskConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMetastoreConfigArgs;\nimport com.pulumi.gcp.dataproc.Batch;\nimport com.pulumi.gcp.dataproc.BatchArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchRuntimeConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigExecutionConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigPeripheralsConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigPeripheralsConfigSparkHistoryServerConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchSparkBatchArgs;\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 final var gcsAccount = StorageFunctions.getProjectServiceAccount();\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .uniformBucketLevelAccess(true)\n .name(\"dataproc-bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .build());\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 cryptoKeyMember1 = new CryptoKeyIAMMember(\"cryptoKeyMember1\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@dataproc-accounts.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var ms = new MetastoreService(\"ms\", MetastoreServiceArgs.builder()\n .serviceId(\"dataproc-batch\")\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(\"3.1.2\")\n .build())\n .build());\n\n var basic = new Cluster(\"basic\", ClusterArgs.builder()\n .name(\"dataproc-batch\")\n .region(\"us-central1\")\n .clusterConfig(ClusterClusterConfigArgs.builder()\n .softwareConfig(ClusterClusterConfigSoftwareConfigArgs.builder()\n .overrideProperties(Map.ofEntries(\n Map.entry(\"dataproc:dataproc.allow.zero.workers\", \"true\"),\n Map.entry(\"spark:spark.history.fs.logDirectory\", bucket.name().applyValue(name -\u003e String.format(\"gs://%s/*/spark-job-history\", name)))\n ))\n .build())\n .endpointConfig(ClusterClusterConfigEndpointConfigArgs.builder()\n .enableHttpPortAccess(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 .metastoreConfig(ClusterClusterConfigMetastoreConfigArgs.builder()\n .dataprocMetastoreService(ms.name())\n .build())\n .build())\n .build());\n\n var exampleBatchSpark = new Batch(\"exampleBatchSpark\", BatchArgs.builder()\n .batchId(\"dataproc-batch\")\n .location(\"us-central1\")\n .labels(Map.of(\"batch_test\", \"terraform\"))\n .runtimeConfig(BatchRuntimeConfigArgs.builder()\n .properties(Map.ofEntries(\n Map.entry(\"spark.dynamicAllocation.enabled\", \"false\"),\n Map.entry(\"spark.executor.instances\", \"2\")\n ))\n .version(\"2.2\")\n .build())\n .environmentConfig(BatchEnvironmentConfigArgs.builder()\n .executionConfig(BatchEnvironmentConfigExecutionConfigArgs.builder()\n .ttl(\"3600s\")\n .networkTags(\"tag1\")\n .kmsKey(cryptoKey.id())\n .networkUri(\"default\")\n .serviceAccount(String.format(\"%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .stagingBucket(bucket.name())\n .build())\n .peripheralsConfig(BatchEnvironmentConfigPeripheralsConfigArgs.builder()\n .metastoreService(ms.name())\n .sparkHistoryServerConfig(BatchEnvironmentConfigPeripheralsConfigSparkHistoryServerConfigArgs.builder()\n .dataprocCluster(basic.id())\n .build())\n .build())\n .build())\n .sparkBatch(BatchSparkBatchArgs.builder()\n .mainClass(\"org.apache.spark.examples.SparkPi\")\n .args(\"10\")\n .jarFileUris(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyMember1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleBatchSpark:\n type: gcp:dataproc:Batch\n name: example_batch_spark\n properties:\n batchId: dataproc-batch\n location: us-central1\n labels:\n batch_test: terraform\n runtimeConfig:\n properties:\n spark.dynamicAllocation.enabled: 'false'\n spark.executor.instances: '2'\n version: '2.2'\n environmentConfig:\n executionConfig:\n ttl: 3600s\n networkTags:\n - tag1\n kmsKey: ${cryptoKey.id}\n networkUri: default\n serviceAccount: ${project.number}-compute@developer.gserviceaccount.com\n stagingBucket: ${bucket.name}\n peripheralsConfig:\n metastoreService: ${ms.name}\n sparkHistoryServerConfig:\n dataprocCluster: ${basic.id}\n sparkBatch:\n mainClass: org.apache.spark.examples.SparkPi\n args:\n - '10'\n jarFileUris:\n - file:///usr/lib/spark/examples/jars/spark-examples.jar\n options:\n dependsOn:\n - ${cryptoKeyMember1}\n bucket:\n type: gcp:storage:Bucket\n properties:\n uniformBucketLevelAccess: true\n name: dataproc-bucket\n location: US\n forceDestroy: true\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 cryptoKeyMember1:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key_member_1\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@dataproc-accounts.iam.gserviceaccount.com\n basic:\n type: gcp:dataproc:Cluster\n properties:\n name: dataproc-batch\n region: us-central1\n clusterConfig:\n softwareConfig:\n overrideProperties:\n dataproc:dataproc.allow.zero.workers: 'true'\n spark:spark.history.fs.logDirectory: gs://${bucket.name}/*/spark-job-history\n endpointConfig:\n enableHttpPortAccess: true\n masterConfig:\n numInstances: 1\n machineType: e2-standard-2\n diskConfig:\n bootDiskSizeGb: 35\n metastoreConfig:\n dataprocMetastoreService: ${ms.name}\n ms:\n type: gcp:dataproc:MetastoreService\n properties:\n serviceId: dataproc-batch\n location: us-central1\n port: 9080\n tier: DEVELOPER\n maintenanceWindow:\n hourOfDay: 2\n dayOfWeek: SUNDAY\n hiveMetastoreConfig:\n version: 3.1.2\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n gcsAccount:\n fn::invoke:\n function: gcp:storage:getProjectServiceAccount\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Batch Sparksql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst exampleBatchSparsql = new gcp.dataproc.Batch(\"example_batch_sparsql\", {\n batchId: \"tf-test-batch_88722\",\n location: \"us-central1\",\n runtimeConfig: {\n properties: {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n },\n environmentConfig: {\n executionConfig: {\n subnetworkUri: \"default\",\n },\n },\n sparkSqlBatch: {\n queryFileUri: \"gs://dataproc-examples/spark-sql/natality/cigarette_correlations.sql\",\n jarFileUris: [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n queryVariables: {\n name: \"value\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_batch_sparsql = gcp.dataproc.Batch(\"example_batch_sparsql\",\n batch_id=\"tf-test-batch_88722\",\n location=\"us-central1\",\n runtime_config={\n \"properties\": {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n },\n environment_config={\n \"execution_config\": {\n \"subnetwork_uri\": \"default\",\n },\n },\n spark_sql_batch={\n \"query_file_uri\": \"gs://dataproc-examples/spark-sql/natality/cigarette_correlations.sql\",\n \"jar_file_uris\": [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n \"query_variables\": {\n \"name\": \"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 exampleBatchSparsql = new Gcp.Dataproc.Batch(\"example_batch_sparsql\", new()\n {\n BatchId = \"tf-test-batch_88722\",\n Location = \"us-central1\",\n RuntimeConfig = new Gcp.Dataproc.Inputs.BatchRuntimeConfigArgs\n {\n Properties = \n {\n { \"spark.dynamicAllocation.enabled\", \"false\" },\n { \"spark.executor.instances\", \"2\" },\n },\n },\n EnvironmentConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigArgs\n {\n ExecutionConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigExecutionConfigArgs\n {\n SubnetworkUri = \"default\",\n },\n },\n SparkSqlBatch = new Gcp.Dataproc.Inputs.BatchSparkSqlBatchArgs\n {\n QueryFileUri = \"gs://dataproc-examples/spark-sql/natality/cigarette_correlations.sql\",\n JarFileUris = new[]\n {\n \"file:///usr/lib/spark/examples/jars/spark-examples.jar\",\n },\n QueryVariables = \n {\n { \"name\", \"value\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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.NewBatch(ctx, \"example_batch_sparsql\", \u0026dataproc.BatchArgs{\n\t\t\tBatchId: pulumi.String(\"tf-test-batch_88722\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRuntimeConfig: \u0026dataproc.BatchRuntimeConfigArgs{\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.dynamicAllocation.enabled\": pulumi.String(\"false\"),\n\t\t\t\t\t\"spark.executor.instances\": pulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvironmentConfig: \u0026dataproc.BatchEnvironmentConfigArgs{\n\t\t\t\tExecutionConfig: \u0026dataproc.BatchEnvironmentConfigExecutionConfigArgs{\n\t\t\t\t\tSubnetworkUri: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSparkSqlBatch: \u0026dataproc.BatchSparkSqlBatchArgs{\n\t\t\t\tQueryFileUri: pulumi.String(\"gs://dataproc-examples/spark-sql/natality/cigarette_correlations.sql\"),\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\tQueryVariables: pulumi.StringMap{\n\t\t\t\t\t\"name\": 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.dataproc.Batch;\nimport com.pulumi.gcp.dataproc.BatchArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchRuntimeConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigExecutionConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchSparkSqlBatchArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleBatchSparsql = new Batch(\"exampleBatchSparsql\", BatchArgs.builder()\n .batchId(\"tf-test-batch_88722\")\n .location(\"us-central1\")\n .runtimeConfig(BatchRuntimeConfigArgs.builder()\n .properties(Map.ofEntries(\n Map.entry(\"spark.dynamicAllocation.enabled\", \"false\"),\n Map.entry(\"spark.executor.instances\", \"2\")\n ))\n .build())\n .environmentConfig(BatchEnvironmentConfigArgs.builder()\n .executionConfig(BatchEnvironmentConfigExecutionConfigArgs.builder()\n .subnetworkUri(\"default\")\n .build())\n .build())\n .sparkSqlBatch(BatchSparkSqlBatchArgs.builder()\n .queryFileUri(\"gs://dataproc-examples/spark-sql/natality/cigarette_correlations.sql\")\n .jarFileUris(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\")\n .queryVariables(Map.of(\"name\", \"value\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleBatchSparsql:\n type: gcp:dataproc:Batch\n name: example_batch_sparsql\n properties:\n batchId: tf-test-batch_88722\n location: us-central1\n runtimeConfig:\n properties:\n spark.dynamicAllocation.enabled: 'false'\n spark.executor.instances: '2'\n environmentConfig:\n executionConfig:\n subnetworkUri: default\n sparkSqlBatch:\n queryFileUri: gs://dataproc-examples/spark-sql/natality/cigarette_correlations.sql\n jarFileUris:\n - file:///usr/lib/spark/examples/jars/spark-examples.jar\n queryVariables:\n name: value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Batch Pyspark\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst exampleBatchPyspark = new gcp.dataproc.Batch(\"example_batch_pyspark\", {\n batchId: \"tf-test-batch_39249\",\n location: \"us-central1\",\n runtimeConfig: {\n properties: {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n },\n environmentConfig: {\n executionConfig: {\n subnetworkUri: \"default\",\n },\n },\n pysparkBatch: {\n mainPythonFileUri: \"https://storage.googleapis.com/terraform-batches/test_util.py\",\n args: [\"10\"],\n jarFileUris: [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n pythonFileUris: [\"gs://dataproc-examples/pyspark/hello-world/hello-world.py\"],\n archiveUris: [\n \"https://storage.googleapis.com/terraform-batches/animals.txt.tar.gz#unpacked\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt.jar\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt\",\n ],\n fileUris: [\"https://storage.googleapis.com/terraform-batches/people.txt\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_batch_pyspark = gcp.dataproc.Batch(\"example_batch_pyspark\",\n batch_id=\"tf-test-batch_39249\",\n location=\"us-central1\",\n runtime_config={\n \"properties\": {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n },\n environment_config={\n \"execution_config\": {\n \"subnetwork_uri\": \"default\",\n },\n },\n pyspark_batch={\n \"main_python_file_uri\": \"https://storage.googleapis.com/terraform-batches/test_util.py\",\n \"args\": [\"10\"],\n \"jar_file_uris\": [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n \"python_file_uris\": [\"gs://dataproc-examples/pyspark/hello-world/hello-world.py\"],\n \"archive_uris\": [\n \"https://storage.googleapis.com/terraform-batches/animals.txt.tar.gz#unpacked\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt.jar\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt\",\n ],\n \"file_uris\": [\"https://storage.googleapis.com/terraform-batches/people.txt\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleBatchPyspark = new Gcp.Dataproc.Batch(\"example_batch_pyspark\", new()\n {\n BatchId = \"tf-test-batch_39249\",\n Location = \"us-central1\",\n RuntimeConfig = new Gcp.Dataproc.Inputs.BatchRuntimeConfigArgs\n {\n Properties = \n {\n { \"spark.dynamicAllocation.enabled\", \"false\" },\n { \"spark.executor.instances\", \"2\" },\n },\n },\n EnvironmentConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigArgs\n {\n ExecutionConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigExecutionConfigArgs\n {\n SubnetworkUri = \"default\",\n },\n },\n PysparkBatch = new Gcp.Dataproc.Inputs.BatchPysparkBatchArgs\n {\n MainPythonFileUri = \"https://storage.googleapis.com/terraform-batches/test_util.py\",\n Args = new[]\n {\n \"10\",\n },\n JarFileUris = new[]\n {\n \"file:///usr/lib/spark/examples/jars/spark-examples.jar\",\n },\n PythonFileUris = new[]\n {\n \"gs://dataproc-examples/pyspark/hello-world/hello-world.py\",\n },\n ArchiveUris = new[]\n {\n \"https://storage.googleapis.com/terraform-batches/animals.txt.tar.gz#unpacked\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt.jar\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt\",\n },\n FileUris = new[]\n {\n \"https://storage.googleapis.com/terraform-batches/people.txt\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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.NewBatch(ctx, \"example_batch_pyspark\", \u0026dataproc.BatchArgs{\n\t\t\tBatchId: pulumi.String(\"tf-test-batch_39249\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRuntimeConfig: \u0026dataproc.BatchRuntimeConfigArgs{\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.dynamicAllocation.enabled\": pulumi.String(\"false\"),\n\t\t\t\t\t\"spark.executor.instances\": pulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvironmentConfig: \u0026dataproc.BatchEnvironmentConfigArgs{\n\t\t\t\tExecutionConfig: \u0026dataproc.BatchEnvironmentConfigExecutionConfigArgs{\n\t\t\t\t\tSubnetworkUri: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPysparkBatch: \u0026dataproc.BatchPysparkBatchArgs{\n\t\t\t\tMainPythonFileUri: pulumi.String(\"https://storage.googleapis.com/terraform-batches/test_util.py\"),\n\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10\"),\n\t\t\t\t},\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\tPythonFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://dataproc-examples/pyspark/hello-world/hello-world.py\"),\n\t\t\t\t},\n\t\t\t\tArchiveUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://storage.googleapis.com/terraform-batches/animals.txt.tar.gz#unpacked\"),\n\t\t\t\t\tpulumi.String(\"https://storage.googleapis.com/terraform-batches/animals.txt.jar\"),\n\t\t\t\t\tpulumi.String(\"https://storage.googleapis.com/terraform-batches/animals.txt\"),\n\t\t\t\t},\n\t\t\t\tFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://storage.googleapis.com/terraform-batches/people.txt\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.Batch;\nimport com.pulumi.gcp.dataproc.BatchArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchRuntimeConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigExecutionConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchPysparkBatchArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleBatchPyspark = new Batch(\"exampleBatchPyspark\", BatchArgs.builder()\n .batchId(\"tf-test-batch_39249\")\n .location(\"us-central1\")\n .runtimeConfig(BatchRuntimeConfigArgs.builder()\n .properties(Map.ofEntries(\n Map.entry(\"spark.dynamicAllocation.enabled\", \"false\"),\n Map.entry(\"spark.executor.instances\", \"2\")\n ))\n .build())\n .environmentConfig(BatchEnvironmentConfigArgs.builder()\n .executionConfig(BatchEnvironmentConfigExecutionConfigArgs.builder()\n .subnetworkUri(\"default\")\n .build())\n .build())\n .pysparkBatch(BatchPysparkBatchArgs.builder()\n .mainPythonFileUri(\"https://storage.googleapis.com/terraform-batches/test_util.py\")\n .args(\"10\")\n .jarFileUris(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\")\n .pythonFileUris(\"gs://dataproc-examples/pyspark/hello-world/hello-world.py\")\n .archiveUris( \n \"https://storage.googleapis.com/terraform-batches/animals.txt.tar.gz#unpacked\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt.jar\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt\")\n .fileUris(\"https://storage.googleapis.com/terraform-batches/people.txt\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleBatchPyspark:\n type: gcp:dataproc:Batch\n name: example_batch_pyspark\n properties:\n batchId: tf-test-batch_39249\n location: us-central1\n runtimeConfig:\n properties:\n spark.dynamicAllocation.enabled: 'false'\n spark.executor.instances: '2'\n environmentConfig:\n executionConfig:\n subnetworkUri: default\n pysparkBatch:\n mainPythonFileUri: https://storage.googleapis.com/terraform-batches/test_util.py\n args:\n - '10'\n jarFileUris:\n - file:///usr/lib/spark/examples/jars/spark-examples.jar\n pythonFileUris:\n - gs://dataproc-examples/pyspark/hello-world/hello-world.py\n archiveUris:\n - https://storage.googleapis.com/terraform-batches/animals.txt.tar.gz#unpacked\n - https://storage.googleapis.com/terraform-batches/animals.txt.jar\n - https://storage.googleapis.com/terraform-batches/animals.txt\n fileUris:\n - https://storage.googleapis.com/terraform-batches/people.txt\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Batch Sparkr\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst exampleBatchSparkr = new gcp.dataproc.Batch(\"example_batch_sparkr\", {\n batchId: \"tf-test-batch_74391\",\n location: \"us-central1\",\n labels: {\n batch_test: \"terraform\",\n },\n runtimeConfig: {\n properties: {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n },\n environmentConfig: {\n executionConfig: {\n subnetworkUri: \"default\",\n ttl: \"3600s\",\n networkTags: [\"tag1\"],\n },\n },\n sparkRBatch: {\n mainRFileUri: \"https://storage.googleapis.com/terraform-batches/spark-r-flights.r\",\n args: [\"https://storage.googleapis.com/terraform-batches/flights.csv\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_batch_sparkr = gcp.dataproc.Batch(\"example_batch_sparkr\",\n batch_id=\"tf-test-batch_74391\",\n location=\"us-central1\",\n labels={\n \"batch_test\": \"terraform\",\n },\n runtime_config={\n \"properties\": {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n },\n environment_config={\n \"execution_config\": {\n \"subnetwork_uri\": \"default\",\n \"ttl\": \"3600s\",\n \"network_tags\": [\"tag1\"],\n },\n },\n spark_r_batch={\n \"main_r_file_uri\": \"https://storage.googleapis.com/terraform-batches/spark-r-flights.r\",\n \"args\": [\"https://storage.googleapis.com/terraform-batches/flights.csv\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleBatchSparkr = new Gcp.Dataproc.Batch(\"example_batch_sparkr\", new()\n {\n BatchId = \"tf-test-batch_74391\",\n Location = \"us-central1\",\n Labels = \n {\n { \"batch_test\", \"terraform\" },\n },\n RuntimeConfig = new Gcp.Dataproc.Inputs.BatchRuntimeConfigArgs\n {\n Properties = \n {\n { \"spark.dynamicAllocation.enabled\", \"false\" },\n { \"spark.executor.instances\", \"2\" },\n },\n },\n EnvironmentConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigArgs\n {\n ExecutionConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigExecutionConfigArgs\n {\n SubnetworkUri = \"default\",\n Ttl = \"3600s\",\n NetworkTags = new[]\n {\n \"tag1\",\n },\n },\n },\n SparkRBatch = new Gcp.Dataproc.Inputs.BatchSparkRBatchArgs\n {\n MainRFileUri = \"https://storage.googleapis.com/terraform-batches/spark-r-flights.r\",\n Args = new[]\n {\n \"https://storage.googleapis.com/terraform-batches/flights.csv\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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.NewBatch(ctx, \"example_batch_sparkr\", \u0026dataproc.BatchArgs{\n\t\t\tBatchId: pulumi.String(\"tf-test-batch_74391\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"batch_test\": pulumi.String(\"terraform\"),\n\t\t\t},\n\t\t\tRuntimeConfig: \u0026dataproc.BatchRuntimeConfigArgs{\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.dynamicAllocation.enabled\": pulumi.String(\"false\"),\n\t\t\t\t\t\"spark.executor.instances\": pulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvironmentConfig: \u0026dataproc.BatchEnvironmentConfigArgs{\n\t\t\t\tExecutionConfig: \u0026dataproc.BatchEnvironmentConfigExecutionConfigArgs{\n\t\t\t\t\tSubnetworkUri: pulumi.String(\"default\"),\n\t\t\t\t\tTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\tNetworkTags: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSparkRBatch: \u0026dataproc.BatchSparkRBatchArgs{\n\t\t\t\tMainRFileUri: pulumi.String(\"https://storage.googleapis.com/terraform-batches/spark-r-flights.r\"),\n\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://storage.googleapis.com/terraform-batches/flights.csv\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.Batch;\nimport com.pulumi.gcp.dataproc.BatchArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchRuntimeConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigExecutionConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchSparkRBatchArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleBatchSparkr = new Batch(\"exampleBatchSparkr\", BatchArgs.builder()\n .batchId(\"tf-test-batch_74391\")\n .location(\"us-central1\")\n .labels(Map.of(\"batch_test\", \"terraform\"))\n .runtimeConfig(BatchRuntimeConfigArgs.builder()\n .properties(Map.ofEntries(\n Map.entry(\"spark.dynamicAllocation.enabled\", \"false\"),\n Map.entry(\"spark.executor.instances\", \"2\")\n ))\n .build())\n .environmentConfig(BatchEnvironmentConfigArgs.builder()\n .executionConfig(BatchEnvironmentConfigExecutionConfigArgs.builder()\n .subnetworkUri(\"default\")\n .ttl(\"3600s\")\n .networkTags(\"tag1\")\n .build())\n .build())\n .sparkRBatch(BatchSparkRBatchArgs.builder()\n .mainRFileUri(\"https://storage.googleapis.com/terraform-batches/spark-r-flights.r\")\n .args(\"https://storage.googleapis.com/terraform-batches/flights.csv\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleBatchSparkr:\n type: gcp:dataproc:Batch\n name: example_batch_sparkr\n properties:\n batchId: tf-test-batch_74391\n location: us-central1\n labels:\n batch_test: terraform\n runtimeConfig:\n properties:\n spark.dynamicAllocation.enabled: 'false'\n spark.executor.instances: '2'\n environmentConfig:\n executionConfig:\n subnetworkUri: default\n ttl: 3600s\n networkTags:\n - tag1\n sparkRBatch:\n mainRFileUri: https://storage.googleapis.com/terraform-batches/spark-r-flights.r\n args:\n - https://storage.googleapis.com/terraform-batches/flights.csv\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Batch Autotuning\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst exampleBatchAutotuning = new gcp.dataproc.Batch(\"example_batch_autotuning\", {\n batchId: \"tf-test-batch_16511\",\n location: \"us-central1\",\n labels: {\n batch_test: \"terraform\",\n },\n runtimeConfig: {\n version: \"2.2\",\n properties: {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n cohort: \"tf-dataproc-batch-example\",\n autotuningConfig: {\n scenarios: [\n \"SCALING\",\n \"MEMORY\",\n ],\n },\n },\n environmentConfig: {\n executionConfig: {\n subnetworkUri: \"default\",\n ttl: \"3600s\",\n },\n },\n sparkBatch: {\n mainClass: \"org.apache.spark.examples.SparkPi\",\n args: [\"10\"],\n jarFileUris: [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_batch_autotuning = gcp.dataproc.Batch(\"example_batch_autotuning\",\n batch_id=\"tf-test-batch_16511\",\n location=\"us-central1\",\n labels={\n \"batch_test\": \"terraform\",\n },\n runtime_config={\n \"version\": \"2.2\",\n \"properties\": {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n \"cohort\": \"tf-dataproc-batch-example\",\n \"autotuning_config\": {\n \"scenarios\": [\n \"SCALING\",\n \"MEMORY\",\n ],\n },\n },\n environment_config={\n \"execution_config\": {\n \"subnetwork_uri\": \"default\",\n \"ttl\": \"3600s\",\n },\n },\n spark_batch={\n \"main_class\": \"org.apache.spark.examples.SparkPi\",\n \"args\": [\"10\"],\n \"jar_file_uris\": [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleBatchAutotuning = new Gcp.Dataproc.Batch(\"example_batch_autotuning\", new()\n {\n BatchId = \"tf-test-batch_16511\",\n Location = \"us-central1\",\n Labels = \n {\n { \"batch_test\", \"terraform\" },\n },\n RuntimeConfig = new Gcp.Dataproc.Inputs.BatchRuntimeConfigArgs\n {\n Version = \"2.2\",\n Properties = \n {\n { \"spark.dynamicAllocation.enabled\", \"false\" },\n { \"spark.executor.instances\", \"2\" },\n },\n Cohort = \"tf-dataproc-batch-example\",\n AutotuningConfig = new Gcp.Dataproc.Inputs.BatchRuntimeConfigAutotuningConfigArgs\n {\n Scenarios = new[]\n {\n \"SCALING\",\n \"MEMORY\",\n },\n },\n },\n EnvironmentConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigArgs\n {\n ExecutionConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigExecutionConfigArgs\n {\n SubnetworkUri = \"default\",\n Ttl = \"3600s\",\n },\n },\n SparkBatch = new Gcp.Dataproc.Inputs.BatchSparkBatchArgs\n {\n MainClass = \"org.apache.spark.examples.SparkPi\",\n Args = new[]\n {\n \"10\",\n },\n JarFileUris = new[]\n {\n \"file:///usr/lib/spark/examples/jars/spark-examples.jar\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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.NewBatch(ctx, \"example_batch_autotuning\", \u0026dataproc.BatchArgs{\n\t\t\tBatchId: pulumi.String(\"tf-test-batch_16511\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"batch_test\": pulumi.String(\"terraform\"),\n\t\t\t},\n\t\t\tRuntimeConfig: \u0026dataproc.BatchRuntimeConfigArgs{\n\t\t\t\tVersion: pulumi.String(\"2.2\"),\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.dynamicAllocation.enabled\": pulumi.String(\"false\"),\n\t\t\t\t\t\"spark.executor.instances\": pulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t\tCohort: pulumi.String(\"tf-dataproc-batch-example\"),\n\t\t\t\tAutotuningConfig: \u0026dataproc.BatchRuntimeConfigAutotuningConfigArgs{\n\t\t\t\t\tScenarios: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"SCALING\"),\n\t\t\t\t\t\tpulumi.String(\"MEMORY\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvironmentConfig: \u0026dataproc.BatchEnvironmentConfigArgs{\n\t\t\t\tExecutionConfig: \u0026dataproc.BatchEnvironmentConfigExecutionConfigArgs{\n\t\t\t\t\tSubnetworkUri: pulumi.String(\"default\"),\n\t\t\t\t\tTtl: pulumi.String(\"3600s\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSparkBatch: \u0026dataproc.BatchSparkBatchArgs{\n\t\t\t\tMainClass: pulumi.String(\"org.apache.spark.examples.SparkPi\"),\n\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10\"),\n\t\t\t\t},\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},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.Batch;\nimport com.pulumi.gcp.dataproc.BatchArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchRuntimeConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchRuntimeConfigAutotuningConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigExecutionConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchSparkBatchArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleBatchAutotuning = new Batch(\"exampleBatchAutotuning\", BatchArgs.builder()\n .batchId(\"tf-test-batch_16511\")\n .location(\"us-central1\")\n .labels(Map.of(\"batch_test\", \"terraform\"))\n .runtimeConfig(BatchRuntimeConfigArgs.builder()\n .version(\"2.2\")\n .properties(Map.ofEntries(\n Map.entry(\"spark.dynamicAllocation.enabled\", \"false\"),\n Map.entry(\"spark.executor.instances\", \"2\")\n ))\n .cohort(\"tf-dataproc-batch-example\")\n .autotuningConfig(BatchRuntimeConfigAutotuningConfigArgs.builder()\n .scenarios( \n \"SCALING\",\n \"MEMORY\")\n .build())\n .build())\n .environmentConfig(BatchEnvironmentConfigArgs.builder()\n .executionConfig(BatchEnvironmentConfigExecutionConfigArgs.builder()\n .subnetworkUri(\"default\")\n .ttl(\"3600s\")\n .build())\n .build())\n .sparkBatch(BatchSparkBatchArgs.builder()\n .mainClass(\"org.apache.spark.examples.SparkPi\")\n .args(\"10\")\n .jarFileUris(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleBatchAutotuning:\n type: gcp:dataproc:Batch\n name: example_batch_autotuning\n properties:\n batchId: tf-test-batch_16511\n location: us-central1\n labels:\n batch_test: terraform\n runtimeConfig:\n version: '2.2'\n properties:\n spark.dynamicAllocation.enabled: 'false'\n spark.executor.instances: '2'\n cohort: tf-dataproc-batch-example\n autotuningConfig:\n scenarios:\n - SCALING\n - MEMORY\n environmentConfig:\n executionConfig:\n subnetworkUri: default\n ttl: 3600s\n sparkBatch:\n mainClass: org.apache.spark.examples.SparkPi\n args:\n - '10'\n jarFileUris:\n - file:///usr/lib/spark/examples/jars/spark-examples.jar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBatch can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/batches/{{batch_id}}`\n\n* `{{project}}/{{location}}/{{batch_id}}`\n\n* `{{location}}/{{batch_id}}`\n\nWhen using the `pulumi import` command, Batch can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataproc/batch:Batch default projects/{{project}}/locations/{{location}}/batches/{{batch_id}}\n```\n\n```sh\n$ pulumi import gcp:dataproc/batch:Batch default {{project}}/{{location}}/{{batch_id}}\n```\n\n```sh\n$ pulumi import gcp:dataproc/batch:Batch default {{location}}/{{batch_id}}\n```\n\n",
+ "description": "Dataproc Serverless Batches lets you run Spark workloads without requiring you to\nprovision and manage your own Dataproc cluster.\n\n\nTo get more information about Batch, see:\n\n* [API documentation](https://cloud.google.com/dataproc-serverless/docs/reference/rest/v1/projects.locations.batches)\n* How-to Guides\n * [Dataproc Serverless Batches Intro](https://cloud.google.com/dataproc-serverless/docs/overview)\n\n## Example Usage\n\n### Dataproc Batch Spark\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst exampleBatchSpark = new gcp.dataproc.Batch(\"example_batch_spark\", {\n batchId: \"tf-test-batch_75125\",\n location: \"us-central1\",\n labels: {\n batch_test: \"terraform\",\n },\n runtimeConfig: {\n properties: {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n },\n environmentConfig: {\n executionConfig: {\n subnetworkUri: \"default\",\n ttl: \"3600s\",\n networkTags: [\"tag1\"],\n },\n },\n sparkBatch: {\n mainClass: \"org.apache.spark.examples.SparkPi\",\n args: [\"10\"],\n jarFileUris: [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_batch_spark = gcp.dataproc.Batch(\"example_batch_spark\",\n batch_id=\"tf-test-batch_75125\",\n location=\"us-central1\",\n labels={\n \"batch_test\": \"terraform\",\n },\n runtime_config={\n \"properties\": {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n },\n environment_config={\n \"execution_config\": {\n \"subnetwork_uri\": \"default\",\n \"ttl\": \"3600s\",\n \"network_tags\": [\"tag1\"],\n },\n },\n spark_batch={\n \"main_class\": \"org.apache.spark.examples.SparkPi\",\n \"args\": [\"10\"],\n \"jar_file_uris\": [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleBatchSpark = new Gcp.Dataproc.Batch(\"example_batch_spark\", new()\n {\n BatchId = \"tf-test-batch_75125\",\n Location = \"us-central1\",\n Labels = \n {\n { \"batch_test\", \"terraform\" },\n },\n RuntimeConfig = new Gcp.Dataproc.Inputs.BatchRuntimeConfigArgs\n {\n Properties = \n {\n { \"spark.dynamicAllocation.enabled\", \"false\" },\n { \"spark.executor.instances\", \"2\" },\n },\n },\n EnvironmentConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigArgs\n {\n ExecutionConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigExecutionConfigArgs\n {\n SubnetworkUri = \"default\",\n Ttl = \"3600s\",\n NetworkTags = new[]\n {\n \"tag1\",\n },\n },\n },\n SparkBatch = new Gcp.Dataproc.Inputs.BatchSparkBatchArgs\n {\n MainClass = \"org.apache.spark.examples.SparkPi\",\n Args = new[]\n {\n \"10\",\n },\n JarFileUris = new[]\n {\n \"file:///usr/lib/spark/examples/jars/spark-examples.jar\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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.NewBatch(ctx, \"example_batch_spark\", \u0026dataproc.BatchArgs{\n\t\t\tBatchId: pulumi.String(\"tf-test-batch_75125\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"batch_test\": pulumi.String(\"terraform\"),\n\t\t\t},\n\t\t\tRuntimeConfig: \u0026dataproc.BatchRuntimeConfigArgs{\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.dynamicAllocation.enabled\": pulumi.String(\"false\"),\n\t\t\t\t\t\"spark.executor.instances\": pulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvironmentConfig: \u0026dataproc.BatchEnvironmentConfigArgs{\n\t\t\t\tExecutionConfig: \u0026dataproc.BatchEnvironmentConfigExecutionConfigArgs{\n\t\t\t\t\tSubnetworkUri: pulumi.String(\"default\"),\n\t\t\t\t\tTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\tNetworkTags: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSparkBatch: \u0026dataproc.BatchSparkBatchArgs{\n\t\t\t\tMainClass: pulumi.String(\"org.apache.spark.examples.SparkPi\"),\n\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10\"),\n\t\t\t\t},\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},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.Batch;\nimport com.pulumi.gcp.dataproc.BatchArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchRuntimeConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigExecutionConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchSparkBatchArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleBatchSpark = new Batch(\"exampleBatchSpark\", BatchArgs.builder()\n .batchId(\"tf-test-batch_75125\")\n .location(\"us-central1\")\n .labels(Map.of(\"batch_test\", \"terraform\"))\n .runtimeConfig(BatchRuntimeConfigArgs.builder()\n .properties(Map.ofEntries(\n Map.entry(\"spark.dynamicAllocation.enabled\", \"false\"),\n Map.entry(\"spark.executor.instances\", \"2\")\n ))\n .build())\n .environmentConfig(BatchEnvironmentConfigArgs.builder()\n .executionConfig(BatchEnvironmentConfigExecutionConfigArgs.builder()\n .subnetworkUri(\"default\")\n .ttl(\"3600s\")\n .networkTags(\"tag1\")\n .build())\n .build())\n .sparkBatch(BatchSparkBatchArgs.builder()\n .mainClass(\"org.apache.spark.examples.SparkPi\")\n .args(\"10\")\n .jarFileUris(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleBatchSpark:\n type: gcp:dataproc:Batch\n name: example_batch_spark\n properties:\n batchId: tf-test-batch_75125\n location: us-central1\n labels:\n batch_test: terraform\n runtimeConfig:\n properties:\n spark.dynamicAllocation.enabled: 'false'\n spark.executor.instances: '2'\n environmentConfig:\n executionConfig:\n subnetworkUri: default\n ttl: 3600s\n networkTags:\n - tag1\n sparkBatch:\n mainClass: org.apache.spark.examples.SparkPi\n args:\n - '10'\n jarFileUris:\n - file:///usr/lib/spark/examples/jars/spark-examples.jar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Batch Spark 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 gcsAccount = gcp.storage.getProjectServiceAccount({});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n uniformBucketLevelAccess: true,\n name: \"dataproc-bucket\",\n location: \"US\",\n forceDestroy: true,\n});\nconst cryptoKeyMember1 = new gcp.kms.CryptoKeyIAMMember(\"crypto_key_member_1\", {\n cryptoKeyId: \"example-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@dataproc-accounts.iam.gserviceaccount.com`),\n});\nconst ms = new gcp.dataproc.MetastoreService(\"ms\", {\n serviceId: \"dataproc-batch\",\n location: \"us-central1\",\n port: 9080,\n tier: \"DEVELOPER\",\n maintenanceWindow: {\n hourOfDay: 2,\n dayOfWeek: \"SUNDAY\",\n },\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n },\n});\nconst basic = new gcp.dataproc.Cluster(\"basic\", {\n name: \"dataproc-batch\",\n region: \"us-central1\",\n clusterConfig: {\n softwareConfig: {\n overrideProperties: {\n \"dataproc:dataproc.allow.zero.workers\": \"true\",\n \"spark:spark.history.fs.logDirectory\": pulumi.interpolate`gs://${bucket.name}/*/spark-job-history`,\n },\n },\n endpointConfig: {\n enableHttpPortAccess: true,\n },\n masterConfig: {\n numInstances: 1,\n machineType: \"e2-standard-2\",\n diskConfig: {\n bootDiskSizeGb: 35,\n },\n },\n metastoreConfig: {\n dataprocMetastoreService: ms.name,\n },\n },\n});\nconst exampleBatchSpark = new gcp.dataproc.Batch(\"example_batch_spark\", {\n batchId: \"dataproc-batch\",\n location: \"us-central1\",\n labels: {\n batch_test: \"terraform\",\n },\n runtimeConfig: {\n properties: {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n version: \"2.2\",\n },\n environmentConfig: {\n executionConfig: {\n ttl: \"3600s\",\n networkTags: [\"tag1\"],\n kmsKey: \"example-key\",\n networkUri: \"default\",\n serviceAccount: project.then(project =\u003e `${project.number}-compute@developer.gserviceaccount.com`),\n stagingBucket: bucket.name,\n },\n peripheralsConfig: {\n metastoreService: ms.name,\n sparkHistoryServerConfig: {\n dataprocCluster: basic.id,\n },\n },\n },\n sparkBatch: {\n mainClass: \"org.apache.spark.examples.SparkPi\",\n args: [\"10\"],\n jarFileUris: [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n },\n}, {\n dependsOn: [cryptoKeyMember1],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ngcs_account = gcp.storage.get_project_service_account()\nbucket = gcp.storage.Bucket(\"bucket\",\n uniform_bucket_level_access=True,\n name=\"dataproc-bucket\",\n location=\"US\",\n force_destroy=True)\ncrypto_key_member1 = gcp.kms.CryptoKeyIAMMember(\"crypto_key_member_1\",\n crypto_key_id=\"example-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@dataproc-accounts.iam.gserviceaccount.com\")\nms = gcp.dataproc.MetastoreService(\"ms\",\n service_id=\"dataproc-batch\",\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\": \"3.1.2\",\n })\nbasic = gcp.dataproc.Cluster(\"basic\",\n name=\"dataproc-batch\",\n region=\"us-central1\",\n cluster_config={\n \"software_config\": {\n \"override_properties\": {\n \"dataproc:dataproc.allow.zero.workers\": \"true\",\n \"spark:spark.history.fs.logDirectory\": bucket.name.apply(lambda name: f\"gs://{name}/*/spark-job-history\"),\n },\n },\n \"endpoint_config\": {\n \"enable_http_port_access\": True,\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 \"metastore_config\": {\n \"dataproc_metastore_service\": ms.name,\n },\n })\nexample_batch_spark = gcp.dataproc.Batch(\"example_batch_spark\",\n batch_id=\"dataproc-batch\",\n location=\"us-central1\",\n labels={\n \"batch_test\": \"terraform\",\n },\n runtime_config={\n \"properties\": {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n \"version\": \"2.2\",\n },\n environment_config={\n \"execution_config\": {\n \"ttl\": \"3600s\",\n \"network_tags\": [\"tag1\"],\n \"kms_key\": \"example-key\",\n \"network_uri\": \"default\",\n \"service_account\": f\"{project.number}-compute@developer.gserviceaccount.com\",\n \"staging_bucket\": bucket.name,\n },\n \"peripherals_config\": {\n \"metastore_service\": ms.name,\n \"spark_history_server_config\": {\n \"dataproc_cluster\": basic.id,\n },\n },\n },\n spark_batch={\n \"main_class\": \"org.apache.spark.examples.SparkPi\",\n \"args\": [\"10\"],\n \"jar_file_uris\": [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_member1]))\n```\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 gcsAccount = Gcp.Storage.GetProjectServiceAccount.Invoke();\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n UniformBucketLevelAccess = true,\n Name = \"dataproc-bucket\",\n Location = \"US\",\n ForceDestroy = true,\n });\n\n var cryptoKeyMember1 = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key_member_1\", new()\n {\n CryptoKeyId = \"example-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@dataproc-accounts.iam.gserviceaccount.com\",\n });\n\n var ms = new Gcp.Dataproc.MetastoreService(\"ms\", new()\n {\n ServiceId = \"dataproc-batch\",\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 = \"3.1.2\",\n },\n });\n\n var basic = new Gcp.Dataproc.Cluster(\"basic\", new()\n {\n Name = \"dataproc-batch\",\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 { \"spark:spark.history.fs.logDirectory\", bucket.Name.Apply(name =\u003e $\"gs://{name}/*/spark-job-history\") },\n },\n },\n EndpointConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigEndpointConfigArgs\n {\n EnableHttpPortAccess = true,\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 MetastoreConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMetastoreConfigArgs\n {\n DataprocMetastoreService = ms.Name,\n },\n },\n });\n\n var exampleBatchSpark = new Gcp.Dataproc.Batch(\"example_batch_spark\", new()\n {\n BatchId = \"dataproc-batch\",\n Location = \"us-central1\",\n Labels = \n {\n { \"batch_test\", \"terraform\" },\n },\n RuntimeConfig = new Gcp.Dataproc.Inputs.BatchRuntimeConfigArgs\n {\n Properties = \n {\n { \"spark.dynamicAllocation.enabled\", \"false\" },\n { \"spark.executor.instances\", \"2\" },\n },\n Version = \"2.2\",\n },\n EnvironmentConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigArgs\n {\n ExecutionConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigExecutionConfigArgs\n {\n Ttl = \"3600s\",\n NetworkTags = new[]\n {\n \"tag1\",\n },\n KmsKey = \"example-key\",\n NetworkUri = \"default\",\n ServiceAccount = $\"{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n StagingBucket = bucket.Name,\n },\n PeripheralsConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigPeripheralsConfigArgs\n {\n MetastoreService = ms.Name,\n SparkHistoryServerConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigPeripheralsConfigSparkHistoryServerConfigArgs\n {\n DataprocCluster = basic.Id,\n },\n },\n },\n SparkBatch = new Gcp.Dataproc.Inputs.BatchSparkBatchArgs\n {\n MainClass = \"org.apache.spark.examples.SparkPi\",\n Args = new[]\n {\n \"10\",\n },\n JarFileUris = new[]\n {\n \"file:///usr/lib/spark/examples/jars/spark-examples.jar\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyMember1,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.GetProjectServiceAccount(ctx, \u0026storage.GetProjectServiceAccountArgs{}, 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\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t\tName: pulumi.String(\"dataproc-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\tcryptoKeyMember1, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key_member_1\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"example-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@dataproc-accounts.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tms, err := dataproc.NewMetastoreService(ctx, \"ms\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tServiceId: pulumi.String(\"dataproc-batch\"),\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(\"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\tbasic, err := dataproc.NewCluster(ctx, \"basic\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"dataproc-batch\"),\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\t\"spark:spark.history.fs.logDirectory\": bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/*/spark-job-history\", 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\tEndpointConfig: \u0026dataproc.ClusterClusterConfigEndpointConfigArgs{\n\t\t\t\t\tEnableHttpPortAccess: pulumi.Bool(true),\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\tMetastoreConfig: \u0026dataproc.ClusterClusterConfigMetastoreConfigArgs{\n\t\t\t\t\tDataprocMetastoreService: ms.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 = dataproc.NewBatch(ctx, \"example_batch_spark\", \u0026dataproc.BatchArgs{\n\t\t\tBatchId: pulumi.String(\"dataproc-batch\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"batch_test\": pulumi.String(\"terraform\"),\n\t\t\t},\n\t\t\tRuntimeConfig: \u0026dataproc.BatchRuntimeConfigArgs{\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.dynamicAllocation.enabled\": pulumi.String(\"false\"),\n\t\t\t\t\t\"spark.executor.instances\": pulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t\tVersion: pulumi.String(\"2.2\"),\n\t\t\t},\n\t\t\tEnvironmentConfig: \u0026dataproc.BatchEnvironmentConfigArgs{\n\t\t\t\tExecutionConfig: \u0026dataproc.BatchEnvironmentConfigExecutionConfigArgs{\n\t\t\t\t\tTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\tNetworkTags: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\t\t},\n\t\t\t\t\tKmsKey: pulumi.String(\"example-key\"),\n\t\t\t\t\tNetworkUri: pulumi.String(\"default\"),\n\t\t\t\t\tServiceAccount: pulumi.Sprintf(\"%v-compute@developer.gserviceaccount.com\", project.Number),\n\t\t\t\t\tStagingBucket: bucket.Name,\n\t\t\t\t},\n\t\t\t\tPeripheralsConfig: \u0026dataproc.BatchEnvironmentConfigPeripheralsConfigArgs{\n\t\t\t\t\tMetastoreService: ms.Name,\n\t\t\t\t\tSparkHistoryServerConfig: \u0026dataproc.BatchEnvironmentConfigPeripheralsConfigSparkHistoryServerConfigArgs{\n\t\t\t\t\t\tDataprocCluster: basic.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSparkBatch: \u0026dataproc.BatchSparkBatchArgs{\n\t\t\t\tMainClass: pulumi.String(\"org.apache.spark.examples.SparkPi\"),\n\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10\"),\n\t\t\t\t},\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},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyMember1,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\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.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetProjectServiceAccountArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\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.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.ClusterClusterConfigEndpointConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigDiskConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMetastoreConfigArgs;\nimport com.pulumi.gcp.dataproc.Batch;\nimport com.pulumi.gcp.dataproc.BatchArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchRuntimeConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigExecutionConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigPeripheralsConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigPeripheralsConfigSparkHistoryServerConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchSparkBatchArgs;\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 final var gcsAccount = StorageFunctions.getProjectServiceAccount();\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .uniformBucketLevelAccess(true)\n .name(\"dataproc-bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .build());\n\n var cryptoKeyMember1 = new CryptoKeyIAMMember(\"cryptoKeyMember1\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"example-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@dataproc-accounts.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var ms = new MetastoreService(\"ms\", MetastoreServiceArgs.builder()\n .serviceId(\"dataproc-batch\")\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(\"3.1.2\")\n .build())\n .build());\n\n var basic = new Cluster(\"basic\", ClusterArgs.builder()\n .name(\"dataproc-batch\")\n .region(\"us-central1\")\n .clusterConfig(ClusterClusterConfigArgs.builder()\n .softwareConfig(ClusterClusterConfigSoftwareConfigArgs.builder()\n .overrideProperties(Map.ofEntries(\n Map.entry(\"dataproc:dataproc.allow.zero.workers\", \"true\"),\n Map.entry(\"spark:spark.history.fs.logDirectory\", bucket.name().applyValue(name -\u003e String.format(\"gs://%s/*/spark-job-history\", name)))\n ))\n .build())\n .endpointConfig(ClusterClusterConfigEndpointConfigArgs.builder()\n .enableHttpPortAccess(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 .metastoreConfig(ClusterClusterConfigMetastoreConfigArgs.builder()\n .dataprocMetastoreService(ms.name())\n .build())\n .build())\n .build());\n\n var exampleBatchSpark = new Batch(\"exampleBatchSpark\", BatchArgs.builder()\n .batchId(\"dataproc-batch\")\n .location(\"us-central1\")\n .labels(Map.of(\"batch_test\", \"terraform\"))\n .runtimeConfig(BatchRuntimeConfigArgs.builder()\n .properties(Map.ofEntries(\n Map.entry(\"spark.dynamicAllocation.enabled\", \"false\"),\n Map.entry(\"spark.executor.instances\", \"2\")\n ))\n .version(\"2.2\")\n .build())\n .environmentConfig(BatchEnvironmentConfigArgs.builder()\n .executionConfig(BatchEnvironmentConfigExecutionConfigArgs.builder()\n .ttl(\"3600s\")\n .networkTags(\"tag1\")\n .kmsKey(\"example-key\")\n .networkUri(\"default\")\n .serviceAccount(String.format(\"%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .stagingBucket(bucket.name())\n .build())\n .peripheralsConfig(BatchEnvironmentConfigPeripheralsConfigArgs.builder()\n .metastoreService(ms.name())\n .sparkHistoryServerConfig(BatchEnvironmentConfigPeripheralsConfigSparkHistoryServerConfigArgs.builder()\n .dataprocCluster(basic.id())\n .build())\n .build())\n .build())\n .sparkBatch(BatchSparkBatchArgs.builder()\n .mainClass(\"org.apache.spark.examples.SparkPi\")\n .args(\"10\")\n .jarFileUris(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyMember1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleBatchSpark:\n type: gcp:dataproc:Batch\n name: example_batch_spark\n properties:\n batchId: dataproc-batch\n location: us-central1\n labels:\n batch_test: terraform\n runtimeConfig:\n properties:\n spark.dynamicAllocation.enabled: 'false'\n spark.executor.instances: '2'\n version: '2.2'\n environmentConfig:\n executionConfig:\n ttl: 3600s\n networkTags:\n - tag1\n kmsKey: example-key\n networkUri: default\n serviceAccount: ${project.number}-compute@developer.gserviceaccount.com\n stagingBucket: ${bucket.name}\n peripheralsConfig:\n metastoreService: ${ms.name}\n sparkHistoryServerConfig:\n dataprocCluster: ${basic.id}\n sparkBatch:\n mainClass: org.apache.spark.examples.SparkPi\n args:\n - '10'\n jarFileUris:\n - file:///usr/lib/spark/examples/jars/spark-examples.jar\n options:\n dependsOn:\n - ${cryptoKeyMember1}\n bucket:\n type: gcp:storage:Bucket\n properties:\n uniformBucketLevelAccess: true\n name: dataproc-bucket\n location: US\n forceDestroy: true\n cryptoKeyMember1:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key_member_1\n properties:\n cryptoKeyId: example-key\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@dataproc-accounts.iam.gserviceaccount.com\n basic:\n type: gcp:dataproc:Cluster\n properties:\n name: dataproc-batch\n region: us-central1\n clusterConfig:\n softwareConfig:\n overrideProperties:\n dataproc:dataproc.allow.zero.workers: 'true'\n spark:spark.history.fs.logDirectory: gs://${bucket.name}/*/spark-job-history\n endpointConfig:\n enableHttpPortAccess: true\n masterConfig:\n numInstances: 1\n machineType: e2-standard-2\n diskConfig:\n bootDiskSizeGb: 35\n metastoreConfig:\n dataprocMetastoreService: ${ms.name}\n ms:\n type: gcp:dataproc:MetastoreService\n properties:\n serviceId: dataproc-batch\n location: us-central1\n port: 9080\n tier: DEVELOPER\n maintenanceWindow:\n hourOfDay: 2\n dayOfWeek: SUNDAY\n hiveMetastoreConfig:\n version: 3.1.2\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n gcsAccount:\n fn::invoke:\n function: gcp:storage:getProjectServiceAccount\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Batch Sparksql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst exampleBatchSparsql = new gcp.dataproc.Batch(\"example_batch_sparsql\", {\n batchId: \"tf-test-batch_88722\",\n location: \"us-central1\",\n runtimeConfig: {\n properties: {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n },\n environmentConfig: {\n executionConfig: {\n subnetworkUri: \"default\",\n },\n },\n sparkSqlBatch: {\n queryFileUri: \"gs://dataproc-examples/spark-sql/natality/cigarette_correlations.sql\",\n jarFileUris: [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n queryVariables: {\n name: \"value\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_batch_sparsql = gcp.dataproc.Batch(\"example_batch_sparsql\",\n batch_id=\"tf-test-batch_88722\",\n location=\"us-central1\",\n runtime_config={\n \"properties\": {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n },\n environment_config={\n \"execution_config\": {\n \"subnetwork_uri\": \"default\",\n },\n },\n spark_sql_batch={\n \"query_file_uri\": \"gs://dataproc-examples/spark-sql/natality/cigarette_correlations.sql\",\n \"jar_file_uris\": [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n \"query_variables\": {\n \"name\": \"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 exampleBatchSparsql = new Gcp.Dataproc.Batch(\"example_batch_sparsql\", new()\n {\n BatchId = \"tf-test-batch_88722\",\n Location = \"us-central1\",\n RuntimeConfig = new Gcp.Dataproc.Inputs.BatchRuntimeConfigArgs\n {\n Properties = \n {\n { \"spark.dynamicAllocation.enabled\", \"false\" },\n { \"spark.executor.instances\", \"2\" },\n },\n },\n EnvironmentConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigArgs\n {\n ExecutionConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigExecutionConfigArgs\n {\n SubnetworkUri = \"default\",\n },\n },\n SparkSqlBatch = new Gcp.Dataproc.Inputs.BatchSparkSqlBatchArgs\n {\n QueryFileUri = \"gs://dataproc-examples/spark-sql/natality/cigarette_correlations.sql\",\n JarFileUris = new[]\n {\n \"file:///usr/lib/spark/examples/jars/spark-examples.jar\",\n },\n QueryVariables = \n {\n { \"name\", \"value\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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.NewBatch(ctx, \"example_batch_sparsql\", \u0026dataproc.BatchArgs{\n\t\t\tBatchId: pulumi.String(\"tf-test-batch_88722\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRuntimeConfig: \u0026dataproc.BatchRuntimeConfigArgs{\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.dynamicAllocation.enabled\": pulumi.String(\"false\"),\n\t\t\t\t\t\"spark.executor.instances\": pulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvironmentConfig: \u0026dataproc.BatchEnvironmentConfigArgs{\n\t\t\t\tExecutionConfig: \u0026dataproc.BatchEnvironmentConfigExecutionConfigArgs{\n\t\t\t\t\tSubnetworkUri: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSparkSqlBatch: \u0026dataproc.BatchSparkSqlBatchArgs{\n\t\t\t\tQueryFileUri: pulumi.String(\"gs://dataproc-examples/spark-sql/natality/cigarette_correlations.sql\"),\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\tQueryVariables: pulumi.StringMap{\n\t\t\t\t\t\"name\": 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.dataproc.Batch;\nimport com.pulumi.gcp.dataproc.BatchArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchRuntimeConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigExecutionConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchSparkSqlBatchArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleBatchSparsql = new Batch(\"exampleBatchSparsql\", BatchArgs.builder()\n .batchId(\"tf-test-batch_88722\")\n .location(\"us-central1\")\n .runtimeConfig(BatchRuntimeConfigArgs.builder()\n .properties(Map.ofEntries(\n Map.entry(\"spark.dynamicAllocation.enabled\", \"false\"),\n Map.entry(\"spark.executor.instances\", \"2\")\n ))\n .build())\n .environmentConfig(BatchEnvironmentConfigArgs.builder()\n .executionConfig(BatchEnvironmentConfigExecutionConfigArgs.builder()\n .subnetworkUri(\"default\")\n .build())\n .build())\n .sparkSqlBatch(BatchSparkSqlBatchArgs.builder()\n .queryFileUri(\"gs://dataproc-examples/spark-sql/natality/cigarette_correlations.sql\")\n .jarFileUris(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\")\n .queryVariables(Map.of(\"name\", \"value\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleBatchSparsql:\n type: gcp:dataproc:Batch\n name: example_batch_sparsql\n properties:\n batchId: tf-test-batch_88722\n location: us-central1\n runtimeConfig:\n properties:\n spark.dynamicAllocation.enabled: 'false'\n spark.executor.instances: '2'\n environmentConfig:\n executionConfig:\n subnetworkUri: default\n sparkSqlBatch:\n queryFileUri: gs://dataproc-examples/spark-sql/natality/cigarette_correlations.sql\n jarFileUris:\n - file:///usr/lib/spark/examples/jars/spark-examples.jar\n queryVariables:\n name: value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Batch Pyspark\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst exampleBatchPyspark = new gcp.dataproc.Batch(\"example_batch_pyspark\", {\n batchId: \"tf-test-batch_39249\",\n location: \"us-central1\",\n runtimeConfig: {\n properties: {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n },\n environmentConfig: {\n executionConfig: {\n subnetworkUri: \"default\",\n },\n },\n pysparkBatch: {\n mainPythonFileUri: \"https://storage.googleapis.com/terraform-batches/test_util.py\",\n args: [\"10\"],\n jarFileUris: [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n pythonFileUris: [\"gs://dataproc-examples/pyspark/hello-world/hello-world.py\"],\n archiveUris: [\n \"https://storage.googleapis.com/terraform-batches/animals.txt.tar.gz#unpacked\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt.jar\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt\",\n ],\n fileUris: [\"https://storage.googleapis.com/terraform-batches/people.txt\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_batch_pyspark = gcp.dataproc.Batch(\"example_batch_pyspark\",\n batch_id=\"tf-test-batch_39249\",\n location=\"us-central1\",\n runtime_config={\n \"properties\": {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n },\n environment_config={\n \"execution_config\": {\n \"subnetwork_uri\": \"default\",\n },\n },\n pyspark_batch={\n \"main_python_file_uri\": \"https://storage.googleapis.com/terraform-batches/test_util.py\",\n \"args\": [\"10\"],\n \"jar_file_uris\": [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n \"python_file_uris\": [\"gs://dataproc-examples/pyspark/hello-world/hello-world.py\"],\n \"archive_uris\": [\n \"https://storage.googleapis.com/terraform-batches/animals.txt.tar.gz#unpacked\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt.jar\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt\",\n ],\n \"file_uris\": [\"https://storage.googleapis.com/terraform-batches/people.txt\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleBatchPyspark = new Gcp.Dataproc.Batch(\"example_batch_pyspark\", new()\n {\n BatchId = \"tf-test-batch_39249\",\n Location = \"us-central1\",\n RuntimeConfig = new Gcp.Dataproc.Inputs.BatchRuntimeConfigArgs\n {\n Properties = \n {\n { \"spark.dynamicAllocation.enabled\", \"false\" },\n { \"spark.executor.instances\", \"2\" },\n },\n },\n EnvironmentConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigArgs\n {\n ExecutionConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigExecutionConfigArgs\n {\n SubnetworkUri = \"default\",\n },\n },\n PysparkBatch = new Gcp.Dataproc.Inputs.BatchPysparkBatchArgs\n {\n MainPythonFileUri = \"https://storage.googleapis.com/terraform-batches/test_util.py\",\n Args = new[]\n {\n \"10\",\n },\n JarFileUris = new[]\n {\n \"file:///usr/lib/spark/examples/jars/spark-examples.jar\",\n },\n PythonFileUris = new[]\n {\n \"gs://dataproc-examples/pyspark/hello-world/hello-world.py\",\n },\n ArchiveUris = new[]\n {\n \"https://storage.googleapis.com/terraform-batches/animals.txt.tar.gz#unpacked\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt.jar\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt\",\n },\n FileUris = new[]\n {\n \"https://storage.googleapis.com/terraform-batches/people.txt\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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.NewBatch(ctx, \"example_batch_pyspark\", \u0026dataproc.BatchArgs{\n\t\t\tBatchId: pulumi.String(\"tf-test-batch_39249\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRuntimeConfig: \u0026dataproc.BatchRuntimeConfigArgs{\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.dynamicAllocation.enabled\": pulumi.String(\"false\"),\n\t\t\t\t\t\"spark.executor.instances\": pulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvironmentConfig: \u0026dataproc.BatchEnvironmentConfigArgs{\n\t\t\t\tExecutionConfig: \u0026dataproc.BatchEnvironmentConfigExecutionConfigArgs{\n\t\t\t\t\tSubnetworkUri: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPysparkBatch: \u0026dataproc.BatchPysparkBatchArgs{\n\t\t\t\tMainPythonFileUri: pulumi.String(\"https://storage.googleapis.com/terraform-batches/test_util.py\"),\n\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10\"),\n\t\t\t\t},\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\tPythonFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://dataproc-examples/pyspark/hello-world/hello-world.py\"),\n\t\t\t\t},\n\t\t\t\tArchiveUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://storage.googleapis.com/terraform-batches/animals.txt.tar.gz#unpacked\"),\n\t\t\t\t\tpulumi.String(\"https://storage.googleapis.com/terraform-batches/animals.txt.jar\"),\n\t\t\t\t\tpulumi.String(\"https://storage.googleapis.com/terraform-batches/animals.txt\"),\n\t\t\t\t},\n\t\t\t\tFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://storage.googleapis.com/terraform-batches/people.txt\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.Batch;\nimport com.pulumi.gcp.dataproc.BatchArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchRuntimeConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigExecutionConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchPysparkBatchArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleBatchPyspark = new Batch(\"exampleBatchPyspark\", BatchArgs.builder()\n .batchId(\"tf-test-batch_39249\")\n .location(\"us-central1\")\n .runtimeConfig(BatchRuntimeConfigArgs.builder()\n .properties(Map.ofEntries(\n Map.entry(\"spark.dynamicAllocation.enabled\", \"false\"),\n Map.entry(\"spark.executor.instances\", \"2\")\n ))\n .build())\n .environmentConfig(BatchEnvironmentConfigArgs.builder()\n .executionConfig(BatchEnvironmentConfigExecutionConfigArgs.builder()\n .subnetworkUri(\"default\")\n .build())\n .build())\n .pysparkBatch(BatchPysparkBatchArgs.builder()\n .mainPythonFileUri(\"https://storage.googleapis.com/terraform-batches/test_util.py\")\n .args(\"10\")\n .jarFileUris(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\")\n .pythonFileUris(\"gs://dataproc-examples/pyspark/hello-world/hello-world.py\")\n .archiveUris( \n \"https://storage.googleapis.com/terraform-batches/animals.txt.tar.gz#unpacked\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt.jar\",\n \"https://storage.googleapis.com/terraform-batches/animals.txt\")\n .fileUris(\"https://storage.googleapis.com/terraform-batches/people.txt\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleBatchPyspark:\n type: gcp:dataproc:Batch\n name: example_batch_pyspark\n properties:\n batchId: tf-test-batch_39249\n location: us-central1\n runtimeConfig:\n properties:\n spark.dynamicAllocation.enabled: 'false'\n spark.executor.instances: '2'\n environmentConfig:\n executionConfig:\n subnetworkUri: default\n pysparkBatch:\n mainPythonFileUri: https://storage.googleapis.com/terraform-batches/test_util.py\n args:\n - '10'\n jarFileUris:\n - file:///usr/lib/spark/examples/jars/spark-examples.jar\n pythonFileUris:\n - gs://dataproc-examples/pyspark/hello-world/hello-world.py\n archiveUris:\n - https://storage.googleapis.com/terraform-batches/animals.txt.tar.gz#unpacked\n - https://storage.googleapis.com/terraform-batches/animals.txt.jar\n - https://storage.googleapis.com/terraform-batches/animals.txt\n fileUris:\n - https://storage.googleapis.com/terraform-batches/people.txt\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Batch Sparkr\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst exampleBatchSparkr = new gcp.dataproc.Batch(\"example_batch_sparkr\", {\n batchId: \"tf-test-batch_74391\",\n location: \"us-central1\",\n labels: {\n batch_test: \"terraform\",\n },\n runtimeConfig: {\n properties: {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n },\n environmentConfig: {\n executionConfig: {\n subnetworkUri: \"default\",\n ttl: \"3600s\",\n networkTags: [\"tag1\"],\n },\n },\n sparkRBatch: {\n mainRFileUri: \"https://storage.googleapis.com/terraform-batches/spark-r-flights.r\",\n args: [\"https://storage.googleapis.com/terraform-batches/flights.csv\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_batch_sparkr = gcp.dataproc.Batch(\"example_batch_sparkr\",\n batch_id=\"tf-test-batch_74391\",\n location=\"us-central1\",\n labels={\n \"batch_test\": \"terraform\",\n },\n runtime_config={\n \"properties\": {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n },\n environment_config={\n \"execution_config\": {\n \"subnetwork_uri\": \"default\",\n \"ttl\": \"3600s\",\n \"network_tags\": [\"tag1\"],\n },\n },\n spark_r_batch={\n \"main_r_file_uri\": \"https://storage.googleapis.com/terraform-batches/spark-r-flights.r\",\n \"args\": [\"https://storage.googleapis.com/terraform-batches/flights.csv\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleBatchSparkr = new Gcp.Dataproc.Batch(\"example_batch_sparkr\", new()\n {\n BatchId = \"tf-test-batch_74391\",\n Location = \"us-central1\",\n Labels = \n {\n { \"batch_test\", \"terraform\" },\n },\n RuntimeConfig = new Gcp.Dataproc.Inputs.BatchRuntimeConfigArgs\n {\n Properties = \n {\n { \"spark.dynamicAllocation.enabled\", \"false\" },\n { \"spark.executor.instances\", \"2\" },\n },\n },\n EnvironmentConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigArgs\n {\n ExecutionConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigExecutionConfigArgs\n {\n SubnetworkUri = \"default\",\n Ttl = \"3600s\",\n NetworkTags = new[]\n {\n \"tag1\",\n },\n },\n },\n SparkRBatch = new Gcp.Dataproc.Inputs.BatchSparkRBatchArgs\n {\n MainRFileUri = \"https://storage.googleapis.com/terraform-batches/spark-r-flights.r\",\n Args = new[]\n {\n \"https://storage.googleapis.com/terraform-batches/flights.csv\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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.NewBatch(ctx, \"example_batch_sparkr\", \u0026dataproc.BatchArgs{\n\t\t\tBatchId: pulumi.String(\"tf-test-batch_74391\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"batch_test\": pulumi.String(\"terraform\"),\n\t\t\t},\n\t\t\tRuntimeConfig: \u0026dataproc.BatchRuntimeConfigArgs{\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.dynamicAllocation.enabled\": pulumi.String(\"false\"),\n\t\t\t\t\t\"spark.executor.instances\": pulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvironmentConfig: \u0026dataproc.BatchEnvironmentConfigArgs{\n\t\t\t\tExecutionConfig: \u0026dataproc.BatchEnvironmentConfigExecutionConfigArgs{\n\t\t\t\t\tSubnetworkUri: pulumi.String(\"default\"),\n\t\t\t\t\tTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\tNetworkTags: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSparkRBatch: \u0026dataproc.BatchSparkRBatchArgs{\n\t\t\t\tMainRFileUri: pulumi.String(\"https://storage.googleapis.com/terraform-batches/spark-r-flights.r\"),\n\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://storage.googleapis.com/terraform-batches/flights.csv\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.Batch;\nimport com.pulumi.gcp.dataproc.BatchArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchRuntimeConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigExecutionConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchSparkRBatchArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleBatchSparkr = new Batch(\"exampleBatchSparkr\", BatchArgs.builder()\n .batchId(\"tf-test-batch_74391\")\n .location(\"us-central1\")\n .labels(Map.of(\"batch_test\", \"terraform\"))\n .runtimeConfig(BatchRuntimeConfigArgs.builder()\n .properties(Map.ofEntries(\n Map.entry(\"spark.dynamicAllocation.enabled\", \"false\"),\n Map.entry(\"spark.executor.instances\", \"2\")\n ))\n .build())\n .environmentConfig(BatchEnvironmentConfigArgs.builder()\n .executionConfig(BatchEnvironmentConfigExecutionConfigArgs.builder()\n .subnetworkUri(\"default\")\n .ttl(\"3600s\")\n .networkTags(\"tag1\")\n .build())\n .build())\n .sparkRBatch(BatchSparkRBatchArgs.builder()\n .mainRFileUri(\"https://storage.googleapis.com/terraform-batches/spark-r-flights.r\")\n .args(\"https://storage.googleapis.com/terraform-batches/flights.csv\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleBatchSparkr:\n type: gcp:dataproc:Batch\n name: example_batch_sparkr\n properties:\n batchId: tf-test-batch_74391\n location: us-central1\n labels:\n batch_test: terraform\n runtimeConfig:\n properties:\n spark.dynamicAllocation.enabled: 'false'\n spark.executor.instances: '2'\n environmentConfig:\n executionConfig:\n subnetworkUri: default\n ttl: 3600s\n networkTags:\n - tag1\n sparkRBatch:\n mainRFileUri: https://storage.googleapis.com/terraform-batches/spark-r-flights.r\n args:\n - https://storage.googleapis.com/terraform-batches/flights.csv\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Batch Autotuning\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst exampleBatchAutotuning = new gcp.dataproc.Batch(\"example_batch_autotuning\", {\n batchId: \"tf-test-batch_16511\",\n location: \"us-central1\",\n labels: {\n batch_test: \"terraform\",\n },\n runtimeConfig: {\n version: \"2.2\",\n properties: {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n cohort: \"tf-dataproc-batch-example\",\n autotuningConfig: {\n scenarios: [\n \"SCALING\",\n \"MEMORY\",\n ],\n },\n },\n environmentConfig: {\n executionConfig: {\n subnetworkUri: \"default\",\n ttl: \"3600s\",\n },\n },\n sparkBatch: {\n mainClass: \"org.apache.spark.examples.SparkPi\",\n args: [\"10\"],\n jarFileUris: [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_batch_autotuning = gcp.dataproc.Batch(\"example_batch_autotuning\",\n batch_id=\"tf-test-batch_16511\",\n location=\"us-central1\",\n labels={\n \"batch_test\": \"terraform\",\n },\n runtime_config={\n \"version\": \"2.2\",\n \"properties\": {\n \"spark.dynamicAllocation.enabled\": \"false\",\n \"spark.executor.instances\": \"2\",\n },\n \"cohort\": \"tf-dataproc-batch-example\",\n \"autotuning_config\": {\n \"scenarios\": [\n \"SCALING\",\n \"MEMORY\",\n ],\n },\n },\n environment_config={\n \"execution_config\": {\n \"subnetwork_uri\": \"default\",\n \"ttl\": \"3600s\",\n },\n },\n spark_batch={\n \"main_class\": \"org.apache.spark.examples.SparkPi\",\n \"args\": [\"10\"],\n \"jar_file_uris\": [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleBatchAutotuning = new Gcp.Dataproc.Batch(\"example_batch_autotuning\", new()\n {\n BatchId = \"tf-test-batch_16511\",\n Location = \"us-central1\",\n Labels = \n {\n { \"batch_test\", \"terraform\" },\n },\n RuntimeConfig = new Gcp.Dataproc.Inputs.BatchRuntimeConfigArgs\n {\n Version = \"2.2\",\n Properties = \n {\n { \"spark.dynamicAllocation.enabled\", \"false\" },\n { \"spark.executor.instances\", \"2\" },\n },\n Cohort = \"tf-dataproc-batch-example\",\n AutotuningConfig = new Gcp.Dataproc.Inputs.BatchRuntimeConfigAutotuningConfigArgs\n {\n Scenarios = new[]\n {\n \"SCALING\",\n \"MEMORY\",\n },\n },\n },\n EnvironmentConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigArgs\n {\n ExecutionConfig = new Gcp.Dataproc.Inputs.BatchEnvironmentConfigExecutionConfigArgs\n {\n SubnetworkUri = \"default\",\n Ttl = \"3600s\",\n },\n },\n SparkBatch = new Gcp.Dataproc.Inputs.BatchSparkBatchArgs\n {\n MainClass = \"org.apache.spark.examples.SparkPi\",\n Args = new[]\n {\n \"10\",\n },\n JarFileUris = new[]\n {\n \"file:///usr/lib/spark/examples/jars/spark-examples.jar\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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.NewBatch(ctx, \"example_batch_autotuning\", \u0026dataproc.BatchArgs{\n\t\t\tBatchId: pulumi.String(\"tf-test-batch_16511\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"batch_test\": pulumi.String(\"terraform\"),\n\t\t\t},\n\t\t\tRuntimeConfig: \u0026dataproc.BatchRuntimeConfigArgs{\n\t\t\t\tVersion: pulumi.String(\"2.2\"),\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.dynamicAllocation.enabled\": pulumi.String(\"false\"),\n\t\t\t\t\t\"spark.executor.instances\": pulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t\tCohort: pulumi.String(\"tf-dataproc-batch-example\"),\n\t\t\t\tAutotuningConfig: \u0026dataproc.BatchRuntimeConfigAutotuningConfigArgs{\n\t\t\t\t\tScenarios: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"SCALING\"),\n\t\t\t\t\t\tpulumi.String(\"MEMORY\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvironmentConfig: \u0026dataproc.BatchEnvironmentConfigArgs{\n\t\t\t\tExecutionConfig: \u0026dataproc.BatchEnvironmentConfigExecutionConfigArgs{\n\t\t\t\t\tSubnetworkUri: pulumi.String(\"default\"),\n\t\t\t\t\tTtl: pulumi.String(\"3600s\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSparkBatch: \u0026dataproc.BatchSparkBatchArgs{\n\t\t\t\tMainClass: pulumi.String(\"org.apache.spark.examples.SparkPi\"),\n\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10\"),\n\t\t\t\t},\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},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.Batch;\nimport com.pulumi.gcp.dataproc.BatchArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchRuntimeConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchRuntimeConfigAutotuningConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchEnvironmentConfigExecutionConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.BatchSparkBatchArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleBatchAutotuning = new Batch(\"exampleBatchAutotuning\", BatchArgs.builder()\n .batchId(\"tf-test-batch_16511\")\n .location(\"us-central1\")\n .labels(Map.of(\"batch_test\", \"terraform\"))\n .runtimeConfig(BatchRuntimeConfigArgs.builder()\n .version(\"2.2\")\n .properties(Map.ofEntries(\n Map.entry(\"spark.dynamicAllocation.enabled\", \"false\"),\n Map.entry(\"spark.executor.instances\", \"2\")\n ))\n .cohort(\"tf-dataproc-batch-example\")\n .autotuningConfig(BatchRuntimeConfigAutotuningConfigArgs.builder()\n .scenarios( \n \"SCALING\",\n \"MEMORY\")\n .build())\n .build())\n .environmentConfig(BatchEnvironmentConfigArgs.builder()\n .executionConfig(BatchEnvironmentConfigExecutionConfigArgs.builder()\n .subnetworkUri(\"default\")\n .ttl(\"3600s\")\n .build())\n .build())\n .sparkBatch(BatchSparkBatchArgs.builder()\n .mainClass(\"org.apache.spark.examples.SparkPi\")\n .args(\"10\")\n .jarFileUris(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleBatchAutotuning:\n type: gcp:dataproc:Batch\n name: example_batch_autotuning\n properties:\n batchId: tf-test-batch_16511\n location: us-central1\n labels:\n batch_test: terraform\n runtimeConfig:\n version: '2.2'\n properties:\n spark.dynamicAllocation.enabled: 'false'\n spark.executor.instances: '2'\n cohort: tf-dataproc-batch-example\n autotuningConfig:\n scenarios:\n - SCALING\n - MEMORY\n environmentConfig:\n executionConfig:\n subnetworkUri: default\n ttl: 3600s\n sparkBatch:\n mainClass: org.apache.spark.examples.SparkPi\n args:\n - '10'\n jarFileUris:\n - file:///usr/lib/spark/examples/jars/spark-examples.jar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBatch can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/batches/{{batch_id}}`\n\n* `{{project}}/{{location}}/{{batch_id}}`\n\n* `{{location}}/{{batch_id}}`\n\nWhen using the `pulumi import` command, Batch can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataproc/batch:Batch default projects/{{project}}/locations/{{location}}/batches/{{batch_id}}\n```\n\n```sh\n$ pulumi import gcp:dataproc/batch:Batch default {{project}}/{{location}}/{{batch_id}}\n```\n\n```sh\n$ pulumi import gcp:dataproc/batch:Batch default {{location}}/{{batch_id}}\n```\n\n",
"properties": {
"batchId": {
"type": "string",
@@ -205309,7 +207627,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 \"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/v8/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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.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.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.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.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: 5432,\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\": 5432,\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 = 5432,\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/v8/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(5432),\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: \u0026datastream.ConnectionProfileBigqueryProfileArgs{},\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(5432)\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: 5432\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/v8/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: \u0026datastream.ConnectionProfileBigqueryProfileArgs{},\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: \u0026datastream.StreamSourceConfigOracleSourceConfigDropLargeObjectsArgs{},\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 transactionLogs: {},\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 \"transaction_logs\": {},\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 TransactionLogs = 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 BackfillNone = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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: \u0026datastream.ConnectionProfileBigqueryProfileArgs{},\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\tTransactionLogs: \u0026datastream.StreamSourceConfigSqlServerSourceConfigTransactionLogsArgs{},\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: \u0026datastream.StreamBackfillNoneArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.StreamSourceConfigSqlServerSourceConfigTransactionLogsArgs;\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 .transactionLogs()\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 transactionLogs: {}\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 Sql Server Change Tables\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 changeTables: {},\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 \"change_tables\": {},\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 ChangeTables = 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 BackfillNone = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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: \u0026datastream.ConnectionProfileBigqueryProfileArgs{},\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\tChangeTables: \u0026datastream.StreamSourceConfigSqlServerSourceConfigChangeTablesArgs{},\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: \u0026datastream.StreamBackfillNoneArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.StreamSourceConfigSqlServerSourceConfigChangeTablesArgs;\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 .changeTables()\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 changeTables: {}\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/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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: \u0026datastream.ConnectionProfileBigqueryProfileArgs{},\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: \u0026datastream.StreamSourceConfigMysqlSourceConfigArgs{},\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: \u0026datastream.StreamBackfillAllArgs{},\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/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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, \u0026bigquery.GetDefaultServiceAccountArgs{}, 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.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: \u0026datastream.ConnectionProfileBigqueryProfileArgs{},\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: \u0026datastream.StreamSourceConfigMysqlSourceConfigArgs{},\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: \u0026datastream.StreamBackfillNoneArgs{},\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### Datastream Stream Bigquery Append Only\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 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 },\n },\n appendOnly: {},\n },\n },\n backfillNone: {},\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 })\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 },\n },\n \"append_only\": {},\n },\n },\n backfill_none={})\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 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 },\n },\n AppendOnly = null,\n },\n },\n BackfillNone = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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\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: \u0026datastream.ConnectionProfileBigqueryProfileArgs{},\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: \u0026datastream.StreamSourceConfigMysqlSourceConfigArgs{},\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},\n\t\t\t\t\t},\n\t\t\t\t\tAppendOnly: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigAppendOnlyArgs{},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBackfillNone: \u0026datastream.StreamBackfillNoneArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\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.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.StreamDestinationConfigBigqueryDestinationConfigAppendOnlyArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillNoneArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\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 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 .build())\n .build())\n .appendOnly()\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: 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 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 appendOnly: {}\n backfillNone: {}\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\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/v8/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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.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.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.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.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: 5432,\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\": 5432,\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 = 5432,\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/v8/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(5432),\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: \u0026datastream.ConnectionProfileBigqueryProfileArgs{},\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(5432)\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: 5432\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/v8/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: \u0026datastream.ConnectionProfileBigqueryProfileArgs{},\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: \u0026datastream.StreamSourceConfigOracleSourceConfigDropLargeObjectsArgs{},\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 transactionLogs: {},\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 \"transaction_logs\": {},\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 TransactionLogs = 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 BackfillNone = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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: \u0026datastream.ConnectionProfileBigqueryProfileArgs{},\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\tTransactionLogs: \u0026datastream.StreamSourceConfigSqlServerSourceConfigTransactionLogsArgs{},\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: \u0026datastream.StreamBackfillNoneArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.StreamSourceConfigSqlServerSourceConfigTransactionLogsArgs;\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 .transactionLogs()\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 transactionLogs: {}\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 Sql Server Change Tables\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 changeTables: {},\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 \"change_tables\": {},\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 ChangeTables = 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 BackfillNone = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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: \u0026datastream.ConnectionProfileBigqueryProfileArgs{},\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\tChangeTables: \u0026datastream.StreamSourceConfigSqlServerSourceConfigChangeTablesArgs{},\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: \u0026datastream.StreamBackfillNoneArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.StreamSourceConfigSqlServerSourceConfigChangeTablesArgs;\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 .changeTables()\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 changeTables: {}\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 Mysql Gtid\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.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.ConnectionProfileMysqlProfileArgs;\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.StreamSourceConfigMysqlSourceConfigIncludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigGtidArgs;\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(\"\u003c%= ctx[:vars]['mysql_name'] %\u003e\")\n .databaseVersion(\"MYSQL_8_0\")\n .region(\"us-central1\")\n .rootPassword(\"\u003c%= ctx[:vars]['mysql_root_password'] %\u003e\")\n .deletionProtection(\"\u003c%= ctx[:vars]['deletion_protection'] %\u003e\")\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(\"\u003c%= ctx[:vars]['database_user'] %\u003e\")\n .instance(instance.name())\n .password(\"\u003c%= ctx[:vars]['database_password'] %\u003e\")\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .name(\"\u003c%= ctx[:vars]['database_name'] %\u003e\")\n .instance(instance.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(user)\n .build());\n\n var source = new ConnectionProfile(\"source\", ConnectionProfileArgs.builder()\n .displayName(\"MySQL Source\")\n .location(\"us-central1\")\n .connectionProfileId(\"\u003c%= ctx[:vars]['source_connection_profile_id'] %\u003e\")\n .mysqlProfile(ConnectionProfileMysqlProfileArgs.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(\"\u003c%= ctx[:vars]['destination_connection_profile_id'] %\u003e\")\n .bigqueryProfile()\n .build());\n\n var default_ = new Stream(\"default\", StreamArgs.builder()\n .displayName(\"MySQL to BigQuery\")\n .location(\"us-central1\")\n .streamId(\"\u003c%= ctx[:vars]['stream_id'] %\u003e\")\n .sourceConfig(StreamSourceConfigArgs.builder()\n .sourceConnectionProfile(source.id())\n .mysqlSourceConfig(StreamSourceConfigMysqlSourceConfigArgs.builder()\n .includeObjects(StreamSourceConfigMysqlSourceConfigIncludeObjectsArgs.builder()\n .schemas(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference))\n .build())\n .gtid()\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: \u003c%= ctx[:vars]['mysql_name'] %\u003e\n databaseVersion: MYSQL_8_0\n region: us-central1\n rootPassword: \u003c%= ctx[:vars]['mysql_root_password'] %\u003e\n deletionProtection: \u003c%= ctx[:vars]['deletion_protection'] %\u003e\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: \u003c%= ctx[:vars]['database_name'] %\u003e\n instance: ${instance.name}\n options:\n dependsOn:\n - ${user}\n user:\n type: gcp:sql:User\n properties:\n name: \u003c%= ctx[:vars]['database_user'] %\u003e\n instance: ${instance.name}\n password: \u003c%= ctx[:vars]['database_password'] %\u003e\n source:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: MySQL Source\n location: us-central1\n connectionProfileId: \u003c%= ctx[:vars]['source_connection_profile_id'] %\u003e\n mysqlProfile:\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: \u003c%= ctx[:vars]['destination_connection_profile_id'] %\u003e\n bigqueryProfile: {}\n default:\n type: gcp:datastream:Stream\n properties:\n displayName: MySQL to BigQuery\n location: us-central1\n streamId: \u003c%= ctx[:vars]['stream_id'] %\u003e\n sourceConfig:\n sourceConnectionProfile: ${source.id}\n mysqlSourceConfig:\n includeObjects:\n schemas:\n - schema: schema\n tables:\n - table: table\n gtid: {}\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/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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: \u0026datastream.ConnectionProfileBigqueryProfileArgs{},\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: \u0026datastream.StreamSourceConfigMysqlSourceConfigArgs{},\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: \u0026datastream.StreamBackfillAllArgs{},\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/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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, \u0026bigquery.GetDefaultServiceAccountArgs{}, 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.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: \u0026datastream.ConnectionProfileBigqueryProfileArgs{},\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: \u0026datastream.StreamSourceConfigMysqlSourceConfigArgs{},\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: \u0026datastream.StreamBackfillNoneArgs{},\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### Datastream Stream Bigquery Append Only\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 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 },\n },\n appendOnly: {},\n },\n },\n backfillNone: {},\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 })\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 },\n },\n \"append_only\": {},\n },\n },\n backfill_none={})\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 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 },\n },\n AppendOnly = null,\n },\n },\n BackfillNone = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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\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: \u0026datastream.ConnectionProfileBigqueryProfileArgs{},\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: \u0026datastream.StreamSourceConfigMysqlSourceConfigArgs{},\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},\n\t\t\t\t\t},\n\t\t\t\t\tAppendOnly: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigAppendOnlyArgs{},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBackfillNone: \u0026datastream.StreamBackfillNoneArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\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.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.StreamDestinationConfigBigqueryDestinationConfigAppendOnlyArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillNoneArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\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 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 .build())\n .build())\n .appendOnly()\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: 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 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 appendOnly: {}\n backfillNone: {}\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\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",
@@ -205704,7 +208022,7 @@
}
},
"gcp:developerconnect/connection:Connection": {
- "description": "## Example Usage\n\n### Developer Connect 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 my_connection = new gcp.developerconnect.Connection(\"my-connection\", {\n location: \"us-central1\",\n connectionId: \"tf-test-connection\",\n githubConfig: {\n githubApp: \"DEVELOPER_CONNECT\",\n authorizerCredential: {\n oauthTokenSecretVersion: \"projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_connection = gcp.developerconnect.Connection(\"my-connection\",\n location=\"us-central1\",\n connection_id=\"tf-test-connection\",\n github_config={\n \"github_app\": \"DEVELOPER_CONNECT\",\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": \"projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/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.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"tf-test-connection\",\n GithubConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigArgs\n {\n GithubApp = \"DEVELOPER_CONNECT\",\n AuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = \"projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := developerconnect.NewConnection(ctx, \"my-connection\", \u0026developerconnect.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionId: pulumi.String(\"tf-test-connection\"),\n\t\t\tGithubConfig: \u0026developerconnect.ConnectionGithubConfigArgs{\n\t\t\t\tGithubApp: pulumi.String(\"DEVELOPER_CONNECT\"),\n\t\t\t\tAuthorizerCredential: \u0026developerconnect.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: pulumi.String(\"projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/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.developerconnect.Connection;\nimport com.pulumi.gcp.developerconnect.ConnectionArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.developerconnect.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 .connectionId(\"tf-test-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .githubApp(\"DEVELOPER_CONNECT\")\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(\"projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:developerconnect:Connection\n properties:\n location: us-central1\n connectionId: tf-test-connection\n githubConfig:\n githubApp: DEVELOPER_CONNECT\n authorizerCredential:\n oauthTokenSecretVersion: projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Developer Connect Connection 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-devconnect.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.developerconnect.Connection(\"my-connection\", {\n location: \"us-central1\",\n connectionId: \"my-connection\",\n githubConfig: {\n githubApp: \"DEVELOPER_CONNECT\",\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-devconnect.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.developerconnect.Connection(\"my-connection\",\n location=\"us-central1\",\n connection_id=\"my-connection\",\n github_config={\n \"github_app\": \"DEVELOPER_CONNECT\",\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-devconnect.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.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"my-connection\",\n GithubConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigArgs\n {\n GithubApp = \"DEVELOPER_CONNECT\",\n AppInstallationId = \"123123\",\n AuthorizerCredential = new Gcp.DeveloperConnect.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/v8/go/gcp/developerconnect\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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: \u0026secretmanager.SecretReplicationAutoArgs{},\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-devconnect.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 = developerconnect.NewConnection(ctx, \"my-connection\", \u0026developerconnect.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tGithubConfig: \u0026developerconnect.ConnectionGithubConfigArgs{\n\t\t\t\tGithubApp: pulumi.String(\"DEVELOPER_CONNECT\"),\n\t\t\t\tAppInstallationId: pulumi.String(\"123123\"),\n\t\t\t\tAuthorizerCredential: \u0026developerconnect.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.developerconnect.Connection;\nimport com.pulumi.gcp.developerconnect.ConnectionArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.developerconnect.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-devconnect.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 .connectionId(\"my-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .githubApp(\"DEVELOPER_CONNECT\")\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:developerconnect:Connection\n properties:\n location: us-central1\n connectionId: my-connection\n githubConfig:\n githubApp: DEVELOPER_CONNECT\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-devconnect.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/{{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:developerconnect/connection:Connection default projects/{{project}}/locations/{{location}}/connections/{{connection_id}}\n```\n\n```sh\n$ pulumi import gcp:developerconnect/connection:Connection default {{project}}/{{location}}/{{connection_id}}\n```\n\n```sh\n$ pulumi import gcp:developerconnect/connection:Connection default {{location}}/{{connection_id}}\n```\n\n",
+ "description": "## Example Usage\n\n### Developer Connect Connection New\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// Setup permissions. Only needed once per project\nconst devconnect_p4sa = new gcp.projects.ServiceIdentity(\"devconnect-p4sa\", {service: \"developerconnect.googleapis.com\"});\nconst devconnect_secret = new gcp.projects.IAMMember(\"devconnect-secret\", {\n project: \"my-project-name\",\n role: \"roles/secretmanager.admin\",\n member: devconnect_p4sa.member,\n});\nconst my_connection = new gcp.developerconnect.Connection(\"my-connection\", {\n location: \"us-central1\",\n connectionId: \"tf-test-connection-new\",\n githubConfig: {\n githubApp: \"FIREBASE\",\n },\n}, {\n dependsOn: [devconnect_secret],\n});\nexport const nextSteps = my_connection.installationStates;\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# Setup permissions. Only needed once per project\ndevconnect_p4sa = gcp.projects.ServiceIdentity(\"devconnect-p4sa\", service=\"developerconnect.googleapis.com\")\ndevconnect_secret = gcp.projects.IAMMember(\"devconnect-secret\",\n project=\"my-project-name\",\n role=\"roles/secretmanager.admin\",\n member=devconnect_p4sa.member)\nmy_connection = gcp.developerconnect.Connection(\"my-connection\",\n location=\"us-central1\",\n connection_id=\"tf-test-connection-new\",\n github_config={\n \"github_app\": \"FIREBASE\",\n },\n opts = pulumi.ResourceOptions(depends_on=[devconnect_secret]))\npulumi.export(\"nextSteps\", my_connection.installation_states)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Setup permissions. Only needed once per project\n var devconnect_p4sa = new Gcp.Projects.ServiceIdentity(\"devconnect-p4sa\", new()\n {\n Service = \"developerconnect.googleapis.com\",\n });\n\n var devconnect_secret = new Gcp.Projects.IAMMember(\"devconnect-secret\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/secretmanager.admin\",\n Member = devconnect_p4sa.Member,\n });\n\n var my_connection = new Gcp.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"tf-test-connection-new\",\n GithubConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigArgs\n {\n GithubApp = \"FIREBASE\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n devconnect_secret,\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"nextSteps\"] = my_connection.InstallationStates,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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// Setup permissions. Only needed once per project\n\t\t_, err := projects.NewServiceIdentity(ctx, \"devconnect-p4sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tService: pulumi.String(\"developerconnect.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"devconnect-secret\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.admin\"),\n\t\t\tMember: devconnect_p4sa.Member,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = developerconnect.NewConnection(ctx, \"my-connection\", \u0026developerconnect.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionId: pulumi.String(\"tf-test-connection-new\"),\n\t\t\tGithubConfig: \u0026developerconnect.ConnectionGithubConfigArgs{\n\t\t\t\tGithubApp: pulumi.String(\"FIREBASE\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdevconnect_secret,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"nextSteps\", my_connection.InstallationStates)\n\t\treturn nil\n\t})\n}\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.developerconnect.Connection;\nimport com.pulumi.gcp.developerconnect.ConnectionArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigArgs;\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 // Setup permissions. Only needed once per project\n var devconnect_p4sa = new ServiceIdentity(\"devconnect-p4sa\", ServiceIdentityArgs.builder()\n .service(\"developerconnect.googleapis.com\")\n .build());\n\n var devconnect_secret = new IAMMember(\"devconnect-secret\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/secretmanager.admin\")\n .member(devconnect_p4sa.member())\n .build());\n\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .connectionId(\"tf-test-connection-new\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .githubApp(\"FIREBASE\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(devconnect_secret)\n .build());\n\n ctx.export(\"nextSteps\", my_connection.installationStates());\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:developerconnect:Connection\n properties:\n location: us-central1\n connectionId: tf-test-connection-new\n githubConfig:\n githubApp: FIREBASE\n options:\n dependsOn:\n - ${[\"devconnect-secret\"]}\n # Setup permissions. Only needed once per project\n devconnect-p4sa:\n type: gcp:projects:ServiceIdentity\n properties:\n service: developerconnect.googleapis.com\n devconnect-secret:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/secretmanager.admin\n member: ${[\"devconnect-p4sa\"].member}\noutputs:\n nextSteps: ${[\"my-connection\"].installationStates}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Developer Connect Connection Existing Credentials\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.developerconnect.Connection(\"my-connection\", {\n location: \"us-central1\",\n connectionId: \"tf-test-connection-cred\",\n githubConfig: {\n githubApp: \"DEVELOPER_CONNECT\",\n authorizerCredential: {\n oauthTokenSecretVersion: \"projects/your-project/secrets/your-secret-id/versions/latest\",\n },\n },\n});\nexport const nextSteps = my_connection.installationStates;\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_connection = gcp.developerconnect.Connection(\"my-connection\",\n location=\"us-central1\",\n connection_id=\"tf-test-connection-cred\",\n github_config={\n \"github_app\": \"DEVELOPER_CONNECT\",\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": \"projects/your-project/secrets/your-secret-id/versions/latest\",\n },\n })\npulumi.export(\"nextSteps\", my_connection.installation_states)\n```\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.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"tf-test-connection-cred\",\n GithubConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigArgs\n {\n GithubApp = \"DEVELOPER_CONNECT\",\n AuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = \"projects/your-project/secrets/your-secret-id/versions/latest\",\n },\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"nextSteps\"] = my_connection.InstallationStates,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := developerconnect.NewConnection(ctx, \"my-connection\", \u0026developerconnect.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionId: pulumi.String(\"tf-test-connection-cred\"),\n\t\t\tGithubConfig: \u0026developerconnect.ConnectionGithubConfigArgs{\n\t\t\t\tGithubApp: pulumi.String(\"DEVELOPER_CONNECT\"),\n\t\t\t\tAuthorizerCredential: \u0026developerconnect.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: pulumi.String(\"projects/your-project/secrets/your-secret-id/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\tctx.Export(\"nextSteps\", my_connection.InstallationStates)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.developerconnect.Connection;\nimport com.pulumi.gcp.developerconnect.ConnectionArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.developerconnect.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 .connectionId(\"tf-test-connection-cred\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .githubApp(\"DEVELOPER_CONNECT\")\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(\"projects/your-project/secrets/your-secret-id/versions/latest\")\n .build())\n .build())\n .build());\n\n ctx.export(\"nextSteps\", my_connection.installationStates());\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:developerconnect:Connection\n properties:\n location: us-central1\n connectionId: tf-test-connection-cred\n githubConfig:\n githubApp: DEVELOPER_CONNECT\n authorizerCredential:\n oauthTokenSecretVersion: projects/your-project/secrets/your-secret-id/versions/latest\noutputs:\n nextSteps: ${[\"my-connection\"].installationStates}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Developer Connect Connection Existing Installation\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 devconnect_p4sa = new gcp.projects.ServiceIdentity(\"devconnect-p4sa\", {service: \"developerconnect.googleapis.com\"});\nconst p4sa-secretAccessor = gcp.organizations.getIAMPolicyOutput({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [devconnect_p4sa.member],\n }],\n});\nconst policy = new gcp.secretmanager.SecretIamPolicy(\"policy\", {\n secretId: github_token_secret.secretId,\n policyData: p4sa_secretAccessor.apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst my_connection = new gcp.developerconnect.Connection(\"my-connection\", {\n location: \"us-central1\",\n connectionId: \"my-connection\",\n githubConfig: {\n githubApp: \"DEVELOPER_CONNECT\",\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)\ndevconnect_p4sa = gcp.projects.ServiceIdentity(\"devconnect-p4sa\", service=\"developerconnect.googleapis.com\")\np4sa_secret_accessor = gcp.organizations.get_iam_policy_output(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [devconnect_p4sa.member],\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.developerconnect.Connection(\"my-connection\",\n location=\"us-central1\",\n connection_id=\"my-connection\",\n github_config={\n \"github_app\": \"DEVELOPER_CONNECT\",\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 devconnect_p4sa = new Gcp.Projects.ServiceIdentity(\"devconnect-p4sa\", new()\n {\n Service = \"developerconnect.googleapis.com\",\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 devconnect_p4sa.Member,\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.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"my-connection\",\n GithubConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigArgs\n {\n GithubApp = \"DEVELOPER_CONNECT\",\n AppInstallationId = \"123123\",\n AuthorizerCredential = new Gcp.DeveloperConnect.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/v8/go/gcp/developerconnect\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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: \u0026secretmanager.SecretReplicationAutoArgs{},\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\t_, err = projects.NewServiceIdentity(ctx, \"devconnect-p4sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tService: pulumi.String(\"developerconnect.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tp4sa_secretAccessor := organizations.LookupIAMPolicyOutput(ctx, organizations.GetIAMPolicyOutputArgs{\n\t\t\tBindings: organizations.GetIAMPolicyBindingArray{\n\t\t\t\t\u0026organizations.GetIAMPolicyBindingArgs{\n\t\t\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\t\t\tMembers: pulumi.StringArray{\n\t\t\t\t\t\tdevconnect_p4sa.Member,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\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.ApplyT(func(p4sa_secretAccessor organizations.GetIAMPolicyResult) (*string, error) {\n\t\t\t\treturn \u0026p4sa_secretAccessor.PolicyData, 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 = developerconnect.NewConnection(ctx, \"my-connection\", \u0026developerconnect.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tGithubConfig: \u0026developerconnect.ConnectionGithubConfigArgs{\n\t\t\t\tGithubApp: pulumi.String(\"DEVELOPER_CONNECT\"),\n\t\t\t\tAppInstallationId: pulumi.String(\"123123\"),\n\t\t\t\tAuthorizerCredential: \u0026developerconnect.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.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\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.developerconnect.Connection;\nimport com.pulumi.gcp.developerconnect.ConnectionArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.developerconnect.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 var devconnect_p4sa = new ServiceIdentity(\"devconnect-p4sa\", ServiceIdentityArgs.builder()\n .service(\"developerconnect.googleapis.com\")\n .build());\n\n final var p4sa-secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(devconnect_p4sa.member())\n .build())\n .build());\n\n var policy = new SecretIamPolicy(\"policy\", SecretIamPolicyArgs.builder()\n .secretId(github_token_secret.secretId())\n .policyData(p4sa_secretAccessor.applyValue(p4sa_secretAccessor -\u003e p4sa_secretAccessor.policyData()))\n .build());\n\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .connectionId(\"my-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .githubApp(\"DEVELOPER_CONNECT\")\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 devconnect-p4sa:\n type: gcp:projects:ServiceIdentity\n properties:\n service: developerconnect.googleapis.com\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:developerconnect:Connection\n properties:\n location: us-central1\n connectionId: my-connection\n githubConfig:\n githubApp: DEVELOPER_CONNECT\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 - ${[\"devconnect-p4sa\"].member}\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:developerconnect/connection:Connection default projects/{{project}}/locations/{{location}}/connections/{{connection_id}}\n```\n\n```sh\n$ pulumi import gcp:developerconnect/connection:Connection default {{project}}/{{location}}/{{connection_id}}\n```\n\n```sh\n$ pulumi import gcp:developerconnect/connection:Connection default {{location}}/{{connection_id}}\n```\n\n",
"properties": {
"annotations": {
"type": "object",
@@ -213313,6 +215631,13 @@
"storageBytes": {
"type": "string",
"description": "The size of the storage used by the backup. As backups share storage, this number is expected to change with backup creation/deletion.\n"
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A map of resource manager tags.\nResource manager tag keys and values have the same definition as resource manager tags.\nKeys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/{tag_value_id}.\nThe field is ignored (both PUT \u0026 PATCH) when empty.\n"
}
},
"required": [
@@ -213366,6 +215691,14 @@
"sourceInstance": {
"type": "string",
"description": "The resource name of the source Cloud Filestore instance, in the format projects/{projectId}/locations/{locationId}/instances/{instanceId}, used to create this backup.\n"
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A map of resource manager tags.\nResource manager tag keys and values have the same definition as resource manager tags.\nKeys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/{tag_value_id}.\nThe field is ignored (both PUT \u0026 PATCH) when empty.\n",
+ "willReplaceOnChanges": true
}
},
"requiredInputs": [
@@ -213454,6 +215787,14 @@
"storageBytes": {
"type": "string",
"description": "The size of the storage used by the backup. As backups share storage, this number is expected to change with backup creation/deletion.\n"
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A map of resource manager tags.\nResource manager tag keys and values have the same definition as resource manager tags.\nKeys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/{tag_value_id}.\nThe field is ignored (both PUT \u0026 PATCH) when empty.\n",
+ "willReplaceOnChanges": true
}
},
"type": "object"
@@ -215266,7 +217607,7 @@
},
"reconciling": {
"type": "boolean",
- "description": "if true, indicates that Hosting's systems are attmepting to\nmake the `CustomDomain`'s state match your preferred state. This is most\nfrequently `true` when initially provisioning a `CustomDomain` or when creating\na new SSL certificate to match an updated `cert_preference`\n"
+ "description": "if true, indicates that Hosting's systems are attempting to\nmake the `CustomDomain`'s state match your preferred state. This is most\nfrequently `true` when initially provisioning a `CustomDomain` or when creating\na new SSL certificate to match an updated `cert_preference`\n"
},
"redirectTarget": {
"type": "string",
@@ -215403,7 +217744,7 @@
},
"reconciling": {
"type": "boolean",
- "description": "if true, indicates that Hosting's systems are attmepting to\nmake the `CustomDomain`'s state match your preferred state. This is most\nfrequently `true` when initially provisioning a `CustomDomain` or when creating\na new SSL certificate to match an updated `cert_preference`\n"
+ "description": "if true, indicates that Hosting's systems are attempting to\nmake the `CustomDomain`'s state match your preferred state. This is most\nfrequently `true` when initially provisioning a `CustomDomain` or when creating\na new SSL certificate to match an updated `cert_preference`\n"
},
"redirectTarget": {
"type": "string",
@@ -223253,6 +225594,367 @@
"type": "object"
}
},
+ "gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster": {
+ "description": "## Example Usage\n\n### Gkeonprem Vmware 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.VmwareAdminCluster(\"admin-cluster-basic\", {\n name: \"basic\",\n location: \"us-west1\",\n description: \"test admin cluster\",\n bootstrapClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n onPremVersion: \"1.31.0-gke.35\",\n imageType: \"ubuntu_containerd\",\n vcenter: {\n resourcePool: \"test resource pool\",\n datastore: \"test data store\",\n datacenter: \"test data center\",\n cluster: \"test cluster\",\n folder: \"test folder\",\n caCertData: \"test ca cert data\",\n address: \"10.0.0.1\",\n dataDisk: \"test data disk\",\n },\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 },\n loadBalancer: {\n vipConfig: {\n controlPlaneVip: \"10.251.133.5\",\n addonsVip: \"10.251.135.19\",\n },\n f5Config: {\n address: \"10.251.135.22\",\n partition: \"test-parition\",\n snatPool: \"test-snat-pool\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin_cluster_basic = gcp.gkeonprem.VmwareAdminCluster(\"admin-cluster-basic\",\n name=\"basic\",\n location=\"us-west1\",\n description=\"test admin cluster\",\n bootstrap_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n on_prem_version=\"1.31.0-gke.35\",\n image_type=\"ubuntu_containerd\",\n vcenter={\n \"resource_pool\": \"test resource pool\",\n \"datastore\": \"test data store\",\n \"datacenter\": \"test data center\",\n \"cluster\": \"test cluster\",\n \"folder\": \"test folder\",\n \"ca_cert_data\": \"test ca cert data\",\n \"address\": \"10.0.0.1\",\n \"data_disk\": \"test data disk\",\n },\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 },\n load_balancer={\n \"vip_config\": {\n \"control_plane_vip\": \"10.251.133.5\",\n \"addons_vip\": \"10.251.135.19\",\n },\n \"f5_config\": {\n \"address\": \"10.251.135.22\",\n \"partition\": \"test-parition\",\n \"snat_pool\": \"test-snat-pool\",\n },\n })\n```\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.VmwareAdminCluster(\"admin-cluster-basic\", new()\n {\n Name = \"basic\",\n Location = \"us-west1\",\n Description = \"test admin cluster\",\n BootstrapClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n OnPremVersion = \"1.31.0-gke.35\",\n ImageType = \"ubuntu_containerd\",\n Vcenter = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterVcenterArgs\n {\n ResourcePool = \"test resource pool\",\n Datastore = \"test data store\",\n Datacenter = \"test data center\",\n Cluster = \"test cluster\",\n Folder = \"test folder\",\n CaCertData = \"test ca cert data\",\n Address = \"10.0.0.1\",\n DataDisk = \"test data disk\",\n },\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterNetworkConfigArgs\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.VmwareAdminClusterNetworkConfigDhcpIpConfigArgs\n {\n Enabled = true,\n },\n },\n ControlPlaneNode = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterControlPlaneNodeArgs\n {\n Cpus = 4,\n Memory = 8192,\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterLoadBalancerArgs\n {\n VipConfig = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.251.133.5\",\n AddonsVip = \"10.251.135.19\",\n },\n F5Config = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterLoadBalancerF5ConfigArgs\n {\n Address = \"10.251.135.22\",\n Partition = \"test-parition\",\n SnatPool = \"test-snat-pool\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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.NewVmwareAdminCluster(ctx, \"admin-cluster-basic\", \u0026gkeonprem.VmwareAdminClusterArgs{\n\t\t\tName: pulumi.String(\"basic\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tDescription: pulumi.String(\"test admin cluster\"),\n\t\t\tBootstrapClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tOnPremVersion: pulumi.String(\"1.31.0-gke.35\"),\n\t\t\tImageType: pulumi.String(\"ubuntu_containerd\"),\n\t\t\tVcenter: \u0026gkeonprem.VmwareAdminClusterVcenterArgs{\n\t\t\t\tResourcePool: pulumi.String(\"test resource pool\"),\n\t\t\t\tDatastore: pulumi.String(\"test data store\"),\n\t\t\t\tDatacenter: pulumi.String(\"test data center\"),\n\t\t\t\tCluster: pulumi.String(\"test cluster\"),\n\t\t\t\tFolder: pulumi.String(\"test folder\"),\n\t\t\t\tCaCertData: pulumi.String(\"test ca cert data\"),\n\t\t\t\tAddress: pulumi.String(\"10.0.0.1\"),\n\t\t\t\tDataDisk: pulumi.String(\"test data disk\"),\n\t\t\t},\n\t\t\tNetworkConfig: \u0026gkeonprem.VmwareAdminClusterNetworkConfigArgs{\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.VmwareAdminClusterNetworkConfigDhcpIpConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlaneNode: \u0026gkeonprem.VmwareAdminClusterControlPlaneNodeArgs{\n\t\t\t\tCpus: pulumi.Int(4),\n\t\t\t\tMemory: pulumi.Int(8192),\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.VmwareAdminClusterLoadBalancerArgs{\n\t\t\t\tVipConfig: \u0026gkeonprem.VmwareAdminClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.251.133.5\"),\n\t\t\t\t\tAddonsVip: pulumi.String(\"10.251.135.19\"),\n\t\t\t\t},\n\t\t\t\tF5Config: \u0026gkeonprem.VmwareAdminClusterLoadBalancerF5ConfigArgs{\n\t\t\t\t\tAddress: pulumi.String(\"10.251.135.22\"),\n\t\t\t\t\tPartition: pulumi.String(\"test-parition\"),\n\t\t\t\t\tSnatPool: pulumi.String(\"test-snat-pool\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.VmwareAdminCluster;\nimport com.pulumi.gcp.gkeonprem.VmwareAdminClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterVcenterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterNetworkConfigDhcpIpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterControlPlaneNodeArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterLoadBalancerF5ConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 VmwareAdminCluster(\"admin-cluster-basic\", VmwareAdminClusterArgs.builder()\n .name(\"basic\")\n .location(\"us-west1\")\n .description(\"test admin cluster\")\n .bootstrapClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .onPremVersion(\"1.31.0-gke.35\")\n .imageType(\"ubuntu_containerd\")\n .vcenter(VmwareAdminClusterVcenterArgs.builder()\n .resourcePool(\"test resource pool\")\n .datastore(\"test data store\")\n .datacenter(\"test data center\")\n .cluster(\"test cluster\")\n .folder(\"test folder\")\n .caCertData(\"test ca cert data\")\n .address(\"10.0.0.1\")\n .dataDisk(\"test data disk\")\n .build())\n .networkConfig(VmwareAdminClusterNetworkConfigArgs.builder()\n .serviceAddressCidrBlocks(\"10.96.0.0/12\")\n .podAddressCidrBlocks(\"192.168.0.0/16\")\n .dhcpIpConfig(VmwareAdminClusterNetworkConfigDhcpIpConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .controlPlaneNode(VmwareAdminClusterControlPlaneNodeArgs.builder()\n .cpus(4)\n .memory(8192)\n .build())\n .loadBalancer(VmwareAdminClusterLoadBalancerArgs.builder()\n .vipConfig(VmwareAdminClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.251.133.5\")\n .addonsVip(\"10.251.135.19\")\n .build())\n .f5Config(VmwareAdminClusterLoadBalancerF5ConfigArgs.builder()\n .address(\"10.251.135.22\")\n .partition(\"test-parition\")\n .snatPool(\"test-snat-pool\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n admin-cluster-basic:\n type: gcp:gkeonprem:VmwareAdminCluster\n properties:\n name: basic\n location: us-west1\n description: test admin cluster\n bootstrapClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n onPremVersion: 1.31.0-gke.35\n imageType: ubuntu_containerd\n vcenter:\n resourcePool: test resource pool\n datastore: test data store\n datacenter: test data center\n cluster: test cluster\n folder: test folder\n caCertData: test ca cert data\n address: 10.0.0.1\n dataDisk: test data disk\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 loadBalancer:\n vipConfig:\n controlPlaneVip: 10.251.133.5\n addonsVip: 10.251.135.19\n f5Config:\n address: 10.251.135.22\n partition: test-parition\n snatPool: test-snat-pool\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Vmware 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_full = new gcp.gkeonprem.VmwareAdminCluster(\"admin-cluster-full\", {\n name: \"full\",\n location: \"us-west1\",\n description: \"test admin cluster\",\n bootstrapClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n onPremVersion: \"1.31.0-gke.35\",\n imageType: \"ubuntu_containerd\",\n annotations: {},\n vcenter: {\n resourcePool: \"test resource pool\",\n datastore: \"test data store\",\n datacenter: \"test data center\",\n cluster: \"test cluster\",\n folder: \"test folder\",\n caCertData: \"test ca cert data\",\n address: \"10.0.0.1\",\n dataDisk: \"test data disk\",\n storagePolicyName: \"storage_policy_name\",\n },\n networkConfig: {\n serviceAddressCidrBlocks: [\"10.96.0.0/12\"],\n podAddressCidrBlocks: [\"192.168.0.0/16\"],\n haControlPlaneConfig: {\n controlPlaneIpBlock: {\n gateway: \"10.0.0.3\",\n ips: [{\n hostname: \"hostname\",\n ip: \"10.0.0.4\",\n }],\n netmask: \"10.0.0.3/32\",\n },\n },\n hostConfig: {\n dnsServers: [\"10.254.41.1\"],\n ntpServers: [\"216.239.35.8\"],\n dnsSearchDomains: [\"test-domain\"],\n },\n staticIpConfig: {\n ipBlocks: [{\n gateway: \"10.0.0.1\",\n ips: [{\n hostname: \"hostname\",\n ip: \"10.0.0.2\",\n }],\n netmask: \"10.0.0.3/32\",\n }],\n },\n vcenterNetwork: \"test-vcenter-network\",\n },\n controlPlaneNode: {\n cpus: 4,\n memory: 8192,\n replicas: 3,\n },\n loadBalancer: {\n vipConfig: {\n controlPlaneVip: \"10.251.133.5\",\n addonsVip: \"10.251.135.19\",\n },\n manualLbConfig: {\n addonsNodePort: 30005,\n controlPlaneNodePort: 30006,\n ingressHttpNodePort: 30007,\n ingressHttpsNodePort: 30008,\n konnectivityServerNodePort: 30009,\n },\n },\n addonNode: {\n autoResizeConfig: {\n enabled: true,\n },\n },\n antiAffinityGroups: {\n aagConfigDisabled: true,\n },\n authorization: {\n viewerUsers: [{\n username: \"user1@gmail.com\",\n }],\n },\n autoRepairConfig: {\n enabled: true,\n },\n platformConfig: {\n requiredPlatformVersion: \"1.31.0\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin_cluster_full = gcp.gkeonprem.VmwareAdminCluster(\"admin-cluster-full\",\n name=\"full\",\n location=\"us-west1\",\n description=\"test admin cluster\",\n bootstrap_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n on_prem_version=\"1.31.0-gke.35\",\n image_type=\"ubuntu_containerd\",\n annotations={},\n vcenter={\n \"resource_pool\": \"test resource pool\",\n \"datastore\": \"test data store\",\n \"datacenter\": \"test data center\",\n \"cluster\": \"test cluster\",\n \"folder\": \"test folder\",\n \"ca_cert_data\": \"test ca cert data\",\n \"address\": \"10.0.0.1\",\n \"data_disk\": \"test data disk\",\n \"storage_policy_name\": \"storage_policy_name\",\n },\n network_config={\n \"service_address_cidr_blocks\": [\"10.96.0.0/12\"],\n \"pod_address_cidr_blocks\": [\"192.168.0.0/16\"],\n \"ha_control_plane_config\": {\n \"control_plane_ip_block\": {\n \"gateway\": \"10.0.0.3\",\n \"ips\": [{\n \"hostname\": \"hostname\",\n \"ip\": \"10.0.0.4\",\n }],\n \"netmask\": \"10.0.0.3/32\",\n },\n },\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 \"gateway\": \"10.0.0.1\",\n \"ips\": [{\n \"hostname\": \"hostname\",\n \"ip\": \"10.0.0.2\",\n }],\n \"netmask\": \"10.0.0.3/32\",\n }],\n },\n \"vcenter_network\": \"test-vcenter-network\",\n },\n control_plane_node={\n \"cpus\": 4,\n \"memory\": 8192,\n \"replicas\": 3,\n },\n load_balancer={\n \"vip_config\": {\n \"control_plane_vip\": \"10.251.133.5\",\n \"addons_vip\": \"10.251.135.19\",\n },\n \"manual_lb_config\": {\n \"addons_node_port\": 30005,\n \"control_plane_node_port\": 30006,\n \"ingress_http_node_port\": 30007,\n \"ingress_https_node_port\": 30008,\n \"konnectivity_server_node_port\": 30009,\n },\n },\n addon_node={\n \"auto_resize_config\": {\n \"enabled\": True,\n },\n },\n anti_affinity_groups={\n \"aag_config_disabled\": True,\n },\n authorization={\n \"viewer_users\": [{\n \"username\": \"user1@gmail.com\",\n }],\n },\n auto_repair_config={\n \"enabled\": True,\n },\n platform_config={\n \"required_platform_version\": \"1.31.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 admin_cluster_full = new Gcp.GkeOnPrem.VmwareAdminCluster(\"admin-cluster-full\", new()\n {\n Name = \"full\",\n Location = \"us-west1\",\n Description = \"test admin cluster\",\n BootstrapClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n OnPremVersion = \"1.31.0-gke.35\",\n ImageType = \"ubuntu_containerd\",\n Annotations = null,\n Vcenter = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterVcenterArgs\n {\n ResourcePool = \"test resource pool\",\n Datastore = \"test data store\",\n Datacenter = \"test data center\",\n Cluster = \"test cluster\",\n Folder = \"test folder\",\n CaCertData = \"test ca cert data\",\n Address = \"10.0.0.1\",\n DataDisk = \"test data disk\",\n StoragePolicyName = \"storage_policy_name\",\n },\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterNetworkConfigArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"10.96.0.0/12\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"192.168.0.0/16\",\n },\n HaControlPlaneConfig = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs\n {\n ControlPlaneIpBlock = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs\n {\n Gateway = \"10.0.0.3\",\n Ips = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs\n {\n Hostname = \"hostname\",\n Ip = \"10.0.0.4\",\n },\n },\n Netmask = \"10.0.0.3/32\",\n },\n },\n HostConfig = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterNetworkConfigHostConfigArgs\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.VmwareAdminClusterNetworkConfigStaticIpConfigArgs\n {\n IpBlocks = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs\n {\n Gateway = \"10.0.0.1\",\n Ips = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs\n {\n Hostname = \"hostname\",\n Ip = \"10.0.0.2\",\n },\n },\n Netmask = \"10.0.0.3/32\",\n },\n },\n },\n VcenterNetwork = \"test-vcenter-network\",\n },\n ControlPlaneNode = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterControlPlaneNodeArgs\n {\n Cpus = 4,\n Memory = 8192,\n Replicas = 3,\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterLoadBalancerArgs\n {\n VipConfig = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.251.133.5\",\n AddonsVip = \"10.251.135.19\",\n },\n ManualLbConfig = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterLoadBalancerManualLbConfigArgs\n {\n AddonsNodePort = 30005,\n ControlPlaneNodePort = 30006,\n IngressHttpNodePort = 30007,\n IngressHttpsNodePort = 30008,\n KonnectivityServerNodePort = 30009,\n },\n },\n AddonNode = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterAddonNodeArgs\n {\n AutoResizeConfig = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterAddonNodeAutoResizeConfigArgs\n {\n Enabled = true,\n },\n },\n AntiAffinityGroups = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterAntiAffinityGroupsArgs\n {\n AagConfigDisabled = true,\n },\n Authorization = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterAuthorizationArgs\n {\n ViewerUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterAuthorizationViewerUserArgs\n {\n Username = \"user1@gmail.com\",\n },\n },\n },\n AutoRepairConfig = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterAutoRepairConfigArgs\n {\n Enabled = true,\n },\n PlatformConfig = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterPlatformConfigArgs\n {\n RequiredPlatformVersion = \"1.31.0\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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.NewVmwareAdminCluster(ctx, \"admin-cluster-full\", \u0026gkeonprem.VmwareAdminClusterArgs{\n\t\t\tName: pulumi.String(\"full\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tDescription: pulumi.String(\"test admin cluster\"),\n\t\t\tBootstrapClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tOnPremVersion: pulumi.String(\"1.31.0-gke.35\"),\n\t\t\tImageType: pulumi.String(\"ubuntu_containerd\"),\n\t\t\tAnnotations: pulumi.StringMap{},\n\t\t\tVcenter: \u0026gkeonprem.VmwareAdminClusterVcenterArgs{\n\t\t\t\tResourcePool: pulumi.String(\"test resource pool\"),\n\t\t\t\tDatastore: pulumi.String(\"test data store\"),\n\t\t\t\tDatacenter: pulumi.String(\"test data center\"),\n\t\t\t\tCluster: pulumi.String(\"test cluster\"),\n\t\t\t\tFolder: pulumi.String(\"test folder\"),\n\t\t\t\tCaCertData: pulumi.String(\"test ca cert data\"),\n\t\t\t\tAddress: pulumi.String(\"10.0.0.1\"),\n\t\t\t\tDataDisk: pulumi.String(\"test data disk\"),\n\t\t\t\tStoragePolicyName: pulumi.String(\"storage_policy_name\"),\n\t\t\t},\n\t\t\tNetworkConfig: \u0026gkeonprem.VmwareAdminClusterNetworkConfigArgs{\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\tHaControlPlaneConfig: \u0026gkeonprem.VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs{\n\t\t\t\t\tControlPlaneIpBlock: \u0026gkeonprem.VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs{\n\t\t\t\t\t\tGateway: pulumi.String(\"10.0.0.3\"),\n\t\t\t\t\t\tIps: gkeonprem.VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs{\n\t\t\t\t\t\t\t\tHostname: pulumi.String(\"hostname\"),\n\t\t\t\t\t\t\t\tIp: pulumi.String(\"10.0.0.4\"),\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.3/32\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tHostConfig: \u0026gkeonprem.VmwareAdminClusterNetworkConfigHostConfigArgs{\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.VmwareAdminClusterNetworkConfigStaticIpConfigArgs{\n\t\t\t\t\tIpBlocks: gkeonprem.VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArray{\n\t\t\t\t\t\t\u0026gkeonprem.VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs{\n\t\t\t\t\t\t\tGateway: pulumi.String(\"10.0.0.1\"),\n\t\t\t\t\t\t\tIps: gkeonprem.VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArray{\n\t\t\t\t\t\t\t\t\u0026gkeonprem.VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs{\n\t\t\t\t\t\t\t\t\tHostname: pulumi.String(\"hostname\"),\n\t\t\t\t\t\t\t\t\tIp: pulumi.String(\"10.0.0.2\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tNetmask: pulumi.String(\"10.0.0.3/32\"),\n\t\t\t\t\t\t},\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.VmwareAdminClusterControlPlaneNodeArgs{\n\t\t\t\tCpus: pulumi.Int(4),\n\t\t\t\tMemory: pulumi.Int(8192),\n\t\t\t\tReplicas: pulumi.Int(3),\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.VmwareAdminClusterLoadBalancerArgs{\n\t\t\t\tVipConfig: \u0026gkeonprem.VmwareAdminClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.251.133.5\"),\n\t\t\t\t\tAddonsVip: pulumi.String(\"10.251.135.19\"),\n\t\t\t\t},\n\t\t\t\tManualLbConfig: \u0026gkeonprem.VmwareAdminClusterLoadBalancerManualLbConfigArgs{\n\t\t\t\t\tAddonsNodePort: pulumi.Int(30005),\n\t\t\t\t\tControlPlaneNodePort: pulumi.Int(30006),\n\t\t\t\t\tIngressHttpNodePort: pulumi.Int(30007),\n\t\t\t\t\tIngressHttpsNodePort: pulumi.Int(30008),\n\t\t\t\t\tKonnectivityServerNodePort: pulumi.Int(30009),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAddonNode: \u0026gkeonprem.VmwareAdminClusterAddonNodeArgs{\n\t\t\t\tAutoResizeConfig: \u0026gkeonprem.VmwareAdminClusterAddonNodeAutoResizeConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAntiAffinityGroups: \u0026gkeonprem.VmwareAdminClusterAntiAffinityGroupsArgs{\n\t\t\t\tAagConfigDisabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tAuthorization: \u0026gkeonprem.VmwareAdminClusterAuthorizationArgs{\n\t\t\t\tViewerUsers: gkeonprem.VmwareAdminClusterAuthorizationViewerUserArray{\n\t\t\t\t\t\u0026gkeonprem.VmwareAdminClusterAuthorizationViewerUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"user1@gmail.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAutoRepairConfig: \u0026gkeonprem.VmwareAdminClusterAutoRepairConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tPlatformConfig: \u0026gkeonprem.VmwareAdminClusterPlatformConfigArgs{\n\t\t\t\tRequiredPlatformVersion: pulumi.String(\"1.31.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.gkeonprem.VmwareAdminCluster;\nimport com.pulumi.gcp.gkeonprem.VmwareAdminClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterVcenterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterNetworkConfigHostConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterNetworkConfigStaticIpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterControlPlaneNodeArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterLoadBalancerManualLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterAddonNodeArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterAddonNodeAutoResizeConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterAntiAffinityGroupsArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterAutoRepairConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterPlatformConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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_full = new VmwareAdminCluster(\"admin-cluster-full\", VmwareAdminClusterArgs.builder()\n .name(\"full\")\n .location(\"us-west1\")\n .description(\"test admin cluster\")\n .bootstrapClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .onPremVersion(\"1.31.0-gke.35\")\n .imageType(\"ubuntu_containerd\")\n .annotations()\n .vcenter(VmwareAdminClusterVcenterArgs.builder()\n .resourcePool(\"test resource pool\")\n .datastore(\"test data store\")\n .datacenter(\"test data center\")\n .cluster(\"test cluster\")\n .folder(\"test folder\")\n .caCertData(\"test ca cert data\")\n .address(\"10.0.0.1\")\n .dataDisk(\"test data disk\")\n .storagePolicyName(\"storage_policy_name\")\n .build())\n .networkConfig(VmwareAdminClusterNetworkConfigArgs.builder()\n .serviceAddressCidrBlocks(\"10.96.0.0/12\")\n .podAddressCidrBlocks(\"192.168.0.0/16\")\n .haControlPlaneConfig(VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs.builder()\n .controlPlaneIpBlock(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs.builder()\n .gateway(\"10.0.0.3\")\n .ips(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs.builder()\n .hostname(\"hostname\")\n .ip(\"10.0.0.4\")\n .build())\n .netmask(\"10.0.0.3/32\")\n .build())\n .build())\n .hostConfig(VmwareAdminClusterNetworkConfigHostConfigArgs.builder()\n .dnsServers(\"10.254.41.1\")\n .ntpServers(\"216.239.35.8\")\n .dnsSearchDomains(\"test-domain\")\n .build())\n .staticIpConfig(VmwareAdminClusterNetworkConfigStaticIpConfigArgs.builder()\n .ipBlocks(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs.builder()\n .gateway(\"10.0.0.1\")\n .ips(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs.builder()\n .hostname(\"hostname\")\n .ip(\"10.0.0.2\")\n .build())\n .netmask(\"10.0.0.3/32\")\n .build())\n .build())\n .vcenterNetwork(\"test-vcenter-network\")\n .build())\n .controlPlaneNode(VmwareAdminClusterControlPlaneNodeArgs.builder()\n .cpus(4)\n .memory(8192)\n .replicas(3)\n .build())\n .loadBalancer(VmwareAdminClusterLoadBalancerArgs.builder()\n .vipConfig(VmwareAdminClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.251.133.5\")\n .addonsVip(\"10.251.135.19\")\n .build())\n .manualLbConfig(VmwareAdminClusterLoadBalancerManualLbConfigArgs.builder()\n .addonsNodePort(30005)\n .controlPlaneNodePort(30006)\n .ingressHttpNodePort(30007)\n .ingressHttpsNodePort(30008)\n .konnectivityServerNodePort(30009)\n .build())\n .build())\n .addonNode(VmwareAdminClusterAddonNodeArgs.builder()\n .autoResizeConfig(VmwareAdminClusterAddonNodeAutoResizeConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .antiAffinityGroups(VmwareAdminClusterAntiAffinityGroupsArgs.builder()\n .aagConfigDisabled(true)\n .build())\n .authorization(VmwareAdminClusterAuthorizationArgs.builder()\n .viewerUsers(VmwareAdminClusterAuthorizationViewerUserArgs.builder()\n .username(\"user1@gmail.com\")\n .build())\n .build())\n .autoRepairConfig(VmwareAdminClusterAutoRepairConfigArgs.builder()\n .enabled(true)\n .build())\n .platformConfig(VmwareAdminClusterPlatformConfigArgs.builder()\n .requiredPlatformVersion(\"1.31.0\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n admin-cluster-full:\n type: gcp:gkeonprem:VmwareAdminCluster\n properties:\n name: full\n location: us-west1\n description: test admin cluster\n bootstrapClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n onPremVersion: 1.31.0-gke.35\n imageType: ubuntu_containerd\n annotations: {}\n vcenter:\n resourcePool: test resource pool\n datastore: test data store\n datacenter: test data center\n cluster: test cluster\n folder: test folder\n caCertData: test ca cert data\n address: 10.0.0.1\n dataDisk: test data disk\n storagePolicyName: storage_policy_name\n networkConfig:\n serviceAddressCidrBlocks:\n - 10.96.0.0/12\n podAddressCidrBlocks:\n - 192.168.0.0/16\n haControlPlaneConfig:\n controlPlaneIpBlock:\n gateway: 10.0.0.3\n ips:\n - hostname: hostname\n ip: 10.0.0.4\n netmask: 10.0.0.3/32\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 - gateway: 10.0.0.1\n ips:\n - hostname: hostname\n ip: 10.0.0.2\n netmask: 10.0.0.3/32\n vcenterNetwork: test-vcenter-network\n controlPlaneNode:\n cpus: 4\n memory: 8192\n replicas: 3\n loadBalancer:\n vipConfig:\n controlPlaneVip: 10.251.133.5\n addonsVip: 10.251.135.19\n manualLbConfig:\n addonsNodePort: 30005\n controlPlaneNodePort: 30006\n ingressHttpNodePort: 30007\n ingressHttpsNodePort: 30008\n konnectivityServerNodePort: 30009\n addonNode:\n autoResizeConfig:\n enabled: true\n antiAffinityGroups:\n aagConfigDisabled: true\n authorization:\n viewerUsers:\n - username: user1@gmail.com\n autoRepairConfig:\n enabled: true\n platformConfig:\n requiredPlatformVersion: 1.31.0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Vmware Admin Cluster Metallb\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_metallb = new gcp.gkeonprem.VmwareAdminCluster(\"admin-cluster-metallb\", {\n name: \"metallb\",\n location: \"us-west1\",\n description: \"test admin cluster\",\n bootstrapClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n onPremVersion: \"1.31.0-gke.35\",\n imageType: \"ubuntu_containerd\",\n vcenter: {\n resourcePool: \"test resource pool\",\n datastore: \"test data store\",\n datacenter: \"test data center\",\n cluster: \"test cluster\",\n folder: \"test folder\",\n caCertData: \"test ca cert data\",\n address: \"10.0.0.1\",\n dataDisk: \"test data disk\",\n },\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 },\n loadBalancer: {\n vipConfig: {\n controlPlaneVip: \"10.251.133.5\",\n addonsVip: \"10.251.135.19\",\n },\n metalLbConfig: {\n enabled: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin_cluster_metallb = gcp.gkeonprem.VmwareAdminCluster(\"admin-cluster-metallb\",\n name=\"metallb\",\n location=\"us-west1\",\n description=\"test admin cluster\",\n bootstrap_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n on_prem_version=\"1.31.0-gke.35\",\n image_type=\"ubuntu_containerd\",\n vcenter={\n \"resource_pool\": \"test resource pool\",\n \"datastore\": \"test data store\",\n \"datacenter\": \"test data center\",\n \"cluster\": \"test cluster\",\n \"folder\": \"test folder\",\n \"ca_cert_data\": \"test ca cert data\",\n \"address\": \"10.0.0.1\",\n \"data_disk\": \"test data disk\",\n },\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 },\n load_balancer={\n \"vip_config\": {\n \"control_plane_vip\": \"10.251.133.5\",\n \"addons_vip\": \"10.251.135.19\",\n },\n \"metal_lb_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 admin_cluster_metallb = new Gcp.GkeOnPrem.VmwareAdminCluster(\"admin-cluster-metallb\", new()\n {\n Name = \"metallb\",\n Location = \"us-west1\",\n Description = \"test admin cluster\",\n BootstrapClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n OnPremVersion = \"1.31.0-gke.35\",\n ImageType = \"ubuntu_containerd\",\n Vcenter = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterVcenterArgs\n {\n ResourcePool = \"test resource pool\",\n Datastore = \"test data store\",\n Datacenter = \"test data center\",\n Cluster = \"test cluster\",\n Folder = \"test folder\",\n CaCertData = \"test ca cert data\",\n Address = \"10.0.0.1\",\n DataDisk = \"test data disk\",\n },\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterNetworkConfigArgs\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.VmwareAdminClusterNetworkConfigDhcpIpConfigArgs\n {\n Enabled = true,\n },\n },\n ControlPlaneNode = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterControlPlaneNodeArgs\n {\n Cpus = 4,\n Memory = 8192,\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterLoadBalancerArgs\n {\n VipConfig = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.251.133.5\",\n AddonsVip = \"10.251.135.19\",\n },\n MetalLbConfig = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterLoadBalancerMetalLbConfigArgs\n {\n Enabled = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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.NewVmwareAdminCluster(ctx, \"admin-cluster-metallb\", \u0026gkeonprem.VmwareAdminClusterArgs{\n\t\t\tName: pulumi.String(\"metallb\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tDescription: pulumi.String(\"test admin cluster\"),\n\t\t\tBootstrapClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tOnPremVersion: pulumi.String(\"1.31.0-gke.35\"),\n\t\t\tImageType: pulumi.String(\"ubuntu_containerd\"),\n\t\t\tVcenter: \u0026gkeonprem.VmwareAdminClusterVcenterArgs{\n\t\t\t\tResourcePool: pulumi.String(\"test resource pool\"),\n\t\t\t\tDatastore: pulumi.String(\"test data store\"),\n\t\t\t\tDatacenter: pulumi.String(\"test data center\"),\n\t\t\t\tCluster: pulumi.String(\"test cluster\"),\n\t\t\t\tFolder: pulumi.String(\"test folder\"),\n\t\t\t\tCaCertData: pulumi.String(\"test ca cert data\"),\n\t\t\t\tAddress: pulumi.String(\"10.0.0.1\"),\n\t\t\t\tDataDisk: pulumi.String(\"test data disk\"),\n\t\t\t},\n\t\t\tNetworkConfig: \u0026gkeonprem.VmwareAdminClusterNetworkConfigArgs{\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.VmwareAdminClusterNetworkConfigDhcpIpConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlaneNode: \u0026gkeonprem.VmwareAdminClusterControlPlaneNodeArgs{\n\t\t\t\tCpus: pulumi.Int(4),\n\t\t\t\tMemory: pulumi.Int(8192),\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.VmwareAdminClusterLoadBalancerArgs{\n\t\t\t\tVipConfig: \u0026gkeonprem.VmwareAdminClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.251.133.5\"),\n\t\t\t\t\tAddonsVip: pulumi.String(\"10.251.135.19\"),\n\t\t\t\t},\n\t\t\t\tMetalLbConfig: \u0026gkeonprem.VmwareAdminClusterLoadBalancerMetalLbConfigArgs{\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.gkeonprem.VmwareAdminCluster;\nimport com.pulumi.gcp.gkeonprem.VmwareAdminClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterVcenterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterNetworkConfigDhcpIpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterControlPlaneNodeArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterLoadBalancerMetalLbConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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_metallb = new VmwareAdminCluster(\"admin-cluster-metallb\", VmwareAdminClusterArgs.builder()\n .name(\"metallb\")\n .location(\"us-west1\")\n .description(\"test admin cluster\")\n .bootstrapClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .onPremVersion(\"1.31.0-gke.35\")\n .imageType(\"ubuntu_containerd\")\n .vcenter(VmwareAdminClusterVcenterArgs.builder()\n .resourcePool(\"test resource pool\")\n .datastore(\"test data store\")\n .datacenter(\"test data center\")\n .cluster(\"test cluster\")\n .folder(\"test folder\")\n .caCertData(\"test ca cert data\")\n .address(\"10.0.0.1\")\n .dataDisk(\"test data disk\")\n .build())\n .networkConfig(VmwareAdminClusterNetworkConfigArgs.builder()\n .serviceAddressCidrBlocks(\"10.96.0.0/12\")\n .podAddressCidrBlocks(\"192.168.0.0/16\")\n .dhcpIpConfig(VmwareAdminClusterNetworkConfigDhcpIpConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .controlPlaneNode(VmwareAdminClusterControlPlaneNodeArgs.builder()\n .cpus(4)\n .memory(8192)\n .build())\n .loadBalancer(VmwareAdminClusterLoadBalancerArgs.builder()\n .vipConfig(VmwareAdminClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.251.133.5\")\n .addonsVip(\"10.251.135.19\")\n .build())\n .metalLbConfig(VmwareAdminClusterLoadBalancerMetalLbConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n admin-cluster-metallb:\n type: gcp:gkeonprem:VmwareAdminCluster\n properties:\n name: metallb\n location: us-west1\n description: test admin cluster\n bootstrapClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n onPremVersion: 1.31.0-gke.35\n imageType: ubuntu_containerd\n vcenter:\n resourcePool: test resource pool\n datastore: test data store\n datacenter: test data center\n cluster: test cluster\n folder: test folder\n caCertData: test ca cert data\n address: 10.0.0.1\n dataDisk: test data disk\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 loadBalancer:\n vipConfig:\n controlPlaneVip: 10.251.133.5\n addonsVip: 10.251.135.19\n metalLbConfig:\n enabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVmwareAdminCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/vmwareAdminClusters/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, VmwareAdminCluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster default projects/{{project}}/locations/{{location}}/vmwareAdminClusters/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster default {{location}}/{{name}}\n```\n\n",
+ "properties": {
+ "addonNode": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterAddonNode:VmwareAdminClusterAddonNode",
+ "description": "The VMware admin cluster addon node configuration.\n"
+ },
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size\nof all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required),\nseparated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with\nalphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is\nnon-authoritative, and will only manage the annotations present in your configuration. Please refer to the field\n'effective_annotations' for all of the annotations present on the resource.\n"
+ },
+ "antiAffinityGroups": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterAntiAffinityGroups:VmwareAdminClusterAntiAffinityGroups",
+ "description": "AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter.\n"
+ },
+ "authorization": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterAuthorization:VmwareAdminClusterAuthorization",
+ "description": "The VMware admin cluster authorization configuration.\n"
+ },
+ "autoRepairConfig": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterAutoRepairConfig:VmwareAdminClusterAutoRepairConfig",
+ "description": "Configuration for auto repairing.\n"
+ },
+ "bootstrapClusterMembership": {
+ "type": "string",
+ "description": "The bootstrap cluster this VMware admin cluster belongs to.\n"
+ },
+ "controlPlaneNode": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterControlPlaneNode:VmwareAdminClusterControlPlaneNode",
+ "description": "The VMware admin cluster control plane node configuration.\n"
+ },
+ "createTime": {
+ "type": "string",
+ "description": "The time the cluster was created, in RFC3339 text format.\n"
+ },
+ "description": {
+ "type": "string",
+ "description": "A human readable description of this VMware admin cluster.\n"
+ },
+ "effectiveAnnotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "endpoint": {
+ "type": "string",
+ "description": "The DNS name of VMware admin cluster's API server.\n"
+ },
+ "etag": {
+ "type": "string",
+ "description": "This checksum is computed by the server based on the value of other\nfields, and may be sent on update and delete requests to ensure the\nclient has an up-to-date value before proceeding.\nAllows clients to perform consistent read-modify-writes\nthrough optimistic concurrency control.\n"
+ },
+ "fleets": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterFleet:VmwareAdminClusterFleet"
+ },
+ "description": "Fleet configuration for the cluster.\nStructure is documented below.\n"
+ },
+ "imageType": {
+ "type": "string",
+ "description": "The OS image type for the VMware admin cluster.\n"
+ },
+ "loadBalancer": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterLoadBalancer:VmwareAdminClusterLoadBalancer",
+ "description": "Specifies the load balancer configuration for VMware admin cluster.\n"
+ },
+ "localName": {
+ "type": "string",
+ "description": "The object name of the VMwareAdminCluster custom resource on the\nassociated admin cluster. This field is used to support conflicting\nnames when enrolling existing clusters to the API. When used as a part of\ncluster enrollment, this field will differ from the ID in the resource\nname. For new clusters, this field will match the user provided cluster ID\nand be visible in the last component of the resource name. It is not\nmodifiable.\nAll users should use this name to access their cluster using gkectl or\nkubectl and should expect to see the local name when viewing admin\ncluster controller logs.\n"
+ },
+ "location": {
+ "type": "string",
+ "description": "The location of the resource.\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "The VMware admin cluster resource name.\n"
+ },
+ "networkConfig": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterNetworkConfig:VmwareAdminClusterNetworkConfig",
+ "description": "The VMware admin cluster network configuration.\nStructure is documented below.\n"
+ },
+ "onPremVersion": {
+ "type": "string",
+ "description": "The Anthos clusters on the VMware version for the admin cluster.\n"
+ },
+ "platformConfig": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterPlatformConfig:VmwareAdminClusterPlatformConfig",
+ "description": "The VMware platform configuration.\n"
+ },
+ "project": {
+ "type": "string"
+ },
+ "reconciling": {
+ "type": "boolean",
+ "description": "If set, there are currently changes in flight to the VMware admin cluster.\n"
+ },
+ "state": {
+ "type": "string",
+ "description": "(Output)\nThe lifecycle state of the condition.\n"
+ },
+ "statuses": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterStatus:VmwareAdminClusterStatus"
+ },
+ "description": "ResourceStatus representing detailed cluster state.\nStructure is documented below.\n"
+ },
+ "uid": {
+ "type": "string",
+ "description": "The unique identifier of the VMware Admin Cluster.\n"
+ },
+ "updateTime": {
+ "type": "string",
+ "description": "The time the cluster was last updated, in RFC3339 text format.\n"
+ },
+ "vcenter": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterVcenter:VmwareAdminClusterVcenter",
+ "description": "Specifies vCenter config for the admin cluster.\n"
+ }
+ },
+ "required": [
+ "addonNode",
+ "annotations",
+ "antiAffinityGroups",
+ "autoRepairConfig",
+ "bootstrapClusterMembership",
+ "createTime",
+ "description",
+ "effectiveAnnotations",
+ "endpoint",
+ "etag",
+ "fleets",
+ "imageType",
+ "localName",
+ "location",
+ "name",
+ "networkConfig",
+ "project",
+ "reconciling",
+ "state",
+ "statuses",
+ "uid",
+ "updateTime"
+ ],
+ "inputProperties": {
+ "addonNode": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterAddonNode:VmwareAdminClusterAddonNode",
+ "description": "The VMware admin cluster addon node configuration.\n"
+ },
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size\nof all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required),\nseparated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with\nalphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is\nnon-authoritative, and will only manage the annotations present in your configuration. Please refer to the field\n'effective_annotations' for all of the annotations present on the resource.\n"
+ },
+ "antiAffinityGroups": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterAntiAffinityGroups:VmwareAdminClusterAntiAffinityGroups",
+ "description": "AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter.\n"
+ },
+ "authorization": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterAuthorization:VmwareAdminClusterAuthorization",
+ "description": "The VMware admin cluster authorization configuration.\n"
+ },
+ "autoRepairConfig": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterAutoRepairConfig:VmwareAdminClusterAutoRepairConfig",
+ "description": "Configuration for auto repairing.\n"
+ },
+ "bootstrapClusterMembership": {
+ "type": "string",
+ "description": "The bootstrap cluster this VMware admin cluster belongs to.\n"
+ },
+ "controlPlaneNode": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterControlPlaneNode:VmwareAdminClusterControlPlaneNode",
+ "description": "The VMware admin cluster control plane node configuration.\n"
+ },
+ "description": {
+ "type": "string",
+ "description": "A human readable description of this VMware admin cluster.\n"
+ },
+ "imageType": {
+ "type": "string",
+ "description": "The OS image type for the VMware admin cluster.\n"
+ },
+ "loadBalancer": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterLoadBalancer:VmwareAdminClusterLoadBalancer",
+ "description": "Specifies the load balancer configuration for VMware admin cluster.\n"
+ },
+ "location": {
+ "type": "string",
+ "description": "The location of the resource.\n",
+ "willReplaceOnChanges": true
+ },
+ "name": {
+ "type": "string",
+ "description": "The VMware admin cluster resource name.\n",
+ "willReplaceOnChanges": true
+ },
+ "networkConfig": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterNetworkConfig:VmwareAdminClusterNetworkConfig",
+ "description": "The VMware admin cluster network configuration.\nStructure is documented below.\n"
+ },
+ "onPremVersion": {
+ "type": "string",
+ "description": "The Anthos clusters on the VMware version for the admin cluster.\n"
+ },
+ "platformConfig": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterPlatformConfig:VmwareAdminClusterPlatformConfig",
+ "description": "The VMware platform configuration.\n"
+ },
+ "project": {
+ "type": "string",
+ "willReplaceOnChanges": true
+ },
+ "vcenter": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterVcenter:VmwareAdminClusterVcenter",
+ "description": "Specifies vCenter config for the admin cluster.\n"
+ }
+ },
+ "requiredInputs": [
+ "location",
+ "networkConfig"
+ ],
+ "stateInputs": {
+ "description": "Input properties used for looking up and filtering VmwareAdminCluster resources.\n",
+ "properties": {
+ "addonNode": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterAddonNode:VmwareAdminClusterAddonNode",
+ "description": "The VMware admin cluster addon node configuration.\n"
+ },
+ "annotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size\nof all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required),\nseparated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with\nalphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is\nnon-authoritative, and will only manage the annotations present in your configuration. Please refer to the field\n'effective_annotations' for all of the annotations present on the resource.\n"
+ },
+ "antiAffinityGroups": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterAntiAffinityGroups:VmwareAdminClusterAntiAffinityGroups",
+ "description": "AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter.\n"
+ },
+ "authorization": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterAuthorization:VmwareAdminClusterAuthorization",
+ "description": "The VMware admin cluster authorization configuration.\n"
+ },
+ "autoRepairConfig": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterAutoRepairConfig:VmwareAdminClusterAutoRepairConfig",
+ "description": "Configuration for auto repairing.\n"
+ },
+ "bootstrapClusterMembership": {
+ "type": "string",
+ "description": "The bootstrap cluster this VMware admin cluster belongs to.\n"
+ },
+ "controlPlaneNode": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterControlPlaneNode:VmwareAdminClusterControlPlaneNode",
+ "description": "The VMware admin cluster control plane node configuration.\n"
+ },
+ "createTime": {
+ "type": "string",
+ "description": "The time the cluster was created, in RFC3339 text format.\n"
+ },
+ "description": {
+ "type": "string",
+ "description": "A human readable description of this VMware admin cluster.\n"
+ },
+ "effectiveAnnotations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "endpoint": {
+ "type": "string",
+ "description": "The DNS name of VMware admin cluster's API server.\n"
+ },
+ "etag": {
+ "type": "string",
+ "description": "This checksum is computed by the server based on the value of other\nfields, and may be sent on update and delete requests to ensure the\nclient has an up-to-date value before proceeding.\nAllows clients to perform consistent read-modify-writes\nthrough optimistic concurrency control.\n"
+ },
+ "fleets": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterFleet:VmwareAdminClusterFleet"
+ },
+ "description": "Fleet configuration for the cluster.\nStructure is documented below.\n"
+ },
+ "imageType": {
+ "type": "string",
+ "description": "The OS image type for the VMware admin cluster.\n"
+ },
+ "loadBalancer": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterLoadBalancer:VmwareAdminClusterLoadBalancer",
+ "description": "Specifies the load balancer configuration for VMware admin cluster.\n"
+ },
+ "localName": {
+ "type": "string",
+ "description": "The object name of the VMwareAdminCluster custom resource on the\nassociated admin cluster. This field is used to support conflicting\nnames when enrolling existing clusters to the API. When used as a part of\ncluster enrollment, this field will differ from the ID in the resource\nname. For new clusters, this field will match the user provided cluster ID\nand be visible in the last component of the resource name. It is not\nmodifiable.\nAll users should use this name to access their cluster using gkectl or\nkubectl and should expect to see the local name when viewing admin\ncluster controller logs.\n"
+ },
+ "location": {
+ "type": "string",
+ "description": "The location of the resource.\n",
+ "willReplaceOnChanges": true
+ },
+ "name": {
+ "type": "string",
+ "description": "The VMware admin cluster resource name.\n",
+ "willReplaceOnChanges": true
+ },
+ "networkConfig": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterNetworkConfig:VmwareAdminClusterNetworkConfig",
+ "description": "The VMware admin cluster network configuration.\nStructure is documented below.\n"
+ },
+ "onPremVersion": {
+ "type": "string",
+ "description": "The Anthos clusters on the VMware version for the admin cluster.\n"
+ },
+ "platformConfig": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterPlatformConfig:VmwareAdminClusterPlatformConfig",
+ "description": "The VMware platform configuration.\n"
+ },
+ "project": {
+ "type": "string",
+ "willReplaceOnChanges": true
+ },
+ "reconciling": {
+ "type": "boolean",
+ "description": "If set, there are currently changes in flight to the VMware admin cluster.\n"
+ },
+ "state": {
+ "type": "string",
+ "description": "(Output)\nThe lifecycle state of the condition.\n"
+ },
+ "statuses": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterStatus:VmwareAdminClusterStatus"
+ },
+ "description": "ResourceStatus representing detailed cluster state.\nStructure is documented below.\n"
+ },
+ "uid": {
+ "type": "string",
+ "description": "The unique identifier of the VMware Admin Cluster.\n"
+ },
+ "updateTime": {
+ "type": "string",
+ "description": "The time the cluster was last updated, in RFC3339 text format.\n"
+ },
+ "vcenter": {
+ "$ref": "#/types/gcp:gkeonprem/VmwareAdminClusterVcenter:VmwareAdminClusterVcenter",
+ "description": "Specifies vCenter config for the admin cluster.\n"
+ }
+ },
+ "type": "object"
+ }
+ },
"gcp:healthcare/consentStore:ConsentStore": {
"description": "The Consent Management API is a tool for tracking user consents and the documentation associated with the consents.\n\n\nTo get more information about ConsentStore, see:\n\n* [API documentation](https://cloud.google.com/healthcare/docs/reference/rest/v1/projects.locations.datasets.consentStores)\n* How-to Guides\n * [Creating a Consent store](https://cloud.google.com/healthcare/docs/how-tos/consent)\n\n## Example Usage\n\n### Healthcare Consent 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 dataset = new gcp.healthcare.Dataset(\"dataset\", {\n location: \"us-central1\",\n name: \"my-dataset\",\n});\nconst my_consent = new gcp.healthcare.ConsentStore(\"my-consent\", {\n dataset: dataset.id,\n name: \"my-consent-store\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndataset = gcp.healthcare.Dataset(\"dataset\",\n location=\"us-central1\",\n name=\"my-dataset\")\nmy_consent = gcp.healthcare.ConsentStore(\"my-consent\",\n dataset=dataset.id,\n name=\"my-consent-store\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Location = \"us-central1\",\n Name = \"my-dataset\",\n });\n\n var my_consent = new Gcp.Healthcare.ConsentStore(\"my-consent\", new()\n {\n Dataset = dataset.Id,\n Name = \"my-consent-store\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = healthcare.NewConsentStore(ctx, \"my-consent\", \u0026healthcare.ConsentStoreArgs{\n\t\t\tDataset: dataset.ID(),\n\t\t\tName: pulumi.String(\"my-consent-store\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.ConsentStore;\nimport com.pulumi.gcp.healthcare.ConsentStoreArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .location(\"us-central1\")\n .name(\"my-dataset\")\n .build());\n\n var my_consent = new ConsentStore(\"my-consent\", ConsentStoreArgs.builder()\n .dataset(dataset.id())\n .name(\"my-consent-store\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n location: us-central1\n name: my-dataset\n my-consent:\n type: gcp:healthcare:ConsentStore\n properties:\n dataset: ${dataset.id}\n name: my-consent-store\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Healthcare Consent Store Full\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 location: \"us-central1\",\n name: \"my-dataset\",\n});\nconst my_consent = new gcp.healthcare.ConsentStore(\"my-consent\", {\n dataset: dataset.id,\n name: \"my-consent-store\",\n enableConsentCreateOnUpdate: true,\n defaultConsentTtl: \"90000s\",\n labels: {\n label1: \"labelvalue1\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndataset = gcp.healthcare.Dataset(\"dataset\",\n location=\"us-central1\",\n name=\"my-dataset\")\nmy_consent = gcp.healthcare.ConsentStore(\"my-consent\",\n dataset=dataset.id,\n name=\"my-consent-store\",\n enable_consent_create_on_update=True,\n default_consent_ttl=\"90000s\",\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 dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Location = \"us-central1\",\n Name = \"my-dataset\",\n });\n\n var my_consent = new Gcp.Healthcare.ConsentStore(\"my-consent\", new()\n {\n Dataset = dataset.Id,\n Name = \"my-consent-store\",\n EnableConsentCreateOnUpdate = true,\n DefaultConsentTtl = \"90000s\",\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/v8/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\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = healthcare.NewConsentStore(ctx, \"my-consent\", \u0026healthcare.ConsentStoreArgs{\n\t\t\tDataset: dataset.ID(),\n\t\t\tName: pulumi.String(\"my-consent-store\"),\n\t\t\tEnableConsentCreateOnUpdate: pulumi.Bool(true),\n\t\t\tDefaultConsentTtl: pulumi.String(\"90000s\"),\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.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\nimport com.pulumi.gcp.healthcare.ConsentStore;\nimport com.pulumi.gcp.healthcare.ConsentStoreArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .location(\"us-central1\")\n .name(\"my-dataset\")\n .build());\n\n var my_consent = new ConsentStore(\"my-consent\", ConsentStoreArgs.builder()\n .dataset(dataset.id())\n .name(\"my-consent-store\")\n .enableConsentCreateOnUpdate(true)\n .defaultConsentTtl(\"90000s\")\n .labels(Map.of(\"label1\", \"labelvalue1\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n location: us-central1\n name: my-dataset\n my-consent:\n type: gcp:healthcare:ConsentStore\n properties:\n dataset: ${dataset.id}\n name: my-consent-store\n enableConsentCreateOnUpdate: true\n defaultConsentTtl: 90000s\n labels:\n label1: labelvalue1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Healthcare Consent Store Iam\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 location: \"us-central1\",\n name: \"my-dataset\",\n});\nconst my_consent = new gcp.healthcare.ConsentStore(\"my-consent\", {\n dataset: dataset.id,\n name: \"my-consent-store\",\n});\nconst test_account = new gcp.serviceaccount.Account(\"test-account\", {\n accountId: \"my-account\",\n displayName: \"Test Service Account\",\n});\nconst test_iam = new gcp.healthcare.ConsentStoreIamMember(\"test-iam\", {\n dataset: dataset.id,\n consentStoreId: my_consent.name,\n role: \"roles/editor\",\n member: pulumi.interpolate`serviceAccount:${test_account.email}`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndataset = gcp.healthcare.Dataset(\"dataset\",\n location=\"us-central1\",\n name=\"my-dataset\")\nmy_consent = gcp.healthcare.ConsentStore(\"my-consent\",\n dataset=dataset.id,\n name=\"my-consent-store\")\ntest_account = gcp.serviceaccount.Account(\"test-account\",\n account_id=\"my-account\",\n display_name=\"Test Service Account\")\ntest_iam = gcp.healthcare.ConsentStoreIamMember(\"test-iam\",\n dataset=dataset.id,\n consent_store_id=my_consent.name,\n role=\"roles/editor\",\n member=test_account.email.apply(lambda email: f\"serviceAccount:{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.Healthcare.Dataset(\"dataset\", new()\n {\n Location = \"us-central1\",\n Name = \"my-dataset\",\n });\n\n var my_consent = new Gcp.Healthcare.ConsentStore(\"my-consent\", new()\n {\n Dataset = dataset.Id,\n Name = \"my-consent-store\",\n });\n\n var test_account = new Gcp.ServiceAccount.Account(\"test-account\", new()\n {\n AccountId = \"my-account\",\n DisplayName = \"Test Service Account\",\n });\n\n var test_iam = new Gcp.Healthcare.ConsentStoreIamMember(\"test-iam\", new()\n {\n Dataset = dataset.Id,\n ConsentStoreId = my_consent.Name,\n Role = \"roles/editor\",\n Member = test_account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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 := healthcare.NewDataset(ctx, \"dataset\", \u0026healthcare.DatasetArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = healthcare.NewConsentStore(ctx, \"my-consent\", \u0026healthcare.ConsentStoreArgs{\n\t\t\tDataset: dataset.ID(),\n\t\t\tName: pulumi.String(\"my-consent-store\"),\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(\"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 = healthcare.NewConsentStoreIamMember(ctx, \"test-iam\", \u0026healthcare.ConsentStoreIamMemberArgs{\n\t\t\tDataset: dataset.ID(),\n\t\t\tConsentStoreId: my_consent.Name,\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: test_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\treturn nil\n\t})\n}\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.ConsentStore;\nimport com.pulumi.gcp.healthcare.ConsentStoreArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.healthcare.ConsentStoreIamMember;\nimport com.pulumi.gcp.healthcare.ConsentStoreIamMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .location(\"us-central1\")\n .name(\"my-dataset\")\n .build());\n\n var my_consent = new ConsentStore(\"my-consent\", ConsentStoreArgs.builder()\n .dataset(dataset.id())\n .name(\"my-consent-store\")\n .build());\n\n var test_account = new Account(\"test-account\", AccountArgs.builder()\n .accountId(\"my-account\")\n .displayName(\"Test Service Account\")\n .build());\n\n var test_iam = new ConsentStoreIamMember(\"test-iam\", ConsentStoreIamMemberArgs.builder()\n .dataset(dataset.id())\n .consentStoreId(my_consent.name())\n .role(\"roles/editor\")\n .member(test_account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n location: us-central1\n name: my-dataset\n my-consent:\n type: gcp:healthcare:ConsentStore\n properties:\n dataset: ${dataset.id}\n name: my-consent-store\n test-account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-account\n displayName: Test Service Account\n test-iam:\n type: gcp:healthcare:ConsentStoreIamMember\n properties:\n dataset: ${dataset.id}\n consentStoreId: ${[\"my-consent\"].name}\n role: roles/editor\n member: serviceAccount:${[\"test-account\"].email}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConsentStore can be imported using any of these accepted formats:\n\n* `{{dataset}}/consentStores/{{name}}`\n\nWhen using the `pulumi import` command, ConsentStore can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:healthcare/consentStore:ConsentStore default {{dataset}}/consentStores/{{name}}\n```\n\n",
"properties": {
@@ -231455,7 +234157,7 @@
},
"description": {
"type": "string",
- "description": "An arbitrary description for the Conection.\n"
+ "description": "An arbitrary description for the Connection.\n"
},
"destinationConfigs": {
"type": "array",
@@ -231595,7 +234297,7 @@
},
"description": {
"type": "string",
- "description": "An arbitrary description for the Conection.\n"
+ "description": "An arbitrary description for the Connection.\n"
},
"destinationConfigs": {
"type": "array",
@@ -231702,7 +234404,7 @@
},
"description": {
"type": "string",
- "description": "An arbitrary description for the Conection.\n"
+ "description": "An arbitrary description for the Connection.\n"
},
"destinationConfigs": {
"type": "array",
@@ -240740,7 +243442,7 @@
}
},
"gcp:netapp/kmsconfig:Kmsconfig": {
- "description": "NetApp Volumes always encrypts your data at rest using volume-specific keys.\n\nA CMEK policy (customer-managed encryption key) warps such volume-specific keys in a key stored in Cloud Key Management Service (KMS).\n\n\nTo get more information about kmsconfig, see:\n\n* [API documentation](https://cloud.google.com/netapp/volumes/docs/reference/rest/v1/projects.locations.kmsConfigs)\n* How-to Guides\n * [Documentation](https://cloud.google.com/netapp/volumes/docs/configure-and-use/cmek/cmek-overview)\n\n## Example Usage\n\n### Kms Config Create\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: \"key-ring\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"crypto-name\",\n keyRing: keyring.id,\n});\nconst kmsConfig = new gcp.netapp.Kmsconfig(\"kmsConfig\", {\n name: \"kms-test\",\n description: \"this is a test description\",\n cryptoKeyName: cryptoKey.id,\n location: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkeyring = gcp.kms.KeyRing(\"keyring\",\n name=\"key-ring\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"crypto-name\",\n key_ring=keyring.id)\nkms_config = gcp.netapp.Kmsconfig(\"kmsConfig\",\n name=\"kms-test\",\n description=\"this is a test description\",\n crypto_key_name=crypto_key.id,\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 keyring = new Gcp.Kms.KeyRing(\"keyring\", new()\n {\n Name = \"key-ring\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"crypto-name\",\n KeyRing = keyring.Id,\n });\n\n var kmsConfig = new Gcp.Netapp.Kmsconfig(\"kmsConfig\", new()\n {\n Name = \"kms-test\",\n Description = \"this is a test description\",\n CryptoKeyName = cryptoKey.Id,\n Location = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tkeyring, err := kms.NewKeyRing(ctx, \"keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"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\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"crypto-name\"),\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 = netapp.NewKmsconfig(ctx, \"kmsConfig\", \u0026netapp.KmsconfigArgs{\n\t\t\tName: pulumi.String(\"kms-test\"),\n\t\t\tDescription: pulumi.String(\"this is a test description\"),\n\t\t\tCryptoKeyName: cryptoKey.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\treturn nil\n\t})\n}\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.netapp.Kmsconfig;\nimport com.pulumi.gcp.netapp.KmsconfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"crypto-name\")\n .keyRing(keyring.id())\n .build());\n\n var kmsConfig = new Kmsconfig(\"kmsConfig\", KmsconfigArgs.builder()\n .name(\"kms-test\")\n .description(\"this is a test description\")\n .cryptoKeyName(cryptoKey.id())\n .location(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n keyring:\n type: gcp:kms:KeyRing\n properties:\n name: key-ring\n location: us-central1\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: crypto-name\n keyRing: ${keyring.id}\n kmsConfig:\n type: gcp:netapp:Kmsconfig\n properties:\n name: kms-test\n description: this is a test description\n cryptoKeyName: ${cryptoKey.id}\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nkmsconfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/kmsConfigs/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, kmsconfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:netapp/kmsconfig:Kmsconfig default projects/{{project}}/locations/{{location}}/kmsConfigs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/kmsconfig:Kmsconfig default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/kmsconfig:Kmsconfig default {{location}}/{{name}}\n```\n\n",
+ "description": "NetApp Volumes always encrypts your data at rest using volume-specific keys.\n\nA CMEK policy (customer-managed encryption key) warps such volume-specific keys in a key stored in Cloud Key Management Service (KMS).\n\n\nTo get more information about kmsconfig, see:\n\n* [API documentation](https://cloud.google.com/netapp/volumes/docs/reference/rest/v1/projects.locations.kmsConfigs)\n* How-to Guides\n * [Documentation](https://cloud.google.com/netapp/volumes/docs/configure-and-use/cmek/cmek-overview)\n\n## Example Usage\n\n### Kms Config Create\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst kmsConfig = new gcp.netapp.Kmsconfig(\"kmsConfig\", {\n name: \"kms-test\",\n description: \"this is a test description\",\n cryptoKeyName: \"crypto-name\",\n location: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkms_config = gcp.netapp.Kmsconfig(\"kmsConfig\",\n name=\"kms-test\",\n description=\"this is a test description\",\n crypto_key_name=\"crypto-name\",\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 kmsConfig = new Gcp.Netapp.Kmsconfig(\"kmsConfig\", new()\n {\n Name = \"kms-test\",\n Description = \"this is a test description\",\n CryptoKeyName = \"crypto-name\",\n Location = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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_, err := netapp.NewKmsconfig(ctx, \"kmsConfig\", \u0026netapp.KmsconfigArgs{\n\t\t\tName: pulumi.String(\"kms-test\"),\n\t\t\tDescription: pulumi.String(\"this is a test description\"),\n\t\t\tCryptoKeyName: pulumi.String(\"crypto-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\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.netapp.Kmsconfig;\nimport com.pulumi.gcp.netapp.KmsconfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var kmsConfig = new Kmsconfig(\"kmsConfig\", KmsconfigArgs.builder()\n .name(\"kms-test\")\n .description(\"this is a test description\")\n .cryptoKeyName(\"crypto-name\")\n .location(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n kmsConfig:\n type: gcp:netapp:Kmsconfig\n properties:\n name: kms-test\n description: this is a test description\n cryptoKeyName: crypto-name\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nkmsconfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/kmsConfigs/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, kmsconfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:netapp/kmsconfig:Kmsconfig default projects/{{project}}/locations/{{location}}/kmsConfigs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/kmsconfig:Kmsconfig default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/kmsconfig:Kmsconfig default {{location}}/{{name}}\n```\n\n",
"properties": {
"cryptoKeyName": {
"type": "string",
@@ -242370,7 +245072,7 @@
}
},
"gcp:networkconnectivity/hub:Hub": {
- "description": "The NetworkConnectivity Hub resource\n\n\nTo get more information about Hub, see:\n\n* [API documentation](https://cloud.google.com/network-connectivity/docs/reference/networkconnectivity/rest/v1beta/projects.locations.global.hubs)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/network-connectivity/docs/network-connectivity-center/concepts/overview)\n\n## Example Usage\n\n### Network Connectivity Hub 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.networkconnectivity.Hub(\"primary\", {\n name: \"basic\",\n description: \"A sample hub\",\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.networkconnectivity.Hub(\"primary\",\n name=\"basic\",\n description=\"A sample hub\",\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.NetworkConnectivity.Hub(\"primary\", new()\n {\n Name = \"basic\",\n Description = \"A sample hub\",\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/v8/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\t_, err := networkconnectivity.NewHub(ctx, \"primary\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"basic\"),\n\t\t\tDescription: pulumi.String(\"A sample hub\"),\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.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 Hub(\"primary\", HubArgs.builder()\n .name(\"basic\")\n .description(\"A sample hub\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:networkconnectivity:Hub\n properties:\n name: basic\n description: A sample hub\n labels:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Connectivity Hub With Export Psc\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.networkconnectivity.Hub(\"primary\", {\n name: \"basic\",\n description: \"A sample hub with Private Service Connect transitivity is enabled\",\n exportPsc: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.networkconnectivity.Hub(\"primary\",\n name=\"basic\",\n description=\"A sample hub with Private Service Connect transitivity is enabled\",\n export_psc=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 primary = new Gcp.NetworkConnectivity.Hub(\"primary\", new()\n {\n Name = \"basic\",\n Description = \"A sample hub with Private Service Connect transitivity is enabled\",\n ExportPsc = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\t_, err := networkconnectivity.NewHub(ctx, \"primary\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"basic\"),\n\t\t\tDescription: pulumi.String(\"A sample hub with Private Service Connect transitivity is enabled\"),\n\t\t\tExportPsc: 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.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 Hub(\"primary\", HubArgs.builder()\n .name(\"basic\")\n .description(\"A sample hub with Private Service Connect transitivity is enabled\")\n .exportPsc(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:networkconnectivity:Hub\n properties:\n name: basic\n description: A sample hub with Private Service Connect transitivity is enabled\n exportPsc: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nHub can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/hubs/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Hub can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkconnectivity/hub:Hub default projects/{{project}}/locations/global/hubs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkconnectivity/hub:Hub default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkconnectivity/hub:Hub default {{name}}\n```\n\n",
+ "description": "The NetworkConnectivity Hub resource\n\n\nTo get more information about Hub, see:\n\n* [API documentation](https://cloud.google.com/network-connectivity/docs/reference/networkconnectivity/rest/v1beta/projects.locations.global.hubs)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/network-connectivity/docs/network-connectivity-center/concepts/overview)\n\n## Example Usage\n\n### Network Connectivity Hub 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.networkconnectivity.Hub(\"primary\", {\n name: \"basic\",\n description: \"A sample hub\",\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.networkconnectivity.Hub(\"primary\",\n name=\"basic\",\n description=\"A sample hub\",\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.NetworkConnectivity.Hub(\"primary\", new()\n {\n Name = \"basic\",\n Description = \"A sample hub\",\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/v8/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\t_, err := networkconnectivity.NewHub(ctx, \"primary\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"basic\"),\n\t\t\tDescription: pulumi.String(\"A sample hub\"),\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.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 Hub(\"primary\", HubArgs.builder()\n .name(\"basic\")\n .description(\"A sample hub\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:networkconnectivity:Hub\n properties:\n name: basic\n description: A sample hub\n labels:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Connectivity Hub With Export Psc\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.networkconnectivity.Hub(\"primary\", {\n name: \"basic\",\n description: \"A sample hub with Private Service Connect transitivity is enabled\",\n exportPsc: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.networkconnectivity.Hub(\"primary\",\n name=\"basic\",\n description=\"A sample hub with Private Service Connect transitivity is enabled\",\n export_psc=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 primary = new Gcp.NetworkConnectivity.Hub(\"primary\", new()\n {\n Name = \"basic\",\n Description = \"A sample hub with Private Service Connect transitivity is enabled\",\n ExportPsc = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\t_, err := networkconnectivity.NewHub(ctx, \"primary\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"basic\"),\n\t\t\tDescription: pulumi.String(\"A sample hub with Private Service Connect transitivity is enabled\"),\n\t\t\tExportPsc: 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.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 Hub(\"primary\", HubArgs.builder()\n .name(\"basic\")\n .description(\"A sample hub with Private Service Connect transitivity is enabled\")\n .exportPsc(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:networkconnectivity:Hub\n properties:\n name: basic\n description: A sample hub with Private Service Connect transitivity is enabled\n exportPsc: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Connectivity Hub Mesh Topology\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.networkconnectivity.Hub(\"primary\", {\n name: \"mesh\",\n description: \"A sample mesh hub\",\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.networkconnectivity.Hub(\"primary\",\n name=\"mesh\",\n description=\"A sample mesh hub\",\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.NetworkConnectivity.Hub(\"primary\", new()\n {\n Name = \"mesh\",\n Description = \"A sample mesh hub\",\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/v8/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\t_, err := networkconnectivity.NewHub(ctx, \"primary\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"mesh\"),\n\t\t\tDescription: pulumi.String(\"A sample mesh hub\"),\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.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 Hub(\"primary\", HubArgs.builder()\n .name(\"mesh\")\n .description(\"A sample mesh hub\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:networkconnectivity:Hub\n properties:\n name: mesh\n description: A sample mesh hub\n labels:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Connectivity Hub Star Topology\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.networkconnectivity.Hub(\"primary\", {\n name: \"star\",\n description: \"A sample star hub\",\n labels: {\n \"label-one\": \"value-one\",\n },\n presetTopology: \"STAR\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.networkconnectivity.Hub(\"primary\",\n name=\"star\",\n description=\"A sample star hub\",\n labels={\n \"label-one\": \"value-one\",\n },\n preset_topology=\"STAR\")\n```\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.NetworkConnectivity.Hub(\"primary\", new()\n {\n Name = \"star\",\n Description = \"A sample star hub\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n PresetTopology = \"STAR\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\t_, err := networkconnectivity.NewHub(ctx, \"primary\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"star\"),\n\t\t\tDescription: pulumi.String(\"A sample star hub\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tPresetTopology: pulumi.String(\"STAR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 Hub(\"primary\", HubArgs.builder()\n .name(\"star\")\n .description(\"A sample star hub\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .presetTopology(\"STAR\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:networkconnectivity:Hub\n properties:\n name: star\n description: A sample star hub\n labels:\n label-one: value-one\n presetTopology: STAR\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nHub can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/hubs/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Hub can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkconnectivity/hub:Hub default projects/{{project}}/locations/global/hubs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkconnectivity/hub:Hub default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkconnectivity/hub:Hub default {{name}}\n```\n\n",
"properties": {
"createTime": {
"type": "string",
@@ -242403,6 +245105,10 @@
"type": "string",
"description": "Immutable. The name of the hub. Hub names must be unique. They use the following form: `projects/{project_number}/locations/global/hubs/{hub_id}`\n\n\n- - -\n"
},
+ "presetTopology": {
+ "type": "string",
+ "description": "Optional. The topology implemented in this hub. Currently, this field is only used when policyMode = PRESET. The available preset topologies are MESH and STAR. If presetTopology is unspecified and policyMode = PRESET, the presetTopology defaults to MESH. When policyMode = CUSTOM, the presetTopology is set to PRESET_TOPOLOGY_UNSPECIFIED.\nPossible values are: `MESH`, `STAR`.\n"
+ },
"project": {
"type": "string",
"description": "The ID of the project in which the resource belongs.\nIf it is not provided, the provider project is used.\n"
@@ -242440,6 +245146,7 @@
"effectiveLabels",
"exportPsc",
"name",
+ "presetTopology",
"project",
"routingVpcs",
"state",
@@ -242468,6 +245175,11 @@
"description": "Immutable. The name of the hub. Hub names must be unique. They use the following form: `projects/{project_number}/locations/global/hubs/{hub_id}`\n\n\n- - -\n",
"willReplaceOnChanges": true
},
+ "presetTopology": {
+ "type": "string",
+ "description": "Optional. The topology implemented in this hub. Currently, this field is only used when policyMode = PRESET. The available preset topologies are MESH and STAR. If presetTopology is unspecified and policyMode = PRESET, the presetTopology defaults to MESH. When policyMode = CUSTOM, the presetTopology is set to PRESET_TOPOLOGY_UNSPECIFIED.\nPossible values are: `MESH`, `STAR`.\n",
+ "willReplaceOnChanges": true
+ },
"project": {
"type": "string",
"description": "The ID of the project in which the resource belongs.\nIf it is not provided, the provider project is used.\n",
@@ -242509,6 +245221,11 @@
"description": "Immutable. The name of the hub. Hub names must be unique. They use the following form: `projects/{project_number}/locations/global/hubs/{hub_id}`\n\n\n- - -\n",
"willReplaceOnChanges": true
},
+ "presetTopology": {
+ "type": "string",
+ "description": "Optional. The topology implemented in this hub. Currently, this field is only used when policyMode = PRESET. The available preset topologies are MESH and STAR. If presetTopology is unspecified and policyMode = PRESET, the presetTopology defaults to MESH. When policyMode = CUSTOM, the presetTopology is set to PRESET_TOPOLOGY_UNSPECIFIED.\nPossible values are: `MESH`, `STAR`.\n",
+ "willReplaceOnChanges": true
+ },
"project": {
"type": "string",
"description": "The ID of the project in which the resource belongs.\nIf it is not provided, the provider project is used.\n",
@@ -243518,7 +246235,7 @@
}
},
"gcp:networkconnectivity/spoke:Spoke": {
- "description": "The NetworkConnectivity Spoke resource\n\n\nTo get more information about Spoke, see:\n\n* [API documentation](https://cloud.google.com/network-connectivity/docs/reference/networkconnectivity/rest/v1beta/projects.locations.spokes)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/network-connectivity/docs/network-connectivity-center/concepts/overview)\n\n## Example Usage\n\n### Network Connectivity Spoke Linked Vpc Network 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 = new gcp.compute.Network(\"network\", {\n name: \"net\",\n autoCreateSubnetworks: false,\n});\nconst basicHub = new gcp.networkconnectivity.Hub(\"basic_hub\", {\n name: \"hub1\",\n description: \"A sample hub\",\n labels: {\n \"label-two\": \"value-one\",\n },\n});\nconst primary = new gcp.networkconnectivity.Spoke(\"primary\", {\n name: \"spoke1\",\n location: \"global\",\n description: \"A sample spoke with a linked router 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 includeExportRanges: [\n \"198.51.100.0/23\",\n \"10.0.0.0/8\",\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=\"net\",\n auto_create_subnetworks=False)\nbasic_hub = gcp.networkconnectivity.Hub(\"basic_hub\",\n name=\"hub1\",\n description=\"A sample hub\",\n labels={\n \"label-two\": \"value-one\",\n })\nprimary = gcp.networkconnectivity.Spoke(\"primary\",\n name=\"spoke1\",\n location=\"global\",\n description=\"A sample spoke with a linked router 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 \"include_export_ranges\": [\n \"198.51.100.0/23\",\n \"10.0.0.0/8\",\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 = \"net\",\n AutoCreateSubnetworks = false,\n });\n\n var basicHub = new Gcp.NetworkConnectivity.Hub(\"basic_hub\", new()\n {\n Name = \"hub1\",\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 = \"spoke1\",\n Location = \"global\",\n Description = \"A sample spoke with a linked router 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 IncludeExportRanges = new[]\n {\n \"198.51.100.0/23\",\n \"10.0.0.0/8\",\n },\n Uri = network.SelfLink,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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(\"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\tbasicHub, err := networkconnectivity.NewHub(ctx, \"basic_hub\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"hub1\"),\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(\"spoke1\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke with a linked router 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\tIncludeExportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"198.51.100.0/23\"),\n\t\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\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(\"net\")\n .autoCreateSubnetworks(false)\n .build());\n\n var basicHub = new Hub(\"basicHub\", HubArgs.builder()\n .name(\"hub1\")\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(\"spoke1\")\n .location(\"global\")\n .description(\"A sample spoke with a linked router 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 .includeExportRanges( \n \"198.51.100.0/23\",\n \"10.0.0.0/8\")\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: net\n autoCreateSubnetworks: false\n basicHub:\n type: gcp:networkconnectivity:Hub\n name: basic_hub\n properties:\n name: hub1\n description: A sample hub\n labels:\n label-two: value-one\n primary:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: spoke1\n location: global\n description: A sample spoke with a linked router 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 includeExportRanges:\n - 198.51.100.0/23\n - 10.0.0.0/8\n uri: ${network.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Connectivity Spoke Router Appliance 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 = new gcp.compute.Network(\"network\", {\n name: \"tf-test-network_55138\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork = new gcp.compute.Subnetwork(\"subnetwork\", {\n name: \"tf-test-subnet_37559\",\n ipCidrRange: \"10.0.0.0/28\",\n region: \"us-central1\",\n network: network.selfLink,\n});\nconst instance = new gcp.compute.Instance(\"instance\", {\n name: \"tf-test-instance_91980\",\n machineType: \"e2-medium\",\n canIpForward: true,\n zone: \"us-central1-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: \"tf-test-hub_37118\",\n description: \"A sample hub\",\n labels: {\n \"label-two\": \"value-one\",\n },\n});\nconst primary = new gcp.networkconnectivity.Spoke(\"primary\", {\n name: \"tf-test-name_80332\",\n location: \"us-central1\",\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 includeImportRanges: [\"ALL_IPV4_RANGES\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"tf-test-network_55138\",\n auto_create_subnetworks=False)\nsubnetwork = gcp.compute.Subnetwork(\"subnetwork\",\n name=\"tf-test-subnet_37559\",\n ip_cidr_range=\"10.0.0.0/28\",\n region=\"us-central1\",\n network=network.self_link)\ninstance = gcp.compute.Instance(\"instance\",\n name=\"tf-test-instance_91980\",\n machine_type=\"e2-medium\",\n can_ip_forward=True,\n zone=\"us-central1-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=\"tf-test-hub_37118\",\n description=\"A sample hub\",\n labels={\n \"label-two\": \"value-one\",\n })\nprimary = gcp.networkconnectivity.Spoke(\"primary\",\n name=\"tf-test-name_80332\",\n location=\"us-central1\",\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 \"include_import_ranges\": [\"ALL_IPV4_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 network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"tf-test-network_55138\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork = new Gcp.Compute.Subnetwork(\"subnetwork\", new()\n {\n Name = \"tf-test-subnet_37559\",\n IpCidrRange = \"10.0.0.0/28\",\n Region = \"us-central1\",\n Network = network.SelfLink,\n });\n\n var instance = new Gcp.Compute.Instance(\"instance\", new()\n {\n Name = \"tf-test-instance_91980\",\n MachineType = \"e2-medium\",\n CanIpForward = true,\n Zone = \"us-central1-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 = \"tf-test-hub_37118\",\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 = \"tf-test-name_80332\",\n Location = \"us-central1\",\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 IncludeImportRanges = new[]\n {\n \"ALL_IPV4_RANGES\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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(\"tf-test-network_55138\"),\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(\"tf-test-subnet_37559\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/28\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\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(\"tf-test-instance_91980\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tCanIpForward: pulumi.Bool(true),\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(\"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(\"tf-test-hub_37118\"),\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(\"tf-test-name_80332\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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\tIncludeImportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ALL_IPV4_RANGES\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\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(\"tf-test-network_55138\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork = new Subnetwork(\"subnetwork\", SubnetworkArgs.builder()\n .name(\"tf-test-subnet_37559\")\n .ipCidrRange(\"10.0.0.0/28\")\n .region(\"us-central1\")\n .network(network.selfLink())\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .name(\"tf-test-instance_91980\")\n .machineType(\"e2-medium\")\n .canIpForward(true)\n .zone(\"us-central1-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(\"tf-test-hub_37118\")\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(\"tf-test-name_80332\")\n .location(\"us-central1\")\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 .includeImportRanges(\"ALL_IPV4_RANGES\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n name: tf-test-network_55138\n autoCreateSubnetworks: false\n subnetwork:\n type: gcp:compute:Subnetwork\n properties:\n name: tf-test-subnet_37559\n ipCidrRange: 10.0.0.0/28\n region: us-central1\n network: ${network.selfLink}\n instance:\n type: gcp:compute:Instance\n properties:\n name: tf-test-instance_91980\n machineType: e2-medium\n canIpForward: true\n zone: us-central1-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: tf-test-hub_37118\n description: A sample hub\n labels:\n label-two: value-one\n primary:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: tf-test-name_80332\n location: us-central1\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 includeImportRanges:\n - ALL_IPV4_RANGES\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Connectivity Spoke Vpn Tunnel Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicHub = new gcp.networkconnectivity.Hub(\"basic_hub\", {\n name: \"basic-hub1\",\n description: \"A sample hub\",\n labels: {\n \"label-two\": \"value-one\",\n },\n});\nconst network = new gcp.compute.Network(\"network\", {\n name: \"basic-network\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork = new gcp.compute.Subnetwork(\"subnetwork\", {\n name: \"basic-subnetwork\",\n ipCidrRange: \"10.0.0.0/28\",\n region: \"us-central1\",\n network: network.selfLink,\n});\nconst gateway = new gcp.compute.HaVpnGateway(\"gateway\", {\n name: \"vpn-gateway\",\n network: network.id,\n});\nconst externalVpnGw = new gcp.compute.ExternalVpnGateway(\"external_vpn_gw\", {\n name: \"external-vpn-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 router = new gcp.compute.Router(\"router\", {\n name: \"external-vpn-gateway\",\n region: \"us-central1\",\n network: network.name,\n bgp: {\n asn: 64514,\n },\n});\nconst tunnel1 = new gcp.compute.VPNTunnel(\"tunnel1\", {\n name: \"tunnel1\",\n region: \"us-central1\",\n vpnGateway: gateway.id,\n peerExternalGateway: externalVpnGw.id,\n peerExternalGatewayInterface: 0,\n sharedSecret: \"a secret message\",\n router: router.id,\n vpnGatewayInterface: 0,\n});\nconst tunnel2 = new gcp.compute.VPNTunnel(\"tunnel2\", {\n name: \"tunnel2\",\n region: \"us-central1\",\n vpnGateway: gateway.id,\n peerExternalGateway: externalVpnGw.id,\n peerExternalGatewayInterface: 0,\n sharedSecret: \"a secret message\",\n router: pulumi.interpolate` ${router.id}`,\n vpnGatewayInterface: 1,\n});\nconst routerInterface1 = new gcp.compute.RouterInterface(\"router_interface1\", {\n name: \"router-interface1\",\n router: router.name,\n region: \"us-central1\",\n ipRange: \"169.254.0.1/30\",\n vpnTunnel: tunnel1.name,\n});\nconst routerPeer1 = new gcp.compute.RouterPeer(\"router_peer1\", {\n name: \"router-peer1\",\n router: router.name,\n region: \"us-central1\",\n peerIpAddress: \"169.254.0.2\",\n peerAsn: 64515,\n advertisedRoutePriority: 100,\n \"interface\": routerInterface1.name,\n});\nconst routerInterface2 = new gcp.compute.RouterInterface(\"router_interface2\", {\n name: \"router-interface2\",\n router: router.name,\n region: \"us-central1\",\n ipRange: \"169.254.1.1/30\",\n vpnTunnel: tunnel2.name,\n});\nconst routerPeer2 = new gcp.compute.RouterPeer(\"router_peer2\", {\n name: \"router-peer2\",\n router: router.name,\n region: \"us-central1\",\n peerIpAddress: \"169.254.1.2\",\n peerAsn: 64515,\n advertisedRoutePriority: 100,\n \"interface\": routerInterface2.name,\n});\nconst tunnel1Spoke = new gcp.networkconnectivity.Spoke(\"tunnel1\", {\n name: \"vpn-tunnel-1-spoke\",\n location: \"us-central1\",\n description: \"A sample spoke with a linked VPN Tunnel\",\n labels: {\n \"label-one\": \"value-one\",\n },\n hub: basicHub.id,\n linkedVpnTunnels: {\n uris: [tunnel1.selfLink],\n siteToSiteDataTransfer: true,\n includeImportRanges: [\"ALL_IPV4_RANGES\"],\n },\n});\nconst tunnel2Spoke = new gcp.networkconnectivity.Spoke(\"tunnel2\", {\n name: \"vpn-tunnel-2-spoke\",\n location: \"us-central1\",\n description: \"A sample spoke with a linked VPN Tunnel\",\n labels: {\n \"label-one\": \"value-one\",\n },\n hub: basicHub.id,\n linkedVpnTunnels: {\n uris: [tunnel2.selfLink],\n siteToSiteDataTransfer: true,\n includeImportRanges: [\"ALL_IPV4_RANGES\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_hub = gcp.networkconnectivity.Hub(\"basic_hub\",\n name=\"basic-hub1\",\n description=\"A sample hub\",\n labels={\n \"label-two\": \"value-one\",\n })\nnetwork = gcp.compute.Network(\"network\",\n name=\"basic-network\",\n auto_create_subnetworks=False)\nsubnetwork = gcp.compute.Subnetwork(\"subnetwork\",\n name=\"basic-subnetwork\",\n ip_cidr_range=\"10.0.0.0/28\",\n region=\"us-central1\",\n network=network.self_link)\ngateway = gcp.compute.HaVpnGateway(\"gateway\",\n name=\"vpn-gateway\",\n network=network.id)\nexternal_vpn_gw = gcp.compute.ExternalVpnGateway(\"external_vpn_gw\",\n name=\"external-vpn-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 }])\nrouter = gcp.compute.Router(\"router\",\n name=\"external-vpn-gateway\",\n region=\"us-central1\",\n network=network.name,\n bgp={\n \"asn\": 64514,\n })\ntunnel1 = gcp.compute.VPNTunnel(\"tunnel1\",\n name=\"tunnel1\",\n region=\"us-central1\",\n vpn_gateway=gateway.id,\n peer_external_gateway=external_vpn_gw.id,\n peer_external_gateway_interface=0,\n shared_secret=\"a secret message\",\n router=router.id,\n vpn_gateway_interface=0)\ntunnel2 = gcp.compute.VPNTunnel(\"tunnel2\",\n name=\"tunnel2\",\n region=\"us-central1\",\n vpn_gateway=gateway.id,\n peer_external_gateway=external_vpn_gw.id,\n peer_external_gateway_interface=0,\n shared_secret=\"a secret message\",\n router=router.id.apply(lambda id: f\" {id}\"),\n vpn_gateway_interface=1)\nrouter_interface1 = gcp.compute.RouterInterface(\"router_interface1\",\n name=\"router-interface1\",\n router=router.name,\n region=\"us-central1\",\n ip_range=\"169.254.0.1/30\",\n vpn_tunnel=tunnel1.name)\nrouter_peer1 = gcp.compute.RouterPeer(\"router_peer1\",\n name=\"router-peer1\",\n router=router.name,\n region=\"us-central1\",\n peer_ip_address=\"169.254.0.2\",\n peer_asn=64515,\n advertised_route_priority=100,\n interface=router_interface1.name)\nrouter_interface2 = gcp.compute.RouterInterface(\"router_interface2\",\n name=\"router-interface2\",\n router=router.name,\n region=\"us-central1\",\n ip_range=\"169.254.1.1/30\",\n vpn_tunnel=tunnel2.name)\nrouter_peer2 = gcp.compute.RouterPeer(\"router_peer2\",\n name=\"router-peer2\",\n router=router.name,\n region=\"us-central1\",\n peer_ip_address=\"169.254.1.2\",\n peer_asn=64515,\n advertised_route_priority=100,\n interface=router_interface2.name)\ntunnel1_spoke = gcp.networkconnectivity.Spoke(\"tunnel1\",\n name=\"vpn-tunnel-1-spoke\",\n location=\"us-central1\",\n description=\"A sample spoke with a linked VPN Tunnel\",\n labels={\n \"label-one\": \"value-one\",\n },\n hub=basic_hub.id,\n linked_vpn_tunnels={\n \"uris\": [tunnel1.self_link],\n \"site_to_site_data_transfer\": True,\n \"include_import_ranges\": [\"ALL_IPV4_RANGES\"],\n })\ntunnel2_spoke = gcp.networkconnectivity.Spoke(\"tunnel2\",\n name=\"vpn-tunnel-2-spoke\",\n location=\"us-central1\",\n description=\"A sample spoke with a linked VPN Tunnel\",\n labels={\n \"label-one\": \"value-one\",\n },\n hub=basic_hub.id,\n linked_vpn_tunnels={\n \"uris\": [tunnel2.self_link],\n \"site_to_site_data_transfer\": True,\n \"include_import_ranges\": [\"ALL_IPV4_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 basicHub = new Gcp.NetworkConnectivity.Hub(\"basic_hub\", new()\n {\n Name = \"basic-hub1\",\n Description = \"A sample hub\",\n Labels = \n {\n { \"label-two\", \"value-one\" },\n },\n });\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"basic-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork = new Gcp.Compute.Subnetwork(\"subnetwork\", new()\n {\n Name = \"basic-subnetwork\",\n IpCidrRange = \"10.0.0.0/28\",\n Region = \"us-central1\",\n Network = network.SelfLink,\n });\n\n var gateway = new Gcp.Compute.HaVpnGateway(\"gateway\", new()\n {\n Name = \"vpn-gateway\",\n Network = network.Id,\n });\n\n var externalVpnGw = new Gcp.Compute.ExternalVpnGateway(\"external_vpn_gw\", new()\n {\n Name = \"external-vpn-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 router = new Gcp.Compute.Router(\"router\", new()\n {\n Name = \"external-vpn-gateway\",\n Region = \"us-central1\",\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 = \"tunnel1\",\n Region = \"us-central1\",\n VpnGateway = gateway.Id,\n PeerExternalGateway = externalVpnGw.Id,\n PeerExternalGatewayInterface = 0,\n SharedSecret = \"a secret message\",\n Router = router.Id,\n VpnGatewayInterface = 0,\n });\n\n var tunnel2 = new Gcp.Compute.VPNTunnel(\"tunnel2\", new()\n {\n Name = \"tunnel2\",\n Region = \"us-central1\",\n VpnGateway = gateway.Id,\n PeerExternalGateway = externalVpnGw.Id,\n PeerExternalGatewayInterface = 0,\n SharedSecret = \"a secret message\",\n Router = router.Id.Apply(id =\u003e $\" {id}\"),\n VpnGatewayInterface = 1,\n });\n\n var routerInterface1 = new Gcp.Compute.RouterInterface(\"router_interface1\", new()\n {\n Name = \"router-interface1\",\n Router = router.Name,\n Region = \"us-central1\",\n IpRange = \"169.254.0.1/30\",\n VpnTunnel = tunnel1.Name,\n });\n\n var routerPeer1 = new Gcp.Compute.RouterPeer(\"router_peer1\", new()\n {\n Name = \"router-peer1\",\n Router = router.Name,\n Region = \"us-central1\",\n PeerIpAddress = \"169.254.0.2\",\n PeerAsn = 64515,\n AdvertisedRoutePriority = 100,\n Interface = routerInterface1.Name,\n });\n\n var routerInterface2 = new Gcp.Compute.RouterInterface(\"router_interface2\", new()\n {\n Name = \"router-interface2\",\n Router = router.Name,\n Region = \"us-central1\",\n IpRange = \"169.254.1.1/30\",\n VpnTunnel = tunnel2.Name,\n });\n\n var routerPeer2 = new Gcp.Compute.RouterPeer(\"router_peer2\", new()\n {\n Name = \"router-peer2\",\n Router = router.Name,\n Region = \"us-central1\",\n PeerIpAddress = \"169.254.1.2\",\n PeerAsn = 64515,\n AdvertisedRoutePriority = 100,\n Interface = routerInterface2.Name,\n });\n\n var tunnel1Spoke = new Gcp.NetworkConnectivity.Spoke(\"tunnel1\", new()\n {\n Name = \"vpn-tunnel-1-spoke\",\n Location = \"us-central1\",\n Description = \"A sample spoke with a linked VPN Tunnel\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Hub = basicHub.Id,\n LinkedVpnTunnels = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedVpnTunnelsArgs\n {\n Uris = new[]\n {\n tunnel1.SelfLink,\n },\n SiteToSiteDataTransfer = true,\n IncludeImportRanges = new[]\n {\n \"ALL_IPV4_RANGES\",\n },\n },\n });\n\n var tunnel2Spoke = new Gcp.NetworkConnectivity.Spoke(\"tunnel2\", new()\n {\n Name = \"vpn-tunnel-2-spoke\",\n Location = \"us-central1\",\n Description = \"A sample spoke with a linked VPN Tunnel\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Hub = basicHub.Id,\n LinkedVpnTunnels = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedVpnTunnelsArgs\n {\n Uris = new[]\n {\n tunnel2.SelfLink,\n },\n SiteToSiteDataTransfer = true,\n IncludeImportRanges = new[]\n {\n \"ALL_IPV4_RANGES\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tbasicHub, err := networkconnectivity.NewHub(ctx, \"basic_hub\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"basic-hub1\"),\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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \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\t_, err = compute.NewSubnetwork(ctx, \"subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"basic-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/28\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgateway, err := compute.NewHaVpnGateway(ctx, \"gateway\", \u0026compute.HaVpnGatewayArgs{\n\t\t\tName: pulumi.String(\"vpn-gateway\"),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texternalVpnGw, err := compute.NewExternalVpnGateway(ctx, \"external_vpn_gw\", \u0026compute.ExternalVpnGatewayArgs{\n\t\t\tName: pulumi.String(\"external-vpn-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\trouter, err := compute.NewRouter(ctx, \"router\", \u0026compute.RouterArgs{\n\t\t\tName: pulumi.String(\"external-vpn-gateway\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\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(\"tunnel1\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tVpnGateway: gateway.ID(),\n\t\t\tPeerExternalGateway: externalVpnGw.ID(),\n\t\t\tPeerExternalGatewayInterface: pulumi.Int(0),\n\t\t\tSharedSecret: pulumi.String(\"a secret message\"),\n\t\t\tRouter: router.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(\"tunnel2\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tVpnGateway: gateway.ID(),\n\t\t\tPeerExternalGateway: externalVpnGw.ID(),\n\t\t\tPeerExternalGatewayInterface: pulumi.Int(0),\n\t\t\tSharedSecret: pulumi.String(\"a secret message\"),\n\t\t\tRouter: router.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\trouterInterface1, err := compute.NewRouterInterface(ctx, \"router_interface1\", \u0026compute.RouterInterfaceArgs{\n\t\t\tName: pulumi.String(\"router-interface1\"),\n\t\t\tRouter: router.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, \"router_peer1\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"router-peer1\"),\n\t\t\tRouter: router.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: routerInterface1.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trouterInterface2, err := compute.NewRouterInterface(ctx, \"router_interface2\", \u0026compute.RouterInterfaceArgs{\n\t\t\tName: pulumi.String(\"router-interface2\"),\n\t\t\tRouter: router.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, \"router_peer2\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"router-peer2\"),\n\t\t\tRouter: router.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: routerInterface2.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewSpoke(ctx, \"tunnel1\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"vpn-tunnel-1-spoke\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke with a linked VPN Tunnel\"),\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\tLinkedVpnTunnels: \u0026networkconnectivity.SpokeLinkedVpnTunnelsArgs{\n\t\t\t\tUris: pulumi.StringArray{\n\t\t\t\t\ttunnel1.SelfLink,\n\t\t\t\t},\n\t\t\t\tSiteToSiteDataTransfer: pulumi.Bool(true),\n\t\t\t\tIncludeImportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ALL_IPV4_RANGES\"),\n\t\t\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 = networkconnectivity.NewSpoke(ctx, \"tunnel2\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"vpn-tunnel-2-spoke\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke with a linked VPN Tunnel\"),\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\tLinkedVpnTunnels: \u0026networkconnectivity.SpokeLinkedVpnTunnelsArgs{\n\t\t\t\tUris: pulumi.StringArray{\n\t\t\t\t\ttunnel2.SelfLink,\n\t\t\t\t},\n\t\t\t\tSiteToSiteDataTransfer: pulumi.Bool(true),\n\t\t\t\tIncludeImportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ALL_IPV4_RANGES\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\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.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.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 com.pulumi.gcp.networkconnectivity.Spoke;\nimport com.pulumi.gcp.networkconnectivity.SpokeArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedVpnTunnelsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basicHub = new Hub(\"basicHub\", HubArgs.builder()\n .name(\"basic-hub1\")\n .description(\"A sample hub\")\n .labels(Map.of(\"label-two\", \"value-one\"))\n .build());\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"basic-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork = new Subnetwork(\"subnetwork\", SubnetworkArgs.builder()\n .name(\"basic-subnetwork\")\n .ipCidrRange(\"10.0.0.0/28\")\n .region(\"us-central1\")\n .network(network.selfLink())\n .build());\n\n var gateway = new HaVpnGateway(\"gateway\", HaVpnGatewayArgs.builder()\n .name(\"vpn-gateway\")\n .network(network.id())\n .build());\n\n var externalVpnGw = new ExternalVpnGateway(\"externalVpnGw\", ExternalVpnGatewayArgs.builder()\n .name(\"external-vpn-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 router = new Router(\"router\", RouterArgs.builder()\n .name(\"external-vpn-gateway\")\n .region(\"us-central1\")\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(\"tunnel1\")\n .region(\"us-central1\")\n .vpnGateway(gateway.id())\n .peerExternalGateway(externalVpnGw.id())\n .peerExternalGatewayInterface(0)\n .sharedSecret(\"a secret message\")\n .router(router.id())\n .vpnGatewayInterface(0)\n .build());\n\n var tunnel2 = new VPNTunnel(\"tunnel2\", VPNTunnelArgs.builder()\n .name(\"tunnel2\")\n .region(\"us-central1\")\n .vpnGateway(gateway.id())\n .peerExternalGateway(externalVpnGw.id())\n .peerExternalGatewayInterface(0)\n .sharedSecret(\"a secret message\")\n .router(router.id().applyValue(id -\u003e String.format(\" %s\", id)))\n .vpnGatewayInterface(1)\n .build());\n\n var routerInterface1 = new RouterInterface(\"routerInterface1\", RouterInterfaceArgs.builder()\n .name(\"router-interface1\")\n .router(router.name())\n .region(\"us-central1\")\n .ipRange(\"169.254.0.1/30\")\n .vpnTunnel(tunnel1.name())\n .build());\n\n var routerPeer1 = new RouterPeer(\"routerPeer1\", RouterPeerArgs.builder()\n .name(\"router-peer1\")\n .router(router.name())\n .region(\"us-central1\")\n .peerIpAddress(\"169.254.0.2\")\n .peerAsn(64515)\n .advertisedRoutePriority(100)\n .interface_(routerInterface1.name())\n .build());\n\n var routerInterface2 = new RouterInterface(\"routerInterface2\", RouterInterfaceArgs.builder()\n .name(\"router-interface2\")\n .router(router.name())\n .region(\"us-central1\")\n .ipRange(\"169.254.1.1/30\")\n .vpnTunnel(tunnel2.name())\n .build());\n\n var routerPeer2 = new RouterPeer(\"routerPeer2\", RouterPeerArgs.builder()\n .name(\"router-peer2\")\n .router(router.name())\n .region(\"us-central1\")\n .peerIpAddress(\"169.254.1.2\")\n .peerAsn(64515)\n .advertisedRoutePriority(100)\n .interface_(routerInterface2.name())\n .build());\n\n var tunnel1Spoke = new Spoke(\"tunnel1Spoke\", SpokeArgs.builder()\n .name(\"vpn-tunnel-1-spoke\")\n .location(\"us-central1\")\n .description(\"A sample spoke with a linked VPN Tunnel\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .hub(basicHub.id())\n .linkedVpnTunnels(SpokeLinkedVpnTunnelsArgs.builder()\n .uris(tunnel1.selfLink())\n .siteToSiteDataTransfer(true)\n .includeImportRanges(\"ALL_IPV4_RANGES\")\n .build())\n .build());\n\n var tunnel2Spoke = new Spoke(\"tunnel2Spoke\", SpokeArgs.builder()\n .name(\"vpn-tunnel-2-spoke\")\n .location(\"us-central1\")\n .description(\"A sample spoke with a linked VPN Tunnel\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .hub(basicHub.id())\n .linkedVpnTunnels(SpokeLinkedVpnTunnelsArgs.builder()\n .uris(tunnel2.selfLink())\n .siteToSiteDataTransfer(true)\n .includeImportRanges(\"ALL_IPV4_RANGES\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicHub:\n type: gcp:networkconnectivity:Hub\n name: basic_hub\n properties:\n name: basic-hub1\n description: A sample hub\n labels:\n label-two: value-one\n network:\n type: gcp:compute:Network\n properties:\n name: basic-network\n autoCreateSubnetworks: false\n subnetwork:\n type: gcp:compute:Subnetwork\n properties:\n name: basic-subnetwork\n ipCidrRange: 10.0.0.0/28\n region: us-central1\n network: ${network.selfLink}\n gateway:\n type: gcp:compute:HaVpnGateway\n properties:\n name: vpn-gateway\n network: ${network.id}\n externalVpnGw:\n type: gcp:compute:ExternalVpnGateway\n name: external_vpn_gw\n properties:\n name: external-vpn-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 router:\n type: gcp:compute:Router\n properties:\n name: external-vpn-gateway\n region: us-central1\n network: ${network.name}\n bgp:\n asn: 64514\n tunnel1:\n type: gcp:compute:VPNTunnel\n properties:\n name: tunnel1\n region: us-central1\n vpnGateway: ${gateway.id}\n peerExternalGateway: ${externalVpnGw.id}\n peerExternalGatewayInterface: 0\n sharedSecret: a secret message\n router: ${router.id}\n vpnGatewayInterface: 0\n tunnel2:\n type: gcp:compute:VPNTunnel\n properties:\n name: tunnel2\n region: us-central1\n vpnGateway: ${gateway.id}\n peerExternalGateway: ${externalVpnGw.id}\n peerExternalGatewayInterface: 0\n sharedSecret: a secret message\n router: ' ${router.id}'\n vpnGatewayInterface: 1\n routerInterface1:\n type: gcp:compute:RouterInterface\n name: router_interface1\n properties:\n name: router-interface1\n router: ${router.name}\n region: us-central1\n ipRange: 169.254.0.1/30\n vpnTunnel: ${tunnel1.name}\n routerPeer1:\n type: gcp:compute:RouterPeer\n name: router_peer1\n properties:\n name: router-peer1\n router: ${router.name}\n region: us-central1\n peerIpAddress: 169.254.0.2\n peerAsn: 64515\n advertisedRoutePriority: 100\n interface: ${routerInterface1.name}\n routerInterface2:\n type: gcp:compute:RouterInterface\n name: router_interface2\n properties:\n name: router-interface2\n router: ${router.name}\n region: us-central1\n ipRange: 169.254.1.1/30\n vpnTunnel: ${tunnel2.name}\n routerPeer2:\n type: gcp:compute:RouterPeer\n name: router_peer2\n properties:\n name: router-peer2\n router: ${router.name}\n region: us-central1\n peerIpAddress: 169.254.1.2\n peerAsn: 64515\n advertisedRoutePriority: 100\n interface: ${routerInterface2.name}\n tunnel1Spoke:\n type: gcp:networkconnectivity:Spoke\n name: tunnel1\n properties:\n name: vpn-tunnel-1-spoke\n location: us-central1\n description: A sample spoke with a linked VPN Tunnel\n labels:\n label-one: value-one\n hub: ${basicHub.id}\n linkedVpnTunnels:\n uris:\n - ${tunnel1.selfLink}\n siteToSiteDataTransfer: true\n includeImportRanges:\n - ALL_IPV4_RANGES\n tunnel2Spoke:\n type: gcp:networkconnectivity:Spoke\n name: tunnel2\n properties:\n name: vpn-tunnel-2-spoke\n location: us-central1\n description: A sample spoke with a linked VPN Tunnel\n labels:\n label-one: value-one\n hub: ${basicHub.id}\n linkedVpnTunnels:\n uris:\n - ${tunnel2.selfLink}\n siteToSiteDataTransfer: true\n includeImportRanges:\n - ALL_IPV4_RANGES\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Connectivity Spoke Interconnect 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 basicHub = new gcp.networkconnectivity.Hub(\"basic_hub\", {\n name: \"basic-hub1\",\n description: \"A sample hub\",\n labels: {\n \"label-two\": \"value-one\",\n },\n});\nconst network = new gcp.compute.Network(\"network\", {\n name: \"basic-network\",\n autoCreateSubnetworks: false,\n});\nconst router = new gcp.compute.Router(\"router\", {\n name: \"external-vpn-gateway\",\n region: \"us-central1\",\n network: network.name,\n bgp: {\n asn: 16550,\n },\n});\nconst interconnect_attachment = new gcp.compute.InterconnectAttachment(\"interconnect-attachment\", {\n name: \"partner-interconnect1\",\n edgeAvailabilityDomain: \"AVAILABILITY_DOMAIN_1\",\n type: \"PARTNER\",\n router: router.id,\n mtu: \"1500\",\n region: \"us-central1\",\n});\nconst primary = new gcp.networkconnectivity.Spoke(\"primary\", {\n name: \"interconnect-attachment-spoke\",\n location: \"us-central1\",\n description: \"A sample spoke with a linked Interconnect Attachment\",\n labels: {\n \"label-one\": \"value-one\",\n },\n hub: basicHub.id,\n linkedInterconnectAttachments: {\n uris: [interconnect_attachment.selfLink],\n siteToSiteDataTransfer: true,\n includeImportRanges: [\"ALL_IPV4_RANGES\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_hub = gcp.networkconnectivity.Hub(\"basic_hub\",\n name=\"basic-hub1\",\n description=\"A sample hub\",\n labels={\n \"label-two\": \"value-one\",\n })\nnetwork = gcp.compute.Network(\"network\",\n name=\"basic-network\",\n auto_create_subnetworks=False)\nrouter = gcp.compute.Router(\"router\",\n name=\"external-vpn-gateway\",\n region=\"us-central1\",\n network=network.name,\n bgp={\n \"asn\": 16550,\n })\ninterconnect_attachment = gcp.compute.InterconnectAttachment(\"interconnect-attachment\",\n name=\"partner-interconnect1\",\n edge_availability_domain=\"AVAILABILITY_DOMAIN_1\",\n type=\"PARTNER\",\n router=router.id,\n mtu=\"1500\",\n region=\"us-central1\")\nprimary = gcp.networkconnectivity.Spoke(\"primary\",\n name=\"interconnect-attachment-spoke\",\n location=\"us-central1\",\n description=\"A sample spoke with a linked Interconnect Attachment\",\n labels={\n \"label-one\": \"value-one\",\n },\n hub=basic_hub.id,\n linked_interconnect_attachments={\n \"uris\": [interconnect_attachment.self_link],\n \"site_to_site_data_transfer\": True,\n \"include_import_ranges\": [\"ALL_IPV4_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 basicHub = new Gcp.NetworkConnectivity.Hub(\"basic_hub\", new()\n {\n Name = \"basic-hub1\",\n Description = \"A sample hub\",\n Labels = \n {\n { \"label-two\", \"value-one\" },\n },\n });\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"basic-network\",\n AutoCreateSubnetworks = false,\n });\n\n var router = new Gcp.Compute.Router(\"router\", new()\n {\n Name = \"external-vpn-gateway\",\n Region = \"us-central1\",\n Network = network.Name,\n Bgp = new Gcp.Compute.Inputs.RouterBgpArgs\n {\n Asn = 16550,\n },\n });\n\n var interconnect_attachment = new Gcp.Compute.InterconnectAttachment(\"interconnect-attachment\", new()\n {\n Name = \"partner-interconnect1\",\n EdgeAvailabilityDomain = \"AVAILABILITY_DOMAIN_1\",\n Type = \"PARTNER\",\n Router = router.Id,\n Mtu = \"1500\",\n Region = \"us-central1\",\n });\n\n var primary = new Gcp.NetworkConnectivity.Spoke(\"primary\", new()\n {\n Name = \"interconnect-attachment-spoke\",\n Location = \"us-central1\",\n Description = \"A sample spoke with a linked Interconnect Attachment\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Hub = basicHub.Id,\n LinkedInterconnectAttachments = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedInterconnectAttachmentsArgs\n {\n Uris = new[]\n {\n interconnect_attachment.SelfLink,\n },\n SiteToSiteDataTransfer = true,\n IncludeImportRanges = new[]\n {\n \"ALL_IPV4_RANGES\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tbasicHub, err := networkconnectivity.NewHub(ctx, \"basic_hub\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"basic-hub1\"),\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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \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\trouter, err := compute.NewRouter(ctx, \"router\", \u0026compute.RouterArgs{\n\t\t\tName: pulumi.String(\"external-vpn-gateway\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.Name,\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\t_, err = compute.NewInterconnectAttachment(ctx, \"interconnect-attachment\", \u0026compute.InterconnectAttachmentArgs{\n\t\t\tName: pulumi.String(\"partner-interconnect1\"),\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\tMtu: pulumi.String(\"1500\"),\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 = networkconnectivity.NewSpoke(ctx, \"primary\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"interconnect-attachment-spoke\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke with a linked Interconnect Attachment\"),\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\tLinkedInterconnectAttachments: \u0026networkconnectivity.SpokeLinkedInterconnectAttachmentsArgs{\n\t\t\t\tUris: pulumi.StringArray{\n\t\t\t\t\tinterconnect_attachment.SelfLink,\n\t\t\t\t},\n\t\t\t\tSiteToSiteDataTransfer: pulumi.Bool(true),\n\t\t\t\tIncludeImportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ALL_IPV4_RANGES\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\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 com.pulumi.gcp.compute.InterconnectAttachment;\nimport com.pulumi.gcp.compute.InterconnectAttachmentArgs;\nimport com.pulumi.gcp.networkconnectivity.Spoke;\nimport com.pulumi.gcp.networkconnectivity.SpokeArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedInterconnectAttachmentsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basicHub = new Hub(\"basicHub\", HubArgs.builder()\n .name(\"basic-hub1\")\n .description(\"A sample hub\")\n .labels(Map.of(\"label-two\", \"value-one\"))\n .build());\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"basic-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var router = new Router(\"router\", RouterArgs.builder()\n .name(\"external-vpn-gateway\")\n .region(\"us-central1\")\n .network(network.name())\n .bgp(RouterBgpArgs.builder()\n .asn(16550)\n .build())\n .build());\n\n var interconnect_attachment = new InterconnectAttachment(\"interconnect-attachment\", InterconnectAttachmentArgs.builder()\n .name(\"partner-interconnect1\")\n .edgeAvailabilityDomain(\"AVAILABILITY_DOMAIN_1\")\n .type(\"PARTNER\")\n .router(router.id())\n .mtu(1500)\n .region(\"us-central1\")\n .build());\n\n var primary = new Spoke(\"primary\", SpokeArgs.builder()\n .name(\"interconnect-attachment-spoke\")\n .location(\"us-central1\")\n .description(\"A sample spoke with a linked Interconnect Attachment\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .hub(basicHub.id())\n .linkedInterconnectAttachments(SpokeLinkedInterconnectAttachmentsArgs.builder()\n .uris(interconnect_attachment.selfLink())\n .siteToSiteDataTransfer(true)\n .includeImportRanges(\"ALL_IPV4_RANGES\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicHub:\n type: gcp:networkconnectivity:Hub\n name: basic_hub\n properties:\n name: basic-hub1\n description: A sample hub\n labels:\n label-two: value-one\n network:\n type: gcp:compute:Network\n properties:\n name: basic-network\n autoCreateSubnetworks: false\n router:\n type: gcp:compute:Router\n properties:\n name: external-vpn-gateway\n region: us-central1\n network: ${network.name}\n bgp:\n asn: 16550\n interconnect-attachment:\n type: gcp:compute:InterconnectAttachment\n properties:\n name: partner-interconnect1\n edgeAvailabilityDomain: AVAILABILITY_DOMAIN_1\n type: PARTNER\n router: ${router.id}\n mtu: 1500\n region: us-central1\n primary:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: interconnect-attachment-spoke\n location: us-central1\n description: A sample spoke with a linked Interconnect Attachment\n labels:\n label-one: value-one\n hub: ${basicHub.id}\n linkedInterconnectAttachments:\n uris:\n - ${[\"interconnect-attachment\"].selfLink}\n siteToSiteDataTransfer: true\n includeImportRanges:\n - ALL_IPV4_RANGES\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Connectivity Spoke Linked Producer Vpc Network 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 = new gcp.compute.Network(\"network\", {\n name: \"net-spoke\",\n autoCreateSubnetworks: false,\n});\nconst address = new gcp.compute.GlobalAddress(\"address\", {\n name: \"test-address\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: network.id,\n});\nconst peering = new gcp.servicenetworking.Connection(\"peering\", {\n network: network.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [address.name],\n});\nconst basicHub = new gcp.networkconnectivity.Hub(\"basic_hub\", {name: \"hub-basic\"});\nconst linkedVpcSpoke = new gcp.networkconnectivity.Spoke(\"linked_vpc_spoke\", {\n name: \"vpc-spoke\",\n location: \"global\",\n hub: basicHub.id,\n linkedVpcNetwork: {\n uri: network.selfLink,\n },\n});\nconst primary = new gcp.networkconnectivity.Spoke(\"primary\", {\n name: \"producer-spoke\",\n location: \"global\",\n description: \"A sample spoke with a linked router appliance instance\",\n labels: {\n \"label-one\": \"value-one\",\n },\n hub: basicHub.id,\n linkedProducerVpcNetwork: {\n network: network.name,\n peering: peering.peering,\n excludeExportRanges: [\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n ],\n },\n}, {\n dependsOn: [linkedVpcSpoke],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"net-spoke\",\n auto_create_subnetworks=False)\naddress = gcp.compute.GlobalAddress(\"address\",\n name=\"test-address\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=network.id)\npeering = gcp.servicenetworking.Connection(\"peering\",\n network=network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[address.name])\nbasic_hub = gcp.networkconnectivity.Hub(\"basic_hub\", name=\"hub-basic\")\nlinked_vpc_spoke = gcp.networkconnectivity.Spoke(\"linked_vpc_spoke\",\n name=\"vpc-spoke\",\n location=\"global\",\n hub=basic_hub.id,\n linked_vpc_network={\n \"uri\": network.self_link,\n })\nprimary = gcp.networkconnectivity.Spoke(\"primary\",\n name=\"producer-spoke\",\n location=\"global\",\n description=\"A sample spoke with a linked router appliance instance\",\n labels={\n \"label-one\": \"value-one\",\n },\n hub=basic_hub.id,\n linked_producer_vpc_network={\n \"network\": network.name,\n \"peering\": peering.peering,\n \"exclude_export_ranges\": [\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n ],\n },\n opts = pulumi.ResourceOptions(depends_on=[linked_vpc_spoke]))\n```\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 = \"net-spoke\",\n AutoCreateSubnetworks = false,\n });\n\n var address = new Gcp.Compute.GlobalAddress(\"address\", new()\n {\n Name = \"test-address\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = network.Id,\n });\n\n var peering = new Gcp.ServiceNetworking.Connection(\"peering\", new()\n {\n Network = network.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n address.Name,\n },\n });\n\n var basicHub = new Gcp.NetworkConnectivity.Hub(\"basic_hub\", new()\n {\n Name = \"hub-basic\",\n });\n\n var linkedVpcSpoke = new Gcp.NetworkConnectivity.Spoke(\"linked_vpc_spoke\", new()\n {\n Name = \"vpc-spoke\",\n Location = \"global\",\n Hub = basicHub.Id,\n LinkedVpcNetwork = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedVpcNetworkArgs\n {\n Uri = network.SelfLink,\n },\n });\n\n var primary = new Gcp.NetworkConnectivity.Spoke(\"primary\", new()\n {\n Name = \"producer-spoke\",\n Location = \"global\",\n Description = \"A sample spoke with a linked router appliance instance\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Hub = basicHub.Id,\n LinkedProducerVpcNetwork = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedProducerVpcNetworkArgs\n {\n Network = network.Name,\n Peering = peering.Peering,\n ExcludeExportRanges = new[]\n {\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n linkedVpcSpoke,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"net-spoke\"),\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\taddress, err := compute.NewGlobalAddress(ctx, \"address\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"test-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: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpeering, err := servicenetworking.NewConnection(ctx, \"peering\", \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\taddress.Name,\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-basic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlinkedVpcSpoke, err := networkconnectivity.NewSpoke(ctx, \"linked_vpc_spoke\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"vpc-spoke\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tHub: basicHub.ID(),\n\t\t\tLinkedVpcNetwork: \u0026networkconnectivity.SpokeLinkedVpcNetworkArgs{\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\t_, err = networkconnectivity.NewSpoke(ctx, \"primary\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"producer-spoke\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke with a linked router 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\tLinkedProducerVpcNetwork: \u0026networkconnectivity.SpokeLinkedProducerVpcNetworkArgs{\n\t\t\t\tNetwork: network.Name,\n\t\t\t\tPeering: peering.Peering,\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},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tlinkedVpcSpoke,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\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.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.networkconnectivity.inputs.SpokeLinkedProducerVpcNetworkArgs;\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 network = new Network(\"network\", NetworkArgs.builder()\n .name(\"net-spoke\")\n .autoCreateSubnetworks(false)\n .build());\n\n var address = new GlobalAddress(\"address\", GlobalAddressArgs.builder()\n .name(\"test-address\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(network.id())\n .build());\n\n var peering = new Connection(\"peering\", ConnectionArgs.builder()\n .network(network.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(address.name())\n .build());\n\n var basicHub = new Hub(\"basicHub\", HubArgs.builder()\n .name(\"hub-basic\")\n .build());\n\n var linkedVpcSpoke = new Spoke(\"linkedVpcSpoke\", SpokeArgs.builder()\n .name(\"vpc-spoke\")\n .location(\"global\")\n .hub(basicHub.id())\n .linkedVpcNetwork(SpokeLinkedVpcNetworkArgs.builder()\n .uri(network.selfLink())\n .build())\n .build());\n\n var primary = new Spoke(\"primary\", SpokeArgs.builder()\n .name(\"producer-spoke\")\n .location(\"global\")\n .description(\"A sample spoke with a linked router appliance instance\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .hub(basicHub.id())\n .linkedProducerVpcNetwork(SpokeLinkedProducerVpcNetworkArgs.builder()\n .network(network.name())\n .peering(peering.peering())\n .excludeExportRanges( \n \"198.51.100.0/24\",\n \"10.10.0.0/16\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(linkedVpcSpoke)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n name: net-spoke\n autoCreateSubnetworks: false\n address:\n type: gcp:compute:GlobalAddress\n properties:\n name: test-address\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${network.id}\n peering:\n type: gcp:servicenetworking:Connection\n properties:\n network: ${network.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${address.name}\n basicHub:\n type: gcp:networkconnectivity:Hub\n name: basic_hub\n properties:\n name: hub-basic\n linkedVpcSpoke:\n type: gcp:networkconnectivity:Spoke\n name: linked_vpc_spoke\n properties:\n name: vpc-spoke\n location: global\n hub: ${basicHub.id}\n linkedVpcNetwork:\n uri: ${network.selfLink}\n primary:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: producer-spoke\n location: global\n description: A sample spoke with a linked router appliance instance\n labels:\n label-one: value-one\n hub: ${basicHub.id}\n linkedProducerVpcNetwork:\n network: ${network.name}\n peering: ${peering.peering}\n excludeExportRanges:\n - 198.51.100.0/24\n - 10.10.0.0/16\n options:\n dependsOn:\n - ${linkedVpcSpoke}\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\nTo get more information about Spoke, see:\n\n* [API documentation](https://cloud.google.com/network-connectivity/docs/reference/networkconnectivity/rest/v1beta/projects.locations.spokes)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/network-connectivity/docs/network-connectivity-center/concepts/overview)\n\n## Example Usage\n\n### Network Connectivity Spoke Linked Vpc Network 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 = new gcp.compute.Network(\"network\", {\n name: \"net\",\n autoCreateSubnetworks: false,\n});\nconst basicHub = new gcp.networkconnectivity.Hub(\"basic_hub\", {\n name: \"hub1\",\n description: \"A sample hub\",\n labels: {\n \"label-two\": \"value-one\",\n },\n});\nconst primary = new gcp.networkconnectivity.Spoke(\"primary\", {\n name: \"spoke1\",\n location: \"global\",\n description: \"A sample spoke with a linked router 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 includeExportRanges: [\n \"198.51.100.0/23\",\n \"10.0.0.0/8\",\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=\"net\",\n auto_create_subnetworks=False)\nbasic_hub = gcp.networkconnectivity.Hub(\"basic_hub\",\n name=\"hub1\",\n description=\"A sample hub\",\n labels={\n \"label-two\": \"value-one\",\n })\nprimary = gcp.networkconnectivity.Spoke(\"primary\",\n name=\"spoke1\",\n location=\"global\",\n description=\"A sample spoke with a linked router 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 \"include_export_ranges\": [\n \"198.51.100.0/23\",\n \"10.0.0.0/8\",\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 = \"net\",\n AutoCreateSubnetworks = false,\n });\n\n var basicHub = new Gcp.NetworkConnectivity.Hub(\"basic_hub\", new()\n {\n Name = \"hub1\",\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 = \"spoke1\",\n Location = \"global\",\n Description = \"A sample spoke with a linked router 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 IncludeExportRanges = new[]\n {\n \"198.51.100.0/23\",\n \"10.0.0.0/8\",\n },\n Uri = network.SelfLink,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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(\"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\tbasicHub, err := networkconnectivity.NewHub(ctx, \"basic_hub\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"hub1\"),\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(\"spoke1\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke with a linked router 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\tIncludeExportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"198.51.100.0/23\"),\n\t\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\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(\"net\")\n .autoCreateSubnetworks(false)\n .build());\n\n var basicHub = new Hub(\"basicHub\", HubArgs.builder()\n .name(\"hub1\")\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(\"spoke1\")\n .location(\"global\")\n .description(\"A sample spoke with a linked router 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 .includeExportRanges( \n \"198.51.100.0/23\",\n \"10.0.0.0/8\")\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: net\n autoCreateSubnetworks: false\n basicHub:\n type: gcp:networkconnectivity:Hub\n name: basic_hub\n properties:\n name: hub1\n description: A sample hub\n labels:\n label-two: value-one\n primary:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: spoke1\n location: global\n description: A sample spoke with a linked router 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 includeExportRanges:\n - 198.51.100.0/23\n - 10.0.0.0/8\n uri: ${network.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Connectivity Spoke Linked Vpc Network Group\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: \"net-spoke\",\n autoCreateSubnetworks: false,\n});\nconst basicHub = new gcp.networkconnectivity.Hub(\"basic_hub\", {\n name: \"hub1-spoke\",\n description: \"A sample hub\",\n labels: {\n \"label-two\": \"value-one\",\n },\n});\nconst defaultGroup = new gcp.networkconnectivity.Group(\"default_group\", {\n hub: basicHub.id,\n name: \"default\",\n description: \"A sample hub group\",\n});\nconst primary = new gcp.networkconnectivity.Spoke(\"primary\", {\n name: \"group-spoke1\",\n location: \"global\",\n description: \"A sample spoke with a linked VPC\",\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 includeExportRanges: [\n \"198.51.100.0/23\",\n \"10.0.0.0/8\",\n ],\n uri: network.selfLink,\n },\n group: defaultGroup.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"net-spoke\",\n auto_create_subnetworks=False)\nbasic_hub = gcp.networkconnectivity.Hub(\"basic_hub\",\n name=\"hub1-spoke\",\n description=\"A sample hub\",\n labels={\n \"label-two\": \"value-one\",\n })\ndefault_group = gcp.networkconnectivity.Group(\"default_group\",\n hub=basic_hub.id,\n name=\"default\",\n description=\"A sample hub group\")\nprimary = gcp.networkconnectivity.Spoke(\"primary\",\n name=\"group-spoke1\",\n location=\"global\",\n description=\"A sample spoke with a linked VPC\",\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 \"include_export_ranges\": [\n \"198.51.100.0/23\",\n \"10.0.0.0/8\",\n ],\n \"uri\": network.self_link,\n },\n group=default_group.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 network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"net-spoke\",\n AutoCreateSubnetworks = false,\n });\n\n var basicHub = new Gcp.NetworkConnectivity.Hub(\"basic_hub\", new()\n {\n Name = \"hub1-spoke\",\n Description = \"A sample hub\",\n Labels = \n {\n { \"label-two\", \"value-one\" },\n },\n });\n\n var defaultGroup = new Gcp.NetworkConnectivity.Group(\"default_group\", new()\n {\n Hub = basicHub.Id,\n Name = \"default\",\n Description = \"A sample hub group\",\n });\n\n var primary = new Gcp.NetworkConnectivity.Spoke(\"primary\", new()\n {\n Name = \"group-spoke1\",\n Location = \"global\",\n Description = \"A sample spoke with a linked VPC\",\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 IncludeExportRanges = new[]\n {\n \"198.51.100.0/23\",\n \"10.0.0.0/8\",\n },\n Uri = network.SelfLink,\n },\n Group = defaultGroup.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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(\"net-spoke\"),\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(\"hub1-spoke\"),\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\tdefaultGroup, err := networkconnectivity.NewGroup(ctx, \"default_group\", \u0026networkconnectivity.GroupArgs{\n\t\t\tHub: basicHub.ID(),\n\t\t\tName: pulumi.String(\"default\"),\n\t\t\tDescription: pulumi.String(\"A sample hub group\"),\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(\"group-spoke1\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke with a linked VPC\"),\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\tIncludeExportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"198.51.100.0/23\"),\n\t\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\n\t\t\t\t},\n\t\t\t\tUri: network.SelfLink,\n\t\t\t},\n\t\t\tGroup: defaultGroup.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.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport com.pulumi.gcp.networkconnectivity.Group;\nimport com.pulumi.gcp.networkconnectivity.GroupArgs;\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(\"net-spoke\")\n .autoCreateSubnetworks(false)\n .build());\n\n var basicHub = new Hub(\"basicHub\", HubArgs.builder()\n .name(\"hub1-spoke\")\n .description(\"A sample hub\")\n .labels(Map.of(\"label-two\", \"value-one\"))\n .build());\n\n var defaultGroup = new Group(\"defaultGroup\", GroupArgs.builder()\n .hub(basicHub.id())\n .name(\"default\")\n .description(\"A sample hub group\")\n .build());\n\n var primary = new Spoke(\"primary\", SpokeArgs.builder()\n .name(\"group-spoke1\")\n .location(\"global\")\n .description(\"A sample spoke with a linked VPC\")\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 .includeExportRanges( \n \"198.51.100.0/23\",\n \"10.0.0.0/8\")\n .uri(network.selfLink())\n .build())\n .group(defaultGroup.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n name: net-spoke\n autoCreateSubnetworks: false\n basicHub:\n type: gcp:networkconnectivity:Hub\n name: basic_hub\n properties:\n name: hub1-spoke\n description: A sample hub\n labels:\n label-two: value-one\n defaultGroup:\n type: gcp:networkconnectivity:Group\n name: default_group\n properties:\n hub: ${basicHub.id}\n name: default\n description: A sample hub group\n primary:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: group-spoke1\n location: global\n description: A sample spoke with a linked VPC\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 includeExportRanges:\n - 198.51.100.0/23\n - 10.0.0.0/8\n uri: ${network.selfLink}\n group: ${defaultGroup.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Connectivity Spoke Router Appliance 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 = new gcp.compute.Network(\"network\", {\n name: \"tf-test-network_55138\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork = new gcp.compute.Subnetwork(\"subnetwork\", {\n name: \"tf-test-subnet_37559\",\n ipCidrRange: \"10.0.0.0/28\",\n region: \"us-central1\",\n network: network.selfLink,\n});\nconst instance = new gcp.compute.Instance(\"instance\", {\n name: \"tf-test-instance_91980\",\n machineType: \"e2-medium\",\n canIpForward: true,\n zone: \"us-central1-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: \"tf-test-hub_37118\",\n description: \"A sample hub\",\n labels: {\n \"label-two\": \"value-one\",\n },\n});\nconst primary = new gcp.networkconnectivity.Spoke(\"primary\", {\n name: \"tf-test-name_80332\",\n location: \"us-central1\",\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 includeImportRanges: [\"ALL_IPV4_RANGES\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"tf-test-network_55138\",\n auto_create_subnetworks=False)\nsubnetwork = gcp.compute.Subnetwork(\"subnetwork\",\n name=\"tf-test-subnet_37559\",\n ip_cidr_range=\"10.0.0.0/28\",\n region=\"us-central1\",\n network=network.self_link)\ninstance = gcp.compute.Instance(\"instance\",\n name=\"tf-test-instance_91980\",\n machine_type=\"e2-medium\",\n can_ip_forward=True,\n zone=\"us-central1-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=\"tf-test-hub_37118\",\n description=\"A sample hub\",\n labels={\n \"label-two\": \"value-one\",\n })\nprimary = gcp.networkconnectivity.Spoke(\"primary\",\n name=\"tf-test-name_80332\",\n location=\"us-central1\",\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 \"include_import_ranges\": [\"ALL_IPV4_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 network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"tf-test-network_55138\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork = new Gcp.Compute.Subnetwork(\"subnetwork\", new()\n {\n Name = \"tf-test-subnet_37559\",\n IpCidrRange = \"10.0.0.0/28\",\n Region = \"us-central1\",\n Network = network.SelfLink,\n });\n\n var instance = new Gcp.Compute.Instance(\"instance\", new()\n {\n Name = \"tf-test-instance_91980\",\n MachineType = \"e2-medium\",\n CanIpForward = true,\n Zone = \"us-central1-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 = \"tf-test-hub_37118\",\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 = \"tf-test-name_80332\",\n Location = \"us-central1\",\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 IncludeImportRanges = new[]\n {\n \"ALL_IPV4_RANGES\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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(\"tf-test-network_55138\"),\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(\"tf-test-subnet_37559\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/28\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\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(\"tf-test-instance_91980\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tCanIpForward: pulumi.Bool(true),\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(\"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(\"tf-test-hub_37118\"),\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(\"tf-test-name_80332\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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\tIncludeImportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ALL_IPV4_RANGES\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\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(\"tf-test-network_55138\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork = new Subnetwork(\"subnetwork\", SubnetworkArgs.builder()\n .name(\"tf-test-subnet_37559\")\n .ipCidrRange(\"10.0.0.0/28\")\n .region(\"us-central1\")\n .network(network.selfLink())\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .name(\"tf-test-instance_91980\")\n .machineType(\"e2-medium\")\n .canIpForward(true)\n .zone(\"us-central1-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(\"tf-test-hub_37118\")\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(\"tf-test-name_80332\")\n .location(\"us-central1\")\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 .includeImportRanges(\"ALL_IPV4_RANGES\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n name: tf-test-network_55138\n autoCreateSubnetworks: false\n subnetwork:\n type: gcp:compute:Subnetwork\n properties:\n name: tf-test-subnet_37559\n ipCidrRange: 10.0.0.0/28\n region: us-central1\n network: ${network.selfLink}\n instance:\n type: gcp:compute:Instance\n properties:\n name: tf-test-instance_91980\n machineType: e2-medium\n canIpForward: true\n zone: us-central1-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: tf-test-hub_37118\n description: A sample hub\n labels:\n label-two: value-one\n primary:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: tf-test-name_80332\n location: us-central1\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 includeImportRanges:\n - ALL_IPV4_RANGES\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Connectivity Spoke Vpn Tunnel Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicHub = new gcp.networkconnectivity.Hub(\"basic_hub\", {\n name: \"basic-hub1\",\n description: \"A sample hub\",\n labels: {\n \"label-two\": \"value-one\",\n },\n});\nconst network = new gcp.compute.Network(\"network\", {\n name: \"basic-network\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork = new gcp.compute.Subnetwork(\"subnetwork\", {\n name: \"basic-subnetwork\",\n ipCidrRange: \"10.0.0.0/28\",\n region: \"us-central1\",\n network: network.selfLink,\n});\nconst gateway = new gcp.compute.HaVpnGateway(\"gateway\", {\n name: \"vpn-gateway\",\n network: network.id,\n});\nconst externalVpnGw = new gcp.compute.ExternalVpnGateway(\"external_vpn_gw\", {\n name: \"external-vpn-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 router = new gcp.compute.Router(\"router\", {\n name: \"external-vpn-gateway\",\n region: \"us-central1\",\n network: network.name,\n bgp: {\n asn: 64514,\n },\n});\nconst tunnel1 = new gcp.compute.VPNTunnel(\"tunnel1\", {\n name: \"tunnel1\",\n region: \"us-central1\",\n vpnGateway: gateway.id,\n peerExternalGateway: externalVpnGw.id,\n peerExternalGatewayInterface: 0,\n sharedSecret: \"a secret message\",\n router: router.id,\n vpnGatewayInterface: 0,\n});\nconst tunnel2 = new gcp.compute.VPNTunnel(\"tunnel2\", {\n name: \"tunnel2\",\n region: \"us-central1\",\n vpnGateway: gateway.id,\n peerExternalGateway: externalVpnGw.id,\n peerExternalGatewayInterface: 0,\n sharedSecret: \"a secret message\",\n router: pulumi.interpolate` ${router.id}`,\n vpnGatewayInterface: 1,\n});\nconst routerInterface1 = new gcp.compute.RouterInterface(\"router_interface1\", {\n name: \"router-interface1\",\n router: router.name,\n region: \"us-central1\",\n ipRange: \"169.254.0.1/30\",\n vpnTunnel: tunnel1.name,\n});\nconst routerPeer1 = new gcp.compute.RouterPeer(\"router_peer1\", {\n name: \"router-peer1\",\n router: router.name,\n region: \"us-central1\",\n peerIpAddress: \"169.254.0.2\",\n peerAsn: 64515,\n advertisedRoutePriority: 100,\n \"interface\": routerInterface1.name,\n});\nconst routerInterface2 = new gcp.compute.RouterInterface(\"router_interface2\", {\n name: \"router-interface2\",\n router: router.name,\n region: \"us-central1\",\n ipRange: \"169.254.1.1/30\",\n vpnTunnel: tunnel2.name,\n});\nconst routerPeer2 = new gcp.compute.RouterPeer(\"router_peer2\", {\n name: \"router-peer2\",\n router: router.name,\n region: \"us-central1\",\n peerIpAddress: \"169.254.1.2\",\n peerAsn: 64515,\n advertisedRoutePriority: 100,\n \"interface\": routerInterface2.name,\n});\nconst tunnel1Spoke = new gcp.networkconnectivity.Spoke(\"tunnel1\", {\n name: \"vpn-tunnel-1-spoke\",\n location: \"us-central1\",\n description: \"A sample spoke with a linked VPN Tunnel\",\n labels: {\n \"label-one\": \"value-one\",\n },\n hub: basicHub.id,\n linkedVpnTunnels: {\n uris: [tunnel1.selfLink],\n siteToSiteDataTransfer: true,\n includeImportRanges: [\"ALL_IPV4_RANGES\"],\n },\n});\nconst tunnel2Spoke = new gcp.networkconnectivity.Spoke(\"tunnel2\", {\n name: \"vpn-tunnel-2-spoke\",\n location: \"us-central1\",\n description: \"A sample spoke with a linked VPN Tunnel\",\n labels: {\n \"label-one\": \"value-one\",\n },\n hub: basicHub.id,\n linkedVpnTunnels: {\n uris: [tunnel2.selfLink],\n siteToSiteDataTransfer: true,\n includeImportRanges: [\"ALL_IPV4_RANGES\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_hub = gcp.networkconnectivity.Hub(\"basic_hub\",\n name=\"basic-hub1\",\n description=\"A sample hub\",\n labels={\n \"label-two\": \"value-one\",\n })\nnetwork = gcp.compute.Network(\"network\",\n name=\"basic-network\",\n auto_create_subnetworks=False)\nsubnetwork = gcp.compute.Subnetwork(\"subnetwork\",\n name=\"basic-subnetwork\",\n ip_cidr_range=\"10.0.0.0/28\",\n region=\"us-central1\",\n network=network.self_link)\ngateway = gcp.compute.HaVpnGateway(\"gateway\",\n name=\"vpn-gateway\",\n network=network.id)\nexternal_vpn_gw = gcp.compute.ExternalVpnGateway(\"external_vpn_gw\",\n name=\"external-vpn-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 }])\nrouter = gcp.compute.Router(\"router\",\n name=\"external-vpn-gateway\",\n region=\"us-central1\",\n network=network.name,\n bgp={\n \"asn\": 64514,\n })\ntunnel1 = gcp.compute.VPNTunnel(\"tunnel1\",\n name=\"tunnel1\",\n region=\"us-central1\",\n vpn_gateway=gateway.id,\n peer_external_gateway=external_vpn_gw.id,\n peer_external_gateway_interface=0,\n shared_secret=\"a secret message\",\n router=router.id,\n vpn_gateway_interface=0)\ntunnel2 = gcp.compute.VPNTunnel(\"tunnel2\",\n name=\"tunnel2\",\n region=\"us-central1\",\n vpn_gateway=gateway.id,\n peer_external_gateway=external_vpn_gw.id,\n peer_external_gateway_interface=0,\n shared_secret=\"a secret message\",\n router=router.id.apply(lambda id: f\" {id}\"),\n vpn_gateway_interface=1)\nrouter_interface1 = gcp.compute.RouterInterface(\"router_interface1\",\n name=\"router-interface1\",\n router=router.name,\n region=\"us-central1\",\n ip_range=\"169.254.0.1/30\",\n vpn_tunnel=tunnel1.name)\nrouter_peer1 = gcp.compute.RouterPeer(\"router_peer1\",\n name=\"router-peer1\",\n router=router.name,\n region=\"us-central1\",\n peer_ip_address=\"169.254.0.2\",\n peer_asn=64515,\n advertised_route_priority=100,\n interface=router_interface1.name)\nrouter_interface2 = gcp.compute.RouterInterface(\"router_interface2\",\n name=\"router-interface2\",\n router=router.name,\n region=\"us-central1\",\n ip_range=\"169.254.1.1/30\",\n vpn_tunnel=tunnel2.name)\nrouter_peer2 = gcp.compute.RouterPeer(\"router_peer2\",\n name=\"router-peer2\",\n router=router.name,\n region=\"us-central1\",\n peer_ip_address=\"169.254.1.2\",\n peer_asn=64515,\n advertised_route_priority=100,\n interface=router_interface2.name)\ntunnel1_spoke = gcp.networkconnectivity.Spoke(\"tunnel1\",\n name=\"vpn-tunnel-1-spoke\",\n location=\"us-central1\",\n description=\"A sample spoke with a linked VPN Tunnel\",\n labels={\n \"label-one\": \"value-one\",\n },\n hub=basic_hub.id,\n linked_vpn_tunnels={\n \"uris\": [tunnel1.self_link],\n \"site_to_site_data_transfer\": True,\n \"include_import_ranges\": [\"ALL_IPV4_RANGES\"],\n })\ntunnel2_spoke = gcp.networkconnectivity.Spoke(\"tunnel2\",\n name=\"vpn-tunnel-2-spoke\",\n location=\"us-central1\",\n description=\"A sample spoke with a linked VPN Tunnel\",\n labels={\n \"label-one\": \"value-one\",\n },\n hub=basic_hub.id,\n linked_vpn_tunnels={\n \"uris\": [tunnel2.self_link],\n \"site_to_site_data_transfer\": True,\n \"include_import_ranges\": [\"ALL_IPV4_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 basicHub = new Gcp.NetworkConnectivity.Hub(\"basic_hub\", new()\n {\n Name = \"basic-hub1\",\n Description = \"A sample hub\",\n Labels = \n {\n { \"label-two\", \"value-one\" },\n },\n });\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"basic-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork = new Gcp.Compute.Subnetwork(\"subnetwork\", new()\n {\n Name = \"basic-subnetwork\",\n IpCidrRange = \"10.0.0.0/28\",\n Region = \"us-central1\",\n Network = network.SelfLink,\n });\n\n var gateway = new Gcp.Compute.HaVpnGateway(\"gateway\", new()\n {\n Name = \"vpn-gateway\",\n Network = network.Id,\n });\n\n var externalVpnGw = new Gcp.Compute.ExternalVpnGateway(\"external_vpn_gw\", new()\n {\n Name = \"external-vpn-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 router = new Gcp.Compute.Router(\"router\", new()\n {\n Name = \"external-vpn-gateway\",\n Region = \"us-central1\",\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 = \"tunnel1\",\n Region = \"us-central1\",\n VpnGateway = gateway.Id,\n PeerExternalGateway = externalVpnGw.Id,\n PeerExternalGatewayInterface = 0,\n SharedSecret = \"a secret message\",\n Router = router.Id,\n VpnGatewayInterface = 0,\n });\n\n var tunnel2 = new Gcp.Compute.VPNTunnel(\"tunnel2\", new()\n {\n Name = \"tunnel2\",\n Region = \"us-central1\",\n VpnGateway = gateway.Id,\n PeerExternalGateway = externalVpnGw.Id,\n PeerExternalGatewayInterface = 0,\n SharedSecret = \"a secret message\",\n Router = router.Id.Apply(id =\u003e $\" {id}\"),\n VpnGatewayInterface = 1,\n });\n\n var routerInterface1 = new Gcp.Compute.RouterInterface(\"router_interface1\", new()\n {\n Name = \"router-interface1\",\n Router = router.Name,\n Region = \"us-central1\",\n IpRange = \"169.254.0.1/30\",\n VpnTunnel = tunnel1.Name,\n });\n\n var routerPeer1 = new Gcp.Compute.RouterPeer(\"router_peer1\", new()\n {\n Name = \"router-peer1\",\n Router = router.Name,\n Region = \"us-central1\",\n PeerIpAddress = \"169.254.0.2\",\n PeerAsn = 64515,\n AdvertisedRoutePriority = 100,\n Interface = routerInterface1.Name,\n });\n\n var routerInterface2 = new Gcp.Compute.RouterInterface(\"router_interface2\", new()\n {\n Name = \"router-interface2\",\n Router = router.Name,\n Region = \"us-central1\",\n IpRange = \"169.254.1.1/30\",\n VpnTunnel = tunnel2.Name,\n });\n\n var routerPeer2 = new Gcp.Compute.RouterPeer(\"router_peer2\", new()\n {\n Name = \"router-peer2\",\n Router = router.Name,\n Region = \"us-central1\",\n PeerIpAddress = \"169.254.1.2\",\n PeerAsn = 64515,\n AdvertisedRoutePriority = 100,\n Interface = routerInterface2.Name,\n });\n\n var tunnel1Spoke = new Gcp.NetworkConnectivity.Spoke(\"tunnel1\", new()\n {\n Name = \"vpn-tunnel-1-spoke\",\n Location = \"us-central1\",\n Description = \"A sample spoke with a linked VPN Tunnel\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Hub = basicHub.Id,\n LinkedVpnTunnels = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedVpnTunnelsArgs\n {\n Uris = new[]\n {\n tunnel1.SelfLink,\n },\n SiteToSiteDataTransfer = true,\n IncludeImportRanges = new[]\n {\n \"ALL_IPV4_RANGES\",\n },\n },\n });\n\n var tunnel2Spoke = new Gcp.NetworkConnectivity.Spoke(\"tunnel2\", new()\n {\n Name = \"vpn-tunnel-2-spoke\",\n Location = \"us-central1\",\n Description = \"A sample spoke with a linked VPN Tunnel\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Hub = basicHub.Id,\n LinkedVpnTunnels = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedVpnTunnelsArgs\n {\n Uris = new[]\n {\n tunnel2.SelfLink,\n },\n SiteToSiteDataTransfer = true,\n IncludeImportRanges = new[]\n {\n \"ALL_IPV4_RANGES\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tbasicHub, err := networkconnectivity.NewHub(ctx, \"basic_hub\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"basic-hub1\"),\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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \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\t_, err = compute.NewSubnetwork(ctx, \"subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"basic-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/28\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgateway, err := compute.NewHaVpnGateway(ctx, \"gateway\", \u0026compute.HaVpnGatewayArgs{\n\t\t\tName: pulumi.String(\"vpn-gateway\"),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texternalVpnGw, err := compute.NewExternalVpnGateway(ctx, \"external_vpn_gw\", \u0026compute.ExternalVpnGatewayArgs{\n\t\t\tName: pulumi.String(\"external-vpn-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\trouter, err := compute.NewRouter(ctx, \"router\", \u0026compute.RouterArgs{\n\t\t\tName: pulumi.String(\"external-vpn-gateway\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\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(\"tunnel1\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tVpnGateway: gateway.ID(),\n\t\t\tPeerExternalGateway: externalVpnGw.ID(),\n\t\t\tPeerExternalGatewayInterface: pulumi.Int(0),\n\t\t\tSharedSecret: pulumi.String(\"a secret message\"),\n\t\t\tRouter: router.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(\"tunnel2\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tVpnGateway: gateway.ID(),\n\t\t\tPeerExternalGateway: externalVpnGw.ID(),\n\t\t\tPeerExternalGatewayInterface: pulumi.Int(0),\n\t\t\tSharedSecret: pulumi.String(\"a secret message\"),\n\t\t\tRouter: router.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\trouterInterface1, err := compute.NewRouterInterface(ctx, \"router_interface1\", \u0026compute.RouterInterfaceArgs{\n\t\t\tName: pulumi.String(\"router-interface1\"),\n\t\t\tRouter: router.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, \"router_peer1\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"router-peer1\"),\n\t\t\tRouter: router.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: routerInterface1.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trouterInterface2, err := compute.NewRouterInterface(ctx, \"router_interface2\", \u0026compute.RouterInterfaceArgs{\n\t\t\tName: pulumi.String(\"router-interface2\"),\n\t\t\tRouter: router.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, \"router_peer2\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"router-peer2\"),\n\t\t\tRouter: router.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: routerInterface2.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewSpoke(ctx, \"tunnel1\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"vpn-tunnel-1-spoke\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke with a linked VPN Tunnel\"),\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\tLinkedVpnTunnels: \u0026networkconnectivity.SpokeLinkedVpnTunnelsArgs{\n\t\t\t\tUris: pulumi.StringArray{\n\t\t\t\t\ttunnel1.SelfLink,\n\t\t\t\t},\n\t\t\t\tSiteToSiteDataTransfer: pulumi.Bool(true),\n\t\t\t\tIncludeImportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ALL_IPV4_RANGES\"),\n\t\t\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 = networkconnectivity.NewSpoke(ctx, \"tunnel2\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"vpn-tunnel-2-spoke\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke with a linked VPN Tunnel\"),\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\tLinkedVpnTunnels: \u0026networkconnectivity.SpokeLinkedVpnTunnelsArgs{\n\t\t\t\tUris: pulumi.StringArray{\n\t\t\t\t\ttunnel2.SelfLink,\n\t\t\t\t},\n\t\t\t\tSiteToSiteDataTransfer: pulumi.Bool(true),\n\t\t\t\tIncludeImportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ALL_IPV4_RANGES\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\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.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.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 com.pulumi.gcp.networkconnectivity.Spoke;\nimport com.pulumi.gcp.networkconnectivity.SpokeArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedVpnTunnelsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basicHub = new Hub(\"basicHub\", HubArgs.builder()\n .name(\"basic-hub1\")\n .description(\"A sample hub\")\n .labels(Map.of(\"label-two\", \"value-one\"))\n .build());\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"basic-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork = new Subnetwork(\"subnetwork\", SubnetworkArgs.builder()\n .name(\"basic-subnetwork\")\n .ipCidrRange(\"10.0.0.0/28\")\n .region(\"us-central1\")\n .network(network.selfLink())\n .build());\n\n var gateway = new HaVpnGateway(\"gateway\", HaVpnGatewayArgs.builder()\n .name(\"vpn-gateway\")\n .network(network.id())\n .build());\n\n var externalVpnGw = new ExternalVpnGateway(\"externalVpnGw\", ExternalVpnGatewayArgs.builder()\n .name(\"external-vpn-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 router = new Router(\"router\", RouterArgs.builder()\n .name(\"external-vpn-gateway\")\n .region(\"us-central1\")\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(\"tunnel1\")\n .region(\"us-central1\")\n .vpnGateway(gateway.id())\n .peerExternalGateway(externalVpnGw.id())\n .peerExternalGatewayInterface(0)\n .sharedSecret(\"a secret message\")\n .router(router.id())\n .vpnGatewayInterface(0)\n .build());\n\n var tunnel2 = new VPNTunnel(\"tunnel2\", VPNTunnelArgs.builder()\n .name(\"tunnel2\")\n .region(\"us-central1\")\n .vpnGateway(gateway.id())\n .peerExternalGateway(externalVpnGw.id())\n .peerExternalGatewayInterface(0)\n .sharedSecret(\"a secret message\")\n .router(router.id().applyValue(id -\u003e String.format(\" %s\", id)))\n .vpnGatewayInterface(1)\n .build());\n\n var routerInterface1 = new RouterInterface(\"routerInterface1\", RouterInterfaceArgs.builder()\n .name(\"router-interface1\")\n .router(router.name())\n .region(\"us-central1\")\n .ipRange(\"169.254.0.1/30\")\n .vpnTunnel(tunnel1.name())\n .build());\n\n var routerPeer1 = new RouterPeer(\"routerPeer1\", RouterPeerArgs.builder()\n .name(\"router-peer1\")\n .router(router.name())\n .region(\"us-central1\")\n .peerIpAddress(\"169.254.0.2\")\n .peerAsn(64515)\n .advertisedRoutePriority(100)\n .interface_(routerInterface1.name())\n .build());\n\n var routerInterface2 = new RouterInterface(\"routerInterface2\", RouterInterfaceArgs.builder()\n .name(\"router-interface2\")\n .router(router.name())\n .region(\"us-central1\")\n .ipRange(\"169.254.1.1/30\")\n .vpnTunnel(tunnel2.name())\n .build());\n\n var routerPeer2 = new RouterPeer(\"routerPeer2\", RouterPeerArgs.builder()\n .name(\"router-peer2\")\n .router(router.name())\n .region(\"us-central1\")\n .peerIpAddress(\"169.254.1.2\")\n .peerAsn(64515)\n .advertisedRoutePriority(100)\n .interface_(routerInterface2.name())\n .build());\n\n var tunnel1Spoke = new Spoke(\"tunnel1Spoke\", SpokeArgs.builder()\n .name(\"vpn-tunnel-1-spoke\")\n .location(\"us-central1\")\n .description(\"A sample spoke with a linked VPN Tunnel\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .hub(basicHub.id())\n .linkedVpnTunnels(SpokeLinkedVpnTunnelsArgs.builder()\n .uris(tunnel1.selfLink())\n .siteToSiteDataTransfer(true)\n .includeImportRanges(\"ALL_IPV4_RANGES\")\n .build())\n .build());\n\n var tunnel2Spoke = new Spoke(\"tunnel2Spoke\", SpokeArgs.builder()\n .name(\"vpn-tunnel-2-spoke\")\n .location(\"us-central1\")\n .description(\"A sample spoke with a linked VPN Tunnel\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .hub(basicHub.id())\n .linkedVpnTunnels(SpokeLinkedVpnTunnelsArgs.builder()\n .uris(tunnel2.selfLink())\n .siteToSiteDataTransfer(true)\n .includeImportRanges(\"ALL_IPV4_RANGES\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicHub:\n type: gcp:networkconnectivity:Hub\n name: basic_hub\n properties:\n name: basic-hub1\n description: A sample hub\n labels:\n label-two: value-one\n network:\n type: gcp:compute:Network\n properties:\n name: basic-network\n autoCreateSubnetworks: false\n subnetwork:\n type: gcp:compute:Subnetwork\n properties:\n name: basic-subnetwork\n ipCidrRange: 10.0.0.0/28\n region: us-central1\n network: ${network.selfLink}\n gateway:\n type: gcp:compute:HaVpnGateway\n properties:\n name: vpn-gateway\n network: ${network.id}\n externalVpnGw:\n type: gcp:compute:ExternalVpnGateway\n name: external_vpn_gw\n properties:\n name: external-vpn-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 router:\n type: gcp:compute:Router\n properties:\n name: external-vpn-gateway\n region: us-central1\n network: ${network.name}\n bgp:\n asn: 64514\n tunnel1:\n type: gcp:compute:VPNTunnel\n properties:\n name: tunnel1\n region: us-central1\n vpnGateway: ${gateway.id}\n peerExternalGateway: ${externalVpnGw.id}\n peerExternalGatewayInterface: 0\n sharedSecret: a secret message\n router: ${router.id}\n vpnGatewayInterface: 0\n tunnel2:\n type: gcp:compute:VPNTunnel\n properties:\n name: tunnel2\n region: us-central1\n vpnGateway: ${gateway.id}\n peerExternalGateway: ${externalVpnGw.id}\n peerExternalGatewayInterface: 0\n sharedSecret: a secret message\n router: ' ${router.id}'\n vpnGatewayInterface: 1\n routerInterface1:\n type: gcp:compute:RouterInterface\n name: router_interface1\n properties:\n name: router-interface1\n router: ${router.name}\n region: us-central1\n ipRange: 169.254.0.1/30\n vpnTunnel: ${tunnel1.name}\n routerPeer1:\n type: gcp:compute:RouterPeer\n name: router_peer1\n properties:\n name: router-peer1\n router: ${router.name}\n region: us-central1\n peerIpAddress: 169.254.0.2\n peerAsn: 64515\n advertisedRoutePriority: 100\n interface: ${routerInterface1.name}\n routerInterface2:\n type: gcp:compute:RouterInterface\n name: router_interface2\n properties:\n name: router-interface2\n router: ${router.name}\n region: us-central1\n ipRange: 169.254.1.1/30\n vpnTunnel: ${tunnel2.name}\n routerPeer2:\n type: gcp:compute:RouterPeer\n name: router_peer2\n properties:\n name: router-peer2\n router: ${router.name}\n region: us-central1\n peerIpAddress: 169.254.1.2\n peerAsn: 64515\n advertisedRoutePriority: 100\n interface: ${routerInterface2.name}\n tunnel1Spoke:\n type: gcp:networkconnectivity:Spoke\n name: tunnel1\n properties:\n name: vpn-tunnel-1-spoke\n location: us-central1\n description: A sample spoke with a linked VPN Tunnel\n labels:\n label-one: value-one\n hub: ${basicHub.id}\n linkedVpnTunnels:\n uris:\n - ${tunnel1.selfLink}\n siteToSiteDataTransfer: true\n includeImportRanges:\n - ALL_IPV4_RANGES\n tunnel2Spoke:\n type: gcp:networkconnectivity:Spoke\n name: tunnel2\n properties:\n name: vpn-tunnel-2-spoke\n location: us-central1\n description: A sample spoke with a linked VPN Tunnel\n labels:\n label-one: value-one\n hub: ${basicHub.id}\n linkedVpnTunnels:\n uris:\n - ${tunnel2.selfLink}\n siteToSiteDataTransfer: true\n includeImportRanges:\n - ALL_IPV4_RANGES\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Connectivity Spoke Interconnect 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 basicHub = new gcp.networkconnectivity.Hub(\"basic_hub\", {\n name: \"basic-hub1\",\n description: \"A sample hub\",\n labels: {\n \"label-two\": \"value-one\",\n },\n});\nconst network = new gcp.compute.Network(\"network\", {\n name: \"basic-network\",\n autoCreateSubnetworks: false,\n});\nconst router = new gcp.compute.Router(\"router\", {\n name: \"external-vpn-gateway\",\n region: \"us-central1\",\n network: network.name,\n bgp: {\n asn: 16550,\n },\n});\nconst interconnect_attachment = new gcp.compute.InterconnectAttachment(\"interconnect-attachment\", {\n name: \"partner-interconnect1\",\n edgeAvailabilityDomain: \"AVAILABILITY_DOMAIN_1\",\n type: \"PARTNER\",\n router: router.id,\n mtu: \"1500\",\n region: \"us-central1\",\n});\nconst primary = new gcp.networkconnectivity.Spoke(\"primary\", {\n name: \"interconnect-attachment-spoke\",\n location: \"us-central1\",\n description: \"A sample spoke with a linked Interconnect Attachment\",\n labels: {\n \"label-one\": \"value-one\",\n },\n hub: basicHub.id,\n linkedInterconnectAttachments: {\n uris: [interconnect_attachment.selfLink],\n siteToSiteDataTransfer: true,\n includeImportRanges: [\"ALL_IPV4_RANGES\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_hub = gcp.networkconnectivity.Hub(\"basic_hub\",\n name=\"basic-hub1\",\n description=\"A sample hub\",\n labels={\n \"label-two\": \"value-one\",\n })\nnetwork = gcp.compute.Network(\"network\",\n name=\"basic-network\",\n auto_create_subnetworks=False)\nrouter = gcp.compute.Router(\"router\",\n name=\"external-vpn-gateway\",\n region=\"us-central1\",\n network=network.name,\n bgp={\n \"asn\": 16550,\n })\ninterconnect_attachment = gcp.compute.InterconnectAttachment(\"interconnect-attachment\",\n name=\"partner-interconnect1\",\n edge_availability_domain=\"AVAILABILITY_DOMAIN_1\",\n type=\"PARTNER\",\n router=router.id,\n mtu=\"1500\",\n region=\"us-central1\")\nprimary = gcp.networkconnectivity.Spoke(\"primary\",\n name=\"interconnect-attachment-spoke\",\n location=\"us-central1\",\n description=\"A sample spoke with a linked Interconnect Attachment\",\n labels={\n \"label-one\": \"value-one\",\n },\n hub=basic_hub.id,\n linked_interconnect_attachments={\n \"uris\": [interconnect_attachment.self_link],\n \"site_to_site_data_transfer\": True,\n \"include_import_ranges\": [\"ALL_IPV4_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 basicHub = new Gcp.NetworkConnectivity.Hub(\"basic_hub\", new()\n {\n Name = \"basic-hub1\",\n Description = \"A sample hub\",\n Labels = \n {\n { \"label-two\", \"value-one\" },\n },\n });\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"basic-network\",\n AutoCreateSubnetworks = false,\n });\n\n var router = new Gcp.Compute.Router(\"router\", new()\n {\n Name = \"external-vpn-gateway\",\n Region = \"us-central1\",\n Network = network.Name,\n Bgp = new Gcp.Compute.Inputs.RouterBgpArgs\n {\n Asn = 16550,\n },\n });\n\n var interconnect_attachment = new Gcp.Compute.InterconnectAttachment(\"interconnect-attachment\", new()\n {\n Name = \"partner-interconnect1\",\n EdgeAvailabilityDomain = \"AVAILABILITY_DOMAIN_1\",\n Type = \"PARTNER\",\n Router = router.Id,\n Mtu = \"1500\",\n Region = \"us-central1\",\n });\n\n var primary = new Gcp.NetworkConnectivity.Spoke(\"primary\", new()\n {\n Name = \"interconnect-attachment-spoke\",\n Location = \"us-central1\",\n Description = \"A sample spoke with a linked Interconnect Attachment\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Hub = basicHub.Id,\n LinkedInterconnectAttachments = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedInterconnectAttachmentsArgs\n {\n Uris = new[]\n {\n interconnect_attachment.SelfLink,\n },\n SiteToSiteDataTransfer = true,\n IncludeImportRanges = new[]\n {\n \"ALL_IPV4_RANGES\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tbasicHub, err := networkconnectivity.NewHub(ctx, \"basic_hub\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"basic-hub1\"),\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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \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\trouter, err := compute.NewRouter(ctx, \"router\", \u0026compute.RouterArgs{\n\t\t\tName: pulumi.String(\"external-vpn-gateway\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.Name,\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\t_, err = compute.NewInterconnectAttachment(ctx, \"interconnect-attachment\", \u0026compute.InterconnectAttachmentArgs{\n\t\t\tName: pulumi.String(\"partner-interconnect1\"),\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\tMtu: pulumi.String(\"1500\"),\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 = networkconnectivity.NewSpoke(ctx, \"primary\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"interconnect-attachment-spoke\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke with a linked Interconnect Attachment\"),\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\tLinkedInterconnectAttachments: \u0026networkconnectivity.SpokeLinkedInterconnectAttachmentsArgs{\n\t\t\t\tUris: pulumi.StringArray{\n\t\t\t\t\tinterconnect_attachment.SelfLink,\n\t\t\t\t},\n\t\t\t\tSiteToSiteDataTransfer: pulumi.Bool(true),\n\t\t\t\tIncludeImportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ALL_IPV4_RANGES\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\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 com.pulumi.gcp.compute.InterconnectAttachment;\nimport com.pulumi.gcp.compute.InterconnectAttachmentArgs;\nimport com.pulumi.gcp.networkconnectivity.Spoke;\nimport com.pulumi.gcp.networkconnectivity.SpokeArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedInterconnectAttachmentsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basicHub = new Hub(\"basicHub\", HubArgs.builder()\n .name(\"basic-hub1\")\n .description(\"A sample hub\")\n .labels(Map.of(\"label-two\", \"value-one\"))\n .build());\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"basic-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var router = new Router(\"router\", RouterArgs.builder()\n .name(\"external-vpn-gateway\")\n .region(\"us-central1\")\n .network(network.name())\n .bgp(RouterBgpArgs.builder()\n .asn(16550)\n .build())\n .build());\n\n var interconnect_attachment = new InterconnectAttachment(\"interconnect-attachment\", InterconnectAttachmentArgs.builder()\n .name(\"partner-interconnect1\")\n .edgeAvailabilityDomain(\"AVAILABILITY_DOMAIN_1\")\n .type(\"PARTNER\")\n .router(router.id())\n .mtu(1500)\n .region(\"us-central1\")\n .build());\n\n var primary = new Spoke(\"primary\", SpokeArgs.builder()\n .name(\"interconnect-attachment-spoke\")\n .location(\"us-central1\")\n .description(\"A sample spoke with a linked Interconnect Attachment\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .hub(basicHub.id())\n .linkedInterconnectAttachments(SpokeLinkedInterconnectAttachmentsArgs.builder()\n .uris(interconnect_attachment.selfLink())\n .siteToSiteDataTransfer(true)\n .includeImportRanges(\"ALL_IPV4_RANGES\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicHub:\n type: gcp:networkconnectivity:Hub\n name: basic_hub\n properties:\n name: basic-hub1\n description: A sample hub\n labels:\n label-two: value-one\n network:\n type: gcp:compute:Network\n properties:\n name: basic-network\n autoCreateSubnetworks: false\n router:\n type: gcp:compute:Router\n properties:\n name: external-vpn-gateway\n region: us-central1\n network: ${network.name}\n bgp:\n asn: 16550\n interconnect-attachment:\n type: gcp:compute:InterconnectAttachment\n properties:\n name: partner-interconnect1\n edgeAvailabilityDomain: AVAILABILITY_DOMAIN_1\n type: PARTNER\n router: ${router.id}\n mtu: 1500\n region: us-central1\n primary:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: interconnect-attachment-spoke\n location: us-central1\n description: A sample spoke with a linked Interconnect Attachment\n labels:\n label-one: value-one\n hub: ${basicHub.id}\n linkedInterconnectAttachments:\n uris:\n - ${[\"interconnect-attachment\"].selfLink}\n siteToSiteDataTransfer: true\n includeImportRanges:\n - ALL_IPV4_RANGES\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Connectivity Spoke Linked Producer Vpc Network 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 = new gcp.compute.Network(\"network\", {\n name: \"net-spoke\",\n autoCreateSubnetworks: false,\n});\nconst address = new gcp.compute.GlobalAddress(\"address\", {\n name: \"test-address\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: network.id,\n});\nconst peering = new gcp.servicenetworking.Connection(\"peering\", {\n network: network.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [address.name],\n});\nconst basicHub = new gcp.networkconnectivity.Hub(\"basic_hub\", {name: \"hub-basic\"});\nconst linkedVpcSpoke = new gcp.networkconnectivity.Spoke(\"linked_vpc_spoke\", {\n name: \"vpc-spoke\",\n location: \"global\",\n hub: basicHub.id,\n linkedVpcNetwork: {\n uri: network.selfLink,\n },\n});\nconst primary = new gcp.networkconnectivity.Spoke(\"primary\", {\n name: \"producer-spoke\",\n location: \"global\",\n description: \"A sample spoke with a linked router appliance instance\",\n labels: {\n \"label-one\": \"value-one\",\n },\n hub: basicHub.id,\n linkedProducerVpcNetwork: {\n network: network.name,\n peering: peering.peering,\n excludeExportRanges: [\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n ],\n },\n}, {\n dependsOn: [linkedVpcSpoke],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"net-spoke\",\n auto_create_subnetworks=False)\naddress = gcp.compute.GlobalAddress(\"address\",\n name=\"test-address\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=network.id)\npeering = gcp.servicenetworking.Connection(\"peering\",\n network=network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[address.name])\nbasic_hub = gcp.networkconnectivity.Hub(\"basic_hub\", name=\"hub-basic\")\nlinked_vpc_spoke = gcp.networkconnectivity.Spoke(\"linked_vpc_spoke\",\n name=\"vpc-spoke\",\n location=\"global\",\n hub=basic_hub.id,\n linked_vpc_network={\n \"uri\": network.self_link,\n })\nprimary = gcp.networkconnectivity.Spoke(\"primary\",\n name=\"producer-spoke\",\n location=\"global\",\n description=\"A sample spoke with a linked router appliance instance\",\n labels={\n \"label-one\": \"value-one\",\n },\n hub=basic_hub.id,\n linked_producer_vpc_network={\n \"network\": network.name,\n \"peering\": peering.peering,\n \"exclude_export_ranges\": [\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n ],\n },\n opts = pulumi.ResourceOptions(depends_on=[linked_vpc_spoke]))\n```\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 = \"net-spoke\",\n AutoCreateSubnetworks = false,\n });\n\n var address = new Gcp.Compute.GlobalAddress(\"address\", new()\n {\n Name = \"test-address\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = network.Id,\n });\n\n var peering = new Gcp.ServiceNetworking.Connection(\"peering\", new()\n {\n Network = network.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n address.Name,\n },\n });\n\n var basicHub = new Gcp.NetworkConnectivity.Hub(\"basic_hub\", new()\n {\n Name = \"hub-basic\",\n });\n\n var linkedVpcSpoke = new Gcp.NetworkConnectivity.Spoke(\"linked_vpc_spoke\", new()\n {\n Name = \"vpc-spoke\",\n Location = \"global\",\n Hub = basicHub.Id,\n LinkedVpcNetwork = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedVpcNetworkArgs\n {\n Uri = network.SelfLink,\n },\n });\n\n var primary = new Gcp.NetworkConnectivity.Spoke(\"primary\", new()\n {\n Name = \"producer-spoke\",\n Location = \"global\",\n Description = \"A sample spoke with a linked router appliance instance\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Hub = basicHub.Id,\n LinkedProducerVpcNetwork = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedProducerVpcNetworkArgs\n {\n Network = network.Name,\n Peering = peering.Peering,\n ExcludeExportRanges = new[]\n {\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n linkedVpcSpoke,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"net-spoke\"),\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\taddress, err := compute.NewGlobalAddress(ctx, \"address\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"test-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: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpeering, err := servicenetworking.NewConnection(ctx, \"peering\", \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\taddress.Name,\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-basic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlinkedVpcSpoke, err := networkconnectivity.NewSpoke(ctx, \"linked_vpc_spoke\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"vpc-spoke\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tHub: basicHub.ID(),\n\t\t\tLinkedVpcNetwork: \u0026networkconnectivity.SpokeLinkedVpcNetworkArgs{\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\t_, err = networkconnectivity.NewSpoke(ctx, \"primary\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"producer-spoke\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke with a linked router 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\tLinkedProducerVpcNetwork: \u0026networkconnectivity.SpokeLinkedProducerVpcNetworkArgs{\n\t\t\t\tNetwork: network.Name,\n\t\t\t\tPeering: peering.Peering,\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},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tlinkedVpcSpoke,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\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.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.networkconnectivity.inputs.SpokeLinkedProducerVpcNetworkArgs;\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 network = new Network(\"network\", NetworkArgs.builder()\n .name(\"net-spoke\")\n .autoCreateSubnetworks(false)\n .build());\n\n var address = new GlobalAddress(\"address\", GlobalAddressArgs.builder()\n .name(\"test-address\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(network.id())\n .build());\n\n var peering = new Connection(\"peering\", ConnectionArgs.builder()\n .network(network.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(address.name())\n .build());\n\n var basicHub = new Hub(\"basicHub\", HubArgs.builder()\n .name(\"hub-basic\")\n .build());\n\n var linkedVpcSpoke = new Spoke(\"linkedVpcSpoke\", SpokeArgs.builder()\n .name(\"vpc-spoke\")\n .location(\"global\")\n .hub(basicHub.id())\n .linkedVpcNetwork(SpokeLinkedVpcNetworkArgs.builder()\n .uri(network.selfLink())\n .build())\n .build());\n\n var primary = new Spoke(\"primary\", SpokeArgs.builder()\n .name(\"producer-spoke\")\n .location(\"global\")\n .description(\"A sample spoke with a linked router appliance instance\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .hub(basicHub.id())\n .linkedProducerVpcNetwork(SpokeLinkedProducerVpcNetworkArgs.builder()\n .network(network.name())\n .peering(peering.peering())\n .excludeExportRanges( \n \"198.51.100.0/24\",\n \"10.10.0.0/16\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(linkedVpcSpoke)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n name: net-spoke\n autoCreateSubnetworks: false\n address:\n type: gcp:compute:GlobalAddress\n properties:\n name: test-address\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${network.id}\n peering:\n type: gcp:servicenetworking:Connection\n properties:\n network: ${network.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${address.name}\n basicHub:\n type: gcp:networkconnectivity:Hub\n name: basic_hub\n properties:\n name: hub-basic\n linkedVpcSpoke:\n type: gcp:networkconnectivity:Spoke\n name: linked_vpc_spoke\n properties:\n name: vpc-spoke\n location: global\n hub: ${basicHub.id}\n linkedVpcNetwork:\n uri: ${network.selfLink}\n primary:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: producer-spoke\n location: global\n description: A sample spoke with a linked router appliance instance\n labels:\n label-one: value-one\n hub: ${basicHub.id}\n linkedProducerVpcNetwork:\n network: ${network.name}\n peering: ${peering.peering}\n excludeExportRanges:\n - 198.51.100.0/24\n - 10.10.0.0/16\n options:\n dependsOn:\n - ${linkedVpcSpoke}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Connectivity Spoke Center Group\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: \"tf-net\",\n autoCreateSubnetworks: false,\n});\nconst starHub = new gcp.networkconnectivity.Hub(\"star_hub\", {\n name: \"hub-basic\",\n presetTopology: \"STAR\",\n});\nconst centerGroup = new gcp.networkconnectivity.Group(\"center_group\", {\n name: \"center\",\n hub: starHub.id,\n autoAccept: {\n autoAcceptProjects: [\n \"foo_13293\",\n \"bar_40289\",\n ],\n },\n});\nconst primary = new gcp.networkconnectivity.Spoke(\"primary\", {\n name: \"vpc-spoke\",\n location: \"global\",\n description: \"A sample spoke\",\n labels: {\n \"label-one\": \"value-one\",\n },\n hub: starHub.id,\n group: centerGroup.id,\n linkedVpcNetwork: {\n uri: network.selfLink,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"tf-net\",\n auto_create_subnetworks=False)\nstar_hub = gcp.networkconnectivity.Hub(\"star_hub\",\n name=\"hub-basic\",\n preset_topology=\"STAR\")\ncenter_group = gcp.networkconnectivity.Group(\"center_group\",\n name=\"center\",\n hub=star_hub.id,\n auto_accept={\n \"auto_accept_projects\": [\n \"foo_13293\",\n \"bar_40289\",\n ],\n })\nprimary = gcp.networkconnectivity.Spoke(\"primary\",\n name=\"vpc-spoke\",\n location=\"global\",\n description=\"A sample spoke\",\n labels={\n \"label-one\": \"value-one\",\n },\n hub=star_hub.id,\n group=center_group.id,\n linked_vpc_network={\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 = \"tf-net\",\n AutoCreateSubnetworks = false,\n });\n\n var starHub = new Gcp.NetworkConnectivity.Hub(\"star_hub\", new()\n {\n Name = \"hub-basic\",\n PresetTopology = \"STAR\",\n });\n\n var centerGroup = new Gcp.NetworkConnectivity.Group(\"center_group\", new()\n {\n Name = \"center\",\n Hub = starHub.Id,\n AutoAccept = new Gcp.NetworkConnectivity.Inputs.GroupAutoAcceptArgs\n {\n AutoAcceptProjects = new[]\n {\n \"foo_13293\",\n \"bar_40289\",\n },\n },\n });\n\n var primary = new Gcp.NetworkConnectivity.Spoke(\"primary\", new()\n {\n Name = \"vpc-spoke\",\n Location = \"global\",\n Description = \"A sample spoke\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Hub = starHub.Id,\n Group = centerGroup.Id,\n LinkedVpcNetwork = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedVpcNetworkArgs\n {\n Uri = network.SelfLink,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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(\"tf-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\tstarHub, err := networkconnectivity.NewHub(ctx, \"star_hub\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"hub-basic\"),\n\t\t\tPresetTopology: pulumi.String(\"STAR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcenterGroup, err := networkconnectivity.NewGroup(ctx, \"center_group\", \u0026networkconnectivity.GroupArgs{\n\t\t\tName: pulumi.String(\"center\"),\n\t\t\tHub: starHub.ID(),\n\t\t\tAutoAccept: \u0026networkconnectivity.GroupAutoAcceptArgs{\n\t\t\t\tAutoAcceptProjects: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"foo_13293\"),\n\t\t\t\t\tpulumi.String(\"bar_40289\"),\n\t\t\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 = networkconnectivity.NewSpoke(ctx, \"primary\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"vpc-spoke\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke\"),\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: starHub.ID(),\n\t\t\tGroup: centerGroup.ID(),\n\t\t\tLinkedVpcNetwork: \u0026networkconnectivity.SpokeLinkedVpcNetworkArgs{\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.Group;\nimport com.pulumi.gcp.networkconnectivity.GroupArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.GroupAutoAcceptArgs;\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(\"tf-net\")\n .autoCreateSubnetworks(false)\n .build());\n\n var starHub = new Hub(\"starHub\", HubArgs.builder()\n .name(\"hub-basic\")\n .presetTopology(\"STAR\")\n .build());\n\n var centerGroup = new Group(\"centerGroup\", GroupArgs.builder()\n .name(\"center\")\n .hub(starHub.id())\n .autoAccept(GroupAutoAcceptArgs.builder()\n .autoAcceptProjects( \n \"foo_13293\",\n \"bar_40289\")\n .build())\n .build());\n\n var primary = new Spoke(\"primary\", SpokeArgs.builder()\n .name(\"vpc-spoke\")\n .location(\"global\")\n .description(\"A sample spoke\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .hub(starHub.id())\n .group(centerGroup.id())\n .linkedVpcNetwork(SpokeLinkedVpcNetworkArgs.builder()\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: tf-net\n autoCreateSubnetworks: false\n starHub:\n type: gcp:networkconnectivity:Hub\n name: star_hub\n properties:\n name: hub-basic\n presetTopology: STAR\n centerGroup:\n type: gcp:networkconnectivity:Group\n name: center_group\n properties:\n name: center\n hub: ${starHub.id}\n autoAccept:\n autoAcceptProjects:\n - foo_13293\n - bar_40289\n primary:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: vpc-spoke\n location: global\n description: A sample spoke\n labels:\n label-one: value-one\n hub: ${starHub.id}\n group: ${centerGroup.id}\n linkedVpcNetwork:\n uri: ${network.selfLink}\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",
@@ -243536,6 +246253,10 @@
"description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.\n",
"secret": true
},
+ "group": {
+ "type": "string",
+ "description": "The name of the group that this spoke is associated with.\n"
+ },
"hub": {
"type": "string",
"description": "Immutable. The URI of the hub that this spoke is attached to.\n"
@@ -243603,6 +246324,7 @@
"required": [
"createTime",
"effectiveLabels",
+ "group",
"hub",
"location",
"name",
@@ -243617,6 +246339,11 @@
"type": "string",
"description": "An optional description of the spoke.\n"
},
+ "group": {
+ "type": "string",
+ "description": "The name of the group that this spoke is associated with.\n",
+ "willReplaceOnChanges": true
+ },
"hub": {
"type": "string",
"description": "Immutable. The URI of the hub that this spoke is attached to.\n",
@@ -243690,6 +246417,11 @@
"description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.\n",
"secret": true
},
+ "group": {
+ "type": "string",
+ "description": "The name of the group that this spoke is associated with.\n",
+ "willReplaceOnChanges": true
+ },
"hub": {
"type": "string",
"description": "Immutable. The URI of the hub that this spoke is attached to.\n",
@@ -243936,7 +246668,7 @@
}
},
"gcp:networkmanagement/vpcFlowLogsConfig:VpcFlowLogsConfig": {
- "description": "## Example Usage\n\n### Network Management Vpc Flow Logs Config Interconnect 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 network = new gcp.compute.Network(\"network\", {name: \"full-interconnect-test-network\"});\nconst router = new gcp.compute.Router(\"router\", {\n name: \"full-interconnect-test-router\",\n network: network.name,\n bgp: {\n asn: 16550,\n },\n});\nconst attachment = new gcp.compute.InterconnectAttachment(\"attachment\", {\n name: \"full-interconnect-test-id\",\n edgeAvailabilityDomain: \"AVAILABILITY_DOMAIN_1\",\n type: \"PARTNER\",\n router: router.id,\n mtu: \"1500\",\n});\nconst interconnect_test = new gcp.networkmanagement.VpcFlowLogsConfig(\"interconnect-test\", {\n vpcFlowLogsConfigId: \"full-interconnect-test-id\",\n location: \"global\",\n interconnectAttachment: pulumi.all([project, attachment.name]).apply(([project, name]) =\u003e `projects/${project.number}/regions/us-east4/interconnectAttachments/${name}`),\n state: \"ENABLED\",\n aggregationInterval: \"INTERVAL_5_SEC\",\n description: \"VPC Flow Logs over a VPN Gateway.\",\n flowSampling: 0.5,\n metadata: \"INCLUDE_ALL_METADATA\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nnetwork = gcp.compute.Network(\"network\", name=\"full-interconnect-test-network\")\nrouter = gcp.compute.Router(\"router\",\n name=\"full-interconnect-test-router\",\n network=network.name,\n bgp={\n \"asn\": 16550,\n })\nattachment = gcp.compute.InterconnectAttachment(\"attachment\",\n name=\"full-interconnect-test-id\",\n edge_availability_domain=\"AVAILABILITY_DOMAIN_1\",\n type=\"PARTNER\",\n router=router.id,\n mtu=\"1500\")\ninterconnect_test = gcp.networkmanagement.VpcFlowLogsConfig(\"interconnect-test\",\n vpc_flow_logs_config_id=\"full-interconnect-test-id\",\n location=\"global\",\n interconnect_attachment=attachment.name.apply(lambda name: f\"projects/{project.number}/regions/us-east4/interconnectAttachments/{name}\"),\n state=\"ENABLED\",\n aggregation_interval=\"INTERVAL_5_SEC\",\n description=\"VPC Flow Logs over a VPN Gateway.\",\n flow_sampling=0.5,\n metadata=\"INCLUDE_ALL_METADATA\")\n```\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 network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"full-interconnect-test-network\",\n });\n\n var router = new Gcp.Compute.Router(\"router\", new()\n {\n Name = \"full-interconnect-test-router\",\n Network = network.Name,\n Bgp = new Gcp.Compute.Inputs.RouterBgpArgs\n {\n Asn = 16550,\n },\n });\n\n var attachment = new Gcp.Compute.InterconnectAttachment(\"attachment\", new()\n {\n Name = \"full-interconnect-test-id\",\n EdgeAvailabilityDomain = \"AVAILABILITY_DOMAIN_1\",\n Type = \"PARTNER\",\n Router = router.Id,\n Mtu = \"1500\",\n });\n\n var interconnect_test = new Gcp.NetworkManagement.VpcFlowLogsConfig(\"interconnect-test\", new()\n {\n VpcFlowLogsConfigId = \"full-interconnect-test-id\",\n Location = \"global\",\n InterconnectAttachment = Output.Tuple(project, attachment.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/regions/us-east4/interconnectAttachments/{name}\";\n }),\n State = \"ENABLED\",\n AggregationInterval = \"INTERVAL_5_SEC\",\n Description = \"VPC Flow Logs over a VPN Gateway.\",\n FlowSampling = 0.5,\n Metadata = \"INCLUDE_ALL_METADATA\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkmanagement\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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(\"full-interconnect-test-network\"),\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(\"full-interconnect-test-router\"),\n\t\t\tNetwork: network.Name,\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\tattachment, err := compute.NewInterconnectAttachment(ctx, \"attachment\", \u0026compute.InterconnectAttachmentArgs{\n\t\t\tName: pulumi.String(\"full-interconnect-test-id\"),\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\tMtu: pulumi.String(\"1500\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkmanagement.NewVpcFlowLogsConfig(ctx, \"interconnect-test\", \u0026networkmanagement.VpcFlowLogsConfigArgs{\n\t\t\tVpcFlowLogsConfigId: pulumi.String(\"full-interconnect-test-id\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tInterconnectAttachment: attachment.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/regions/us-east4/interconnectAttachments/%v\", project.Number, name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tState: pulumi.String(\"ENABLED\"),\n\t\t\tAggregationInterval: pulumi.String(\"INTERVAL_5_SEC\"),\n\t\t\tDescription: pulumi.String(\"VPC Flow Logs over a VPN Gateway.\"),\n\t\t\tFlowSampling: pulumi.Float64(0.5),\n\t\t\tMetadata: pulumi.String(\"INCLUDE_ALL_METADATA\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\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.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.networkmanagement.VpcFlowLogsConfig;\nimport com.pulumi.gcp.networkmanagement.VpcFlowLogsConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\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 network = new Network(\"network\", NetworkArgs.builder()\n .name(\"full-interconnect-test-network\")\n .build());\n\n var router = new Router(\"router\", RouterArgs.builder()\n .name(\"full-interconnect-test-router\")\n .network(network.name())\n .bgp(RouterBgpArgs.builder()\n .asn(16550)\n .build())\n .build());\n\n var attachment = new InterconnectAttachment(\"attachment\", InterconnectAttachmentArgs.builder()\n .name(\"full-interconnect-test-id\")\n .edgeAvailabilityDomain(\"AVAILABILITY_DOMAIN_1\")\n .type(\"PARTNER\")\n .router(router.id())\n .mtu(1500)\n .build());\n\n var interconnect_test = new VpcFlowLogsConfig(\"interconnect-test\", VpcFlowLogsConfigArgs.builder()\n .vpcFlowLogsConfigId(\"full-interconnect-test-id\")\n .location(\"global\")\n .interconnectAttachment(attachment.name().applyValue(name -\u003e String.format(\"projects/%s/regions/us-east4/interconnectAttachments/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .state(\"ENABLED\")\n .aggregationInterval(\"INTERVAL_5_SEC\")\n .description(\"VPC Flow Logs over a VPN Gateway.\")\n .flowSampling(0.5)\n .metadata(\"INCLUDE_ALL_METADATA\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n interconnect-test:\n type: gcp:networkmanagement:VpcFlowLogsConfig\n properties:\n vpcFlowLogsConfigId: full-interconnect-test-id\n location: global\n interconnectAttachment: projects/${project.number}/regions/us-east4/interconnectAttachments/${attachment.name}\n state: ENABLED\n aggregationInterval: INTERVAL_5_SEC\n description: VPC Flow Logs over a VPN Gateway.\n flowSampling: 0.5\n metadata: INCLUDE_ALL_METADATA\n network:\n type: gcp:compute:Network\n properties:\n name: full-interconnect-test-network\n router:\n type: gcp:compute:Router\n properties:\n name: full-interconnect-test-router\n network: ${network.name}\n bgp:\n asn: 16550\n attachment:\n type: gcp:compute:InterconnectAttachment\n properties:\n name: full-interconnect-test-id\n edgeAvailabilityDomain: AVAILABILITY_DOMAIN_1\n type: PARTNER\n router: ${router.id}\n mtu: 1500\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Management Vpc Flow Logs Config Interconnect 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 network = new gcp.compute.Network(\"network\", {name: \"basic-interconnect-test-network\"});\nconst router = new gcp.compute.Router(\"router\", {\n name: \"basic-interconnect-test-router\",\n network: network.name,\n bgp: {\n asn: 16550,\n },\n});\nconst attachment = new gcp.compute.InterconnectAttachment(\"attachment\", {\n name: \"basic-interconnect-test-id\",\n edgeAvailabilityDomain: \"AVAILABILITY_DOMAIN_1\",\n type: \"PARTNER\",\n router: router.id,\n mtu: \"1500\",\n});\nconst interconnect_test = new gcp.networkmanagement.VpcFlowLogsConfig(\"interconnect-test\", {\n vpcFlowLogsConfigId: \"basic-interconnect-test-id\",\n location: \"global\",\n interconnectAttachment: pulumi.all([project, attachment.name]).apply(([project, name]) =\u003e `projects/${project.number}/regions/us-east4/interconnectAttachments/${name}`),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nnetwork = gcp.compute.Network(\"network\", name=\"basic-interconnect-test-network\")\nrouter = gcp.compute.Router(\"router\",\n name=\"basic-interconnect-test-router\",\n network=network.name,\n bgp={\n \"asn\": 16550,\n })\nattachment = gcp.compute.InterconnectAttachment(\"attachment\",\n name=\"basic-interconnect-test-id\",\n edge_availability_domain=\"AVAILABILITY_DOMAIN_1\",\n type=\"PARTNER\",\n router=router.id,\n mtu=\"1500\")\ninterconnect_test = gcp.networkmanagement.VpcFlowLogsConfig(\"interconnect-test\",\n vpc_flow_logs_config_id=\"basic-interconnect-test-id\",\n location=\"global\",\n interconnect_attachment=attachment.name.apply(lambda name: f\"projects/{project.number}/regions/us-east4/interconnectAttachments/{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 network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"basic-interconnect-test-network\",\n });\n\n var router = new Gcp.Compute.Router(\"router\", new()\n {\n Name = \"basic-interconnect-test-router\",\n Network = network.Name,\n Bgp = new Gcp.Compute.Inputs.RouterBgpArgs\n {\n Asn = 16550,\n },\n });\n\n var attachment = new Gcp.Compute.InterconnectAttachment(\"attachment\", new()\n {\n Name = \"basic-interconnect-test-id\",\n EdgeAvailabilityDomain = \"AVAILABILITY_DOMAIN_1\",\n Type = \"PARTNER\",\n Router = router.Id,\n Mtu = \"1500\",\n });\n\n var interconnect_test = new Gcp.NetworkManagement.VpcFlowLogsConfig(\"interconnect-test\", new()\n {\n VpcFlowLogsConfigId = \"basic-interconnect-test-id\",\n Location = \"global\",\n InterconnectAttachment = Output.Tuple(project, attachment.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/regions/us-east4/interconnectAttachments/{name}\";\n }),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkmanagement\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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(\"basic-interconnect-test-network\"),\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(\"basic-interconnect-test-router\"),\n\t\t\tNetwork: network.Name,\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\tattachment, err := compute.NewInterconnectAttachment(ctx, \"attachment\", \u0026compute.InterconnectAttachmentArgs{\n\t\t\tName: pulumi.String(\"basic-interconnect-test-id\"),\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\tMtu: pulumi.String(\"1500\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkmanagement.NewVpcFlowLogsConfig(ctx, \"interconnect-test\", \u0026networkmanagement.VpcFlowLogsConfigArgs{\n\t\t\tVpcFlowLogsConfigId: pulumi.String(\"basic-interconnect-test-id\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tInterconnectAttachment: attachment.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/regions/us-east4/interconnectAttachments/%v\", project.Number, name), 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.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.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.networkmanagement.VpcFlowLogsConfig;\nimport com.pulumi.gcp.networkmanagement.VpcFlowLogsConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\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 network = new Network(\"network\", NetworkArgs.builder()\n .name(\"basic-interconnect-test-network\")\n .build());\n\n var router = new Router(\"router\", RouterArgs.builder()\n .name(\"basic-interconnect-test-router\")\n .network(network.name())\n .bgp(RouterBgpArgs.builder()\n .asn(16550)\n .build())\n .build());\n\n var attachment = new InterconnectAttachment(\"attachment\", InterconnectAttachmentArgs.builder()\n .name(\"basic-interconnect-test-id\")\n .edgeAvailabilityDomain(\"AVAILABILITY_DOMAIN_1\")\n .type(\"PARTNER\")\n .router(router.id())\n .mtu(1500)\n .build());\n\n var interconnect_test = new VpcFlowLogsConfig(\"interconnect-test\", VpcFlowLogsConfigArgs.builder()\n .vpcFlowLogsConfigId(\"basic-interconnect-test-id\")\n .location(\"global\")\n .interconnectAttachment(attachment.name().applyValue(name -\u003e String.format(\"projects/%s/regions/us-east4/interconnectAttachments/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n interconnect-test:\n type: gcp:networkmanagement:VpcFlowLogsConfig\n properties:\n vpcFlowLogsConfigId: basic-interconnect-test-id\n location: global\n interconnectAttachment: projects/${project.number}/regions/us-east4/interconnectAttachments/${attachment.name}\n network:\n type: gcp:compute:Network\n properties:\n name: basic-interconnect-test-network\n router:\n type: gcp:compute:Router\n properties:\n name: basic-interconnect-test-router\n network: ${network.name}\n bgp:\n asn: 16550\n attachment:\n type: gcp:compute:InterconnectAttachment\n properties:\n name: basic-interconnect-test-id\n edgeAvailabilityDomain: AVAILABILITY_DOMAIN_1\n type: PARTNER\n router: ${router.id}\n mtu: 1500\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Management Vpc Flow Logs Config Vpn 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 network = new gcp.compute.Network(\"network\", {name: \"basic-test-network\"});\nconst targetGateway = new gcp.compute.VPNGateway(\"target_gateway\", {\n name: \"basic-test-gateway\",\n network: network.id,\n});\nconst vpnStaticIp = new gcp.compute.Address(\"vpn_static_ip\", {name: \"basic-test-address\"});\nconst frEsp = new gcp.compute.ForwardingRule(\"fr_esp\", {\n name: \"basic-test-fresp\",\n ipProtocol: \"ESP\",\n ipAddress: vpnStaticIp.address,\n target: targetGateway.id,\n});\nconst frUdp500 = new gcp.compute.ForwardingRule(\"fr_udp500\", {\n name: \"basic-test-fr500\",\n ipProtocol: \"UDP\",\n portRange: \"500\",\n ipAddress: vpnStaticIp.address,\n target: targetGateway.id,\n});\nconst frUdp4500 = new gcp.compute.ForwardingRule(\"fr_udp4500\", {\n name: \"basic-test-fr4500\",\n ipProtocol: \"UDP\",\n portRange: \"4500\",\n ipAddress: vpnStaticIp.address,\n target: targetGateway.id,\n});\nconst tunnel = new gcp.compute.VPNTunnel(\"tunnel\", {\n name: \"basic-test-tunnel\",\n peerIp: \"15.0.0.120\",\n sharedSecret: \"a secret message\",\n targetVpnGateway: targetGateway.id,\n}, {\n dependsOn: [\n frEsp,\n frUdp500,\n frUdp4500,\n ],\n});\nconst vpn_test = new gcp.networkmanagement.VpcFlowLogsConfig(\"vpn-test\", {\n vpcFlowLogsConfigId: \"basic-test-id\",\n location: \"global\",\n vpnTunnel: pulumi.all([project, tunnel.name]).apply(([project, name]) =\u003e `projects/${project.number}/regions/us-central1/vpnTunnels/${name}`),\n});\nconst route = new gcp.compute.Route(\"route\", {\n name: \"basic-test-route\",\n network: network.name,\n destRange: \"15.0.0.0/24\",\n priority: 1000,\n nextHopVpnTunnel: tunnel.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nnetwork = gcp.compute.Network(\"network\", name=\"basic-test-network\")\ntarget_gateway = gcp.compute.VPNGateway(\"target_gateway\",\n name=\"basic-test-gateway\",\n network=network.id)\nvpn_static_ip = gcp.compute.Address(\"vpn_static_ip\", name=\"basic-test-address\")\nfr_esp = gcp.compute.ForwardingRule(\"fr_esp\",\n name=\"basic-test-fresp\",\n ip_protocol=\"ESP\",\n ip_address=vpn_static_ip.address,\n target=target_gateway.id)\nfr_udp500 = gcp.compute.ForwardingRule(\"fr_udp500\",\n name=\"basic-test-fr500\",\n ip_protocol=\"UDP\",\n port_range=\"500\",\n ip_address=vpn_static_ip.address,\n target=target_gateway.id)\nfr_udp4500 = gcp.compute.ForwardingRule(\"fr_udp4500\",\n name=\"basic-test-fr4500\",\n ip_protocol=\"UDP\",\n port_range=\"4500\",\n ip_address=vpn_static_ip.address,\n target=target_gateway.id)\ntunnel = gcp.compute.VPNTunnel(\"tunnel\",\n name=\"basic-test-tunnel\",\n peer_ip=\"15.0.0.120\",\n shared_secret=\"a secret message\",\n target_vpn_gateway=target_gateway.id,\n opts = pulumi.ResourceOptions(depends_on=[\n fr_esp,\n fr_udp500,\n fr_udp4500,\n ]))\nvpn_test = gcp.networkmanagement.VpcFlowLogsConfig(\"vpn-test\",\n vpc_flow_logs_config_id=\"basic-test-id\",\n location=\"global\",\n vpn_tunnel=tunnel.name.apply(lambda name: f\"projects/{project.number}/regions/us-central1/vpnTunnels/{name}\"))\nroute = gcp.compute.Route(\"route\",\n name=\"basic-test-route\",\n network=network.name,\n dest_range=\"15.0.0.0/24\",\n priority=1000,\n next_hop_vpn_tunnel=tunnel.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 project = Gcp.Organizations.GetProject.Invoke();\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"basic-test-network\",\n });\n\n var targetGateway = new Gcp.Compute.VPNGateway(\"target_gateway\", new()\n {\n Name = \"basic-test-gateway\",\n Network = network.Id,\n });\n\n var vpnStaticIp = new Gcp.Compute.Address(\"vpn_static_ip\", new()\n {\n Name = \"basic-test-address\",\n });\n\n var frEsp = new Gcp.Compute.ForwardingRule(\"fr_esp\", new()\n {\n Name = \"basic-test-fresp\",\n IpProtocol = \"ESP\",\n IpAddress = vpnStaticIp.IPAddress,\n Target = targetGateway.Id,\n });\n\n var frUdp500 = new Gcp.Compute.ForwardingRule(\"fr_udp500\", new()\n {\n Name = \"basic-test-fr500\",\n IpProtocol = \"UDP\",\n PortRange = \"500\",\n IpAddress = vpnStaticIp.IPAddress,\n Target = targetGateway.Id,\n });\n\n var frUdp4500 = new Gcp.Compute.ForwardingRule(\"fr_udp4500\", new()\n {\n Name = \"basic-test-fr4500\",\n IpProtocol = \"UDP\",\n PortRange = \"4500\",\n IpAddress = vpnStaticIp.IPAddress,\n Target = targetGateway.Id,\n });\n\n var tunnel = new Gcp.Compute.VPNTunnel(\"tunnel\", new()\n {\n Name = \"basic-test-tunnel\",\n PeerIp = \"15.0.0.120\",\n SharedSecret = \"a secret message\",\n TargetVpnGateway = targetGateway.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n frEsp,\n frUdp500,\n frUdp4500,\n },\n });\n\n var vpn_test = new Gcp.NetworkManagement.VpcFlowLogsConfig(\"vpn-test\", new()\n {\n VpcFlowLogsConfigId = \"basic-test-id\",\n Location = \"global\",\n VpnTunnel = Output.Tuple(project, tunnel.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/regions/us-central1/vpnTunnels/{name}\";\n }),\n });\n\n var route = new Gcp.Compute.Route(\"route\", new()\n {\n Name = \"basic-test-route\",\n Network = network.Name,\n DestRange = \"15.0.0.0/24\",\n Priority = 1000,\n NextHopVpnTunnel = tunnel.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkmanagement\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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(\"basic-test-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttargetGateway, err := compute.NewVPNGateway(ctx, \"target_gateway\", \u0026compute.VPNGatewayArgs{\n\t\t\tName: pulumi.String(\"basic-test-gateway\"),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpnStaticIp, err := compute.NewAddress(ctx, \"vpn_static_ip\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"basic-test-address\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfrEsp, err := compute.NewForwardingRule(ctx, \"fr_esp\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"basic-test-fresp\"),\n\t\t\tIpProtocol: pulumi.String(\"ESP\"),\n\t\t\tIpAddress: vpnStaticIp.Address,\n\t\t\tTarget: targetGateway.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfrUdp500, err := compute.NewForwardingRule(ctx, \"fr_udp500\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"basic-test-fr500\"),\n\t\t\tIpProtocol: pulumi.String(\"UDP\"),\n\t\t\tPortRange: pulumi.String(\"500\"),\n\t\t\tIpAddress: vpnStaticIp.Address,\n\t\t\tTarget: targetGateway.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfrUdp4500, err := compute.NewForwardingRule(ctx, \"fr_udp4500\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"basic-test-fr4500\"),\n\t\t\tIpProtocol: pulumi.String(\"UDP\"),\n\t\t\tPortRange: pulumi.String(\"4500\"),\n\t\t\tIpAddress: vpnStaticIp.Address,\n\t\t\tTarget: targetGateway.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttunnel, err := compute.NewVPNTunnel(ctx, \"tunnel\", \u0026compute.VPNTunnelArgs{\n\t\t\tName: pulumi.String(\"basic-test-tunnel\"),\n\t\t\tPeerIp: pulumi.String(\"15.0.0.120\"),\n\t\t\tSharedSecret: pulumi.String(\"a secret message\"),\n\t\t\tTargetVpnGateway: targetGateway.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfrEsp,\n\t\t\tfrUdp500,\n\t\t\tfrUdp4500,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkmanagement.NewVpcFlowLogsConfig(ctx, \"vpn-test\", \u0026networkmanagement.VpcFlowLogsConfigArgs{\n\t\t\tVpcFlowLogsConfigId: pulumi.String(\"basic-test-id\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tVpnTunnel: tunnel.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/regions/us-central1/vpnTunnels/%v\", project.Number, name), 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 = compute.NewRoute(ctx, \"route\", \u0026compute.RouteArgs{\n\t\t\tName: pulumi.String(\"basic-test-route\"),\n\t\t\tNetwork: network.Name,\n\t\t\tDestRange: pulumi.String(\"15.0.0.0/24\"),\n\t\t\tPriority: pulumi.Int(1000),\n\t\t\tNextHopVpnTunnel: tunnel.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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.VPNGateway;\nimport com.pulumi.gcp.compute.VPNGatewayArgs;\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.gcp.compute.VPNTunnel;\nimport com.pulumi.gcp.compute.VPNTunnelArgs;\nimport com.pulumi.gcp.networkmanagement.VpcFlowLogsConfig;\nimport com.pulumi.gcp.networkmanagement.VpcFlowLogsConfigArgs;\nimport com.pulumi.gcp.compute.Route;\nimport com.pulumi.gcp.compute.RouteArgs;\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 network = new Network(\"network\", NetworkArgs.builder()\n .name(\"basic-test-network\")\n .build());\n\n var targetGateway = new VPNGateway(\"targetGateway\", VPNGatewayArgs.builder()\n .name(\"basic-test-gateway\")\n .network(network.id())\n .build());\n\n var vpnStaticIp = new Address(\"vpnStaticIp\", AddressArgs.builder()\n .name(\"basic-test-address\")\n .build());\n\n var frEsp = new ForwardingRule(\"frEsp\", ForwardingRuleArgs.builder()\n .name(\"basic-test-fresp\")\n .ipProtocol(\"ESP\")\n .ipAddress(vpnStaticIp.address())\n .target(targetGateway.id())\n .build());\n\n var frUdp500 = new ForwardingRule(\"frUdp500\", ForwardingRuleArgs.builder()\n .name(\"basic-test-fr500\")\n .ipProtocol(\"UDP\")\n .portRange(\"500\")\n .ipAddress(vpnStaticIp.address())\n .target(targetGateway.id())\n .build());\n\n var frUdp4500 = new ForwardingRule(\"frUdp4500\", ForwardingRuleArgs.builder()\n .name(\"basic-test-fr4500\")\n .ipProtocol(\"UDP\")\n .portRange(\"4500\")\n .ipAddress(vpnStaticIp.address())\n .target(targetGateway.id())\n .build());\n\n var tunnel = new VPNTunnel(\"tunnel\", VPNTunnelArgs.builder()\n .name(\"basic-test-tunnel\")\n .peerIp(\"15.0.0.120\")\n .sharedSecret(\"a secret message\")\n .targetVpnGateway(targetGateway.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n frEsp,\n frUdp500,\n frUdp4500)\n .build());\n\n var vpn_test = new VpcFlowLogsConfig(\"vpn-test\", VpcFlowLogsConfigArgs.builder()\n .vpcFlowLogsConfigId(\"basic-test-id\")\n .location(\"global\")\n .vpnTunnel(tunnel.name().applyValue(name -\u003e String.format(\"projects/%s/regions/us-central1/vpnTunnels/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .build());\n\n var route = new Route(\"route\", RouteArgs.builder()\n .name(\"basic-test-route\")\n .network(network.name())\n .destRange(\"15.0.0.0/24\")\n .priority(1000)\n .nextHopVpnTunnel(tunnel.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vpn-test:\n type: gcp:networkmanagement:VpcFlowLogsConfig\n properties:\n vpcFlowLogsConfigId: basic-test-id\n location: global\n vpnTunnel: projects/${project.number}/regions/us-central1/vpnTunnels/${tunnel.name}\n tunnel:\n type: gcp:compute:VPNTunnel\n properties:\n name: basic-test-tunnel\n peerIp: 15.0.0.120\n sharedSecret: a secret message\n targetVpnGateway: ${targetGateway.id}\n options:\n dependsOn:\n - ${frEsp}\n - ${frUdp500}\n - ${frUdp4500}\n targetGateway:\n type: gcp:compute:VPNGateway\n name: target_gateway\n properties:\n name: basic-test-gateway\n network: ${network.id}\n network:\n type: gcp:compute:Network\n properties:\n name: basic-test-network\n vpnStaticIp:\n type: gcp:compute:Address\n name: vpn_static_ip\n properties:\n name: basic-test-address\n frEsp:\n type: gcp:compute:ForwardingRule\n name: fr_esp\n properties:\n name: basic-test-fresp\n ipProtocol: ESP\n ipAddress: ${vpnStaticIp.address}\n target: ${targetGateway.id}\n frUdp500:\n type: gcp:compute:ForwardingRule\n name: fr_udp500\n properties:\n name: basic-test-fr500\n ipProtocol: UDP\n portRange: '500'\n ipAddress: ${vpnStaticIp.address}\n target: ${targetGateway.id}\n frUdp4500:\n type: gcp:compute:ForwardingRule\n name: fr_udp4500\n properties:\n name: basic-test-fr4500\n ipProtocol: UDP\n portRange: '4500'\n ipAddress: ${vpnStaticIp.address}\n target: ${targetGateway.id}\n route:\n type: gcp:compute:Route\n properties:\n name: basic-test-route\n network: ${network.name}\n destRange: 15.0.0.0/24\n priority: 1000\n nextHopVpnTunnel: ${tunnel.id}\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Management Vpc Flow Logs Config Vpn 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 network = new gcp.compute.Network(\"network\", {name: \"full-test-network\"});\nconst targetGateway = new gcp.compute.VPNGateway(\"target_gateway\", {\n name: \"full-test-gateway\",\n network: network.id,\n});\nconst vpnStaticIp = new gcp.compute.Address(\"vpn_static_ip\", {name: \"full-test-address\"});\nconst frEsp = new gcp.compute.ForwardingRule(\"fr_esp\", {\n name: \"full-test-fresp\",\n ipProtocol: \"ESP\",\n ipAddress: vpnStaticIp.address,\n target: targetGateway.id,\n});\nconst frUdp500 = new gcp.compute.ForwardingRule(\"fr_udp500\", {\n name: \"full-test-fr500\",\n ipProtocol: \"UDP\",\n portRange: \"500\",\n ipAddress: vpnStaticIp.address,\n target: targetGateway.id,\n});\nconst frUdp4500 = new gcp.compute.ForwardingRule(\"fr_udp4500\", {\n name: \"full-test-fr4500\",\n ipProtocol: \"UDP\",\n portRange: \"4500\",\n ipAddress: vpnStaticIp.address,\n target: targetGateway.id,\n});\nconst tunnel = new gcp.compute.VPNTunnel(\"tunnel\", {\n name: \"full-test-tunnel\",\n peerIp: \"15.0.0.120\",\n sharedSecret: \"a secret message\",\n targetVpnGateway: targetGateway.id,\n}, {\n dependsOn: [\n frEsp,\n frUdp500,\n frUdp4500,\n ],\n});\nconst vpn_test = new gcp.networkmanagement.VpcFlowLogsConfig(\"vpn-test\", {\n vpcFlowLogsConfigId: \"full-test-id\",\n location: \"global\",\n vpnTunnel: pulumi.all([project, tunnel.name]).apply(([project, name]) =\u003e `projects/${project.number}/regions/us-central1/vpnTunnels/${name}`),\n state: \"ENABLED\",\n aggregationInterval: \"INTERVAL_5_SEC\",\n description: \"VPC Flow Logs over a VPN Gateway.\",\n flowSampling: 0.5,\n metadata: \"INCLUDE_ALL_METADATA\",\n});\nconst route = new gcp.compute.Route(\"route\", {\n name: \"full-test-route\",\n network: network.name,\n destRange: \"15.0.0.0/24\",\n priority: 1000,\n nextHopVpnTunnel: tunnel.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nnetwork = gcp.compute.Network(\"network\", name=\"full-test-network\")\ntarget_gateway = gcp.compute.VPNGateway(\"target_gateway\",\n name=\"full-test-gateway\",\n network=network.id)\nvpn_static_ip = gcp.compute.Address(\"vpn_static_ip\", name=\"full-test-address\")\nfr_esp = gcp.compute.ForwardingRule(\"fr_esp\",\n name=\"full-test-fresp\",\n ip_protocol=\"ESP\",\n ip_address=vpn_static_ip.address,\n target=target_gateway.id)\nfr_udp500 = gcp.compute.ForwardingRule(\"fr_udp500\",\n name=\"full-test-fr500\",\n ip_protocol=\"UDP\",\n port_range=\"500\",\n ip_address=vpn_static_ip.address,\n target=target_gateway.id)\nfr_udp4500 = gcp.compute.ForwardingRule(\"fr_udp4500\",\n name=\"full-test-fr4500\",\n ip_protocol=\"UDP\",\n port_range=\"4500\",\n ip_address=vpn_static_ip.address,\n target=target_gateway.id)\ntunnel = gcp.compute.VPNTunnel(\"tunnel\",\n name=\"full-test-tunnel\",\n peer_ip=\"15.0.0.120\",\n shared_secret=\"a secret message\",\n target_vpn_gateway=target_gateway.id,\n opts = pulumi.ResourceOptions(depends_on=[\n fr_esp,\n fr_udp500,\n fr_udp4500,\n ]))\nvpn_test = gcp.networkmanagement.VpcFlowLogsConfig(\"vpn-test\",\n vpc_flow_logs_config_id=\"full-test-id\",\n location=\"global\",\n vpn_tunnel=tunnel.name.apply(lambda name: f\"projects/{project.number}/regions/us-central1/vpnTunnels/{name}\"),\n state=\"ENABLED\",\n aggregation_interval=\"INTERVAL_5_SEC\",\n description=\"VPC Flow Logs over a VPN Gateway.\",\n flow_sampling=0.5,\n metadata=\"INCLUDE_ALL_METADATA\")\nroute = gcp.compute.Route(\"route\",\n name=\"full-test-route\",\n network=network.name,\n dest_range=\"15.0.0.0/24\",\n priority=1000,\n next_hop_vpn_tunnel=tunnel.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 project = Gcp.Organizations.GetProject.Invoke();\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"full-test-network\",\n });\n\n var targetGateway = new Gcp.Compute.VPNGateway(\"target_gateway\", new()\n {\n Name = \"full-test-gateway\",\n Network = network.Id,\n });\n\n var vpnStaticIp = new Gcp.Compute.Address(\"vpn_static_ip\", new()\n {\n Name = \"full-test-address\",\n });\n\n var frEsp = new Gcp.Compute.ForwardingRule(\"fr_esp\", new()\n {\n Name = \"full-test-fresp\",\n IpProtocol = \"ESP\",\n IpAddress = vpnStaticIp.IPAddress,\n Target = targetGateway.Id,\n });\n\n var frUdp500 = new Gcp.Compute.ForwardingRule(\"fr_udp500\", new()\n {\n Name = \"full-test-fr500\",\n IpProtocol = \"UDP\",\n PortRange = \"500\",\n IpAddress = vpnStaticIp.IPAddress,\n Target = targetGateway.Id,\n });\n\n var frUdp4500 = new Gcp.Compute.ForwardingRule(\"fr_udp4500\", new()\n {\n Name = \"full-test-fr4500\",\n IpProtocol = \"UDP\",\n PortRange = \"4500\",\n IpAddress = vpnStaticIp.IPAddress,\n Target = targetGateway.Id,\n });\n\n var tunnel = new Gcp.Compute.VPNTunnel(\"tunnel\", new()\n {\n Name = \"full-test-tunnel\",\n PeerIp = \"15.0.0.120\",\n SharedSecret = \"a secret message\",\n TargetVpnGateway = targetGateway.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n frEsp,\n frUdp500,\n frUdp4500,\n },\n });\n\n var vpn_test = new Gcp.NetworkManagement.VpcFlowLogsConfig(\"vpn-test\", new()\n {\n VpcFlowLogsConfigId = \"full-test-id\",\n Location = \"global\",\n VpnTunnel = Output.Tuple(project, tunnel.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/regions/us-central1/vpnTunnels/{name}\";\n }),\n State = \"ENABLED\",\n AggregationInterval = \"INTERVAL_5_SEC\",\n Description = \"VPC Flow Logs over a VPN Gateway.\",\n FlowSampling = 0.5,\n Metadata = \"INCLUDE_ALL_METADATA\",\n });\n\n var route = new Gcp.Compute.Route(\"route\", new()\n {\n Name = \"full-test-route\",\n Network = network.Name,\n DestRange = \"15.0.0.0/24\",\n Priority = 1000,\n NextHopVpnTunnel = tunnel.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkmanagement\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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(\"full-test-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttargetGateway, err := compute.NewVPNGateway(ctx, \"target_gateway\", \u0026compute.VPNGatewayArgs{\n\t\t\tName: pulumi.String(\"full-test-gateway\"),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpnStaticIp, err := compute.NewAddress(ctx, \"vpn_static_ip\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"full-test-address\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfrEsp, err := compute.NewForwardingRule(ctx, \"fr_esp\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"full-test-fresp\"),\n\t\t\tIpProtocol: pulumi.String(\"ESP\"),\n\t\t\tIpAddress: vpnStaticIp.Address,\n\t\t\tTarget: targetGateway.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfrUdp500, err := compute.NewForwardingRule(ctx, \"fr_udp500\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"full-test-fr500\"),\n\t\t\tIpProtocol: pulumi.String(\"UDP\"),\n\t\t\tPortRange: pulumi.String(\"500\"),\n\t\t\tIpAddress: vpnStaticIp.Address,\n\t\t\tTarget: targetGateway.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfrUdp4500, err := compute.NewForwardingRule(ctx, \"fr_udp4500\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"full-test-fr4500\"),\n\t\t\tIpProtocol: pulumi.String(\"UDP\"),\n\t\t\tPortRange: pulumi.String(\"4500\"),\n\t\t\tIpAddress: vpnStaticIp.Address,\n\t\t\tTarget: targetGateway.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttunnel, err := compute.NewVPNTunnel(ctx, \"tunnel\", \u0026compute.VPNTunnelArgs{\n\t\t\tName: pulumi.String(\"full-test-tunnel\"),\n\t\t\tPeerIp: pulumi.String(\"15.0.0.120\"),\n\t\t\tSharedSecret: pulumi.String(\"a secret message\"),\n\t\t\tTargetVpnGateway: targetGateway.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfrEsp,\n\t\t\tfrUdp500,\n\t\t\tfrUdp4500,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkmanagement.NewVpcFlowLogsConfig(ctx, \"vpn-test\", \u0026networkmanagement.VpcFlowLogsConfigArgs{\n\t\t\tVpcFlowLogsConfigId: pulumi.String(\"full-test-id\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tVpnTunnel: tunnel.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/regions/us-central1/vpnTunnels/%v\", project.Number, name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tState: pulumi.String(\"ENABLED\"),\n\t\t\tAggregationInterval: pulumi.String(\"INTERVAL_5_SEC\"),\n\t\t\tDescription: pulumi.String(\"VPC Flow Logs over a VPN Gateway.\"),\n\t\t\tFlowSampling: pulumi.Float64(0.5),\n\t\t\tMetadata: pulumi.String(\"INCLUDE_ALL_METADATA\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRoute(ctx, \"route\", \u0026compute.RouteArgs{\n\t\t\tName: pulumi.String(\"full-test-route\"),\n\t\t\tNetwork: network.Name,\n\t\t\tDestRange: pulumi.String(\"15.0.0.0/24\"),\n\t\t\tPriority: pulumi.Int(1000),\n\t\t\tNextHopVpnTunnel: tunnel.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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.VPNGateway;\nimport com.pulumi.gcp.compute.VPNGatewayArgs;\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.gcp.compute.VPNTunnel;\nimport com.pulumi.gcp.compute.VPNTunnelArgs;\nimport com.pulumi.gcp.networkmanagement.VpcFlowLogsConfig;\nimport com.pulumi.gcp.networkmanagement.VpcFlowLogsConfigArgs;\nimport com.pulumi.gcp.compute.Route;\nimport com.pulumi.gcp.compute.RouteArgs;\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 network = new Network(\"network\", NetworkArgs.builder()\n .name(\"full-test-network\")\n .build());\n\n var targetGateway = new VPNGateway(\"targetGateway\", VPNGatewayArgs.builder()\n .name(\"full-test-gateway\")\n .network(network.id())\n .build());\n\n var vpnStaticIp = new Address(\"vpnStaticIp\", AddressArgs.builder()\n .name(\"full-test-address\")\n .build());\n\n var frEsp = new ForwardingRule(\"frEsp\", ForwardingRuleArgs.builder()\n .name(\"full-test-fresp\")\n .ipProtocol(\"ESP\")\n .ipAddress(vpnStaticIp.address())\n .target(targetGateway.id())\n .build());\n\n var frUdp500 = new ForwardingRule(\"frUdp500\", ForwardingRuleArgs.builder()\n .name(\"full-test-fr500\")\n .ipProtocol(\"UDP\")\n .portRange(\"500\")\n .ipAddress(vpnStaticIp.address())\n .target(targetGateway.id())\n .build());\n\n var frUdp4500 = new ForwardingRule(\"frUdp4500\", ForwardingRuleArgs.builder()\n .name(\"full-test-fr4500\")\n .ipProtocol(\"UDP\")\n .portRange(\"4500\")\n .ipAddress(vpnStaticIp.address())\n .target(targetGateway.id())\n .build());\n\n var tunnel = new VPNTunnel(\"tunnel\", VPNTunnelArgs.builder()\n .name(\"full-test-tunnel\")\n .peerIp(\"15.0.0.120\")\n .sharedSecret(\"a secret message\")\n .targetVpnGateway(targetGateway.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n frEsp,\n frUdp500,\n frUdp4500)\n .build());\n\n var vpn_test = new VpcFlowLogsConfig(\"vpn-test\", VpcFlowLogsConfigArgs.builder()\n .vpcFlowLogsConfigId(\"full-test-id\")\n .location(\"global\")\n .vpnTunnel(tunnel.name().applyValue(name -\u003e String.format(\"projects/%s/regions/us-central1/vpnTunnels/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .state(\"ENABLED\")\n .aggregationInterval(\"INTERVAL_5_SEC\")\n .description(\"VPC Flow Logs over a VPN Gateway.\")\n .flowSampling(0.5)\n .metadata(\"INCLUDE_ALL_METADATA\")\n .build());\n\n var route = new Route(\"route\", RouteArgs.builder()\n .name(\"full-test-route\")\n .network(network.name())\n .destRange(\"15.0.0.0/24\")\n .priority(1000)\n .nextHopVpnTunnel(tunnel.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vpn-test:\n type: gcp:networkmanagement:VpcFlowLogsConfig\n properties:\n vpcFlowLogsConfigId: full-test-id\n location: global\n vpnTunnel: projects/${project.number}/regions/us-central1/vpnTunnels/${tunnel.name}\n state: ENABLED\n aggregationInterval: INTERVAL_5_SEC\n description: VPC Flow Logs over a VPN Gateway.\n flowSampling: 0.5\n metadata: INCLUDE_ALL_METADATA\n tunnel:\n type: gcp:compute:VPNTunnel\n properties:\n name: full-test-tunnel\n peerIp: 15.0.0.120\n sharedSecret: a secret message\n targetVpnGateway: ${targetGateway.id}\n options:\n dependsOn:\n - ${frEsp}\n - ${frUdp500}\n - ${frUdp4500}\n targetGateway:\n type: gcp:compute:VPNGateway\n name: target_gateway\n properties:\n name: full-test-gateway\n network: ${network.id}\n network:\n type: gcp:compute:Network\n properties:\n name: full-test-network\n vpnStaticIp:\n type: gcp:compute:Address\n name: vpn_static_ip\n properties:\n name: full-test-address\n frEsp:\n type: gcp:compute:ForwardingRule\n name: fr_esp\n properties:\n name: full-test-fresp\n ipProtocol: ESP\n ipAddress: ${vpnStaticIp.address}\n target: ${targetGateway.id}\n frUdp500:\n type: gcp:compute:ForwardingRule\n name: fr_udp500\n properties:\n name: full-test-fr500\n ipProtocol: UDP\n portRange: '500'\n ipAddress: ${vpnStaticIp.address}\n target: ${targetGateway.id}\n frUdp4500:\n type: gcp:compute:ForwardingRule\n name: fr_udp4500\n properties:\n name: full-test-fr4500\n ipProtocol: UDP\n portRange: '4500'\n ipAddress: ${vpnStaticIp.address}\n target: ${targetGateway.id}\n route:\n type: gcp:compute:Route\n properties:\n name: full-test-route\n network: ${network.name}\n destRange: 15.0.0.0/24\n priority: 1000\n nextHopVpnTunnel: ${tunnel.id}\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVpcFlowLogsConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/vpcFlowLogsConfigs/{{vpc_flow_logs_config_id}}`\n\n* `{{project}}/{{location}}/{{vpc_flow_logs_config_id}}`\n\n* `{{location}}/{{vpc_flow_logs_config_id}}`\n\nWhen using the `pulumi import` command, VpcFlowLogsConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkmanagement/vpcFlowLogsConfig:VpcFlowLogsConfig default projects/{{project}}/locations/{{location}}/vpcFlowLogsConfigs/{{vpc_flow_logs_config_id}}\n```\n\n```sh\n$ pulumi import gcp:networkmanagement/vpcFlowLogsConfig:VpcFlowLogsConfig default {{project}}/{{location}}/{{vpc_flow_logs_config_id}}\n```\n\n```sh\n$ pulumi import gcp:networkmanagement/vpcFlowLogsConfig:VpcFlowLogsConfig default {{location}}/{{vpc_flow_logs_config_id}}\n```\n\n",
+ "description": "VPC Flow Logs Config is a resource that lets you configure Flow Logs for VPC, Interconnect attachments or VPN Tunnels.\n\n\n\n## Example Usage\n\n### Network Management Vpc Flow Logs Config Interconnect 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 network = new gcp.compute.Network(\"network\", {name: \"full-interconnect-test-network\"});\nconst router = new gcp.compute.Router(\"router\", {\n name: \"full-interconnect-test-router\",\n network: network.name,\n bgp: {\n asn: 16550,\n },\n});\nconst attachment = new gcp.compute.InterconnectAttachment(\"attachment\", {\n name: \"full-interconnect-test-id\",\n edgeAvailabilityDomain: \"AVAILABILITY_DOMAIN_1\",\n type: \"PARTNER\",\n router: router.id,\n mtu: \"1500\",\n});\nconst interconnect_test = new gcp.networkmanagement.VpcFlowLogsConfig(\"interconnect-test\", {\n vpcFlowLogsConfigId: \"full-interconnect-test-id\",\n location: \"global\",\n interconnectAttachment: pulumi.all([project, attachment.name]).apply(([project, name]) =\u003e `projects/${project.number}/regions/us-east4/interconnectAttachments/${name}`),\n state: \"ENABLED\",\n aggregationInterval: \"INTERVAL_5_SEC\",\n description: \"VPC Flow Logs over a VPN Gateway.\",\n flowSampling: 0.5,\n metadata: \"INCLUDE_ALL_METADATA\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nnetwork = gcp.compute.Network(\"network\", name=\"full-interconnect-test-network\")\nrouter = gcp.compute.Router(\"router\",\n name=\"full-interconnect-test-router\",\n network=network.name,\n bgp={\n \"asn\": 16550,\n })\nattachment = gcp.compute.InterconnectAttachment(\"attachment\",\n name=\"full-interconnect-test-id\",\n edge_availability_domain=\"AVAILABILITY_DOMAIN_1\",\n type=\"PARTNER\",\n router=router.id,\n mtu=\"1500\")\ninterconnect_test = gcp.networkmanagement.VpcFlowLogsConfig(\"interconnect-test\",\n vpc_flow_logs_config_id=\"full-interconnect-test-id\",\n location=\"global\",\n interconnect_attachment=attachment.name.apply(lambda name: f\"projects/{project.number}/regions/us-east4/interconnectAttachments/{name}\"),\n state=\"ENABLED\",\n aggregation_interval=\"INTERVAL_5_SEC\",\n description=\"VPC Flow Logs over a VPN Gateway.\",\n flow_sampling=0.5,\n metadata=\"INCLUDE_ALL_METADATA\")\n```\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 network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"full-interconnect-test-network\",\n });\n\n var router = new Gcp.Compute.Router(\"router\", new()\n {\n Name = \"full-interconnect-test-router\",\n Network = network.Name,\n Bgp = new Gcp.Compute.Inputs.RouterBgpArgs\n {\n Asn = 16550,\n },\n });\n\n var attachment = new Gcp.Compute.InterconnectAttachment(\"attachment\", new()\n {\n Name = \"full-interconnect-test-id\",\n EdgeAvailabilityDomain = \"AVAILABILITY_DOMAIN_1\",\n Type = \"PARTNER\",\n Router = router.Id,\n Mtu = \"1500\",\n });\n\n var interconnect_test = new Gcp.NetworkManagement.VpcFlowLogsConfig(\"interconnect-test\", new()\n {\n VpcFlowLogsConfigId = \"full-interconnect-test-id\",\n Location = \"global\",\n InterconnectAttachment = Output.Tuple(project, attachment.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/regions/us-east4/interconnectAttachments/{name}\";\n }),\n State = \"ENABLED\",\n AggregationInterval = \"INTERVAL_5_SEC\",\n Description = \"VPC Flow Logs over a VPN Gateway.\",\n FlowSampling = 0.5,\n Metadata = \"INCLUDE_ALL_METADATA\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkmanagement\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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(\"full-interconnect-test-network\"),\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(\"full-interconnect-test-router\"),\n\t\t\tNetwork: network.Name,\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\tattachment, err := compute.NewInterconnectAttachment(ctx, \"attachment\", \u0026compute.InterconnectAttachmentArgs{\n\t\t\tName: pulumi.String(\"full-interconnect-test-id\"),\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\tMtu: pulumi.String(\"1500\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkmanagement.NewVpcFlowLogsConfig(ctx, \"interconnect-test\", \u0026networkmanagement.VpcFlowLogsConfigArgs{\n\t\t\tVpcFlowLogsConfigId: pulumi.String(\"full-interconnect-test-id\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tInterconnectAttachment: attachment.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/regions/us-east4/interconnectAttachments/%v\", project.Number, name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tState: pulumi.String(\"ENABLED\"),\n\t\t\tAggregationInterval: pulumi.String(\"INTERVAL_5_SEC\"),\n\t\t\tDescription: pulumi.String(\"VPC Flow Logs over a VPN Gateway.\"),\n\t\t\tFlowSampling: pulumi.Float64(0.5),\n\t\t\tMetadata: pulumi.String(\"INCLUDE_ALL_METADATA\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\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.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.networkmanagement.VpcFlowLogsConfig;\nimport com.pulumi.gcp.networkmanagement.VpcFlowLogsConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\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 network = new Network(\"network\", NetworkArgs.builder()\n .name(\"full-interconnect-test-network\")\n .build());\n\n var router = new Router(\"router\", RouterArgs.builder()\n .name(\"full-interconnect-test-router\")\n .network(network.name())\n .bgp(RouterBgpArgs.builder()\n .asn(16550)\n .build())\n .build());\n\n var attachment = new InterconnectAttachment(\"attachment\", InterconnectAttachmentArgs.builder()\n .name(\"full-interconnect-test-id\")\n .edgeAvailabilityDomain(\"AVAILABILITY_DOMAIN_1\")\n .type(\"PARTNER\")\n .router(router.id())\n .mtu(1500)\n .build());\n\n var interconnect_test = new VpcFlowLogsConfig(\"interconnect-test\", VpcFlowLogsConfigArgs.builder()\n .vpcFlowLogsConfigId(\"full-interconnect-test-id\")\n .location(\"global\")\n .interconnectAttachment(attachment.name().applyValue(name -\u003e String.format(\"projects/%s/regions/us-east4/interconnectAttachments/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .state(\"ENABLED\")\n .aggregationInterval(\"INTERVAL_5_SEC\")\n .description(\"VPC Flow Logs over a VPN Gateway.\")\n .flowSampling(0.5)\n .metadata(\"INCLUDE_ALL_METADATA\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n interconnect-test:\n type: gcp:networkmanagement:VpcFlowLogsConfig\n properties:\n vpcFlowLogsConfigId: full-interconnect-test-id\n location: global\n interconnectAttachment: projects/${project.number}/regions/us-east4/interconnectAttachments/${attachment.name}\n state: ENABLED\n aggregationInterval: INTERVAL_5_SEC\n description: VPC Flow Logs over a VPN Gateway.\n flowSampling: 0.5\n metadata: INCLUDE_ALL_METADATA\n network:\n type: gcp:compute:Network\n properties:\n name: full-interconnect-test-network\n router:\n type: gcp:compute:Router\n properties:\n name: full-interconnect-test-router\n network: ${network.name}\n bgp:\n asn: 16550\n attachment:\n type: gcp:compute:InterconnectAttachment\n properties:\n name: full-interconnect-test-id\n edgeAvailabilityDomain: AVAILABILITY_DOMAIN_1\n type: PARTNER\n router: ${router.id}\n mtu: 1500\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Management Vpc Flow Logs Config Interconnect 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 network = new gcp.compute.Network(\"network\", {name: \"basic-interconnect-test-network\"});\nconst router = new gcp.compute.Router(\"router\", {\n name: \"basic-interconnect-test-router\",\n network: network.name,\n bgp: {\n asn: 16550,\n },\n});\nconst attachment = new gcp.compute.InterconnectAttachment(\"attachment\", {\n name: \"basic-interconnect-test-id\",\n edgeAvailabilityDomain: \"AVAILABILITY_DOMAIN_1\",\n type: \"PARTNER\",\n router: router.id,\n mtu: \"1500\",\n});\nconst interconnect_test = new gcp.networkmanagement.VpcFlowLogsConfig(\"interconnect-test\", {\n vpcFlowLogsConfigId: \"basic-interconnect-test-id\",\n location: \"global\",\n interconnectAttachment: pulumi.all([project, attachment.name]).apply(([project, name]) =\u003e `projects/${project.number}/regions/us-east4/interconnectAttachments/${name}`),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nnetwork = gcp.compute.Network(\"network\", name=\"basic-interconnect-test-network\")\nrouter = gcp.compute.Router(\"router\",\n name=\"basic-interconnect-test-router\",\n network=network.name,\n bgp={\n \"asn\": 16550,\n })\nattachment = gcp.compute.InterconnectAttachment(\"attachment\",\n name=\"basic-interconnect-test-id\",\n edge_availability_domain=\"AVAILABILITY_DOMAIN_1\",\n type=\"PARTNER\",\n router=router.id,\n mtu=\"1500\")\ninterconnect_test = gcp.networkmanagement.VpcFlowLogsConfig(\"interconnect-test\",\n vpc_flow_logs_config_id=\"basic-interconnect-test-id\",\n location=\"global\",\n interconnect_attachment=attachment.name.apply(lambda name: f\"projects/{project.number}/regions/us-east4/interconnectAttachments/{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 network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"basic-interconnect-test-network\",\n });\n\n var router = new Gcp.Compute.Router(\"router\", new()\n {\n Name = \"basic-interconnect-test-router\",\n Network = network.Name,\n Bgp = new Gcp.Compute.Inputs.RouterBgpArgs\n {\n Asn = 16550,\n },\n });\n\n var attachment = new Gcp.Compute.InterconnectAttachment(\"attachment\", new()\n {\n Name = \"basic-interconnect-test-id\",\n EdgeAvailabilityDomain = \"AVAILABILITY_DOMAIN_1\",\n Type = \"PARTNER\",\n Router = router.Id,\n Mtu = \"1500\",\n });\n\n var interconnect_test = new Gcp.NetworkManagement.VpcFlowLogsConfig(\"interconnect-test\", new()\n {\n VpcFlowLogsConfigId = \"basic-interconnect-test-id\",\n Location = \"global\",\n InterconnectAttachment = Output.Tuple(project, attachment.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/regions/us-east4/interconnectAttachments/{name}\";\n }),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkmanagement\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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(\"basic-interconnect-test-network\"),\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(\"basic-interconnect-test-router\"),\n\t\t\tNetwork: network.Name,\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\tattachment, err := compute.NewInterconnectAttachment(ctx, \"attachment\", \u0026compute.InterconnectAttachmentArgs{\n\t\t\tName: pulumi.String(\"basic-interconnect-test-id\"),\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\tMtu: pulumi.String(\"1500\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkmanagement.NewVpcFlowLogsConfig(ctx, \"interconnect-test\", \u0026networkmanagement.VpcFlowLogsConfigArgs{\n\t\t\tVpcFlowLogsConfigId: pulumi.String(\"basic-interconnect-test-id\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tInterconnectAttachment: attachment.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/regions/us-east4/interconnectAttachments/%v\", project.Number, name), 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.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.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.networkmanagement.VpcFlowLogsConfig;\nimport com.pulumi.gcp.networkmanagement.VpcFlowLogsConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\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 network = new Network(\"network\", NetworkArgs.builder()\n .name(\"basic-interconnect-test-network\")\n .build());\n\n var router = new Router(\"router\", RouterArgs.builder()\n .name(\"basic-interconnect-test-router\")\n .network(network.name())\n .bgp(RouterBgpArgs.builder()\n .asn(16550)\n .build())\n .build());\n\n var attachment = new InterconnectAttachment(\"attachment\", InterconnectAttachmentArgs.builder()\n .name(\"basic-interconnect-test-id\")\n .edgeAvailabilityDomain(\"AVAILABILITY_DOMAIN_1\")\n .type(\"PARTNER\")\n .router(router.id())\n .mtu(1500)\n .build());\n\n var interconnect_test = new VpcFlowLogsConfig(\"interconnect-test\", VpcFlowLogsConfigArgs.builder()\n .vpcFlowLogsConfigId(\"basic-interconnect-test-id\")\n .location(\"global\")\n .interconnectAttachment(attachment.name().applyValue(name -\u003e String.format(\"projects/%s/regions/us-east4/interconnectAttachments/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n interconnect-test:\n type: gcp:networkmanagement:VpcFlowLogsConfig\n properties:\n vpcFlowLogsConfigId: basic-interconnect-test-id\n location: global\n interconnectAttachment: projects/${project.number}/regions/us-east4/interconnectAttachments/${attachment.name}\n network:\n type: gcp:compute:Network\n properties:\n name: basic-interconnect-test-network\n router:\n type: gcp:compute:Router\n properties:\n name: basic-interconnect-test-router\n network: ${network.name}\n bgp:\n asn: 16550\n attachment:\n type: gcp:compute:InterconnectAttachment\n properties:\n name: basic-interconnect-test-id\n edgeAvailabilityDomain: AVAILABILITY_DOMAIN_1\n type: PARTNER\n router: ${router.id}\n mtu: 1500\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Management Vpc Flow Logs Config Vpn 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 network = new gcp.compute.Network(\"network\", {name: \"basic-test-network\"});\nconst targetGateway = new gcp.compute.VPNGateway(\"target_gateway\", {\n name: \"basic-test-gateway\",\n network: network.id,\n});\nconst vpnStaticIp = new gcp.compute.Address(\"vpn_static_ip\", {name: \"basic-test-address\"});\nconst frEsp = new gcp.compute.ForwardingRule(\"fr_esp\", {\n name: \"basic-test-fresp\",\n ipProtocol: \"ESP\",\n ipAddress: vpnStaticIp.address,\n target: targetGateway.id,\n});\nconst frUdp500 = new gcp.compute.ForwardingRule(\"fr_udp500\", {\n name: \"basic-test-fr500\",\n ipProtocol: \"UDP\",\n portRange: \"500\",\n ipAddress: vpnStaticIp.address,\n target: targetGateway.id,\n});\nconst frUdp4500 = new gcp.compute.ForwardingRule(\"fr_udp4500\", {\n name: \"basic-test-fr4500\",\n ipProtocol: \"UDP\",\n portRange: \"4500\",\n ipAddress: vpnStaticIp.address,\n target: targetGateway.id,\n});\nconst tunnel = new gcp.compute.VPNTunnel(\"tunnel\", {\n name: \"basic-test-tunnel\",\n peerIp: \"15.0.0.120\",\n sharedSecret: \"a secret message\",\n targetVpnGateway: targetGateway.id,\n}, {\n dependsOn: [\n frEsp,\n frUdp500,\n frUdp4500,\n ],\n});\nconst vpn_test = new gcp.networkmanagement.VpcFlowLogsConfig(\"vpn-test\", {\n vpcFlowLogsConfigId: \"basic-test-id\",\n location: \"global\",\n vpnTunnel: pulumi.all([project, tunnel.name]).apply(([project, name]) =\u003e `projects/${project.number}/regions/us-central1/vpnTunnels/${name}`),\n});\nconst route = new gcp.compute.Route(\"route\", {\n name: \"basic-test-route\",\n network: network.name,\n destRange: \"15.0.0.0/24\",\n priority: 1000,\n nextHopVpnTunnel: tunnel.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nnetwork = gcp.compute.Network(\"network\", name=\"basic-test-network\")\ntarget_gateway = gcp.compute.VPNGateway(\"target_gateway\",\n name=\"basic-test-gateway\",\n network=network.id)\nvpn_static_ip = gcp.compute.Address(\"vpn_static_ip\", name=\"basic-test-address\")\nfr_esp = gcp.compute.ForwardingRule(\"fr_esp\",\n name=\"basic-test-fresp\",\n ip_protocol=\"ESP\",\n ip_address=vpn_static_ip.address,\n target=target_gateway.id)\nfr_udp500 = gcp.compute.ForwardingRule(\"fr_udp500\",\n name=\"basic-test-fr500\",\n ip_protocol=\"UDP\",\n port_range=\"500\",\n ip_address=vpn_static_ip.address,\n target=target_gateway.id)\nfr_udp4500 = gcp.compute.ForwardingRule(\"fr_udp4500\",\n name=\"basic-test-fr4500\",\n ip_protocol=\"UDP\",\n port_range=\"4500\",\n ip_address=vpn_static_ip.address,\n target=target_gateway.id)\ntunnel = gcp.compute.VPNTunnel(\"tunnel\",\n name=\"basic-test-tunnel\",\n peer_ip=\"15.0.0.120\",\n shared_secret=\"a secret message\",\n target_vpn_gateway=target_gateway.id,\n opts = pulumi.ResourceOptions(depends_on=[\n fr_esp,\n fr_udp500,\n fr_udp4500,\n ]))\nvpn_test = gcp.networkmanagement.VpcFlowLogsConfig(\"vpn-test\",\n vpc_flow_logs_config_id=\"basic-test-id\",\n location=\"global\",\n vpn_tunnel=tunnel.name.apply(lambda name: f\"projects/{project.number}/regions/us-central1/vpnTunnels/{name}\"))\nroute = gcp.compute.Route(\"route\",\n name=\"basic-test-route\",\n network=network.name,\n dest_range=\"15.0.0.0/24\",\n priority=1000,\n next_hop_vpn_tunnel=tunnel.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 project = Gcp.Organizations.GetProject.Invoke();\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"basic-test-network\",\n });\n\n var targetGateway = new Gcp.Compute.VPNGateway(\"target_gateway\", new()\n {\n Name = \"basic-test-gateway\",\n Network = network.Id,\n });\n\n var vpnStaticIp = new Gcp.Compute.Address(\"vpn_static_ip\", new()\n {\n Name = \"basic-test-address\",\n });\n\n var frEsp = new Gcp.Compute.ForwardingRule(\"fr_esp\", new()\n {\n Name = \"basic-test-fresp\",\n IpProtocol = \"ESP\",\n IpAddress = vpnStaticIp.IPAddress,\n Target = targetGateway.Id,\n });\n\n var frUdp500 = new Gcp.Compute.ForwardingRule(\"fr_udp500\", new()\n {\n Name = \"basic-test-fr500\",\n IpProtocol = \"UDP\",\n PortRange = \"500\",\n IpAddress = vpnStaticIp.IPAddress,\n Target = targetGateway.Id,\n });\n\n var frUdp4500 = new Gcp.Compute.ForwardingRule(\"fr_udp4500\", new()\n {\n Name = \"basic-test-fr4500\",\n IpProtocol = \"UDP\",\n PortRange = \"4500\",\n IpAddress = vpnStaticIp.IPAddress,\n Target = targetGateway.Id,\n });\n\n var tunnel = new Gcp.Compute.VPNTunnel(\"tunnel\", new()\n {\n Name = \"basic-test-tunnel\",\n PeerIp = \"15.0.0.120\",\n SharedSecret = \"a secret message\",\n TargetVpnGateway = targetGateway.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n frEsp,\n frUdp500,\n frUdp4500,\n },\n });\n\n var vpn_test = new Gcp.NetworkManagement.VpcFlowLogsConfig(\"vpn-test\", new()\n {\n VpcFlowLogsConfigId = \"basic-test-id\",\n Location = \"global\",\n VpnTunnel = Output.Tuple(project, tunnel.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/regions/us-central1/vpnTunnels/{name}\";\n }),\n });\n\n var route = new Gcp.Compute.Route(\"route\", new()\n {\n Name = \"basic-test-route\",\n Network = network.Name,\n DestRange = \"15.0.0.0/24\",\n Priority = 1000,\n NextHopVpnTunnel = tunnel.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkmanagement\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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(\"basic-test-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttargetGateway, err := compute.NewVPNGateway(ctx, \"target_gateway\", \u0026compute.VPNGatewayArgs{\n\t\t\tName: pulumi.String(\"basic-test-gateway\"),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpnStaticIp, err := compute.NewAddress(ctx, \"vpn_static_ip\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"basic-test-address\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfrEsp, err := compute.NewForwardingRule(ctx, \"fr_esp\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"basic-test-fresp\"),\n\t\t\tIpProtocol: pulumi.String(\"ESP\"),\n\t\t\tIpAddress: vpnStaticIp.Address,\n\t\t\tTarget: targetGateway.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfrUdp500, err := compute.NewForwardingRule(ctx, \"fr_udp500\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"basic-test-fr500\"),\n\t\t\tIpProtocol: pulumi.String(\"UDP\"),\n\t\t\tPortRange: pulumi.String(\"500\"),\n\t\t\tIpAddress: vpnStaticIp.Address,\n\t\t\tTarget: targetGateway.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfrUdp4500, err := compute.NewForwardingRule(ctx, \"fr_udp4500\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"basic-test-fr4500\"),\n\t\t\tIpProtocol: pulumi.String(\"UDP\"),\n\t\t\tPortRange: pulumi.String(\"4500\"),\n\t\t\tIpAddress: vpnStaticIp.Address,\n\t\t\tTarget: targetGateway.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttunnel, err := compute.NewVPNTunnel(ctx, \"tunnel\", \u0026compute.VPNTunnelArgs{\n\t\t\tName: pulumi.String(\"basic-test-tunnel\"),\n\t\t\tPeerIp: pulumi.String(\"15.0.0.120\"),\n\t\t\tSharedSecret: pulumi.String(\"a secret message\"),\n\t\t\tTargetVpnGateway: targetGateway.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfrEsp,\n\t\t\tfrUdp500,\n\t\t\tfrUdp4500,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkmanagement.NewVpcFlowLogsConfig(ctx, \"vpn-test\", \u0026networkmanagement.VpcFlowLogsConfigArgs{\n\t\t\tVpcFlowLogsConfigId: pulumi.String(\"basic-test-id\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tVpnTunnel: tunnel.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/regions/us-central1/vpnTunnels/%v\", project.Number, name), 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 = compute.NewRoute(ctx, \"route\", \u0026compute.RouteArgs{\n\t\t\tName: pulumi.String(\"basic-test-route\"),\n\t\t\tNetwork: network.Name,\n\t\t\tDestRange: pulumi.String(\"15.0.0.0/24\"),\n\t\t\tPriority: pulumi.Int(1000),\n\t\t\tNextHopVpnTunnel: tunnel.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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.VPNGateway;\nimport com.pulumi.gcp.compute.VPNGatewayArgs;\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.gcp.compute.VPNTunnel;\nimport com.pulumi.gcp.compute.VPNTunnelArgs;\nimport com.pulumi.gcp.networkmanagement.VpcFlowLogsConfig;\nimport com.pulumi.gcp.networkmanagement.VpcFlowLogsConfigArgs;\nimport com.pulumi.gcp.compute.Route;\nimport com.pulumi.gcp.compute.RouteArgs;\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 network = new Network(\"network\", NetworkArgs.builder()\n .name(\"basic-test-network\")\n .build());\n\n var targetGateway = new VPNGateway(\"targetGateway\", VPNGatewayArgs.builder()\n .name(\"basic-test-gateway\")\n .network(network.id())\n .build());\n\n var vpnStaticIp = new Address(\"vpnStaticIp\", AddressArgs.builder()\n .name(\"basic-test-address\")\n .build());\n\n var frEsp = new ForwardingRule(\"frEsp\", ForwardingRuleArgs.builder()\n .name(\"basic-test-fresp\")\n .ipProtocol(\"ESP\")\n .ipAddress(vpnStaticIp.address())\n .target(targetGateway.id())\n .build());\n\n var frUdp500 = new ForwardingRule(\"frUdp500\", ForwardingRuleArgs.builder()\n .name(\"basic-test-fr500\")\n .ipProtocol(\"UDP\")\n .portRange(\"500\")\n .ipAddress(vpnStaticIp.address())\n .target(targetGateway.id())\n .build());\n\n var frUdp4500 = new ForwardingRule(\"frUdp4500\", ForwardingRuleArgs.builder()\n .name(\"basic-test-fr4500\")\n .ipProtocol(\"UDP\")\n .portRange(\"4500\")\n .ipAddress(vpnStaticIp.address())\n .target(targetGateway.id())\n .build());\n\n var tunnel = new VPNTunnel(\"tunnel\", VPNTunnelArgs.builder()\n .name(\"basic-test-tunnel\")\n .peerIp(\"15.0.0.120\")\n .sharedSecret(\"a secret message\")\n .targetVpnGateway(targetGateway.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n frEsp,\n frUdp500,\n frUdp4500)\n .build());\n\n var vpn_test = new VpcFlowLogsConfig(\"vpn-test\", VpcFlowLogsConfigArgs.builder()\n .vpcFlowLogsConfigId(\"basic-test-id\")\n .location(\"global\")\n .vpnTunnel(tunnel.name().applyValue(name -\u003e String.format(\"projects/%s/regions/us-central1/vpnTunnels/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .build());\n\n var route = new Route(\"route\", RouteArgs.builder()\n .name(\"basic-test-route\")\n .network(network.name())\n .destRange(\"15.0.0.0/24\")\n .priority(1000)\n .nextHopVpnTunnel(tunnel.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vpn-test:\n type: gcp:networkmanagement:VpcFlowLogsConfig\n properties:\n vpcFlowLogsConfigId: basic-test-id\n location: global\n vpnTunnel: projects/${project.number}/regions/us-central1/vpnTunnels/${tunnel.name}\n tunnel:\n type: gcp:compute:VPNTunnel\n properties:\n name: basic-test-tunnel\n peerIp: 15.0.0.120\n sharedSecret: a secret message\n targetVpnGateway: ${targetGateway.id}\n options:\n dependsOn:\n - ${frEsp}\n - ${frUdp500}\n - ${frUdp4500}\n targetGateway:\n type: gcp:compute:VPNGateway\n name: target_gateway\n properties:\n name: basic-test-gateway\n network: ${network.id}\n network:\n type: gcp:compute:Network\n properties:\n name: basic-test-network\n vpnStaticIp:\n type: gcp:compute:Address\n name: vpn_static_ip\n properties:\n name: basic-test-address\n frEsp:\n type: gcp:compute:ForwardingRule\n name: fr_esp\n properties:\n name: basic-test-fresp\n ipProtocol: ESP\n ipAddress: ${vpnStaticIp.address}\n target: ${targetGateway.id}\n frUdp500:\n type: gcp:compute:ForwardingRule\n name: fr_udp500\n properties:\n name: basic-test-fr500\n ipProtocol: UDP\n portRange: '500'\n ipAddress: ${vpnStaticIp.address}\n target: ${targetGateway.id}\n frUdp4500:\n type: gcp:compute:ForwardingRule\n name: fr_udp4500\n properties:\n name: basic-test-fr4500\n ipProtocol: UDP\n portRange: '4500'\n ipAddress: ${vpnStaticIp.address}\n target: ${targetGateway.id}\n route:\n type: gcp:compute:Route\n properties:\n name: basic-test-route\n network: ${network.name}\n destRange: 15.0.0.0/24\n priority: 1000\n nextHopVpnTunnel: ${tunnel.id}\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Management Vpc Flow Logs Config Vpn 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 network = new gcp.compute.Network(\"network\", {name: \"full-test-network\"});\nconst targetGateway = new gcp.compute.VPNGateway(\"target_gateway\", {\n name: \"full-test-gateway\",\n network: network.id,\n});\nconst vpnStaticIp = new gcp.compute.Address(\"vpn_static_ip\", {name: \"full-test-address\"});\nconst frEsp = new gcp.compute.ForwardingRule(\"fr_esp\", {\n name: \"full-test-fresp\",\n ipProtocol: \"ESP\",\n ipAddress: vpnStaticIp.address,\n target: targetGateway.id,\n});\nconst frUdp500 = new gcp.compute.ForwardingRule(\"fr_udp500\", {\n name: \"full-test-fr500\",\n ipProtocol: \"UDP\",\n portRange: \"500\",\n ipAddress: vpnStaticIp.address,\n target: targetGateway.id,\n});\nconst frUdp4500 = new gcp.compute.ForwardingRule(\"fr_udp4500\", {\n name: \"full-test-fr4500\",\n ipProtocol: \"UDP\",\n portRange: \"4500\",\n ipAddress: vpnStaticIp.address,\n target: targetGateway.id,\n});\nconst tunnel = new gcp.compute.VPNTunnel(\"tunnel\", {\n name: \"full-test-tunnel\",\n peerIp: \"15.0.0.120\",\n sharedSecret: \"a secret message\",\n targetVpnGateway: targetGateway.id,\n}, {\n dependsOn: [\n frEsp,\n frUdp500,\n frUdp4500,\n ],\n});\nconst vpn_test = new gcp.networkmanagement.VpcFlowLogsConfig(\"vpn-test\", {\n vpcFlowLogsConfigId: \"full-test-id\",\n location: \"global\",\n vpnTunnel: pulumi.all([project, tunnel.name]).apply(([project, name]) =\u003e `projects/${project.number}/regions/us-central1/vpnTunnels/${name}`),\n state: \"ENABLED\",\n aggregationInterval: \"INTERVAL_5_SEC\",\n description: \"VPC Flow Logs over a VPN Gateway.\",\n flowSampling: 0.5,\n metadata: \"INCLUDE_ALL_METADATA\",\n});\nconst route = new gcp.compute.Route(\"route\", {\n name: \"full-test-route\",\n network: network.name,\n destRange: \"15.0.0.0/24\",\n priority: 1000,\n nextHopVpnTunnel: tunnel.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nnetwork = gcp.compute.Network(\"network\", name=\"full-test-network\")\ntarget_gateway = gcp.compute.VPNGateway(\"target_gateway\",\n name=\"full-test-gateway\",\n network=network.id)\nvpn_static_ip = gcp.compute.Address(\"vpn_static_ip\", name=\"full-test-address\")\nfr_esp = gcp.compute.ForwardingRule(\"fr_esp\",\n name=\"full-test-fresp\",\n ip_protocol=\"ESP\",\n ip_address=vpn_static_ip.address,\n target=target_gateway.id)\nfr_udp500 = gcp.compute.ForwardingRule(\"fr_udp500\",\n name=\"full-test-fr500\",\n ip_protocol=\"UDP\",\n port_range=\"500\",\n ip_address=vpn_static_ip.address,\n target=target_gateway.id)\nfr_udp4500 = gcp.compute.ForwardingRule(\"fr_udp4500\",\n name=\"full-test-fr4500\",\n ip_protocol=\"UDP\",\n port_range=\"4500\",\n ip_address=vpn_static_ip.address,\n target=target_gateway.id)\ntunnel = gcp.compute.VPNTunnel(\"tunnel\",\n name=\"full-test-tunnel\",\n peer_ip=\"15.0.0.120\",\n shared_secret=\"a secret message\",\n target_vpn_gateway=target_gateway.id,\n opts = pulumi.ResourceOptions(depends_on=[\n fr_esp,\n fr_udp500,\n fr_udp4500,\n ]))\nvpn_test = gcp.networkmanagement.VpcFlowLogsConfig(\"vpn-test\",\n vpc_flow_logs_config_id=\"full-test-id\",\n location=\"global\",\n vpn_tunnel=tunnel.name.apply(lambda name: f\"projects/{project.number}/regions/us-central1/vpnTunnels/{name}\"),\n state=\"ENABLED\",\n aggregation_interval=\"INTERVAL_5_SEC\",\n description=\"VPC Flow Logs over a VPN Gateway.\",\n flow_sampling=0.5,\n metadata=\"INCLUDE_ALL_METADATA\")\nroute = gcp.compute.Route(\"route\",\n name=\"full-test-route\",\n network=network.name,\n dest_range=\"15.0.0.0/24\",\n priority=1000,\n next_hop_vpn_tunnel=tunnel.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 project = Gcp.Organizations.GetProject.Invoke();\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"full-test-network\",\n });\n\n var targetGateway = new Gcp.Compute.VPNGateway(\"target_gateway\", new()\n {\n Name = \"full-test-gateway\",\n Network = network.Id,\n });\n\n var vpnStaticIp = new Gcp.Compute.Address(\"vpn_static_ip\", new()\n {\n Name = \"full-test-address\",\n });\n\n var frEsp = new Gcp.Compute.ForwardingRule(\"fr_esp\", new()\n {\n Name = \"full-test-fresp\",\n IpProtocol = \"ESP\",\n IpAddress = vpnStaticIp.IPAddress,\n Target = targetGateway.Id,\n });\n\n var frUdp500 = new Gcp.Compute.ForwardingRule(\"fr_udp500\", new()\n {\n Name = \"full-test-fr500\",\n IpProtocol = \"UDP\",\n PortRange = \"500\",\n IpAddress = vpnStaticIp.IPAddress,\n Target = targetGateway.Id,\n });\n\n var frUdp4500 = new Gcp.Compute.ForwardingRule(\"fr_udp4500\", new()\n {\n Name = \"full-test-fr4500\",\n IpProtocol = \"UDP\",\n PortRange = \"4500\",\n IpAddress = vpnStaticIp.IPAddress,\n Target = targetGateway.Id,\n });\n\n var tunnel = new Gcp.Compute.VPNTunnel(\"tunnel\", new()\n {\n Name = \"full-test-tunnel\",\n PeerIp = \"15.0.0.120\",\n SharedSecret = \"a secret message\",\n TargetVpnGateway = targetGateway.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n frEsp,\n frUdp500,\n frUdp4500,\n },\n });\n\n var vpn_test = new Gcp.NetworkManagement.VpcFlowLogsConfig(\"vpn-test\", new()\n {\n VpcFlowLogsConfigId = \"full-test-id\",\n Location = \"global\",\n VpnTunnel = Output.Tuple(project, tunnel.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/regions/us-central1/vpnTunnels/{name}\";\n }),\n State = \"ENABLED\",\n AggregationInterval = \"INTERVAL_5_SEC\",\n Description = \"VPC Flow Logs over a VPN Gateway.\",\n FlowSampling = 0.5,\n Metadata = \"INCLUDE_ALL_METADATA\",\n });\n\n var route = new Gcp.Compute.Route(\"route\", new()\n {\n Name = \"full-test-route\",\n Network = network.Name,\n DestRange = \"15.0.0.0/24\",\n Priority = 1000,\n NextHopVpnTunnel = tunnel.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkmanagement\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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(\"full-test-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttargetGateway, err := compute.NewVPNGateway(ctx, \"target_gateway\", \u0026compute.VPNGatewayArgs{\n\t\t\tName: pulumi.String(\"full-test-gateway\"),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpnStaticIp, err := compute.NewAddress(ctx, \"vpn_static_ip\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"full-test-address\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfrEsp, err := compute.NewForwardingRule(ctx, \"fr_esp\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"full-test-fresp\"),\n\t\t\tIpProtocol: pulumi.String(\"ESP\"),\n\t\t\tIpAddress: vpnStaticIp.Address,\n\t\t\tTarget: targetGateway.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfrUdp500, err := compute.NewForwardingRule(ctx, \"fr_udp500\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"full-test-fr500\"),\n\t\t\tIpProtocol: pulumi.String(\"UDP\"),\n\t\t\tPortRange: pulumi.String(\"500\"),\n\t\t\tIpAddress: vpnStaticIp.Address,\n\t\t\tTarget: targetGateway.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfrUdp4500, err := compute.NewForwardingRule(ctx, \"fr_udp4500\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"full-test-fr4500\"),\n\t\t\tIpProtocol: pulumi.String(\"UDP\"),\n\t\t\tPortRange: pulumi.String(\"4500\"),\n\t\t\tIpAddress: vpnStaticIp.Address,\n\t\t\tTarget: targetGateway.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttunnel, err := compute.NewVPNTunnel(ctx, \"tunnel\", \u0026compute.VPNTunnelArgs{\n\t\t\tName: pulumi.String(\"full-test-tunnel\"),\n\t\t\tPeerIp: pulumi.String(\"15.0.0.120\"),\n\t\t\tSharedSecret: pulumi.String(\"a secret message\"),\n\t\t\tTargetVpnGateway: targetGateway.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfrEsp,\n\t\t\tfrUdp500,\n\t\t\tfrUdp4500,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkmanagement.NewVpcFlowLogsConfig(ctx, \"vpn-test\", \u0026networkmanagement.VpcFlowLogsConfigArgs{\n\t\t\tVpcFlowLogsConfigId: pulumi.String(\"full-test-id\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tVpnTunnel: tunnel.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/regions/us-central1/vpnTunnels/%v\", project.Number, name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tState: pulumi.String(\"ENABLED\"),\n\t\t\tAggregationInterval: pulumi.String(\"INTERVAL_5_SEC\"),\n\t\t\tDescription: pulumi.String(\"VPC Flow Logs over a VPN Gateway.\"),\n\t\t\tFlowSampling: pulumi.Float64(0.5),\n\t\t\tMetadata: pulumi.String(\"INCLUDE_ALL_METADATA\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRoute(ctx, \"route\", \u0026compute.RouteArgs{\n\t\t\tName: pulumi.String(\"full-test-route\"),\n\t\t\tNetwork: network.Name,\n\t\t\tDestRange: pulumi.String(\"15.0.0.0/24\"),\n\t\t\tPriority: pulumi.Int(1000),\n\t\t\tNextHopVpnTunnel: tunnel.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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.VPNGateway;\nimport com.pulumi.gcp.compute.VPNGatewayArgs;\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.gcp.compute.VPNTunnel;\nimport com.pulumi.gcp.compute.VPNTunnelArgs;\nimport com.pulumi.gcp.networkmanagement.VpcFlowLogsConfig;\nimport com.pulumi.gcp.networkmanagement.VpcFlowLogsConfigArgs;\nimport com.pulumi.gcp.compute.Route;\nimport com.pulumi.gcp.compute.RouteArgs;\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 network = new Network(\"network\", NetworkArgs.builder()\n .name(\"full-test-network\")\n .build());\n\n var targetGateway = new VPNGateway(\"targetGateway\", VPNGatewayArgs.builder()\n .name(\"full-test-gateway\")\n .network(network.id())\n .build());\n\n var vpnStaticIp = new Address(\"vpnStaticIp\", AddressArgs.builder()\n .name(\"full-test-address\")\n .build());\n\n var frEsp = new ForwardingRule(\"frEsp\", ForwardingRuleArgs.builder()\n .name(\"full-test-fresp\")\n .ipProtocol(\"ESP\")\n .ipAddress(vpnStaticIp.address())\n .target(targetGateway.id())\n .build());\n\n var frUdp500 = new ForwardingRule(\"frUdp500\", ForwardingRuleArgs.builder()\n .name(\"full-test-fr500\")\n .ipProtocol(\"UDP\")\n .portRange(\"500\")\n .ipAddress(vpnStaticIp.address())\n .target(targetGateway.id())\n .build());\n\n var frUdp4500 = new ForwardingRule(\"frUdp4500\", ForwardingRuleArgs.builder()\n .name(\"full-test-fr4500\")\n .ipProtocol(\"UDP\")\n .portRange(\"4500\")\n .ipAddress(vpnStaticIp.address())\n .target(targetGateway.id())\n .build());\n\n var tunnel = new VPNTunnel(\"tunnel\", VPNTunnelArgs.builder()\n .name(\"full-test-tunnel\")\n .peerIp(\"15.0.0.120\")\n .sharedSecret(\"a secret message\")\n .targetVpnGateway(targetGateway.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n frEsp,\n frUdp500,\n frUdp4500)\n .build());\n\n var vpn_test = new VpcFlowLogsConfig(\"vpn-test\", VpcFlowLogsConfigArgs.builder()\n .vpcFlowLogsConfigId(\"full-test-id\")\n .location(\"global\")\n .vpnTunnel(tunnel.name().applyValue(name -\u003e String.format(\"projects/%s/regions/us-central1/vpnTunnels/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .state(\"ENABLED\")\n .aggregationInterval(\"INTERVAL_5_SEC\")\n .description(\"VPC Flow Logs over a VPN Gateway.\")\n .flowSampling(0.5)\n .metadata(\"INCLUDE_ALL_METADATA\")\n .build());\n\n var route = new Route(\"route\", RouteArgs.builder()\n .name(\"full-test-route\")\n .network(network.name())\n .destRange(\"15.0.0.0/24\")\n .priority(1000)\n .nextHopVpnTunnel(tunnel.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vpn-test:\n type: gcp:networkmanagement:VpcFlowLogsConfig\n properties:\n vpcFlowLogsConfigId: full-test-id\n location: global\n vpnTunnel: projects/${project.number}/regions/us-central1/vpnTunnels/${tunnel.name}\n state: ENABLED\n aggregationInterval: INTERVAL_5_SEC\n description: VPC Flow Logs over a VPN Gateway.\n flowSampling: 0.5\n metadata: INCLUDE_ALL_METADATA\n tunnel:\n type: gcp:compute:VPNTunnel\n properties:\n name: full-test-tunnel\n peerIp: 15.0.0.120\n sharedSecret: a secret message\n targetVpnGateway: ${targetGateway.id}\n options:\n dependsOn:\n - ${frEsp}\n - ${frUdp500}\n - ${frUdp4500}\n targetGateway:\n type: gcp:compute:VPNGateway\n name: target_gateway\n properties:\n name: full-test-gateway\n network: ${network.id}\n network:\n type: gcp:compute:Network\n properties:\n name: full-test-network\n vpnStaticIp:\n type: gcp:compute:Address\n name: vpn_static_ip\n properties:\n name: full-test-address\n frEsp:\n type: gcp:compute:ForwardingRule\n name: fr_esp\n properties:\n name: full-test-fresp\n ipProtocol: ESP\n ipAddress: ${vpnStaticIp.address}\n target: ${targetGateway.id}\n frUdp500:\n type: gcp:compute:ForwardingRule\n name: fr_udp500\n properties:\n name: full-test-fr500\n ipProtocol: UDP\n portRange: '500'\n ipAddress: ${vpnStaticIp.address}\n target: ${targetGateway.id}\n frUdp4500:\n type: gcp:compute:ForwardingRule\n name: fr_udp4500\n properties:\n name: full-test-fr4500\n ipProtocol: UDP\n portRange: '4500'\n ipAddress: ${vpnStaticIp.address}\n target: ${targetGateway.id}\n route:\n type: gcp:compute:Route\n properties:\n name: full-test-route\n network: ${network.name}\n destRange: 15.0.0.0/24\n priority: 1000\n nextHopVpnTunnel: ${tunnel.id}\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVpcFlowLogsConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/vpcFlowLogsConfigs/{{vpc_flow_logs_config_id}}`\n\n* `{{project}}/{{location}}/{{vpc_flow_logs_config_id}}`\n\n* `{{location}}/{{vpc_flow_logs_config_id}}`\n\nWhen using the `pulumi import` command, VpcFlowLogsConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkmanagement/vpcFlowLogsConfig:VpcFlowLogsConfig default projects/{{project}}/locations/{{location}}/vpcFlowLogsConfigs/{{vpc_flow_logs_config_id}}\n```\n\n```sh\n$ pulumi import gcp:networkmanagement/vpcFlowLogsConfig:VpcFlowLogsConfig default {{project}}/{{location}}/{{vpc_flow_logs_config_id}}\n```\n\n```sh\n$ pulumi import gcp:networkmanagement/vpcFlowLogsConfig:VpcFlowLogsConfig default {{location}}/{{vpc_flow_logs_config_id}}\n```\n\n",
"properties": {
"aggregationInterval": {
"type": "string",
@@ -246406,6 +249138,395 @@
"type": "object"
}
},
+ "gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup": {
+ "description": "## Example Usage\n\n### Network Security Intercept Endpoint 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 network = new gcp.compute.Network(\"network\", {\n name: \"example-network\",\n autoCreateSubnetworks: false,\n});\nconst deploymentGroup = new gcp.networksecurity.InterceptDeploymentGroup(\"deployment_group\", {\n interceptDeploymentGroupId: \"example-dg\",\n location: \"global\",\n network: network.id,\n});\nconst _default = new gcp.networksecurity.InterceptEndpointGroup(\"default\", {\n interceptEndpointGroupId: \"example-eg\",\n location: \"global\",\n interceptDeploymentGroup: deploymentGroup.id,\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"example-network\",\n auto_create_subnetworks=False)\ndeployment_group = gcp.networksecurity.InterceptDeploymentGroup(\"deployment_group\",\n intercept_deployment_group_id=\"example-dg\",\n location=\"global\",\n network=network.id)\ndefault = gcp.networksecurity.InterceptEndpointGroup(\"default\",\n intercept_endpoint_group_id=\"example-eg\",\n location=\"global\",\n intercept_deployment_group=deployment_group.id,\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 network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"example-network\",\n AutoCreateSubnetworks = false,\n });\n\n var deploymentGroup = new Gcp.NetworkSecurity.InterceptDeploymentGroup(\"deployment_group\", new()\n {\n InterceptDeploymentGroupId = \"example-dg\",\n Location = \"global\",\n Network = network.Id,\n });\n\n var @default = new Gcp.NetworkSecurity.InterceptEndpointGroup(\"default\", new()\n {\n InterceptEndpointGroupId = \"example-eg\",\n Location = \"global\",\n InterceptDeploymentGroup = deploymentGroup.Id,\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/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"example-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\tdeploymentGroup, err := networksecurity.NewInterceptDeploymentGroup(ctx, \"deployment_group\", \u0026networksecurity.InterceptDeploymentGroupArgs{\n\t\t\tInterceptDeploymentGroupId: pulumi.String(\"example-dg\"),\n\t\t\tLocation: pulumi.String(\"global\"),\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 = networksecurity.NewInterceptEndpointGroup(ctx, \"default\", \u0026networksecurity.InterceptEndpointGroupArgs{\n\t\t\tInterceptEndpointGroupId: pulumi.String(\"example-eg\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tInterceptDeploymentGroup: deploymentGroup.ID(),\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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.networksecurity.InterceptDeploymentGroup;\nimport com.pulumi.gcp.networksecurity.InterceptDeploymentGroupArgs;\nimport com.pulumi.gcp.networksecurity.InterceptEndpointGroup;\nimport com.pulumi.gcp.networksecurity.InterceptEndpointGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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(\"example-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var deploymentGroup = new InterceptDeploymentGroup(\"deploymentGroup\", InterceptDeploymentGroupArgs.builder()\n .interceptDeploymentGroupId(\"example-dg\")\n .location(\"global\")\n .network(network.id())\n .build());\n\n var default_ = new InterceptEndpointGroup(\"default\", InterceptEndpointGroupArgs.builder()\n .interceptEndpointGroupId(\"example-eg\")\n .location(\"global\")\n .interceptDeploymentGroup(deploymentGroup.id())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n name: example-network\n autoCreateSubnetworks: false\n deploymentGroup:\n type: gcp:networksecurity:InterceptDeploymentGroup\n name: deployment_group\n properties:\n interceptDeploymentGroupId: example-dg\n location: global\n network: ${network.id}\n default:\n type: gcp:networksecurity:InterceptEndpointGroup\n properties:\n interceptEndpointGroupId: example-eg\n location: global\n interceptDeploymentGroup: ${deploymentGroup.id}\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInterceptEndpointGroup can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/interceptEndpointGroups/{{intercept_endpoint_group_id}}`\n\n* `{{project}}/{{location}}/{{intercept_endpoint_group_id}}`\n\n* `{{location}}/{{intercept_endpoint_group_id}}`\n\nWhen using the `pulumi import` command, InterceptEndpointGroup can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup default projects/{{project}}/locations/{{location}}/interceptEndpointGroups/{{intercept_endpoint_group_id}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup default {{project}}/{{location}}/{{intercept_endpoint_group_id}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup default {{location}}/{{intercept_endpoint_group_id}}\n```\n\n",
+ "properties": {
+ "createTime": {
+ "type": "string",
+ "description": "Create time stamp.\n"
+ },
+ "effectiveLabels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.\n",
+ "secret": true
+ },
+ "interceptDeploymentGroup": {
+ "type": "string",
+ "description": "Immutable. The Intercept Deployment Group that this resource is connected to. Format\nis:\n`projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}`\n"
+ },
+ "interceptEndpointGroupId": {
+ "type": "string",
+ "description": "ID of the Intercept Endpoint Group.\n\n\n- - -\n"
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Optional. Labels as key value pairs\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field `effective_labels` for all of the labels present on the resource.\n"
+ },
+ "location": {
+ "type": "string",
+ "description": "The location of the Intercept Endpoint Group, currently restricted to `global`.\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "Identifier. The name of the Intercept Endpoint Group.\n"
+ },
+ "project": {
+ "type": "string",
+ "description": "The ID of the project in which the resource belongs.\nIf it is not provided, the provider project is used.\n"
+ },
+ "pulumiLabels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "The combination of labels configured directly on the resource\nand default labels configured on the provider.\n",
+ "secret": true
+ },
+ "reconciling": {
+ "type": "boolean",
+ "description": "Whether reconciling is in progress, recommended per\nhttps://google.aip.dev/128.\n"
+ },
+ "state": {
+ "type": "string",
+ "description": "Current state of the endpoint group.\nPossible values:\nSTATE_UNSPECIFIED\nACTIVE\nCLOSED\nCREATING\nDELETING\nOUT_OF_SYNC\n"
+ },
+ "updateTime": {
+ "type": "string",
+ "description": "Update time stamp.\n"
+ }
+ },
+ "required": [
+ "createTime",
+ "effectiveLabels",
+ "interceptDeploymentGroup",
+ "interceptEndpointGroupId",
+ "location",
+ "name",
+ "project",
+ "reconciling",
+ "state",
+ "pulumiLabels",
+ "updateTime"
+ ],
+ "inputProperties": {
+ "interceptDeploymentGroup": {
+ "type": "string",
+ "description": "Immutable. The Intercept Deployment Group that this resource is connected to. Format\nis:\n`projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}`\n",
+ "willReplaceOnChanges": true
+ },
+ "interceptEndpointGroupId": {
+ "type": "string",
+ "description": "ID of the Intercept Endpoint Group.\n\n\n- - -\n",
+ "willReplaceOnChanges": true
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Optional. Labels as key value pairs\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field `effective_labels` for all of the labels present on the resource.\n"
+ },
+ "location": {
+ "type": "string",
+ "description": "The location of the Intercept Endpoint Group, currently restricted to `global`.\n",
+ "willReplaceOnChanges": true
+ },
+ "project": {
+ "type": "string",
+ "description": "The ID of the project in which the resource belongs.\nIf it is not provided, the provider project is used.\n",
+ "willReplaceOnChanges": true
+ }
+ },
+ "requiredInputs": [
+ "interceptDeploymentGroup",
+ "interceptEndpointGroupId",
+ "location"
+ ],
+ "stateInputs": {
+ "description": "Input properties used for looking up and filtering InterceptEndpointGroup resources.\n",
+ "properties": {
+ "createTime": {
+ "type": "string",
+ "description": "Create time stamp.\n"
+ },
+ "effectiveLabels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.\n",
+ "secret": true
+ },
+ "interceptDeploymentGroup": {
+ "type": "string",
+ "description": "Immutable. The Intercept Deployment Group that this resource is connected to. Format\nis:\n`projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}`\n",
+ "willReplaceOnChanges": true
+ },
+ "interceptEndpointGroupId": {
+ "type": "string",
+ "description": "ID of the Intercept Endpoint Group.\n\n\n- - -\n",
+ "willReplaceOnChanges": true
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Optional. Labels as key value pairs\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field `effective_labels` for all of the labels present on the resource.\n"
+ },
+ "location": {
+ "type": "string",
+ "description": "The location of the Intercept Endpoint Group, currently restricted to `global`.\n",
+ "willReplaceOnChanges": true
+ },
+ "name": {
+ "type": "string",
+ "description": "Identifier. The name of the Intercept Endpoint Group.\n"
+ },
+ "project": {
+ "type": "string",
+ "description": "The ID of the project in which the resource belongs.\nIf it is not provided, the provider project is used.\n",
+ "willReplaceOnChanges": true
+ },
+ "pulumiLabels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "The combination of labels configured directly on the resource\nand default labels configured on the provider.\n",
+ "secret": true
+ },
+ "reconciling": {
+ "type": "boolean",
+ "description": "Whether reconciling is in progress, recommended per\nhttps://google.aip.dev/128.\n"
+ },
+ "state": {
+ "type": "string",
+ "description": "Current state of the endpoint group.\nPossible values:\nSTATE_UNSPECIFIED\nACTIVE\nCLOSED\nCREATING\nDELETING\nOUT_OF_SYNC\n"
+ },
+ "updateTime": {
+ "type": "string",
+ "description": "Update time stamp.\n"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation": {
+ "description": "## Example Usage\n\n### Network Security Intercept Endpoint Group 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 producerNetwork = new gcp.compute.Network(\"producer_network\", {\n name: \"example-prod-network\",\n autoCreateSubnetworks: false,\n});\nconst consumerNetwork = new gcp.compute.Network(\"consumer_network\", {\n name: \"example-cons-network\",\n autoCreateSubnetworks: false,\n});\nconst deploymentGroup = new gcp.networksecurity.InterceptDeploymentGroup(\"deployment_group\", {\n interceptDeploymentGroupId: \"example-dg\",\n location: \"global\",\n network: producerNetwork.id,\n});\nconst endpointGroup = new gcp.networksecurity.InterceptEndpointGroup(\"endpoint_group\", {\n interceptEndpointGroupId: \"example-eg\",\n location: \"global\",\n interceptDeploymentGroup: deploymentGroup.id,\n});\nconst _default = new gcp.networksecurity.InterceptEndpointGroupAssociation(\"default\", {\n interceptEndpointGroupAssociationId: \"example-ega\",\n location: \"global\",\n network: consumerNetwork.id,\n interceptEndpointGroup: endpointGroup.id,\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproducer_network = gcp.compute.Network(\"producer_network\",\n name=\"example-prod-network\",\n auto_create_subnetworks=False)\nconsumer_network = gcp.compute.Network(\"consumer_network\",\n name=\"example-cons-network\",\n auto_create_subnetworks=False)\ndeployment_group = gcp.networksecurity.InterceptDeploymentGroup(\"deployment_group\",\n intercept_deployment_group_id=\"example-dg\",\n location=\"global\",\n network=producer_network.id)\nendpoint_group = gcp.networksecurity.InterceptEndpointGroup(\"endpoint_group\",\n intercept_endpoint_group_id=\"example-eg\",\n location=\"global\",\n intercept_deployment_group=deployment_group.id)\ndefault = gcp.networksecurity.InterceptEndpointGroupAssociation(\"default\",\n intercept_endpoint_group_association_id=\"example-ega\",\n location=\"global\",\n network=consumer_network.id,\n intercept_endpoint_group=endpoint_group.id,\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 producerNetwork = new Gcp.Compute.Network(\"producer_network\", new()\n {\n Name = \"example-prod-network\",\n AutoCreateSubnetworks = false,\n });\n\n var consumerNetwork = new Gcp.Compute.Network(\"consumer_network\", new()\n {\n Name = \"example-cons-network\",\n AutoCreateSubnetworks = false,\n });\n\n var deploymentGroup = new Gcp.NetworkSecurity.InterceptDeploymentGroup(\"deployment_group\", new()\n {\n InterceptDeploymentGroupId = \"example-dg\",\n Location = \"global\",\n Network = producerNetwork.Id,\n });\n\n var endpointGroup = new Gcp.NetworkSecurity.InterceptEndpointGroup(\"endpoint_group\", new()\n {\n InterceptEndpointGroupId = \"example-eg\",\n Location = \"global\",\n InterceptDeploymentGroup = deploymentGroup.Id,\n });\n\n var @default = new Gcp.NetworkSecurity.InterceptEndpointGroupAssociation(\"default\", new()\n {\n InterceptEndpointGroupAssociationId = \"example-ega\",\n Location = \"global\",\n Network = consumerNetwork.Id,\n InterceptEndpointGroup = endpointGroup.Id,\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/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tproducerNetwork, err := compute.NewNetwork(ctx, \"producer_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"example-prod-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\tconsumerNetwork, err := compute.NewNetwork(ctx, \"consumer_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"example-cons-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\tdeploymentGroup, err := networksecurity.NewInterceptDeploymentGroup(ctx, \"deployment_group\", \u0026networksecurity.InterceptDeploymentGroupArgs{\n\t\t\tInterceptDeploymentGroupId: pulumi.String(\"example-dg\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tNetwork: producerNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tendpointGroup, err := networksecurity.NewInterceptEndpointGroup(ctx, \"endpoint_group\", \u0026networksecurity.InterceptEndpointGroupArgs{\n\t\t\tInterceptEndpointGroupId: pulumi.String(\"example-eg\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tInterceptDeploymentGroup: deploymentGroup.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networksecurity.NewInterceptEndpointGroupAssociation(ctx, \"default\", \u0026networksecurity.InterceptEndpointGroupAssociationArgs{\n\t\t\tInterceptEndpointGroupAssociationId: pulumi.String(\"example-ega\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tNetwork: consumerNetwork.ID(),\n\t\t\tInterceptEndpointGroup: endpointGroup.ID(),\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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.networksecurity.InterceptDeploymentGroup;\nimport com.pulumi.gcp.networksecurity.InterceptDeploymentGroupArgs;\nimport com.pulumi.gcp.networksecurity.InterceptEndpointGroup;\nimport com.pulumi.gcp.networksecurity.InterceptEndpointGroupArgs;\nimport com.pulumi.gcp.networksecurity.InterceptEndpointGroupAssociation;\nimport com.pulumi.gcp.networksecurity.InterceptEndpointGroupAssociationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var producerNetwork = new Network(\"producerNetwork\", NetworkArgs.builder()\n .name(\"example-prod-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var consumerNetwork = new Network(\"consumerNetwork\", NetworkArgs.builder()\n .name(\"example-cons-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var deploymentGroup = new InterceptDeploymentGroup(\"deploymentGroup\", InterceptDeploymentGroupArgs.builder()\n .interceptDeploymentGroupId(\"example-dg\")\n .location(\"global\")\n .network(producerNetwork.id())\n .build());\n\n var endpointGroup = new InterceptEndpointGroup(\"endpointGroup\", InterceptEndpointGroupArgs.builder()\n .interceptEndpointGroupId(\"example-eg\")\n .location(\"global\")\n .interceptDeploymentGroup(deploymentGroup.id())\n .build());\n\n var default_ = new InterceptEndpointGroupAssociation(\"default\", InterceptEndpointGroupAssociationArgs.builder()\n .interceptEndpointGroupAssociationId(\"example-ega\")\n .location(\"global\")\n .network(consumerNetwork.id())\n .interceptEndpointGroup(endpointGroup.id())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n producerNetwork:\n type: gcp:compute:Network\n name: producer_network\n properties:\n name: example-prod-network\n autoCreateSubnetworks: false\n consumerNetwork:\n type: gcp:compute:Network\n name: consumer_network\n properties:\n name: example-cons-network\n autoCreateSubnetworks: false\n deploymentGroup:\n type: gcp:networksecurity:InterceptDeploymentGroup\n name: deployment_group\n properties:\n interceptDeploymentGroupId: example-dg\n location: global\n network: ${producerNetwork.id}\n endpointGroup:\n type: gcp:networksecurity:InterceptEndpointGroup\n name: endpoint_group\n properties:\n interceptEndpointGroupId: example-eg\n location: global\n interceptDeploymentGroup: ${deploymentGroup.id}\n default:\n type: gcp:networksecurity:InterceptEndpointGroupAssociation\n properties:\n interceptEndpointGroupAssociationId: example-ega\n location: global\n network: ${consumerNetwork.id}\n interceptEndpointGroup: ${endpointGroup.id}\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInterceptEndpointGroupAssociation can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/interceptEndpointGroupAssociations/{{intercept_endpoint_group_association_id}}`\n\n* `{{project}}/{{location}}/{{intercept_endpoint_group_association_id}}`\n\n* `{{location}}/{{intercept_endpoint_group_association_id}}`\n\nWhen using the `pulumi import` command, InterceptEndpointGroupAssociation can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation default projects/{{project}}/locations/{{location}}/interceptEndpointGroupAssociations/{{intercept_endpoint_group_association_id}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation default {{project}}/{{location}}/{{intercept_endpoint_group_association_id}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation default {{location}}/{{intercept_endpoint_group_association_id}}\n```\n\n",
+ "properties": {
+ "createTime": {
+ "type": "string",
+ "description": "Create time stamp.\n"
+ },
+ "effectiveLabels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.\n",
+ "secret": true
+ },
+ "interceptEndpointGroup": {
+ "type": "string",
+ "description": "Immutable. The Intercept Endpoint Group that this resource is connected to. Format\nis:\n`projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`.\n"
+ },
+ "interceptEndpointGroupAssociationId": {
+ "type": "string",
+ "description": "ID of the Intercept Endpoint Group Association.\n"
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Optional. Labels as key value pairs.\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field `effective_labels` for all of the labels present on the resource.\n"
+ },
+ "location": {
+ "type": "string",
+ "description": "The location of the Intercept Endpoint Group Association, currently restricted to `global`.\n\n\n- - -\n"
+ },
+ "locationsDetails": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:networksecurity/InterceptEndpointGroupAssociationLocationsDetail:InterceptEndpointGroupAssociationLocationsDetail"
+ },
+ "description": "The list of locations that are currently supported by the associated Intercept Deployment Group and their state.\nStructure is documented below.\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "Identifier. The name of the Intercept Endpoint Group Association.\n"
+ },
+ "network": {
+ "type": "string",
+ "description": "Immutable. The VPC network associated. Format:\n`projects/{project}/global/networks/{network}`.\n"
+ },
+ "project": {
+ "type": "string",
+ "description": "The ID of the project in which the resource belongs.\nIf it is not provided, the provider project is used.\n"
+ },
+ "pulumiLabels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "The combination of labels configured directly on the resource\nand default labels configured on the provider.\n",
+ "secret": true
+ },
+ "reconciling": {
+ "type": "boolean",
+ "description": "Whether reconciling is in progress.\n"
+ },
+ "state": {
+ "type": "string",
+ "description": "(Output)\nThe association state in this location.\nPossible values:\nSTATE_UNSPECIFIED\nACTIVE\nOUT_OF_SYNC\n"
+ },
+ "updateTime": {
+ "type": "string",
+ "description": "Update time stamp.\n"
+ }
+ },
+ "required": [
+ "createTime",
+ "effectiveLabels",
+ "interceptEndpointGroup",
+ "location",
+ "locationsDetails",
+ "name",
+ "network",
+ "project",
+ "reconciling",
+ "state",
+ "pulumiLabels",
+ "updateTime"
+ ],
+ "inputProperties": {
+ "interceptEndpointGroup": {
+ "type": "string",
+ "description": "Immutable. The Intercept Endpoint Group that this resource is connected to. Format\nis:\n`projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`.\n",
+ "willReplaceOnChanges": true
+ },
+ "interceptEndpointGroupAssociationId": {
+ "type": "string",
+ "description": "ID of the Intercept Endpoint Group Association.\n",
+ "willReplaceOnChanges": true
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Optional. Labels as key value pairs.\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field `effective_labels` for all of the labels present on the resource.\n"
+ },
+ "location": {
+ "type": "string",
+ "description": "The location of the Intercept Endpoint Group Association, currently restricted to `global`.\n\n\n- - -\n",
+ "willReplaceOnChanges": true
+ },
+ "network": {
+ "type": "string",
+ "description": "Immutable. The VPC network associated. Format:\n`projects/{project}/global/networks/{network}`.\n",
+ "willReplaceOnChanges": true
+ },
+ "project": {
+ "type": "string",
+ "description": "The ID of the project in which the resource belongs.\nIf it is not provided, the provider project is used.\n",
+ "willReplaceOnChanges": true
+ }
+ },
+ "requiredInputs": [
+ "interceptEndpointGroup",
+ "location",
+ "network"
+ ],
+ "stateInputs": {
+ "description": "Input properties used for looking up and filtering InterceptEndpointGroupAssociation resources.\n",
+ "properties": {
+ "createTime": {
+ "type": "string",
+ "description": "Create time stamp.\n"
+ },
+ "effectiveLabels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.\n",
+ "secret": true
+ },
+ "interceptEndpointGroup": {
+ "type": "string",
+ "description": "Immutable. The Intercept Endpoint Group that this resource is connected to. Format\nis:\n`projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`.\n",
+ "willReplaceOnChanges": true
+ },
+ "interceptEndpointGroupAssociationId": {
+ "type": "string",
+ "description": "ID of the Intercept Endpoint Group Association.\n",
+ "willReplaceOnChanges": true
+ },
+ "labels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Optional. Labels as key value pairs.\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field `effective_labels` for all of the labels present on the resource.\n"
+ },
+ "location": {
+ "type": "string",
+ "description": "The location of the Intercept Endpoint Group Association, currently restricted to `global`.\n\n\n- - -\n",
+ "willReplaceOnChanges": true
+ },
+ "locationsDetails": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/gcp:networksecurity/InterceptEndpointGroupAssociationLocationsDetail:InterceptEndpointGroupAssociationLocationsDetail"
+ },
+ "description": "The list of locations that are currently supported by the associated Intercept Deployment Group and their state.\nStructure is documented below.\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "Identifier. The name of the Intercept Endpoint Group Association.\n"
+ },
+ "network": {
+ "type": "string",
+ "description": "Immutable. The VPC network associated. Format:\n`projects/{project}/global/networks/{network}`.\n",
+ "willReplaceOnChanges": true
+ },
+ "project": {
+ "type": "string",
+ "description": "The ID of the project in which the resource belongs.\nIf it is not provided, the provider project is used.\n",
+ "willReplaceOnChanges": true
+ },
+ "pulumiLabels": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "The combination of labels configured directly on the resource\nand default labels configured on the provider.\n",
+ "secret": true
+ },
+ "reconciling": {
+ "type": "boolean",
+ "description": "Whether reconciling is in progress.\n"
+ },
+ "state": {
+ "type": "string",
+ "description": "(Output)\nThe association state in this location.\nPossible values:\nSTATE_UNSPECIFIED\nACTIVE\nOUT_OF_SYNC\n"
+ },
+ "updateTime": {
+ "type": "string",
+ "description": "Update time stamp.\n"
+ }
+ },
+ "type": "object"
+ }
+ },
"gcp:networksecurity/mirroringDeployment:MirroringDeployment": {
"description": "## Example Usage\n\n### Network Security Mirroring 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 network = new gcp.compute.Network(\"network\", {\n name: \"example-network\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork = new gcp.compute.Subnetwork(\"subnetwork\", {\n name: \"example-subnet\",\n region: \"us-central1\",\n ipCidrRange: \"10.1.0.0/16\",\n network: network.name,\n});\nconst healthCheck = new gcp.compute.RegionHealthCheck(\"health_check\", {\n name: \"example-hc\",\n region: \"us-central1\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst backendService = new gcp.compute.RegionBackendService(\"backend_service\", {\n name: \"example-bs\",\n region: \"us-central1\",\n healthChecks: healthCheck.id,\n protocol: \"UDP\",\n loadBalancingScheme: \"INTERNAL\",\n});\nconst forwardingRule = new gcp.compute.ForwardingRule(\"forwarding_rule\", {\n name: \"example-fwr\",\n region: \"us-central1\",\n network: network.name,\n subnetwork: subnetwork.name,\n backendService: backendService.id,\n loadBalancingScheme: \"INTERNAL\",\n ports: [\"6081\"],\n ipProtocol: \"UDP\",\n isMirroringCollector: true,\n});\nconst deploymentGroup = new gcp.networksecurity.MirroringDeploymentGroup(\"deployment_group\", {\n mirroringDeploymentGroupId: \"example-dg\",\n location: \"global\",\n network: network.id,\n});\nconst _default = new gcp.networksecurity.MirroringDeployment(\"default\", {\n mirroringDeploymentId: \"example-deployment\",\n location: \"us-central1-a\",\n forwardingRule: forwardingRule.id,\n mirroringDeploymentGroup: deploymentGroup.id,\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"example-network\",\n auto_create_subnetworks=False)\nsubnetwork = gcp.compute.Subnetwork(\"subnetwork\",\n name=\"example-subnet\",\n region=\"us-central1\",\n ip_cidr_range=\"10.1.0.0/16\",\n network=network.name)\nhealth_check = gcp.compute.RegionHealthCheck(\"health_check\",\n name=\"example-hc\",\n region=\"us-central1\",\n http_health_check={\n \"port\": 80,\n })\nbackend_service = gcp.compute.RegionBackendService(\"backend_service\",\n name=\"example-bs\",\n region=\"us-central1\",\n health_checks=health_check.id,\n protocol=\"UDP\",\n load_balancing_scheme=\"INTERNAL\")\nforwarding_rule = gcp.compute.ForwardingRule(\"forwarding_rule\",\n name=\"example-fwr\",\n region=\"us-central1\",\n network=network.name,\n subnetwork=subnetwork.name,\n backend_service=backend_service.id,\n load_balancing_scheme=\"INTERNAL\",\n ports=[\"6081\"],\n ip_protocol=\"UDP\",\n is_mirroring_collector=True)\ndeployment_group = gcp.networksecurity.MirroringDeploymentGroup(\"deployment_group\",\n mirroring_deployment_group_id=\"example-dg\",\n location=\"global\",\n network=network.id)\ndefault = gcp.networksecurity.MirroringDeployment(\"default\",\n mirroring_deployment_id=\"example-deployment\",\n location=\"us-central1-a\",\n forwarding_rule=forwarding_rule.id,\n mirroring_deployment_group=deployment_group.id,\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 network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"example-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork = new Gcp.Compute.Subnetwork(\"subnetwork\", new()\n {\n Name = \"example-subnet\",\n Region = \"us-central1\",\n IpCidrRange = \"10.1.0.0/16\",\n Network = network.Name,\n });\n\n var healthCheck = new Gcp.Compute.RegionHealthCheck(\"health_check\", new()\n {\n Name = \"example-hc\",\n Region = \"us-central1\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var backendService = new Gcp.Compute.RegionBackendService(\"backend_service\", new()\n {\n Name = \"example-bs\",\n Region = \"us-central1\",\n HealthChecks = healthCheck.Id,\n Protocol = \"UDP\",\n LoadBalancingScheme = \"INTERNAL\",\n });\n\n var forwardingRule = new Gcp.Compute.ForwardingRule(\"forwarding_rule\", new()\n {\n Name = \"example-fwr\",\n Region = \"us-central1\",\n Network = network.Name,\n Subnetwork = subnetwork.Name,\n BackendService = backendService.Id,\n LoadBalancingScheme = \"INTERNAL\",\n Ports = new[]\n {\n \"6081\",\n },\n IpProtocol = \"UDP\",\n IsMirroringCollector = true,\n });\n\n var deploymentGroup = new Gcp.NetworkSecurity.MirroringDeploymentGroup(\"deployment_group\", new()\n {\n MirroringDeploymentGroupId = \"example-dg\",\n Location = \"global\",\n Network = network.Id,\n });\n\n var @default = new Gcp.NetworkSecurity.MirroringDeployment(\"default\", new()\n {\n MirroringDeploymentId = \"example-deployment\",\n Location = \"us-central1-a\",\n ForwardingRule = forwardingRule.Id,\n MirroringDeploymentGroup = deploymentGroup.Id,\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/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"example-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(\"example-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.1.0.0/16\"),\n\t\t\tNetwork: network.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thealthCheck, err := compute.NewRegionHealthCheck(ctx, \"health_check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"example-hc\"),\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\tbackendService, err := compute.NewRegionBackendService(ctx, \"backend_service\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"example-bs\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: healthCheck.ID(),\n\t\t\tProtocol: pulumi.String(\"UDP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tforwardingRule, err := compute.NewForwardingRule(ctx, \"forwarding_rule\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"example-fwr\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.Name,\n\t\t\tSubnetwork: subnetwork.Name,\n\t\t\tBackendService: backendService.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tPorts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"6081\"),\n\t\t\t},\n\t\t\tIpProtocol: pulumi.String(\"UDP\"),\n\t\t\tIsMirroringCollector: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdeploymentGroup, err := networksecurity.NewMirroringDeploymentGroup(ctx, \"deployment_group\", \u0026networksecurity.MirroringDeploymentGroupArgs{\n\t\t\tMirroringDeploymentGroupId: pulumi.String(\"example-dg\"),\n\t\t\tLocation: pulumi.String(\"global\"),\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 = networksecurity.NewMirroringDeployment(ctx, \"default\", \u0026networksecurity.MirroringDeploymentArgs{\n\t\t\tMirroringDeploymentId: pulumi.String(\"example-deployment\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tForwardingRule: forwardingRule.ID(),\n\t\t\tMirroringDeploymentGroup: deploymentGroup.ID(),\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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.networksecurity.MirroringDeploymentGroup;\nimport com.pulumi.gcp.networksecurity.MirroringDeploymentGroupArgs;\nimport com.pulumi.gcp.networksecurity.MirroringDeployment;\nimport com.pulumi.gcp.networksecurity.MirroringDeploymentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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(\"example-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork = new Subnetwork(\"subnetwork\", SubnetworkArgs.builder()\n .name(\"example-subnet\")\n .region(\"us-central1\")\n .ipCidrRange(\"10.1.0.0/16\")\n .network(network.name())\n .build());\n\n var healthCheck = new RegionHealthCheck(\"healthCheck\", RegionHealthCheckArgs.builder()\n .name(\"example-hc\")\n .region(\"us-central1\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var backendService = new RegionBackendService(\"backendService\", RegionBackendServiceArgs.builder()\n .name(\"example-bs\")\n .region(\"us-central1\")\n .healthChecks(healthCheck.id())\n .protocol(\"UDP\")\n .loadBalancingScheme(\"INTERNAL\")\n .build());\n\n var forwardingRule = new ForwardingRule(\"forwardingRule\", ForwardingRuleArgs.builder()\n .name(\"example-fwr\")\n .region(\"us-central1\")\n .network(network.name())\n .subnetwork(subnetwork.name())\n .backendService(backendService.id())\n .loadBalancingScheme(\"INTERNAL\")\n .ports(6081)\n .ipProtocol(\"UDP\")\n .isMirroringCollector(true)\n .build());\n\n var deploymentGroup = new MirroringDeploymentGroup(\"deploymentGroup\", MirroringDeploymentGroupArgs.builder()\n .mirroringDeploymentGroupId(\"example-dg\")\n .location(\"global\")\n .network(network.id())\n .build());\n\n var default_ = new MirroringDeployment(\"default\", MirroringDeploymentArgs.builder()\n .mirroringDeploymentId(\"example-deployment\")\n .location(\"us-central1-a\")\n .forwardingRule(forwardingRule.id())\n .mirroringDeploymentGroup(deploymentGroup.id())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n name: example-network\n autoCreateSubnetworks: false\n subnetwork:\n type: gcp:compute:Subnetwork\n properties:\n name: example-subnet\n region: us-central1\n ipCidrRange: 10.1.0.0/16\n network: ${network.name}\n healthCheck:\n type: gcp:compute:RegionHealthCheck\n name: health_check\n properties:\n name: example-hc\n region: us-central1\n httpHealthCheck:\n port: 80\n backendService:\n type: gcp:compute:RegionBackendService\n name: backend_service\n properties:\n name: example-bs\n region: us-central1\n healthChecks: ${healthCheck.id}\n protocol: UDP\n loadBalancingScheme: INTERNAL\n forwardingRule:\n type: gcp:compute:ForwardingRule\n name: forwarding_rule\n properties:\n name: example-fwr\n region: us-central1\n network: ${network.name}\n subnetwork: ${subnetwork.name}\n backendService: ${backendService.id}\n loadBalancingScheme: INTERNAL\n ports:\n - 6081\n ipProtocol: UDP\n isMirroringCollector: true\n deploymentGroup:\n type: gcp:networksecurity:MirroringDeploymentGroup\n name: deployment_group\n properties:\n mirroringDeploymentGroupId: example-dg\n location: global\n network: ${network.id}\n default:\n type: gcp:networksecurity:MirroringDeployment\n properties:\n mirroringDeploymentId: example-deployment\n location: us-central1-a\n forwardingRule: ${forwardingRule.id}\n mirroringDeploymentGroup: ${deploymentGroup.id}\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nMirroringDeployment can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/mirroringDeployments/{{mirroring_deployment_id}}`\n\n* `{{project}}/{{location}}/{{mirroring_deployment_id}}`\n\n* `{{location}}/{{mirroring_deployment_id}}`\n\nWhen using the `pulumi import` command, MirroringDeployment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networksecurity/mirroringDeployment:MirroringDeployment default projects/{{project}}/locations/{{location}}/mirroringDeployments/{{mirroring_deployment_id}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/mirroringDeployment:MirroringDeployment default {{project}}/{{location}}/{{mirroring_deployment_id}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/mirroringDeployment:MirroringDeployment default {{location}}/{{mirroring_deployment_id}}\n```\n\n",
"properties": {
@@ -252709,7 +255830,7 @@
}
},
"gcp:oracledatabase/autonomousDatabase:AutonomousDatabase": {
- "description": "An AutonomousDatabase resource.\n\n\nTo get more information about AutonomousDatabase, see:\n\n* [API documentation](https://cloud.google.com/oracle/database/docs/reference/rest/v1/projects.locations.autonomousDatabases)\n* How-to Guides\n * [Create Autonomous databases](https://cloud.google.com/oracle/database/docs/create-databases)\n\n## Example Usage\n\n### Oracledatabase Autonomous Database 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.compute.getNetwork({\n name: \"new\",\n project: \"my-project\",\n});\nconst myADB = new gcp.oracledatabase.AutonomousDatabase(\"myADB\", {\n autonomousDatabaseId: \"my-instance\",\n location: \"us-east4\",\n project: \"my-project\",\n database: \"mydatabase\",\n adminPassword: \"123Abpassword\",\n network: _default.then(_default =\u003e _default.id),\n cidr: \"10.5.0.0/24\",\n properties: {\n computeCount: 2,\n dataStorageSizeTb: 1,\n dbVersion: \"19c\",\n dbWorkload: \"OLTP\",\n licenseType: \"LICENSE_INCLUDED\",\n },\n deletionProtection: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_network(name=\"new\",\n project=\"my-project\")\nmy_adb = gcp.oracledatabase.AutonomousDatabase(\"myADB\",\n autonomous_database_id=\"my-instance\",\n location=\"us-east4\",\n project=\"my-project\",\n database=\"mydatabase\",\n admin_password=\"123Abpassword\",\n network=default.id,\n cidr=\"10.5.0.0/24\",\n properties={\n \"compute_count\": 2,\n \"data_storage_size_tb\": 1,\n \"db_version\": \"19c\",\n \"db_workload\": \"OLTP\",\n \"license_type\": \"LICENSE_INCLUDED\",\n },\n deletion_protection=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 = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"new\",\n Project = \"my-project\",\n });\n\n var myADB = new Gcp.OracleDatabase.AutonomousDatabase(\"myADB\", new()\n {\n AutonomousDatabaseId = \"my-instance\",\n Location = \"us-east4\",\n Project = \"my-project\",\n Database = \"mydatabase\",\n AdminPassword = \"123Abpassword\",\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n Cidr = \"10.5.0.0/24\",\n Properties = new Gcp.OracleDatabase.Inputs.AutonomousDatabasePropertiesArgs\n {\n ComputeCount = 2,\n DataStorageSizeTb = 1,\n DbVersion = \"19c\",\n DbWorkload = \"OLTP\",\n LicenseType = \"LICENSE_INCLUDED\",\n },\n DeletionProtection = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/oracledatabase\"\n\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: \"new\",\n\t\t\tProject: pulumi.StringRef(\"my-project\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = oracledatabase.NewAutonomousDatabase(ctx, \"myADB\", \u0026oracledatabase.AutonomousDatabaseArgs{\n\t\t\tAutonomousDatabaseId: pulumi.String(\"my-instance\"),\n\t\t\tLocation: pulumi.String(\"us-east4\"),\n\t\t\tProject: pulumi.String(\"my-project\"),\n\t\t\tDatabase: pulumi.String(\"mydatabase\"),\n\t\t\tAdminPassword: pulumi.String(\"123Abpassword\"),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t\tCidr: pulumi.String(\"10.5.0.0/24\"),\n\t\t\tProperties: \u0026oracledatabase.AutonomousDatabasePropertiesArgs{\n\t\t\t\tComputeCount: pulumi.Float64(2),\n\t\t\t\tDataStorageSizeTb: pulumi.Int(1),\n\t\t\t\tDbVersion: pulumi.String(\"19c\"),\n\t\t\t\tDbWorkload: pulumi.String(\"OLTP\"),\n\t\t\t\tLicenseType: pulumi.String(\"LICENSE_INCLUDED\"),\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\treturn nil\n\t})\n}\n```\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.oracledatabase.AutonomousDatabase;\nimport com.pulumi.gcp.oracledatabase.AutonomousDatabaseArgs;\nimport com.pulumi.gcp.oracledatabase.inputs.AutonomousDatabasePropertiesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\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(\"new\")\n .project(\"my-project\")\n .build());\n\n var myADB = new AutonomousDatabase(\"myADB\", AutonomousDatabaseArgs.builder()\n .autonomousDatabaseId(\"my-instance\")\n .location(\"us-east4\")\n .project(\"my-project\")\n .database(\"mydatabase\")\n .adminPassword(\"123Abpassword\")\n .network(default_.id())\n .cidr(\"10.5.0.0/24\")\n .properties(AutonomousDatabasePropertiesArgs.builder()\n .computeCount(\"2\")\n .dataStorageSizeTb(\"1\")\n .dbVersion(\"19c\")\n .dbWorkload(\"OLTP\")\n .licenseType(\"LICENSE_INCLUDED\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myADB:\n type: gcp:oracledatabase:AutonomousDatabase\n properties:\n autonomousDatabaseId: my-instance\n location: us-east4\n project: my-project\n database: mydatabase\n adminPassword: 123Abpassword\n network: ${default.id}\n cidr: 10.5.0.0/24\n properties:\n computeCount: '2'\n dataStorageSizeTb: '1'\n dbVersion: 19c\n dbWorkload: OLTP\n licenseType: LICENSE_INCLUDED\n deletionProtection: 'true'\nvariables:\n default:\n fn::invoke:\n function: gcp:compute:getNetwork\n arguments:\n name: new\n project: my-project\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Oracledatabase Autonomous Database 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.compute.getNetwork({\n name: \"new\",\n project: \"my-project\",\n});\nconst myADB = new gcp.oracledatabase.AutonomousDatabase(\"myADB\", {\n autonomousDatabaseId: \"my-instance\",\n location: \"us-east4\",\n project: \"my-project\",\n displayName: \"autonomousDatabase displayname\",\n database: \"mydatabase\",\n adminPassword: \"123Abpassword\",\n network: _default.then(_default =\u003e _default.id),\n cidr: \"10.5.0.0/24\",\n labels: {\n \"label-one\": \"value-one\",\n },\n properties: {\n computeCount: 2,\n dataStorageSizeGb: 48,\n dbVersion: \"19c\",\n dbEdition: \"STANDARD_EDITION\",\n dbWorkload: \"OLTP\",\n isAutoScalingEnabled: true,\n licenseType: \"BRING_YOUR_OWN_LICENSE\",\n backupRetentionPeriodDays: 60,\n characterSet: \"AL32UTF8\",\n isStorageAutoScalingEnabled: false,\n maintenanceScheduleType: \"REGULAR\",\n mtlsConnectionRequired: false,\n nCharacterSet: \"AL16UTF16\",\n operationsInsightsState: \"NOT_ENABLED\",\n customerContacts: [{\n email: \"xyz@example.com\",\n }],\n privateEndpointIp: \"10.5.0.11\",\n privateEndpointLabel: \"testhost\",\n },\n deletionProtection: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_network(name=\"new\",\n project=\"my-project\")\nmy_adb = gcp.oracledatabase.AutonomousDatabase(\"myADB\",\n autonomous_database_id=\"my-instance\",\n location=\"us-east4\",\n project=\"my-project\",\n display_name=\"autonomousDatabase displayname\",\n database=\"mydatabase\",\n admin_password=\"123Abpassword\",\n network=default.id,\n cidr=\"10.5.0.0/24\",\n labels={\n \"label-one\": \"value-one\",\n },\n properties={\n \"compute_count\": 2,\n \"data_storage_size_gb\": 48,\n \"db_version\": \"19c\",\n \"db_edition\": \"STANDARD_EDITION\",\n \"db_workload\": \"OLTP\",\n \"is_auto_scaling_enabled\": True,\n \"license_type\": \"BRING_YOUR_OWN_LICENSE\",\n \"backup_retention_period_days\": 60,\n \"character_set\": \"AL32UTF8\",\n \"is_storage_auto_scaling_enabled\": False,\n \"maintenance_schedule_type\": \"REGULAR\",\n \"mtls_connection_required\": False,\n \"n_character_set\": \"AL16UTF16\",\n \"operations_insights_state\": \"NOT_ENABLED\",\n \"customer_contacts\": [{\n \"email\": \"xyz@example.com\",\n }],\n \"private_endpoint_ip\": \"10.5.0.11\",\n \"private_endpoint_label\": \"testhost\",\n },\n deletion_protection=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 = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"new\",\n Project = \"my-project\",\n });\n\n var myADB = new Gcp.OracleDatabase.AutonomousDatabase(\"myADB\", new()\n {\n AutonomousDatabaseId = \"my-instance\",\n Location = \"us-east4\",\n Project = \"my-project\",\n DisplayName = \"autonomousDatabase displayname\",\n Database = \"mydatabase\",\n AdminPassword = \"123Abpassword\",\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n Cidr = \"10.5.0.0/24\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Properties = new Gcp.OracleDatabase.Inputs.AutonomousDatabasePropertiesArgs\n {\n ComputeCount = 2,\n DataStorageSizeGb = 48,\n DbVersion = \"19c\",\n DbEdition = \"STANDARD_EDITION\",\n DbWorkload = \"OLTP\",\n IsAutoScalingEnabled = true,\n LicenseType = \"BRING_YOUR_OWN_LICENSE\",\n BackupRetentionPeriodDays = 60,\n CharacterSet = \"AL32UTF8\",\n IsStorageAutoScalingEnabled = false,\n MaintenanceScheduleType = \"REGULAR\",\n MtlsConnectionRequired = false,\n NCharacterSet = \"AL16UTF16\",\n OperationsInsightsState = \"NOT_ENABLED\",\n CustomerContacts = new[]\n {\n new Gcp.OracleDatabase.Inputs.AutonomousDatabasePropertiesCustomerContactArgs\n {\n Email = \"xyz@example.com\",\n },\n },\n PrivateEndpointIp = \"10.5.0.11\",\n PrivateEndpointLabel = \"testhost\",\n },\n DeletionProtection = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/oracledatabase\"\n\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: \"new\",\n\t\t\tProject: pulumi.StringRef(\"my-project\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = oracledatabase.NewAutonomousDatabase(ctx, \"myADB\", \u0026oracledatabase.AutonomousDatabaseArgs{\n\t\t\tAutonomousDatabaseId: pulumi.String(\"my-instance\"),\n\t\t\tLocation: pulumi.String(\"us-east4\"),\n\t\t\tProject: pulumi.String(\"my-project\"),\n\t\t\tDisplayName: pulumi.String(\"autonomousDatabase displayname\"),\n\t\t\tDatabase: pulumi.String(\"mydatabase\"),\n\t\t\tAdminPassword: pulumi.String(\"123Abpassword\"),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t\tCidr: pulumi.String(\"10.5.0.0/24\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tProperties: \u0026oracledatabase.AutonomousDatabasePropertiesArgs{\n\t\t\t\tComputeCount: pulumi.Float64(2),\n\t\t\t\tDataStorageSizeGb: pulumi.Int(48),\n\t\t\t\tDbVersion: pulumi.String(\"19c\"),\n\t\t\t\tDbEdition: pulumi.String(\"STANDARD_EDITION\"),\n\t\t\t\tDbWorkload: pulumi.String(\"OLTP\"),\n\t\t\t\tIsAutoScalingEnabled: pulumi.Bool(true),\n\t\t\t\tLicenseType: pulumi.String(\"BRING_YOUR_OWN_LICENSE\"),\n\t\t\t\tBackupRetentionPeriodDays: pulumi.Int(60),\n\t\t\t\tCharacterSet: pulumi.String(\"AL32UTF8\"),\n\t\t\t\tIsStorageAutoScalingEnabled: pulumi.Bool(false),\n\t\t\t\tMaintenanceScheduleType: pulumi.String(\"REGULAR\"),\n\t\t\t\tMtlsConnectionRequired: pulumi.Bool(false),\n\t\t\t\tNCharacterSet: pulumi.String(\"AL16UTF16\"),\n\t\t\t\tOperationsInsightsState: pulumi.String(\"NOT_ENABLED\"),\n\t\t\t\tCustomerContacts: oracledatabase.AutonomousDatabasePropertiesCustomerContactArray{\n\t\t\t\t\t\u0026oracledatabase.AutonomousDatabasePropertiesCustomerContactArgs{\n\t\t\t\t\t\tEmail: pulumi.String(\"xyz@example.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPrivateEndpointIp: pulumi.String(\"10.5.0.11\"),\n\t\t\t\tPrivateEndpointLabel: pulumi.String(\"testhost\"),\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\treturn nil\n\t})\n}\n```\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.oracledatabase.AutonomousDatabase;\nimport com.pulumi.gcp.oracledatabase.AutonomousDatabaseArgs;\nimport com.pulumi.gcp.oracledatabase.inputs.AutonomousDatabasePropertiesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\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(\"new\")\n .project(\"my-project\")\n .build());\n\n var myADB = new AutonomousDatabase(\"myADB\", AutonomousDatabaseArgs.builder()\n .autonomousDatabaseId(\"my-instance\")\n .location(\"us-east4\")\n .project(\"my-project\")\n .displayName(\"autonomousDatabase displayname\")\n .database(\"mydatabase\")\n .adminPassword(\"123Abpassword\")\n .network(default_.id())\n .cidr(\"10.5.0.0/24\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .properties(AutonomousDatabasePropertiesArgs.builder()\n .computeCount(\"2\")\n .dataStorageSizeGb(\"48\")\n .dbVersion(\"19c\")\n .dbEdition(\"STANDARD_EDITION\")\n .dbWorkload(\"OLTP\")\n .isAutoScalingEnabled(\"true\")\n .licenseType(\"BRING_YOUR_OWN_LICENSE\")\n .backupRetentionPeriodDays(\"60\")\n .characterSet(\"AL32UTF8\")\n .isStorageAutoScalingEnabled(\"false\")\n .maintenanceScheduleType(\"REGULAR\")\n .mtlsConnectionRequired(\"false\")\n .nCharacterSet(\"AL16UTF16\")\n .operationsInsightsState(\"NOT_ENABLED\")\n .customerContacts(AutonomousDatabasePropertiesCustomerContactArgs.builder()\n .email(\"xyz@example.com\")\n .build())\n .privateEndpointIp(\"10.5.0.11\")\n .privateEndpointLabel(\"testhost\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myADB:\n type: gcp:oracledatabase:AutonomousDatabase\n properties:\n autonomousDatabaseId: my-instance\n location: us-east4\n project: my-project\n displayName: autonomousDatabase displayname\n database: mydatabase\n adminPassword: 123Abpassword\n network: ${default.id}\n cidr: 10.5.0.0/24\n labels:\n label-one: value-one\n properties:\n computeCount: '2'\n dataStorageSizeGb: '48'\n dbVersion: 19c\n dbEdition: STANDARD_EDITION\n dbWorkload: OLTP\n isAutoScalingEnabled: 'true'\n licenseType: BRING_YOUR_OWN_LICENSE\n backupRetentionPeriodDays: '60'\n characterSet: AL32UTF8\n isStorageAutoScalingEnabled: 'false'\n maintenanceScheduleType: REGULAR\n mtlsConnectionRequired: 'false'\n nCharacterSet: AL16UTF16\n operationsInsightsState: NOT_ENABLED\n customerContacts:\n - email: xyz@example.com\n privateEndpointIp: 10.5.0.11\n privateEndpointLabel: testhost\n deletionProtection: 'true'\nvariables:\n default:\n fn::invoke:\n function: gcp:compute:getNetwork\n arguments:\n name: new\n project: my-project\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAutonomousDatabase can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/autonomousDatabases/{{autonomous_database_id}}`\n\n* `{{project}}/{{location}}/{{autonomous_database_id}}`\n\n* `{{location}}/{{autonomous_database_id}}`\n\nWhen using the `pulumi import` command, AutonomousDatabase can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:oracledatabase/autonomousDatabase:AutonomousDatabase default projects/{{project}}/locations/{{location}}/autonomousDatabases/{{autonomous_database_id}}\n```\n\n```sh\n$ pulumi import gcp:oracledatabase/autonomousDatabase:AutonomousDatabase default {{project}}/{{location}}/{{autonomous_database_id}}\n```\n\n```sh\n$ pulumi import gcp:oracledatabase/autonomousDatabase:AutonomousDatabase default {{location}}/{{autonomous_database_id}}\n```\n\n",
+ "description": "An AutonomousDatabase resource.\n\n\nTo get more information about AutonomousDatabase, see:\n\n* [API documentation](https://cloud.google.com/oracle/database/docs/reference/rest/v1/projects.locations.autonomousDatabases)\n* How-to Guides\n * [Create Autonomous databases](https://cloud.google.com/oracle/database/docs/create-databases)\n\n## Example Usage\n\n### Oracledatabase Autonomous Database 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.compute.getNetwork({\n name: \"new\",\n project: \"my-project\",\n});\nconst myADB = new gcp.oracledatabase.AutonomousDatabase(\"myADB\", {\n autonomousDatabaseId: \"my-instance\",\n location: \"us-east4\",\n project: \"my-project\",\n database: \"mydatabase\",\n adminPassword: \"123Abpassword\",\n network: _default.then(_default =\u003e _default.id),\n cidr: \"10.5.0.0/24\",\n properties: {\n computeCount: 2,\n dataStorageSizeTb: 1,\n dbVersion: \"19c\",\n dbWorkload: \"OLTP\",\n licenseType: \"LICENSE_INCLUDED\",\n },\n deletionProtection: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_network(name=\"new\",\n project=\"my-project\")\nmy_adb = gcp.oracledatabase.AutonomousDatabase(\"myADB\",\n autonomous_database_id=\"my-instance\",\n location=\"us-east4\",\n project=\"my-project\",\n database=\"mydatabase\",\n admin_password=\"123Abpassword\",\n network=default.id,\n cidr=\"10.5.0.0/24\",\n properties={\n \"compute_count\": 2,\n \"data_storage_size_tb\": 1,\n \"db_version\": \"19c\",\n \"db_workload\": \"OLTP\",\n \"license_type\": \"LICENSE_INCLUDED\",\n },\n deletion_protection=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 = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"new\",\n Project = \"my-project\",\n });\n\n var myADB = new Gcp.OracleDatabase.AutonomousDatabase(\"myADB\", new()\n {\n AutonomousDatabaseId = \"my-instance\",\n Location = \"us-east4\",\n Project = \"my-project\",\n Database = \"mydatabase\",\n AdminPassword = \"123Abpassword\",\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n Cidr = \"10.5.0.0/24\",\n Properties = new Gcp.OracleDatabase.Inputs.AutonomousDatabasePropertiesArgs\n {\n ComputeCount = 2,\n DataStorageSizeTb = 1,\n DbVersion = \"19c\",\n DbWorkload = \"OLTP\",\n LicenseType = \"LICENSE_INCLUDED\",\n },\n DeletionProtection = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/oracledatabase\"\n\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: \"new\",\n\t\t\tProject: pulumi.StringRef(\"my-project\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = oracledatabase.NewAutonomousDatabase(ctx, \"myADB\", \u0026oracledatabase.AutonomousDatabaseArgs{\n\t\t\tAutonomousDatabaseId: pulumi.String(\"my-instance\"),\n\t\t\tLocation: pulumi.String(\"us-east4\"),\n\t\t\tProject: pulumi.String(\"my-project\"),\n\t\t\tDatabase: pulumi.String(\"mydatabase\"),\n\t\t\tAdminPassword: pulumi.String(\"123Abpassword\"),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t\tCidr: pulumi.String(\"10.5.0.0/24\"),\n\t\t\tProperties: \u0026oracledatabase.AutonomousDatabasePropertiesArgs{\n\t\t\t\tComputeCount: pulumi.Float64(2),\n\t\t\t\tDataStorageSizeTb: pulumi.Int(1),\n\t\t\t\tDbVersion: pulumi.String(\"19c\"),\n\t\t\t\tDbWorkload: pulumi.String(\"OLTP\"),\n\t\t\t\tLicenseType: pulumi.String(\"LICENSE_INCLUDED\"),\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\treturn nil\n\t})\n}\n```\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.oracledatabase.AutonomousDatabase;\nimport com.pulumi.gcp.oracledatabase.AutonomousDatabaseArgs;\nimport com.pulumi.gcp.oracledatabase.inputs.AutonomousDatabasePropertiesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\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(\"new\")\n .project(\"my-project\")\n .build());\n\n var myADB = new AutonomousDatabase(\"myADB\", AutonomousDatabaseArgs.builder()\n .autonomousDatabaseId(\"my-instance\")\n .location(\"us-east4\")\n .project(\"my-project\")\n .database(\"mydatabase\")\n .adminPassword(\"123Abpassword\")\n .network(default_.id())\n .cidr(\"10.5.0.0/24\")\n .properties(AutonomousDatabasePropertiesArgs.builder()\n .computeCount(\"2\")\n .dataStorageSizeTb(\"1\")\n .dbVersion(\"19c\")\n .dbWorkload(\"OLTP\")\n .licenseType(\"LICENSE_INCLUDED\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myADB:\n type: gcp:oracledatabase:AutonomousDatabase\n properties:\n autonomousDatabaseId: my-instance\n location: us-east4\n project: my-project\n database: mydatabase\n adminPassword: 123Abpassword\n network: ${default.id}\n cidr: 10.5.0.0/24\n properties:\n computeCount: '2'\n dataStorageSizeTb: '1'\n dbVersion: 19c\n dbWorkload: OLTP\n licenseType: LICENSE_INCLUDED\n deletionProtection: 'true'\nvariables:\n default:\n fn::invoke:\n function: gcp:compute:getNetwork\n arguments:\n name: new\n project: my-project\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Oracledatabase Autonomous Database 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.compute.getNetwork({\n name: \"new\",\n project: \"my-project\",\n});\nconst myADB = new gcp.oracledatabase.AutonomousDatabase(\"myADB\", {\n autonomousDatabaseId: \"my-instance\",\n location: \"us-east4\",\n project: \"my-project\",\n displayName: \"autonomousDatabase displayname\",\n database: \"mydatabase\",\n adminPassword: \"123Abpassword\",\n network: _default.then(_default =\u003e _default.id),\n cidr: \"10.5.0.0/24\",\n labels: {\n \"label-one\": \"value-one\",\n },\n properties: {\n computeCount: 2,\n dataStorageSizeGb: 48,\n dbVersion: \"19c\",\n dbEdition: \"STANDARD_EDITION\",\n dbWorkload: \"OLTP\",\n isAutoScalingEnabled: true,\n licenseType: \"BRING_YOUR_OWN_LICENSE\",\n backupRetentionPeriodDays: 60,\n characterSet: \"AL32UTF8\",\n isStorageAutoScalingEnabled: false,\n maintenanceScheduleType: \"REGULAR\",\n mtlsConnectionRequired: false,\n nCharacterSet: \"AL16UTF16\",\n operationsInsightsState: \"NOT_ENABLED\",\n customerContacts: [{\n email: \"xyz@example.com\",\n }],\n privateEndpointIp: \"10.5.0.11\",\n privateEndpointLabel: \"myendpoint\",\n },\n deletionProtection: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_network(name=\"new\",\n project=\"my-project\")\nmy_adb = gcp.oracledatabase.AutonomousDatabase(\"myADB\",\n autonomous_database_id=\"my-instance\",\n location=\"us-east4\",\n project=\"my-project\",\n display_name=\"autonomousDatabase displayname\",\n database=\"mydatabase\",\n admin_password=\"123Abpassword\",\n network=default.id,\n cidr=\"10.5.0.0/24\",\n labels={\n \"label-one\": \"value-one\",\n },\n properties={\n \"compute_count\": 2,\n \"data_storage_size_gb\": 48,\n \"db_version\": \"19c\",\n \"db_edition\": \"STANDARD_EDITION\",\n \"db_workload\": \"OLTP\",\n \"is_auto_scaling_enabled\": True,\n \"license_type\": \"BRING_YOUR_OWN_LICENSE\",\n \"backup_retention_period_days\": 60,\n \"character_set\": \"AL32UTF8\",\n \"is_storage_auto_scaling_enabled\": False,\n \"maintenance_schedule_type\": \"REGULAR\",\n \"mtls_connection_required\": False,\n \"n_character_set\": \"AL16UTF16\",\n \"operations_insights_state\": \"NOT_ENABLED\",\n \"customer_contacts\": [{\n \"email\": \"xyz@example.com\",\n }],\n \"private_endpoint_ip\": \"10.5.0.11\",\n \"private_endpoint_label\": \"myendpoint\",\n },\n deletion_protection=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 = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"new\",\n Project = \"my-project\",\n });\n\n var myADB = new Gcp.OracleDatabase.AutonomousDatabase(\"myADB\", new()\n {\n AutonomousDatabaseId = \"my-instance\",\n Location = \"us-east4\",\n Project = \"my-project\",\n DisplayName = \"autonomousDatabase displayname\",\n Database = \"mydatabase\",\n AdminPassword = \"123Abpassword\",\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n Cidr = \"10.5.0.0/24\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Properties = new Gcp.OracleDatabase.Inputs.AutonomousDatabasePropertiesArgs\n {\n ComputeCount = 2,\n DataStorageSizeGb = 48,\n DbVersion = \"19c\",\n DbEdition = \"STANDARD_EDITION\",\n DbWorkload = \"OLTP\",\n IsAutoScalingEnabled = true,\n LicenseType = \"BRING_YOUR_OWN_LICENSE\",\n BackupRetentionPeriodDays = 60,\n CharacterSet = \"AL32UTF8\",\n IsStorageAutoScalingEnabled = false,\n MaintenanceScheduleType = \"REGULAR\",\n MtlsConnectionRequired = false,\n NCharacterSet = \"AL16UTF16\",\n OperationsInsightsState = \"NOT_ENABLED\",\n CustomerContacts = new[]\n {\n new Gcp.OracleDatabase.Inputs.AutonomousDatabasePropertiesCustomerContactArgs\n {\n Email = \"xyz@example.com\",\n },\n },\n PrivateEndpointIp = \"10.5.0.11\",\n PrivateEndpointLabel = \"myendpoint\",\n },\n DeletionProtection = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/oracledatabase\"\n\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: \"new\",\n\t\t\tProject: pulumi.StringRef(\"my-project\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = oracledatabase.NewAutonomousDatabase(ctx, \"myADB\", \u0026oracledatabase.AutonomousDatabaseArgs{\n\t\t\tAutonomousDatabaseId: pulumi.String(\"my-instance\"),\n\t\t\tLocation: pulumi.String(\"us-east4\"),\n\t\t\tProject: pulumi.String(\"my-project\"),\n\t\t\tDisplayName: pulumi.String(\"autonomousDatabase displayname\"),\n\t\t\tDatabase: pulumi.String(\"mydatabase\"),\n\t\t\tAdminPassword: pulumi.String(\"123Abpassword\"),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t\tCidr: pulumi.String(\"10.5.0.0/24\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tProperties: \u0026oracledatabase.AutonomousDatabasePropertiesArgs{\n\t\t\t\tComputeCount: pulumi.Float64(2),\n\t\t\t\tDataStorageSizeGb: pulumi.Int(48),\n\t\t\t\tDbVersion: pulumi.String(\"19c\"),\n\t\t\t\tDbEdition: pulumi.String(\"STANDARD_EDITION\"),\n\t\t\t\tDbWorkload: pulumi.String(\"OLTP\"),\n\t\t\t\tIsAutoScalingEnabled: pulumi.Bool(true),\n\t\t\t\tLicenseType: pulumi.String(\"BRING_YOUR_OWN_LICENSE\"),\n\t\t\t\tBackupRetentionPeriodDays: pulumi.Int(60),\n\t\t\t\tCharacterSet: pulumi.String(\"AL32UTF8\"),\n\t\t\t\tIsStorageAutoScalingEnabled: pulumi.Bool(false),\n\t\t\t\tMaintenanceScheduleType: pulumi.String(\"REGULAR\"),\n\t\t\t\tMtlsConnectionRequired: pulumi.Bool(false),\n\t\t\t\tNCharacterSet: pulumi.String(\"AL16UTF16\"),\n\t\t\t\tOperationsInsightsState: pulumi.String(\"NOT_ENABLED\"),\n\t\t\t\tCustomerContacts: oracledatabase.AutonomousDatabasePropertiesCustomerContactArray{\n\t\t\t\t\t\u0026oracledatabase.AutonomousDatabasePropertiesCustomerContactArgs{\n\t\t\t\t\t\tEmail: pulumi.String(\"xyz@example.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPrivateEndpointIp: pulumi.String(\"10.5.0.11\"),\n\t\t\t\tPrivateEndpointLabel: pulumi.String(\"myendpoint\"),\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\treturn nil\n\t})\n}\n```\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.oracledatabase.AutonomousDatabase;\nimport com.pulumi.gcp.oracledatabase.AutonomousDatabaseArgs;\nimport com.pulumi.gcp.oracledatabase.inputs.AutonomousDatabasePropertiesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\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(\"new\")\n .project(\"my-project\")\n .build());\n\n var myADB = new AutonomousDatabase(\"myADB\", AutonomousDatabaseArgs.builder()\n .autonomousDatabaseId(\"my-instance\")\n .location(\"us-east4\")\n .project(\"my-project\")\n .displayName(\"autonomousDatabase displayname\")\n .database(\"mydatabase\")\n .adminPassword(\"123Abpassword\")\n .network(default_.id())\n .cidr(\"10.5.0.0/24\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .properties(AutonomousDatabasePropertiesArgs.builder()\n .computeCount(\"2\")\n .dataStorageSizeGb(\"48\")\n .dbVersion(\"19c\")\n .dbEdition(\"STANDARD_EDITION\")\n .dbWorkload(\"OLTP\")\n .isAutoScalingEnabled(\"true\")\n .licenseType(\"BRING_YOUR_OWN_LICENSE\")\n .backupRetentionPeriodDays(\"60\")\n .characterSet(\"AL32UTF8\")\n .isStorageAutoScalingEnabled(\"false\")\n .maintenanceScheduleType(\"REGULAR\")\n .mtlsConnectionRequired(\"false\")\n .nCharacterSet(\"AL16UTF16\")\n .operationsInsightsState(\"NOT_ENABLED\")\n .customerContacts(AutonomousDatabasePropertiesCustomerContactArgs.builder()\n .email(\"xyz@example.com\")\n .build())\n .privateEndpointIp(\"10.5.0.11\")\n .privateEndpointLabel(\"myendpoint\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myADB:\n type: gcp:oracledatabase:AutonomousDatabase\n properties:\n autonomousDatabaseId: my-instance\n location: us-east4\n project: my-project\n displayName: autonomousDatabase displayname\n database: mydatabase\n adminPassword: 123Abpassword\n network: ${default.id}\n cidr: 10.5.0.0/24\n labels:\n label-one: value-one\n properties:\n computeCount: '2'\n dataStorageSizeGb: '48'\n dbVersion: 19c\n dbEdition: STANDARD_EDITION\n dbWorkload: OLTP\n isAutoScalingEnabled: 'true'\n licenseType: BRING_YOUR_OWN_LICENSE\n backupRetentionPeriodDays: '60'\n characterSet: AL32UTF8\n isStorageAutoScalingEnabled: 'false'\n maintenanceScheduleType: REGULAR\n mtlsConnectionRequired: 'false'\n nCharacterSet: AL16UTF16\n operationsInsightsState: NOT_ENABLED\n customerContacts:\n - email: xyz@example.com\n privateEndpointIp: 10.5.0.11\n privateEndpointLabel: myendpoint\n deletionProtection: 'true'\nvariables:\n default:\n fn::invoke:\n function: gcp:compute:getNetwork\n arguments:\n name: new\n project: my-project\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAutonomousDatabase can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/autonomousDatabases/{{autonomous_database_id}}`\n\n* `{{project}}/{{location}}/{{autonomous_database_id}}`\n\n* `{{location}}/{{autonomous_database_id}}`\n\nWhen using the `pulumi import` command, AutonomousDatabase can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:oracledatabase/autonomousDatabase:AutonomousDatabase default projects/{{project}}/locations/{{location}}/autonomousDatabases/{{autonomous_database_id}}\n```\n\n```sh\n$ pulumi import gcp:oracledatabase/autonomousDatabase:AutonomousDatabase default {{project}}/{{location}}/{{autonomous_database_id}}\n```\n\n```sh\n$ pulumi import gcp:oracledatabase/autonomousDatabase:AutonomousDatabase default {{location}}/{{autonomous_database_id}}\n```\n\n",
"properties": {
"adminPassword": {
"type": "string",
@@ -254543,7 +257664,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 deletionPolicy: \"DELETE\",\n});\nconst primary = new gcp.orgpolicy.Policy(\"primary\", {\n name: pulumi.interpolate`projects/${basic.projectId}/policies/iam.disableServiceAccountKeyUpload`,\n parent: pulumi.interpolate`projects/${basic.projectId}`,\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\",\n deletion_policy=\"DELETE\")\nprimary = gcp.orgpolicy.Policy(\"primary\",\n name=basic.project_id.apply(lambda project_id: f\"projects/{project_id}/policies/iam.disableServiceAccountKeyUpload\"),\n parent=basic.project_id.apply(lambda project_id: f\"projects/{project_id}\"),\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 DeletionPolicy = \"DELETE\",\n });\n\n var primary = new Gcp.OrgPolicy.Policy(\"primary\", new()\n {\n Name = basic.ProjectId.Apply(projectId =\u003e $\"projects/{projectId}/policies/iam.disableServiceAccountKeyUpload\"),\n Parent = basic.ProjectId.Apply(projectId =\u003e $\"projects/{projectId}\"),\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/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tDeletionPolicy: pulumi.String(\"DELETE\"),\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.ProjectId.ApplyT(func(projectId string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/policies/iam.disableServiceAccountKeyUpload\", projectId), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tParent: basic.ProjectId.ApplyT(func(projectId string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v\", projectId), 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 .deletionPolicy(\"DELETE\")\n .build());\n\n var primary = new Policy(\"primary\", PolicyArgs.builder()\n .name(basic.projectId().applyValue(projectId -\u003e String.format(\"projects/%s/policies/iam.disableServiceAccountKeyUpload\", projectId)))\n .parent(basic.projectId().applyValue(projectId -\u003e String.format(\"projects/%s\", projectId)))\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.projectId}/policies/iam.disableServiceAccountKeyUpload\n parent: projects/${basic.projectId}\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 deletionPolicy: DELETE\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 deletionProtection: false,\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\",\n deletion_protection=False)\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 DeletionProtection = false,\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/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tDeletionProtection: pulumi.Bool(false),\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 .deletionProtection(false)\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 deletionProtection: false\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/v8/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 deletionPolicy: \"DELETE\",\n});\nconst primary = new gcp.orgpolicy.Policy(\"primary\", {\n name: pulumi.interpolate`projects/${basic.projectId}/policies/gcp.resourceLocations`,\n parent: pulumi.interpolate`projects/${basic.projectId}`,\n spec: {\n rules: [\n {\n condition: {\n description: \"A sample condition for the policy\",\n expression: \"resource.matchTagId('tagKeys/123', 'tagValues/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\",\n deletion_policy=\"DELETE\")\nprimary = gcp.orgpolicy.Policy(\"primary\",\n name=basic.project_id.apply(lambda project_id: f\"projects/{project_id}/policies/gcp.resourceLocations\"),\n parent=basic.project_id.apply(lambda project_id: f\"projects/{project_id}\"),\n spec={\n \"rules\": [\n {\n \"condition\": {\n \"description\": \"A sample condition for the policy\",\n \"expression\": \"resource.matchTagId('tagKeys/123', 'tagValues/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 DeletionPolicy = \"DELETE\",\n });\n\n var primary = new Gcp.OrgPolicy.Policy(\"primary\", new()\n {\n Name = basic.ProjectId.Apply(projectId =\u003e $\"projects/{projectId}/policies/gcp.resourceLocations\"),\n Parent = basic.ProjectId.Apply(projectId =\u003e $\"projects/{projectId}\"),\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.matchTagId('tagKeys/123', 'tagValues/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/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tDeletionPolicy: pulumi.String(\"DELETE\"),\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.ProjectId.ApplyT(func(projectId string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/policies/gcp.resourceLocations\", projectId), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tParent: basic.ProjectId.ApplyT(func(projectId string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v\", projectId), 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.matchTagId('tagKeys/123', 'tagValues/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 .deletionPolicy(\"DELETE\")\n .build());\n\n var primary = new Policy(\"primary\", PolicyArgs.builder()\n .name(basic.projectId().applyValue(projectId -\u003e String.format(\"projects/%s/policies/gcp.resourceLocations\", projectId)))\n .parent(basic.projectId().applyValue(projectId -\u003e String.format(\"projects/%s\", projectId)))\n .spec(PolicySpecArgs.builder()\n .rules( \n PolicySpecRuleArgs.builder()\n .condition(PolicySpecRuleConditionArgs.builder()\n .description(\"A sample condition for the policy\")\n .expression(\"resource.matchTagId('tagKeys/123', 'tagValues/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.projectId}/policies/gcp.resourceLocations\n parent: projects/${basic.projectId}\n spec:\n rules:\n - condition:\n description: A sample condition for the policy\n expression: resource.matchTagId('tagKeys/123', 'tagValues/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 deletionPolicy: DELETE\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_40289\",\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_40289\",\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_40289\",\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/v8/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_40289\"),\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_40289\")\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_40289\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### Org Policy Policy Parameters 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 deletionPolicy: \"DELETE\",\n});\nconst primary = new gcp.orgpolicy.Policy(\"primary\", {\n name: pulumi.interpolate`projects/${basic.name}/policies/compute.managed.restrictDiskCreation`,\n parent: pulumi.interpolate`projects/${basic.name}`,\n spec: {\n rules: [{\n enforce: \"TRUE\",\n parameters: JSON.stringify({\n isSizeLimitCheck: true,\n allowedDiskTypes: [\n \"pd-ssd\",\n \"pd-standard\",\n ],\n }),\n }],\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\nbasic = gcp.organizations.Project(\"basic\",\n project_id=\"id\",\n name=\"id\",\n org_id=\"123456789\",\n deletion_policy=\"DELETE\")\nprimary = gcp.orgpolicy.Policy(\"primary\",\n name=basic.name.apply(lambda name: f\"projects/{name}/policies/compute.managed.restrictDiskCreation\"),\n parent=basic.name.apply(lambda name: f\"projects/{name}\"),\n spec={\n \"rules\": [{\n \"enforce\": \"TRUE\",\n \"parameters\": json.dumps({\n \"isSizeLimitCheck\": True,\n \"allowedDiskTypes\": [\n \"pd-ssd\",\n \"pd-standard\",\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 basic = new Gcp.Organizations.Project(\"basic\", new()\n {\n ProjectId = \"id\",\n Name = \"id\",\n OrgId = \"123456789\",\n DeletionPolicy = \"DELETE\",\n });\n\n var primary = new Gcp.OrgPolicy.Policy(\"primary\", new()\n {\n Name = basic.Name.Apply(name =\u003e $\"projects/{name}/policies/compute.managed.restrictDiskCreation\"),\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 = \"TRUE\",\n Parameters = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"isSizeLimitCheck\"] = true,\n [\"allowedDiskTypes\"] = new[]\n {\n \"pd-ssd\",\n \"pd-standard\",\n },\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/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tDeletionPolicy: pulumi.String(\"DELETE\"),\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\"isSizeLimitCheck\": true,\n\t\t\t\"allowedDiskTypes\": []string{\n\t\t\t\t\"pd-ssd\",\n\t\t\t\t\"pd-standard\",\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 = 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/compute.managed.restrictDiskCreation\", 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(\"TRUE\"),\n\t\t\t\t\t\tParameters: pulumi.String(json0),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\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 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 basic = new Project(\"basic\", ProjectArgs.builder()\n .projectId(\"id\")\n .name(\"id\")\n .orgId(\"123456789\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var primary = new Policy(\"primary\", PolicyArgs.builder()\n .name(basic.name().applyValue(name -\u003e String.format(\"projects/%s/policies/compute.managed.restrictDiskCreation\", name)))\n .parent(basic.name().applyValue(name -\u003e String.format(\"projects/%s\", name)))\n .spec(PolicySpecArgs.builder()\n .rules(PolicySpecRuleArgs.builder()\n .enforce(\"TRUE\")\n .parameters(serializeJson(\n jsonObject(\n jsonProperty(\"isSizeLimitCheck\", true),\n jsonProperty(\"allowedDiskTypes\", jsonArray(\n \"pd-ssd\", \n \"pd-standard\"\n ))\n )))\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/compute.managed.restrictDiskCreation\n parent: projects/${basic.name}\n spec:\n rules:\n - enforce: TRUE\n parameters:\n fn::toJSON:\n isSizeLimitCheck: true\n allowedDiskTypes:\n - pd-ssd\n - pd-standard\n basic:\n type: gcp:organizations:Project\n properties:\n projectId: id\n name: id\n orgId: '123456789'\n deletionPolicy: DELETE\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 deletionPolicy: \"DELETE\",\n});\nconst primary = new gcp.orgpolicy.Policy(\"primary\", {\n name: pulumi.interpolate`projects/${basic.projectId}/policies/iam.disableServiceAccountKeyUpload`,\n parent: pulumi.interpolate`projects/${basic.projectId}`,\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\",\n deletion_policy=\"DELETE\")\nprimary = gcp.orgpolicy.Policy(\"primary\",\n name=basic.project_id.apply(lambda project_id: f\"projects/{project_id}/policies/iam.disableServiceAccountKeyUpload\"),\n parent=basic.project_id.apply(lambda project_id: f\"projects/{project_id}\"),\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 DeletionPolicy = \"DELETE\",\n });\n\n var primary = new Gcp.OrgPolicy.Policy(\"primary\", new()\n {\n Name = basic.ProjectId.Apply(projectId =\u003e $\"projects/{projectId}/policies/iam.disableServiceAccountKeyUpload\"),\n Parent = basic.ProjectId.Apply(projectId =\u003e $\"projects/{projectId}\"),\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/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tDeletionPolicy: pulumi.String(\"DELETE\"),\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.ProjectId.ApplyT(func(projectId string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/policies/iam.disableServiceAccountKeyUpload\", projectId), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tParent: basic.ProjectId.ApplyT(func(projectId string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v\", projectId), 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 .deletionPolicy(\"DELETE\")\n .build());\n\n var primary = new Policy(\"primary\", PolicyArgs.builder()\n .name(basic.projectId().applyValue(projectId -\u003e String.format(\"projects/%s/policies/iam.disableServiceAccountKeyUpload\", projectId)))\n .parent(basic.projectId().applyValue(projectId -\u003e String.format(\"projects/%s\", projectId)))\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.projectId}/policies/iam.disableServiceAccountKeyUpload\n parent: projects/${basic.projectId}\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 deletionPolicy: DELETE\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 deletionProtection: false,\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\",\n deletion_protection=False)\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 DeletionProtection = false,\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/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tDeletionProtection: pulumi.Bool(false),\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 .deletionProtection(false)\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 deletionProtection: false\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/v8/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 deletionPolicy: \"DELETE\",\n});\nconst primary = new gcp.orgpolicy.Policy(\"primary\", {\n name: pulumi.interpolate`projects/${basic.projectId}/policies/gcp.resourceLocations`,\n parent: pulumi.interpolate`projects/${basic.projectId}`,\n spec: {\n rules: [\n {\n condition: {\n description: \"A sample condition for the policy\",\n expression: \"resource.matchTagId('tagKeys/123', 'tagValues/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\",\n deletion_policy=\"DELETE\")\nprimary = gcp.orgpolicy.Policy(\"primary\",\n name=basic.project_id.apply(lambda project_id: f\"projects/{project_id}/policies/gcp.resourceLocations\"),\n parent=basic.project_id.apply(lambda project_id: f\"projects/{project_id}\"),\n spec={\n \"rules\": [\n {\n \"condition\": {\n \"description\": \"A sample condition for the policy\",\n \"expression\": \"resource.matchTagId('tagKeys/123', 'tagValues/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 DeletionPolicy = \"DELETE\",\n });\n\n var primary = new Gcp.OrgPolicy.Policy(\"primary\", new()\n {\n Name = basic.ProjectId.Apply(projectId =\u003e $\"projects/{projectId}/policies/gcp.resourceLocations\"),\n Parent = basic.ProjectId.Apply(projectId =\u003e $\"projects/{projectId}\"),\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.matchTagId('tagKeys/123', 'tagValues/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/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tDeletionPolicy: pulumi.String(\"DELETE\"),\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.ProjectId.ApplyT(func(projectId string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/policies/gcp.resourceLocations\", projectId), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tParent: basic.ProjectId.ApplyT(func(projectId string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v\", projectId), 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.matchTagId('tagKeys/123', 'tagValues/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 .deletionPolicy(\"DELETE\")\n .build());\n\n var primary = new Policy(\"primary\", PolicyArgs.builder()\n .name(basic.projectId().applyValue(projectId -\u003e String.format(\"projects/%s/policies/gcp.resourceLocations\", projectId)))\n .parent(basic.projectId().applyValue(projectId -\u003e String.format(\"projects/%s\", projectId)))\n .spec(PolicySpecArgs.builder()\n .rules( \n PolicySpecRuleArgs.builder()\n .condition(PolicySpecRuleConditionArgs.builder()\n .description(\"A sample condition for the policy\")\n .expression(\"resource.matchTagId('tagKeys/123', 'tagValues/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.projectId}/policies/gcp.resourceLocations\n parent: projects/${basic.projectId}\n spec:\n rules:\n - condition:\n description: A sample condition for the policy\n expression: resource.matchTagId('tagKeys/123', 'tagValues/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 deletionPolicy: DELETE\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_76044\",\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_76044\",\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_76044\",\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/v8/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_76044\"),\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_76044\")\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_76044\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### Org Policy Policy Parameters 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 deletionPolicy: \"DELETE\",\n});\nconst primary = new gcp.orgpolicy.Policy(\"primary\", {\n name: pulumi.interpolate`projects/${basic.name}/policies/compute.managed.restrictDiskCreation`,\n parent: pulumi.interpolate`projects/${basic.name}`,\n spec: {\n rules: [{\n enforce: \"TRUE\",\n parameters: JSON.stringify({\n isSizeLimitCheck: true,\n allowedDiskTypes: [\n \"pd-ssd\",\n \"pd-standard\",\n ],\n }),\n }],\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\nbasic = gcp.organizations.Project(\"basic\",\n project_id=\"id\",\n name=\"id\",\n org_id=\"123456789\",\n deletion_policy=\"DELETE\")\nprimary = gcp.orgpolicy.Policy(\"primary\",\n name=basic.name.apply(lambda name: f\"projects/{name}/policies/compute.managed.restrictDiskCreation\"),\n parent=basic.name.apply(lambda name: f\"projects/{name}\"),\n spec={\n \"rules\": [{\n \"enforce\": \"TRUE\",\n \"parameters\": json.dumps({\n \"isSizeLimitCheck\": True,\n \"allowedDiskTypes\": [\n \"pd-ssd\",\n \"pd-standard\",\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 basic = new Gcp.Organizations.Project(\"basic\", new()\n {\n ProjectId = \"id\",\n Name = \"id\",\n OrgId = \"123456789\",\n DeletionPolicy = \"DELETE\",\n });\n\n var primary = new Gcp.OrgPolicy.Policy(\"primary\", new()\n {\n Name = basic.Name.Apply(name =\u003e $\"projects/{name}/policies/compute.managed.restrictDiskCreation\"),\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 = \"TRUE\",\n Parameters = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"isSizeLimitCheck\"] = true,\n [\"allowedDiskTypes\"] = new[]\n {\n \"pd-ssd\",\n \"pd-standard\",\n },\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/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tDeletionPolicy: pulumi.String(\"DELETE\"),\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\"isSizeLimitCheck\": true,\n\t\t\t\"allowedDiskTypes\": []string{\n\t\t\t\t\"pd-ssd\",\n\t\t\t\t\"pd-standard\",\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 = 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/compute.managed.restrictDiskCreation\", 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(\"TRUE\"),\n\t\t\t\t\t\tParameters: pulumi.String(json0),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\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 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 basic = new Project(\"basic\", ProjectArgs.builder()\n .projectId(\"id\")\n .name(\"id\")\n .orgId(\"123456789\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var primary = new Policy(\"primary\", PolicyArgs.builder()\n .name(basic.name().applyValue(name -\u003e String.format(\"projects/%s/policies/compute.managed.restrictDiskCreation\", name)))\n .parent(basic.name().applyValue(name -\u003e String.format(\"projects/%s\", name)))\n .spec(PolicySpecArgs.builder()\n .rules(PolicySpecRuleArgs.builder()\n .enforce(\"TRUE\")\n .parameters(serializeJson(\n jsonObject(\n jsonProperty(\"isSizeLimitCheck\", true),\n jsonProperty(\"allowedDiskTypes\", jsonArray(\n \"pd-ssd\", \n \"pd-standard\"\n ))\n )))\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/compute.managed.restrictDiskCreation\n parent: projects/${basic.name}\n spec:\n rules:\n - enforce: TRUE\n parameters:\n fn::toJSON:\n isSizeLimitCheck: true\n allowedDiskTypes:\n - pd-ssd\n - pd-standard\n basic:\n type: gcp:organizations:Project\n properties:\n projectId: id\n name: id\n orgId: '123456789'\n deletionPolicy: DELETE\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",
@@ -255271,7 +258392,7 @@
}
},
"gcp:parallelstore/instance:Instance": {
- "description": "A Parallelstore Instance.\n\n\n\n## Example Usage\n\n### Parallelstore 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 network = new gcp.compute.Network(\"network\", {\n name: \"network\",\n autoCreateSubnetworks: true,\n mtu: 8896,\n});\n// Create an IP address\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"address\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 24,\n network: network.id,\n});\n// Create a private connection\nconst _default = new gcp.servicenetworking.Connection(\"default\", {\n network: network.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst instance = new gcp.parallelstore.Instance(\"instance\", {\n instanceId: \"instance\",\n location: \"us-central1-a\",\n description: \"test instance\",\n capacityGib: \"12000\",\n network: network.name,\n fileStripeLevel: \"FILE_STRIPE_LEVEL_MIN\",\n directoryStripeLevel: \"DIRECTORY_STRIPE_LEVEL_MIN\",\n labels: {\n test: \"value\",\n },\n}, {\n dependsOn: [_default],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"network\",\n auto_create_subnetworks=True,\n mtu=8896)\n# Create an IP address\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"address\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=24,\n network=network.id)\n# Create a private connection\ndefault = gcp.servicenetworking.Connection(\"default\",\n network=network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\ninstance = gcp.parallelstore.Instance(\"instance\",\n instance_id=\"instance\",\n location=\"us-central1-a\",\n description=\"test instance\",\n capacity_gib=\"12000\",\n network=network.name,\n file_stripe_level=\"FILE_STRIPE_LEVEL_MIN\",\n directory_stripe_level=\"DIRECTORY_STRIPE_LEVEL_MIN\",\n labels={\n \"test\": \"value\",\n },\n opts = pulumi.ResourceOptions(depends_on=[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 network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = true,\n Mtu = 8896,\n });\n\n // Create an IP address\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"address\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 24,\n Network = network.Id,\n });\n\n // Create a private connection\n var @default = new Gcp.ServiceNetworking.Connection(\"default\", new()\n {\n Network = network.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var instance = new Gcp.ParallelStore.Instance(\"instance\", new()\n {\n InstanceId = \"instance\",\n Location = \"us-central1-a\",\n Description = \"test instance\",\n CapacityGib = \"12000\",\n Network = network.Name,\n FileStripeLevel = \"FILE_STRIPE_LEVEL_MIN\",\n DirectoryStripeLevel = \"DIRECTORY_STRIPE_LEVEL_MIN\",\n Labels = \n {\n { \"test\", \"value\" },\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/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/parallelstore\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(true),\n\t\t\tMtu: pulumi.Int(8896),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create an IP address\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \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(24),\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// Create a private connection\n\t\t_, err = servicenetworking.NewConnection(ctx, \"default\", \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\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 = parallelstore.NewInstance(ctx, \"instance\", \u0026parallelstore.InstanceArgs{\n\t\t\tInstanceId: pulumi.String(\"instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tDescription: pulumi.String(\"test instance\"),\n\t\t\tCapacityGib: pulumi.String(\"12000\"),\n\t\t\tNetwork: network.Name,\n\t\t\tFileStripeLevel: pulumi.String(\"FILE_STRIPE_LEVEL_MIN\"),\n\t\t\tDirectoryStripeLevel: pulumi.String(\"DIRECTORY_STRIPE_LEVEL_MIN\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"test\": pulumi.String(\"value\"),\n\t\t\t},\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.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.parallelstore.Instance;\nimport com.pulumi.gcp.parallelstore.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 network = new Network(\"network\", NetworkArgs.builder()\n .name(\"network\")\n .autoCreateSubnetworks(true)\n .mtu(8896)\n .build());\n\n // Create an IP address\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"address\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(24)\n .network(network.id())\n .build());\n\n // Create a private connection\n var default_ = new Connection(\"default\", ConnectionArgs.builder()\n .network(network.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .instanceId(\"instance\")\n .location(\"us-central1-a\")\n .description(\"test instance\")\n .capacityGib(12000)\n .network(network.name())\n .fileStripeLevel(\"FILE_STRIPE_LEVEL_MIN\")\n .directoryStripeLevel(\"DIRECTORY_STRIPE_LEVEL_MIN\")\n .labels(Map.of(\"test\", \"value\"))\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:parallelstore:Instance\n properties:\n instanceId: instance\n location: us-central1-a\n description: test instance\n capacityGib: 12000\n network: ${network.name}\n fileStripeLevel: FILE_STRIPE_LEVEL_MIN\n directoryStripeLevel: DIRECTORY_STRIPE_LEVEL_MIN\n labels:\n test: value\n options:\n dependsOn:\n - ${default}\n network:\n type: gcp:compute:Network\n properties:\n name: network\n autoCreateSubnetworks: true\n mtu: 8896\n # Create an IP address\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: address\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 24\n network: ${network.id}\n # Create a private connection\n default:\n type: gcp:servicenetworking:Connection\n properties:\n network: ${network.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\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\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:parallelstore/instance:Instance default projects/{{project}}/locations/{{location}}/instances/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:parallelstore/instance:Instance default {{project}}/{{location}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:parallelstore/instance:Instance default {{location}}/{{instance_id}}\n```\n\n",
+ "description": "A Parallelstore Instance.\n\n\n\n## Example Usage\n\n### Parallelstore Instance Basic Beta\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\",\n autoCreateSubnetworks: true,\n mtu: 8896,\n});\n// Create an IP address\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"address\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 24,\n network: network.id,\n});\n// Create a private connection\nconst _default = new gcp.servicenetworking.Connection(\"default\", {\n network: network.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst instance = new gcp.parallelstore.Instance(\"instance\", {\n instanceId: \"instance\",\n location: \"us-central1-a\",\n description: \"test instance\",\n capacityGib: \"12000\",\n network: network.name,\n fileStripeLevel: \"FILE_STRIPE_LEVEL_MIN\",\n directoryStripeLevel: \"DIRECTORY_STRIPE_LEVEL_MIN\",\n deploymentType: \"SCRATCH\",\n labels: {\n test: \"value\",\n },\n}, {\n dependsOn: [_default],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"network\",\n auto_create_subnetworks=True,\n mtu=8896)\n# Create an IP address\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"address\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=24,\n network=network.id)\n# Create a private connection\ndefault = gcp.servicenetworking.Connection(\"default\",\n network=network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\ninstance = gcp.parallelstore.Instance(\"instance\",\n instance_id=\"instance\",\n location=\"us-central1-a\",\n description=\"test instance\",\n capacity_gib=\"12000\",\n network=network.name,\n file_stripe_level=\"FILE_STRIPE_LEVEL_MIN\",\n directory_stripe_level=\"DIRECTORY_STRIPE_LEVEL_MIN\",\n deployment_type=\"SCRATCH\",\n labels={\n \"test\": \"value\",\n },\n opts = pulumi.ResourceOptions(depends_on=[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 network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = true,\n Mtu = 8896,\n });\n\n // Create an IP address\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"address\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 24,\n Network = network.Id,\n });\n\n // Create a private connection\n var @default = new Gcp.ServiceNetworking.Connection(\"default\", new()\n {\n Network = network.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var instance = new Gcp.ParallelStore.Instance(\"instance\", new()\n {\n InstanceId = \"instance\",\n Location = \"us-central1-a\",\n Description = \"test instance\",\n CapacityGib = \"12000\",\n Network = network.Name,\n FileStripeLevel = \"FILE_STRIPE_LEVEL_MIN\",\n DirectoryStripeLevel = \"DIRECTORY_STRIPE_LEVEL_MIN\",\n DeploymentType = \"SCRATCH\",\n Labels = \n {\n { \"test\", \"value\" },\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/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/parallelstore\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(true),\n\t\t\tMtu: pulumi.Int(8896),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create an IP address\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \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(24),\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// Create a private connection\n\t\t_, err = servicenetworking.NewConnection(ctx, \"default\", \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\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 = parallelstore.NewInstance(ctx, \"instance\", \u0026parallelstore.InstanceArgs{\n\t\t\tInstanceId: pulumi.String(\"instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tDescription: pulumi.String(\"test instance\"),\n\t\t\tCapacityGib: pulumi.String(\"12000\"),\n\t\t\tNetwork: network.Name,\n\t\t\tFileStripeLevel: pulumi.String(\"FILE_STRIPE_LEVEL_MIN\"),\n\t\t\tDirectoryStripeLevel: pulumi.String(\"DIRECTORY_STRIPE_LEVEL_MIN\"),\n\t\t\tDeploymentType: pulumi.String(\"SCRATCH\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"test\": pulumi.String(\"value\"),\n\t\t\t},\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.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.parallelstore.Instance;\nimport com.pulumi.gcp.parallelstore.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 network = new Network(\"network\", NetworkArgs.builder()\n .name(\"network\")\n .autoCreateSubnetworks(true)\n .mtu(8896)\n .build());\n\n // Create an IP address\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"address\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(24)\n .network(network.id())\n .build());\n\n // Create a private connection\n var default_ = new Connection(\"default\", ConnectionArgs.builder()\n .network(network.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .instanceId(\"instance\")\n .location(\"us-central1-a\")\n .description(\"test instance\")\n .capacityGib(12000)\n .network(network.name())\n .fileStripeLevel(\"FILE_STRIPE_LEVEL_MIN\")\n .directoryStripeLevel(\"DIRECTORY_STRIPE_LEVEL_MIN\")\n .deploymentType(\"SCRATCH\")\n .labels(Map.of(\"test\", \"value\"))\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:parallelstore:Instance\n properties:\n instanceId: instance\n location: us-central1-a\n description: test instance\n capacityGib: 12000\n network: ${network.name}\n fileStripeLevel: FILE_STRIPE_LEVEL_MIN\n directoryStripeLevel: DIRECTORY_STRIPE_LEVEL_MIN\n deploymentType: SCRATCH\n labels:\n test: value\n options:\n dependsOn:\n - ${default}\n network:\n type: gcp:compute:Network\n properties:\n name: network\n autoCreateSubnetworks: true\n mtu: 8896\n # Create an IP address\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: address\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 24\n network: ${network.id}\n # Create a private connection\n default:\n type: gcp:servicenetworking:Connection\n properties:\n network: ${network.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Parallelstore 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 network = new gcp.compute.Network(\"network\", {\n name: \"network\",\n autoCreateSubnetworks: true,\n mtu: 8896,\n});\n// Create an IP address\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"address\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 24,\n network: network.id,\n});\n// Create a private connection\nconst _default = new gcp.servicenetworking.Connection(\"default\", {\n network: network.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst instance = new gcp.parallelstore.Instance(\"instance\", {\n instanceId: \"instance\",\n location: \"us-central1-a\",\n description: \"test instance\",\n capacityGib: \"12000\",\n network: network.name,\n fileStripeLevel: \"FILE_STRIPE_LEVEL_MIN\",\n directoryStripeLevel: \"DIRECTORY_STRIPE_LEVEL_MIN\",\n deploymentType: \"SCRATCH\",\n labels: {\n test: \"value\",\n },\n}, {\n dependsOn: [_default],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"network\",\n auto_create_subnetworks=True,\n mtu=8896)\n# Create an IP address\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"address\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=24,\n network=network.id)\n# Create a private connection\ndefault = gcp.servicenetworking.Connection(\"default\",\n network=network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\ninstance = gcp.parallelstore.Instance(\"instance\",\n instance_id=\"instance\",\n location=\"us-central1-a\",\n description=\"test instance\",\n capacity_gib=\"12000\",\n network=network.name,\n file_stripe_level=\"FILE_STRIPE_LEVEL_MIN\",\n directory_stripe_level=\"DIRECTORY_STRIPE_LEVEL_MIN\",\n deployment_type=\"SCRATCH\",\n labels={\n \"test\": \"value\",\n },\n opts = pulumi.ResourceOptions(depends_on=[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 network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = true,\n Mtu = 8896,\n });\n\n // Create an IP address\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"address\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 24,\n Network = network.Id,\n });\n\n // Create a private connection\n var @default = new Gcp.ServiceNetworking.Connection(\"default\", new()\n {\n Network = network.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var instance = new Gcp.ParallelStore.Instance(\"instance\", new()\n {\n InstanceId = \"instance\",\n Location = \"us-central1-a\",\n Description = \"test instance\",\n CapacityGib = \"12000\",\n Network = network.Name,\n FileStripeLevel = \"FILE_STRIPE_LEVEL_MIN\",\n DirectoryStripeLevel = \"DIRECTORY_STRIPE_LEVEL_MIN\",\n DeploymentType = \"SCRATCH\",\n Labels = \n {\n { \"test\", \"value\" },\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/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/parallelstore\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(true),\n\t\t\tMtu: pulumi.Int(8896),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create an IP address\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \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(24),\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// Create a private connection\n\t\t_, err = servicenetworking.NewConnection(ctx, \"default\", \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\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 = parallelstore.NewInstance(ctx, \"instance\", \u0026parallelstore.InstanceArgs{\n\t\t\tInstanceId: pulumi.String(\"instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tDescription: pulumi.String(\"test instance\"),\n\t\t\tCapacityGib: pulumi.String(\"12000\"),\n\t\t\tNetwork: network.Name,\n\t\t\tFileStripeLevel: pulumi.String(\"FILE_STRIPE_LEVEL_MIN\"),\n\t\t\tDirectoryStripeLevel: pulumi.String(\"DIRECTORY_STRIPE_LEVEL_MIN\"),\n\t\t\tDeploymentType: pulumi.String(\"SCRATCH\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"test\": pulumi.String(\"value\"),\n\t\t\t},\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.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.parallelstore.Instance;\nimport com.pulumi.gcp.parallelstore.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 network = new Network(\"network\", NetworkArgs.builder()\n .name(\"network\")\n .autoCreateSubnetworks(true)\n .mtu(8896)\n .build());\n\n // Create an IP address\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"address\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(24)\n .network(network.id())\n .build());\n\n // Create a private connection\n var default_ = new Connection(\"default\", ConnectionArgs.builder()\n .network(network.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .instanceId(\"instance\")\n .location(\"us-central1-a\")\n .description(\"test instance\")\n .capacityGib(12000)\n .network(network.name())\n .fileStripeLevel(\"FILE_STRIPE_LEVEL_MIN\")\n .directoryStripeLevel(\"DIRECTORY_STRIPE_LEVEL_MIN\")\n .deploymentType(\"SCRATCH\")\n .labels(Map.of(\"test\", \"value\"))\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:parallelstore:Instance\n properties:\n instanceId: instance\n location: us-central1-a\n description: test instance\n capacityGib: 12000\n network: ${network.name}\n fileStripeLevel: FILE_STRIPE_LEVEL_MIN\n directoryStripeLevel: DIRECTORY_STRIPE_LEVEL_MIN\n deploymentType: SCRATCH\n labels:\n test: value\n options:\n dependsOn:\n - ${default}\n network:\n type: gcp:compute:Network\n properties:\n name: network\n autoCreateSubnetworks: true\n mtu: 8896\n # Create an IP address\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: address\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 24\n network: ${network.id}\n # Create a private connection\n default:\n type: gcp:servicenetworking:Connection\n properties:\n network: ${network.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\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\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:parallelstore/instance:Instance default projects/{{project}}/locations/{{location}}/instances/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:parallelstore/instance:Instance default {{project}}/{{location}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:parallelstore/instance:Instance default {{location}}/{{instance_id}}\n```\n\n",
"properties": {
"accessPoints": {
"type": "array",
@@ -255292,6 +258413,10 @@
"type": "string",
"description": "The version of DAOS software running in the instance.\n"
},
+ "deploymentType": {
+ "type": "string",
+ "description": "Parallelstore Instance deployment type.\nPossible values:\nDEPLOYMENT_TYPE_UNSPECIFIED\nSCRATCH\nPERSISTENT\n"
+ },
"description": {
"type": "string",
"description": "The description of the instance. 2048 characters or less.\n"
@@ -255385,6 +258510,10 @@
"description": "Required. Immutable. Storage capacity of Parallelstore instance in Gibibytes (GiB).\n",
"willReplaceOnChanges": true
},
+ "deploymentType": {
+ "type": "string",
+ "description": "Parallelstore Instance deployment type.\nPossible values:\nDEPLOYMENT_TYPE_UNSPECIFIED\nSCRATCH\nPERSISTENT\n"
+ },
"description": {
"type": "string",
"description": "The description of the instance. 2048 characters or less.\n"
@@ -255458,6 +258587,10 @@
"type": "string",
"description": "The version of DAOS software running in the instance.\n"
},
+ "deploymentType": {
+ "type": "string",
+ "description": "Parallelstore Instance deployment type.\nPossible values:\nDEPLOYMENT_TYPE_UNSPECIFIED\nSCRATCH\nPERSISTENT\n"
+ },
"description": {
"type": "string",
"description": "The description of the instance. 2048 characters or less.\n"
@@ -256833,11 +259966,11 @@
}
},
"gcp:projects/usageExportBucket:UsageExportBucket": {
- "description": "Allows creation and management of a Google Cloud Platform project.\n\nProjects created with this resource must be associated with an Organization.\nSee the [Organization documentation](https://cloud.google.com/resource-manager/docs/quickstarts) for more details.\n\nThe user or service account that is running this provider when creating a `gcp.organizations.Project`\nresource must have `roles/resourcemanager.projectCreator` on the specified organization. See the\n[Access Control for Organizations Using IAM](https://cloud.google.com/resource-manager/docs/access-control-org)\ndoc for more information.\n\n\u003e This resource reads the specified billing account on every pulumi up and plan operation so you must have permissions on the specified billing account.\n\n\u003e It is recommended to use the `constraints/compute.skipDefaultNetworkCreation` [constraint](https://www.terraform.io/docs/providers/google/r/google_organization_policy.html) to remove the default network instead of setting `auto_create_network` to false, when possible.\n\n\u003e It may take a while for the attached tag bindings to be deleted after the project is scheduled to be deleted. \n\nTo get more information about projects, see:\n\n* [API documentation](https://cloud.google.com/resource-manager/reference/rest/v1/projects)\n* How-to Guides\n * [Creating and managing projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects)\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 myProject = new gcp.organizations.Project(\"my_project\", {\n name: \"My Project\",\n projectId: \"your-project-id\",\n orgId: \"1234567\",\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=\"1234567\")\n```\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 = \"1234567\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \"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(\"1234567\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\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 java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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(\"1234567\")\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: '1234567'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nTo create a project under a specific folder\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst department1 = new gcp.organizations.Folder(\"department1\", {\n displayName: \"Department 1\",\n parent: \"organizations/1234567\",\n});\nconst myProject_in_a_folder = new gcp.organizations.Project(\"my_project-in-a-folder\", {\n name: \"My Project\",\n projectId: \"your-project-id\",\n folderId: department1.name,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndepartment1 = gcp.organizations.Folder(\"department1\",\n display_name=\"Department 1\",\n parent=\"organizations/1234567\")\nmy_project_in_a_folder = gcp.organizations.Project(\"my_project-in-a-folder\",\n name=\"My Project\",\n project_id=\"your-project-id\",\n folder_id=department1.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 department1 = new Gcp.Organizations.Folder(\"department1\", new()\n {\n DisplayName = \"Department 1\",\n Parent = \"organizations/1234567\",\n });\n\n var myProject_in_a_folder = new Gcp.Organizations.Project(\"my_project-in-a-folder\", new()\n {\n Name = \"My Project\",\n ProjectId = \"your-project-id\",\n FolderId = department1.Name,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tdepartment1, err := organizations.NewFolder(ctx, \"department1\", \u0026organizations.FolderArgs{\n\t\t\tDisplayName: pulumi.String(\"Department 1\"),\n\t\t\tParent: pulumi.String(\"organizations/1234567\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.NewProject(ctx, \"my_project-in-a-folder\", \u0026organizations.ProjectArgs{\n\t\t\tName: pulumi.String(\"My Project\"),\n\t\t\tProjectId: pulumi.String(\"your-project-id\"),\n\t\t\tFolderId: department1.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.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var department1 = new Folder(\"department1\", FolderArgs.builder()\n .displayName(\"Department 1\")\n .parent(\"organizations/1234567\")\n .build());\n\n var myProject_in_a_folder = new Project(\"myProject-in-a-folder\", ProjectArgs.builder()\n .name(\"My Project\")\n .projectId(\"your-project-id\")\n .folderId(department1.name())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myProject-in-a-folder:\n type: gcp:organizations:Project\n name: my_project-in-a-folder\n properties:\n name: My Project\n projectId: your-project-id\n folderId: ${department1.name}\n department1:\n type: gcp:organizations:Folder\n properties:\n displayName: Department 1\n parent: organizations/1234567\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nTo create a project with a tag\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: \"1234567\",\n tags: {\n \"1234567/env\": \"staging\",\n },\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=\"1234567\",\n tags={\n \"1234567/env\": \"staging\",\n })\n```\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 = \"1234567\",\n Tags = \n {\n { \"1234567/env\", \"staging\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \"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(\"1234567\"),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"1234567/env\": pulumi.String(\"staging\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\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 java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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(\"1234567\")\n .tags(Map.of(\"1234567/env\", \"staging\"))\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: '1234567'\n tags:\n 1234567/env: staging\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nProjects can be imported using the `project_id`, e.g.\n\n* `{{project_id}}`\n\nWhen using the `pulumi import` command, Projects can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:projects/usageExportBucket:UsageExportBucket default {{project_id}}\n```\n\n",
+ "description": "Sets up a usage export bucket for a particular project. A usage export bucket\nis a pre-configured GCS bucket which is set up to receive daily and monthly\nreports of the GCE resources used.\n\nFor more information see the [Docs](https://cloud.google.com/compute/docs/usage-export)\nand for further details, the\n[API Documentation](https://cloud.google.com/compute/docs/reference/rest/beta/projects/setUsageExportBucket).\n\n\u003e **Note:** You should specify only one of these per project. If there are two or more\nthey will fight over which bucket the reports should be stored in. It is\nsafe to have multiple resources with the same backing bucket.\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 usageExport = new gcp.projects.UsageExportBucket(\"usage_export\", {\n project: \"development-project\",\n bucketName: \"usage-tracking-bucket\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nusage_export = gcp.projects.UsageExportBucket(\"usage_export\",\n project=\"development-project\",\n bucket_name=\"usage-tracking-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 usageExport = new Gcp.Projects.UsageExportBucket(\"usage_export\", new()\n {\n Project = \"development-project\",\n BucketName = \"usage-tracking-bucket\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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.NewUsageExportBucket(ctx, \"usage_export\", \u0026projects.UsageExportBucketArgs{\n\t\t\tProject: pulumi.String(\"development-project\"),\n\t\t\tBucketName: pulumi.String(\"usage-tracking-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.projects.UsageExportBucket;\nimport com.pulumi.gcp.projects.UsageExportBucketArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var usageExport = new UsageExportBucket(\"usageExport\", UsageExportBucketArgs.builder()\n .project(\"development-project\")\n .bucketName(\"usage-tracking-bucket\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n usageExport:\n type: gcp:projects:UsageExportBucket\n name: usage_export\n properties:\n project: development-project\n bucketName: usage-tracking-bucket\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nA project's Usage Export Bucket can be imported using this format:\n\n* `{{project_id}}`\n\nWhen using the `pulumi import` command, NAME_HERE can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:projects/usageExportBucket:UsageExportBucket default {{project_id}}\n```\n\n",
"properties": {
"bucketName": {
"type": "string",
- "description": "The bucket to store reports in.\n"
+ "description": "The bucket to store reports in.\n\n- - -\n"
},
"prefix": {
"type": "string",
@@ -256855,7 +259988,7 @@
"inputProperties": {
"bucketName": {
"type": "string",
- "description": "The bucket to store reports in.\n",
+ "description": "The bucket to store reports in.\n\n- - -\n",
"willReplaceOnChanges": true
},
"prefix": {
@@ -256877,7 +260010,7 @@
"properties": {
"bucketName": {
"type": "string",
- "description": "The bucket to store reports in.\n",
+ "description": "The bucket to store reports in.\n\n- - -\n",
"willReplaceOnChanges": true
},
"prefix": {
@@ -257519,7 +260652,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 \"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/v8/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/v8/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 Pull Filter\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 filter: ` attributes.foo = \"foo\"\n AND attributes.bar = \"bar\"\n`,\n ackDeadlineSeconds: 20,\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 filter=\"\"\" attributes.foo = \"foo\"\n AND attributes.bar = \"bar\"\n\"\"\",\n ack_deadline_seconds=20)\n```\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 Filter = @\" attributes.foo = \"\"foo\"\"\n AND attributes.bar = \"\"bar\"\"\n\",\n AckDeadlineSeconds = 20,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tFilter: pulumi.String(\" attributes.foo = \\\"foo\\\"\\n AND attributes.bar = \\\"bar\\\"\\n\"),\n\t\t\tAckDeadlineSeconds: pulumi.Int(20),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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 java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 .filter(\"\"\"\n attributes.foo = \"foo\"\n AND attributes.bar = \"bar\"\n \"\"\")\n .ackDeadlineSeconds(20)\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 filter: |2\n attributes.foo = \"foo\"\n AND attributes.bar = \"bar\"\n ackDeadlineSeconds: 20\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/v8/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 test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"example_dataset\"});\nconst testTable = new gcp.bigquery.Table(\"test\", {\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 deletionProtection: false,\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});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"example_dataset\")\ntest_table = gcp.bigquery.Table(\"test\",\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\"\"\",\n deletion_protection=False)\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n bigquery_config={\n \"table\": pulumi.Output.all(\n project=test_table.project,\n dataset_id=test_table.dataset_id,\n table_id=test_table.table_id\n).apply(lambda resolved_outputs: f\"{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\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.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\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 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 DeletionProtection = false,\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 });\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/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\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\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\tDeletionProtection: pulumi.Bool(false),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, 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.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.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 example = new Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\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 .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 .deletionProtection(false)\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,datasetId,tableId);\n }))\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\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 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 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 deletionProtection: false\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 test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"example_dataset\"});\nconst testTable = new gcp.bigquery.Table(\"test\", {\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 deletionProtection: false,\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});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"example_dataset\")\ntest_table = gcp.bigquery.Table(\"test\",\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\"\"\",\n deletion_protection=False)\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n bigquery_config={\n \"table\": pulumi.Output.all(\n project=test_table.project,\n dataset_id=test_table.dataset_id,\n table_id=test_table.table_id\n).apply(lambda resolved_outputs: f\"{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\n \"use_table_schema\": True,\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.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\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 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 DeletionProtection = false,\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 });\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/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\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\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\tDeletionProtection: pulumi.Bool(false),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, 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.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.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 example = new Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\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 .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 .deletionProtection(false)\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,datasetId,tableId);\n }))\n .useTableSchema(true)\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\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 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 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 deletionProtection: false\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 bigqueryMetadataViewer = new gcp.projects.IAMMember(\"bigquery_metadata_viewer\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.metadataViewer\",\n member: pulumi.interpolate`serviceAccount:${bqWriteServiceAccount.email}`,\n});\nconst bigqueryDataEditor = new gcp.projects.IAMMember(\"bigquery_data_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 bigqueryMetadataViewer,\n bigqueryDataEditor,\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()\nbigquery_metadata_viewer = gcp.projects.IAMMember(\"bigquery_metadata_viewer\",\n project=project.project_id,\n role=\"roles/bigquery.metadataViewer\",\n member=bq_write_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nbigquery_data_editor = gcp.projects.IAMMember(\"bigquery_data_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(\n project=test_table.project,\n dataset_id=test_table.dataset_id,\n table_id=test_table.table_id\n).apply(lambda resolved_outputs: f\"{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\n \"service_account_email\": bq_write_service_account.email,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n bq_write_service_account,\n bigquery_metadata_viewer,\n bigquery_data_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 bigqueryMetadataViewer = new Gcp.Projects.IAMMember(\"bigquery_metadata_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 bigqueryDataEditor = new Gcp.Projects.IAMMember(\"bigquery_data_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 bigqueryMetadataViewer,\n bigqueryDataEditor,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbigqueryMetadataViewer, err := projects.NewIAMMember(ctx, \"bigquery_metadata_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\tbigqueryDataEditor, err := projects.NewIAMMember(ctx, \"bigquery_data_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\tbigqueryMetadataViewer,\n\t\t\tbigqueryDataEditor,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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 bigqueryMetadataViewer = new IAMMember(\"bigqueryMetadataViewer\", 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 bigqueryDataEditor = new IAMMember(\"bigqueryDataEditor\", 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 bigqueryMetadataViewer,\n bigqueryDataEditor)\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 - ${bigqueryMetadataViewer}\n - ${bigqueryDataEditor}\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 bigqueryMetadataViewer:\n type: gcp:projects:IAMMember\n name: bigquery_metadata_viewer\n properties:\n project: ${project.projectId}\n role: roles/bigquery.metadataViewer\n member: serviceAccount:${bqWriteServiceAccount.email}\n bigqueryDataEditor:\n type: gcp:projects:IAMMember\n name: bigquery_data_editor\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: \"-_33395\",\n filenameDatetimeFormat: \"YYYY-MM-DD/hh_mm_ssZ\",\n maxBytes: 1000,\n maxDuration: \"300s\",\n maxMessages: 1000,\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\": \"-_33395\",\n \"filename_datetime_format\": \"YYYY-MM-DD/hh_mm_ssZ\",\n \"max_bytes\": 1000,\n \"max_duration\": \"300s\",\n \"max_messages\": 1000,\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 = \"-_33395\",\n FilenameDatetimeFormat = \"YYYY-MM-DD/hh_mm_ssZ\",\n MaxBytes = 1000,\n MaxDuration = \"300s\",\n MaxMessages = 1000,\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/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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.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(\"-_33395\"),\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\tMaxMessages: pulumi.Int(1000),\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(\"-_33395\")\n .filenameDatetimeFormat(\"YYYY-MM-DD/hh_mm_ssZ\")\n .maxBytes(1000)\n .maxDuration(\"300s\")\n .maxMessages(1000)\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: -_33395\n filenameDatetimeFormat: YYYY-MM-DD/hh_mm_ssZ\n maxBytes: 1000\n maxDuration: 300s\n maxMessages: 1000\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: \"-_76044\",\n filenameDatetimeFormat: \"YYYY-MM-DD/hh_mm_ssZ\",\n maxBytes: 1000,\n maxDuration: \"300s\",\n maxMessages: 1000,\n avroConfig: {\n writeMetadata: true,\n useTopicSchema: 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\": \"-_76044\",\n \"filename_datetime_format\": \"YYYY-MM-DD/hh_mm_ssZ\",\n \"max_bytes\": 1000,\n \"max_duration\": \"300s\",\n \"max_messages\": 1000,\n \"avro_config\": {\n \"write_metadata\": True,\n \"use_topic_schema\": 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 = \"-_76044\",\n FilenameDatetimeFormat = \"YYYY-MM-DD/hh_mm_ssZ\",\n MaxBytes = 1000,\n MaxDuration = \"300s\",\n MaxMessages = 1000,\n AvroConfig = new Gcp.PubSub.Inputs.SubscriptionCloudStorageConfigAvroConfigArgs\n {\n WriteMetadata = true,\n UseTopicSchema = 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/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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.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(\"-_76044\"),\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\tMaxMessages: pulumi.Int(1000),\n\t\t\t\tAvroConfig: \u0026pubsub.SubscriptionCloudStorageConfigAvroConfigArgs{\n\t\t\t\t\tWriteMetadata: pulumi.Bool(true),\n\t\t\t\t\tUseTopicSchema: 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(\"-_76044\")\n .filenameDatetimeFormat(\"YYYY-MM-DD/hh_mm_ssZ\")\n .maxBytes(1000)\n .maxDuration(\"300s\")\n .maxMessages(1000)\n .avroConfig(SubscriptionCloudStorageConfigAvroConfigArgs.builder()\n .writeMetadata(true)\n .useTopicSchema(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: -_76044\n filenameDatetimeFormat: YYYY-MM-DD/hh_mm_ssZ\n maxBytes: 1000\n maxDuration: 300s\n maxMessages: 1000\n avroConfig:\n writeMetadata: true\n useTopicSchema: 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: \"-_69391\",\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\": \"-_69391\",\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 = \"-_69391\",\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/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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(\"-_69391\"),\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, \u0026organizations.LookupProjectArgs{}, 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(\"-_69391\")\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: -_69391\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/v8/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/v8/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 Pull Filter\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 filter: ` attributes.foo = \"foo\"\n AND attributes.bar = \"bar\"\n`,\n ackDeadlineSeconds: 20,\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 filter=\"\"\" attributes.foo = \"foo\"\n AND attributes.bar = \"bar\"\n\"\"\",\n ack_deadline_seconds=20)\n```\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 Filter = @\" attributes.foo = \"\"foo\"\"\n AND attributes.bar = \"\"bar\"\"\n\",\n AckDeadlineSeconds = 20,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tFilter: pulumi.String(\" attributes.foo = \\\"foo\\\"\\n AND attributes.bar = \\\"bar\\\"\\n\"),\n\t\t\tAckDeadlineSeconds: pulumi.Int(20),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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 java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 .filter(\"\"\"\n attributes.foo = \"foo\"\n AND attributes.bar = \"bar\"\n \"\"\")\n .ackDeadlineSeconds(20)\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 filter: |2\n attributes.foo = \"foo\"\n AND attributes.bar = \"bar\"\n ackDeadlineSeconds: 20\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/v8/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 test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"example_dataset\"});\nconst testTable = new gcp.bigquery.Table(\"test\", {\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 deletionProtection: false,\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});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"example_dataset\")\ntest_table = gcp.bigquery.Table(\"test\",\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\"\"\",\n deletion_protection=False)\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n bigquery_config={\n \"table\": pulumi.Output.all(\n project=test_table.project,\n dataset_id=test_table.dataset_id,\n table_id=test_table.table_id\n).apply(lambda resolved_outputs: f\"{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\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.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\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 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 DeletionProtection = false,\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 });\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/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\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\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\tDeletionProtection: pulumi.Bool(false),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, 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.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.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 example = new Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\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 .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 .deletionProtection(false)\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,datasetId,tableId);\n }))\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\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 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 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 deletionProtection: false\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 test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"example_dataset\"});\nconst testTable = new gcp.bigquery.Table(\"test\", {\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 deletionProtection: false,\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});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"example_dataset\")\ntest_table = gcp.bigquery.Table(\"test\",\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\"\"\",\n deletion_protection=False)\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n bigquery_config={\n \"table\": pulumi.Output.all(\n project=test_table.project,\n dataset_id=test_table.dataset_id,\n table_id=test_table.table_id\n).apply(lambda resolved_outputs: f\"{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\n \"use_table_schema\": True,\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.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\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 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 DeletionProtection = false,\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 });\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/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\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\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\tDeletionProtection: pulumi.Bool(false),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, 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.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.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 example = new Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\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 .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 .deletionProtection(false)\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,datasetId,tableId);\n }))\n .useTableSchema(true)\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\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 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 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 deletionProtection: false\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 bigqueryMetadataViewer = new gcp.projects.IAMMember(\"bigquery_metadata_viewer\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.metadataViewer\",\n member: pulumi.interpolate`serviceAccount:${bqWriteServiceAccount.email}`,\n});\nconst bigqueryDataEditor = new gcp.projects.IAMMember(\"bigquery_data_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 bigqueryMetadataViewer,\n bigqueryDataEditor,\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()\nbigquery_metadata_viewer = gcp.projects.IAMMember(\"bigquery_metadata_viewer\",\n project=project.project_id,\n role=\"roles/bigquery.metadataViewer\",\n member=bq_write_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nbigquery_data_editor = gcp.projects.IAMMember(\"bigquery_data_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(\n project=test_table.project,\n dataset_id=test_table.dataset_id,\n table_id=test_table.table_id\n).apply(lambda resolved_outputs: f\"{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\n \"service_account_email\": bq_write_service_account.email,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n bq_write_service_account,\n bigquery_metadata_viewer,\n bigquery_data_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 bigqueryMetadataViewer = new Gcp.Projects.IAMMember(\"bigquery_metadata_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 bigqueryDataEditor = new Gcp.Projects.IAMMember(\"bigquery_data_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 bigqueryMetadataViewer,\n bigqueryDataEditor,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbigqueryMetadataViewer, err := projects.NewIAMMember(ctx, \"bigquery_metadata_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\tbigqueryDataEditor, err := projects.NewIAMMember(ctx, \"bigquery_data_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\tbigqueryMetadataViewer,\n\t\t\tbigqueryDataEditor,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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 bigqueryMetadataViewer = new IAMMember(\"bigqueryMetadataViewer\", 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 bigqueryDataEditor = new IAMMember(\"bigqueryDataEditor\", 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 bigqueryMetadataViewer,\n bigqueryDataEditor)\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 - ${bigqueryMetadataViewer}\n - ${bigqueryDataEditor}\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 bigqueryMetadataViewer:\n type: gcp:projects:IAMMember\n name: bigquery_metadata_viewer\n properties:\n project: ${project.projectId}\n role: roles/bigquery.metadataViewer\n member: serviceAccount:${bqWriteServiceAccount.email}\n bigqueryDataEditor:\n type: gcp:projects:IAMMember\n name: bigquery_data_editor\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: \"-_69391\",\n filenameDatetimeFormat: \"YYYY-MM-DD/hh_mm_ssZ\",\n maxBytes: 1000,\n maxDuration: \"300s\",\n maxMessages: 1000,\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\": \"-_69391\",\n \"filename_datetime_format\": \"YYYY-MM-DD/hh_mm_ssZ\",\n \"max_bytes\": 1000,\n \"max_duration\": \"300s\",\n \"max_messages\": 1000,\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 = \"-_69391\",\n FilenameDatetimeFormat = \"YYYY-MM-DD/hh_mm_ssZ\",\n MaxBytes = 1000,\n MaxDuration = \"300s\",\n MaxMessages = 1000,\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/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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.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(\"-_69391\"),\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\tMaxMessages: pulumi.Int(1000),\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(\"-_69391\")\n .filenameDatetimeFormat(\"YYYY-MM-DD/hh_mm_ssZ\")\n .maxBytes(1000)\n .maxDuration(\"300s\")\n .maxMessages(1000)\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: -_69391\n filenameDatetimeFormat: YYYY-MM-DD/hh_mm_ssZ\n maxBytes: 1000\n maxDuration: 300s\n maxMessages: 1000\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: \"-_8270\",\n filenameDatetimeFormat: \"YYYY-MM-DD/hh_mm_ssZ\",\n maxBytes: 1000,\n maxDuration: \"300s\",\n maxMessages: 1000,\n avroConfig: {\n writeMetadata: true,\n useTopicSchema: 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\": \"-_8270\",\n \"filename_datetime_format\": \"YYYY-MM-DD/hh_mm_ssZ\",\n \"max_bytes\": 1000,\n \"max_duration\": \"300s\",\n \"max_messages\": 1000,\n \"avro_config\": {\n \"write_metadata\": True,\n \"use_topic_schema\": 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 = \"-_8270\",\n FilenameDatetimeFormat = \"YYYY-MM-DD/hh_mm_ssZ\",\n MaxBytes = 1000,\n MaxDuration = \"300s\",\n MaxMessages = 1000,\n AvroConfig = new Gcp.PubSub.Inputs.SubscriptionCloudStorageConfigAvroConfigArgs\n {\n WriteMetadata = true,\n UseTopicSchema = 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/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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.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(\"-_8270\"),\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\tMaxMessages: pulumi.Int(1000),\n\t\t\t\tAvroConfig: \u0026pubsub.SubscriptionCloudStorageConfigAvroConfigArgs{\n\t\t\t\t\tWriteMetadata: pulumi.Bool(true),\n\t\t\t\t\tUseTopicSchema: 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(\"-_8270\")\n .filenameDatetimeFormat(\"YYYY-MM-DD/hh_mm_ssZ\")\n .maxBytes(1000)\n .maxDuration(\"300s\")\n .maxMessages(1000)\n .avroConfig(SubscriptionCloudStorageConfigAvroConfigArgs.builder()\n .writeMetadata(true)\n .useTopicSchema(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: -_8270\n filenameDatetimeFormat: YYYY-MM-DD/hh_mm_ssZ\n maxBytes: 1000\n maxDuration: 300s\n maxMessages: 1000\n avroConfig:\n writeMetadata: true\n useTopicSchema: 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: \"-_41150\",\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\": \"-_41150\",\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 = \"-_41150\",\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/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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(\"-_41150\"),\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, \u0026organizations.LookupProjectArgs{}, 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(\"-_41150\")\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: -_41150\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",
@@ -261683,7 +264816,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/v8/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/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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.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 wait120Seconds = new time.index.Sleep(\"wait_120_seconds\", {createDuration: \"120s\"}, {\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 wait120Seconds,\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\nwait120_seconds = time.index.Sleep(\"wait_120_seconds\", create_duration=120s,\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 wait120_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 wait120Seconds = new Time.Index.Sleep(\"wait_120_seconds\", new()\n {\n CreateDuration = \"120s\",\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 wait120Seconds,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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.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\twait120Seconds, err := time.NewSleep(ctx, \"wait_120_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\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\twait120Seconds,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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 wait120Seconds = new Sleep(\"wait120Seconds\", SleepArgs.builder()\n .createDuration(\"120s\")\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 wait120Seconds)\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 - ${wait120Seconds}\n # ca pool IAM permissions can take time to propagate\n wait120Seconds:\n type: time:sleep\n name: wait_120_seconds\n properties:\n createDuration: 120s\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### Secure Source Manager Instance Private Psc Backend\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 = gcp.organizations.getProject({});\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 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 wait120Seconds = new time.index.Sleep(\"wait_120_seconds\", {createDuration: \"120s\"}, {\n dependsOn: [caPoolBinding],\n});\n// See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\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 wait120Seconds,\n ],\n});\n// Connect SSM private instance with L4 proxy ILB.\nconst network = new gcp.compute.Network(\"network\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"my-subnet\",\n region: \"us-central1\",\n network: network.id,\n ipCidrRange: \"10.0.1.0/24\",\n privateIpGoogleAccess: true,\n});\nconst pscNeg = new gcp.compute.RegionNetworkEndpointGroup(\"psc_neg\", {\n name: \"my-neg\",\n region: \"us-central1\",\n networkEndpointType: \"PRIVATE_SERVICE_CONNECT\",\n pscTargetService: _default.privateConfig.apply(privateConfig =\u003e privateConfig?.httpServiceAttachment),\n network: network.id,\n subnetwork: subnet.id,\n});\nconst backendService = new gcp.compute.RegionBackendService(\"backend_service\", {\n name: \"my-backend-service\",\n region: \"us-central1\",\n protocol: \"TCP\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n backends: [{\n group: pscNeg.id,\n balancingMode: \"UTILIZATION\",\n capacityScaler: 1,\n }],\n});\nconst proxySubnet = new gcp.compute.Subnetwork(\"proxy_subnet\", {\n name: \"my-proxy-subnet\",\n region: \"us-central1\",\n network: network.id,\n ipCidrRange: \"10.0.2.0/24\",\n purpose: \"REGIONAL_MANAGED_PROXY\",\n role: \"ACTIVE\",\n});\nconst targetProxy = new gcp.compute.RegionTargetTcpProxy(\"target_proxy\", {\n name: \"my-target-proxy\",\n region: \"us-central1\",\n backendService: backendService.id,\n});\nconst fwRuleTargetProxy = new gcp.compute.ForwardingRule(\"fw_rule_target_proxy\", {\n name: \"fw-rule-target-proxy\",\n region: \"us-central1\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n ipProtocol: \"TCP\",\n portRange: \"443\",\n target: targetProxy.id,\n network: network.id,\n subnetwork: subnet.id,\n networkTier: \"PREMIUM\",\n}, {\n dependsOn: [proxySubnet],\n});\nconst privateZone = new gcp.dns.ManagedZone(\"private_zone\", {\n name: \"my-dns-zone\",\n dnsName: \"p.sourcemanager.dev.\",\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [{\n networkUrl: network.id,\n }],\n },\n});\nconst ssmInstanceHtmlRecord = new gcp.dns.RecordSet(\"ssm_instance_html_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].html}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleTargetProxy.ipAddress],\n});\nconst ssmInstanceApiRecord = new gcp.dns.RecordSet(\"ssm_instance_api_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].api}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleTargetProxy.ipAddress],\n});\nconst ssmInstanceGitRecord = new gcp.dns.RecordSet(\"ssm_instance_git_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].gitHttp}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleTargetProxy.ipAddress],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\nproject = gcp.organizations.get_project()\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)\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\nwait120_seconds = time.index.Sleep(\"wait_120_seconds\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[ca_pool_binding]))\n# See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\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 wait120_seconds,\n ]))\n# Connect SSM private instance with L4 proxy ILB.\nnetwork = gcp.compute.Network(\"network\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"my-subnet\",\n region=\"us-central1\",\n network=network.id,\n ip_cidr_range=\"10.0.1.0/24\",\n private_ip_google_access=True)\npsc_neg = gcp.compute.RegionNetworkEndpointGroup(\"psc_neg\",\n name=\"my-neg\",\n region=\"us-central1\",\n network_endpoint_type=\"PRIVATE_SERVICE_CONNECT\",\n psc_target_service=default.private_config.http_service_attachment,\n network=network.id,\n subnetwork=subnet.id)\nbackend_service = gcp.compute.RegionBackendService(\"backend_service\",\n name=\"my-backend-service\",\n region=\"us-central1\",\n protocol=\"TCP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n backends=[{\n \"group\": psc_neg.id,\n \"balancing_mode\": \"UTILIZATION\",\n \"capacity_scaler\": 1,\n }])\nproxy_subnet = gcp.compute.Subnetwork(\"proxy_subnet\",\n name=\"my-proxy-subnet\",\n region=\"us-central1\",\n network=network.id,\n ip_cidr_range=\"10.0.2.0/24\",\n purpose=\"REGIONAL_MANAGED_PROXY\",\n role=\"ACTIVE\")\ntarget_proxy = gcp.compute.RegionTargetTcpProxy(\"target_proxy\",\n name=\"my-target-proxy\",\n region=\"us-central1\",\n backend_service=backend_service.id)\nfw_rule_target_proxy = gcp.compute.ForwardingRule(\"fw_rule_target_proxy\",\n name=\"fw-rule-target-proxy\",\n region=\"us-central1\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n ip_protocol=\"TCP\",\n port_range=\"443\",\n target=target_proxy.id,\n network=network.id,\n subnetwork=subnet.id,\n network_tier=\"PREMIUM\",\n opts = pulumi.ResourceOptions(depends_on=[proxy_subnet]))\nprivate_zone = gcp.dns.ManagedZone(\"private_zone\",\n name=\"my-dns-zone\",\n dns_name=\"p.sourcemanager.dev.\",\n visibility=\"private\",\n private_visibility_config={\n \"networks\": [{\n \"network_url\": network.id,\n }],\n })\nssm_instance_html_record = gcp.dns.RecordSet(\"ssm_instance_html_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].html}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_target_proxy.ip_address])\nssm_instance_api_record = gcp.dns.RecordSet(\"ssm_instance_api_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].api}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_target_proxy.ip_address])\nssm_instance_git_record = gcp.dns.RecordSet(\"ssm_instance_git_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].git_http}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_target_proxy.ip_address])\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 = Gcp.Organizations.GetProject.Invoke();\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 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 wait120Seconds = new Time.Index.Sleep(\"wait_120_seconds\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n caPoolBinding,\n },\n });\n\n // See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\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 wait120Seconds,\n },\n });\n\n // Connect SSM private instance with L4 proxy ILB.\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"my-subnet\",\n Region = \"us-central1\",\n Network = network.Id,\n IpCidrRange = \"10.0.1.0/24\",\n PrivateIpGoogleAccess = true,\n });\n\n var pscNeg = new Gcp.Compute.RegionNetworkEndpointGroup(\"psc_neg\", new()\n {\n Name = \"my-neg\",\n Region = \"us-central1\",\n NetworkEndpointType = \"PRIVATE_SERVICE_CONNECT\",\n PscTargetService = @default.PrivateConfig.Apply(privateConfig =\u003e privateConfig?.HttpServiceAttachment),\n Network = network.Id,\n Subnetwork = subnet.Id,\n });\n\n var backendService = new Gcp.Compute.RegionBackendService(\"backend_service\", new()\n {\n Name = \"my-backend-service\",\n Region = \"us-central1\",\n Protocol = \"TCP\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n Backends = new[]\n {\n new Gcp.Compute.Inputs.RegionBackendServiceBackendArgs\n {\n Group = pscNeg.Id,\n BalancingMode = \"UTILIZATION\",\n CapacityScaler = 1,\n },\n },\n });\n\n var proxySubnet = new Gcp.Compute.Subnetwork(\"proxy_subnet\", new()\n {\n Name = \"my-proxy-subnet\",\n Region = \"us-central1\",\n Network = network.Id,\n IpCidrRange = \"10.0.2.0/24\",\n Purpose = \"REGIONAL_MANAGED_PROXY\",\n Role = \"ACTIVE\",\n });\n\n var targetProxy = new Gcp.Compute.RegionTargetTcpProxy(\"target_proxy\", new()\n {\n Name = \"my-target-proxy\",\n Region = \"us-central1\",\n BackendService = backendService.Id,\n });\n\n var fwRuleTargetProxy = new Gcp.Compute.ForwardingRule(\"fw_rule_target_proxy\", new()\n {\n Name = \"fw-rule-target-proxy\",\n Region = \"us-central1\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n IpProtocol = \"TCP\",\n PortRange = \"443\",\n Target = targetProxy.Id,\n Network = network.Id,\n Subnetwork = subnet.Id,\n NetworkTier = \"PREMIUM\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxySubnet,\n },\n });\n\n var privateZone = new Gcp.Dns.ManagedZone(\"private_zone\", new()\n {\n Name = \"my-dns-zone\",\n DnsName = \"p.sourcemanager.dev.\",\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 });\n\n var ssmInstanceHtmlRecord = new Gcp.Dns.RecordSet(\"ssm_instance_html_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].Html}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleTargetProxy.IpAddress,\n },\n });\n\n var ssmInstanceApiRecord = new Gcp.Dns.RecordSet(\"ssm_instance_api_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].Api}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleTargetProxy.IpAddress,\n },\n });\n\n var ssmInstanceGitRecord = new Gcp.Dns.RecordSet(\"ssm_instance_git_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].GitHttp}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleTargetProxy.IpAddress,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\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\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.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\twait120Seconds, err := time.NewSleep(ctx, \"wait_120_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\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// See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\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\twait120Seconds,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Connect SSM private instance with L4 proxy ILB.\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})\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-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.1.0/24\"),\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\tpscNeg, err := compute.NewRegionNetworkEndpointGroup(ctx, \"psc_neg\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"my-neg\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tPscTargetService: pulumi.String(_default.PrivateConfig.ApplyT(func(privateConfig securesourcemanager.InstancePrivateConfig) (*string, error) {\n\t\t\t\treturn \u0026privateConfig.HttpServiceAttachment, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tNetwork: network.ID(),\n\t\t\tSubnetwork: subnet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbackendService, err := compute.NewRegionBackendService(ctx, \"backend_service\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tProtocol: pulumi.String(\"TCP\"),\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: pscNeg.ID(),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproxySubnet, err := compute.NewSubnetwork(ctx, \"proxy_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-proxy-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.2.0/24\"),\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\ttargetProxy, err := compute.NewRegionTargetTcpProxy(ctx, \"target_proxy\", \u0026compute.RegionTargetTcpProxyArgs{\n\t\t\tName: pulumi.String(\"my-target-proxy\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBackendService: backendService.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfwRuleTargetProxy, err := compute.NewForwardingRule(ctx, \"fw_rule_target_proxy\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"fw-rule-target-proxy\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tIpProtocol: pulumi.String(\"TCP\"),\n\t\t\tPortRange: pulumi.String(\"443\"),\n\t\t\tTarget: targetProxy.ID(),\n\t\t\tNetwork: network.ID(),\n\t\t\tSubnetwork: subnet.ID(),\n\t\t\tNetworkTier: pulumi.String(\"PREMIUM\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxySubnet,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateZone, err := dns.NewManagedZone(ctx, \"private_zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"my-dns-zone\"),\n\t\t\tDnsName: pulumi.String(\"p.sourcemanager.dev.\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"ssm_instance_html_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].Html), 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: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleTargetProxy.IpAddress,\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.NewRecordSet(ctx, \"ssm_instance_api_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].Api), 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: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleTargetProxy.IpAddress,\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.NewRecordSet(ctx, \"ssm_instance_git_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].GitHttp), 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: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleTargetProxy.IpAddress,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\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.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.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.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.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.RegionBackendServiceBackendArgs;\nimport com.pulumi.gcp.compute.RegionTargetTcpProxy;\nimport com.pulumi.gcp.compute.RegionTargetTcpProxyArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePrivateVisibilityConfigArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\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 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 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 wait120Seconds = new Sleep(\"wait120Seconds\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(caPoolBinding)\n .build());\n\n // See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\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 wait120Seconds)\n .build());\n\n // Connect SSM private instance with L4 proxy ILB.\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"my-subnet\")\n .region(\"us-central1\")\n .network(network.id())\n .ipCidrRange(\"10.0.1.0/24\")\n .privateIpGoogleAccess(true)\n .build());\n\n var pscNeg = new RegionNetworkEndpointGroup(\"pscNeg\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"my-neg\")\n .region(\"us-central1\")\n .networkEndpointType(\"PRIVATE_SERVICE_CONNECT\")\n .pscTargetService(default_.privateConfig().applyValue(privateConfig -\u003e privateConfig.httpServiceAttachment()))\n .network(network.id())\n .subnetwork(subnet.id())\n .build());\n\n var backendService = new RegionBackendService(\"backendService\", RegionBackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .region(\"us-central1\")\n .protocol(\"TCP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .backends(RegionBackendServiceBackendArgs.builder()\n .group(pscNeg.id())\n .balancingMode(\"UTILIZATION\")\n .capacityScaler(1)\n .build())\n .build());\n\n var proxySubnet = new Subnetwork(\"proxySubnet\", SubnetworkArgs.builder()\n .name(\"my-proxy-subnet\")\n .region(\"us-central1\")\n .network(network.id())\n .ipCidrRange(\"10.0.2.0/24\")\n .purpose(\"REGIONAL_MANAGED_PROXY\")\n .role(\"ACTIVE\")\n .build());\n\n var targetProxy = new RegionTargetTcpProxy(\"targetProxy\", RegionTargetTcpProxyArgs.builder()\n .name(\"my-target-proxy\")\n .region(\"us-central1\")\n .backendService(backendService.id())\n .build());\n\n var fwRuleTargetProxy = new ForwardingRule(\"fwRuleTargetProxy\", ForwardingRuleArgs.builder()\n .name(\"fw-rule-target-proxy\")\n .region(\"us-central1\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .ipProtocol(\"TCP\")\n .portRange(\"443\")\n .target(targetProxy.id())\n .network(network.id())\n .subnetwork(subnet.id())\n .networkTier(\"PREMIUM\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxySubnet)\n .build());\n\n var privateZone = new ManagedZone(\"privateZone\", ManagedZoneArgs.builder()\n .name(\"my-dns-zone\")\n .dnsName(\"p.sourcemanager.dev.\")\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks(ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network.id())\n .build())\n .build())\n .build());\n\n var ssmInstanceHtmlRecord = new RecordSet(\"ssmInstanceHtmlRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].html())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleTargetProxy.ipAddress())\n .build());\n\n var ssmInstanceApiRecord = new RecordSet(\"ssmInstanceApiRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].api())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleTargetProxy.ipAddress())\n .build());\n\n var ssmInstanceGitRecord = new RecordSet(\"ssmInstanceGitRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].gitHttp())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleTargetProxy.ipAddress())\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 # See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\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 - ${wait120Seconds}\n # ca pool IAM permissions can take time to propagate\n wait120Seconds:\n type: time:sleep\n name: wait_120_seconds\n properties:\n createDuration: 120s\n options:\n dependsOn:\n - ${caPoolBinding}\n # Connect SSM private instance with L4 proxy ILB.\n network:\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-subnet\n region: us-central1\n network: ${network.id}\n ipCidrRange: 10.0.1.0/24\n privateIpGoogleAccess: true\n pscNeg:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: psc_neg\n properties:\n name: my-neg\n region: us-central1\n networkEndpointType: PRIVATE_SERVICE_CONNECT\n pscTargetService: ${default.privateConfig.httpServiceAttachment}\n network: ${network.id}\n subnetwork: ${subnet.id}\n backendService:\n type: gcp:compute:RegionBackendService\n name: backend_service\n properties:\n name: my-backend-service\n region: us-central1\n protocol: TCP\n loadBalancingScheme: INTERNAL_MANAGED\n backends:\n - group: ${pscNeg.id}\n balancingMode: UTILIZATION\n capacityScaler: 1\n proxySubnet:\n type: gcp:compute:Subnetwork\n name: proxy_subnet\n properties:\n name: my-proxy-subnet\n region: us-central1\n network: ${network.id}\n ipCidrRange: 10.0.2.0/24\n purpose: REGIONAL_MANAGED_PROXY\n role: ACTIVE\n targetProxy:\n type: gcp:compute:RegionTargetTcpProxy\n name: target_proxy\n properties:\n name: my-target-proxy\n region: us-central1\n backendService: ${backendService.id}\n fwRuleTargetProxy:\n type: gcp:compute:ForwardingRule\n name: fw_rule_target_proxy\n properties:\n name: fw-rule-target-proxy\n region: us-central1\n loadBalancingScheme: INTERNAL_MANAGED\n ipProtocol: TCP\n portRange: '443'\n target: ${targetProxy.id}\n network: ${network.id}\n subnetwork: ${subnet.id}\n networkTier: PREMIUM\n options:\n dependsOn:\n - ${proxySubnet}\n privateZone:\n type: gcp:dns:ManagedZone\n name: private_zone\n properties:\n name: my-dns-zone\n dnsName: p.sourcemanager.dev.\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${network.id}\n ssmInstanceHtmlRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_html_record\n properties:\n name: ${default.hostConfigs[0].html}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleTargetProxy.ipAddress}\n ssmInstanceApiRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_api_record\n properties:\n name: ${default.hostConfigs[0].api}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleTargetProxy.ipAddress}\n ssmInstanceGitRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_git_record\n properties:\n name: ${default.hostConfigs[0].gitHttp}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleTargetProxy.ipAddress}\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 Psc Endpoint\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 = gcp.organizations.getProject({});\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 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 wait120Seconds = new time.index.Sleep(\"wait_120_seconds\", {createDuration: \"120s\"}, {\n dependsOn: [caPoolBinding],\n});\n// See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\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 wait120Seconds,\n ],\n});\n// Connect SSM private instance with endpoint.\nconst network = new gcp.compute.Network(\"network\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"my-subnet\",\n region: \"us-central1\",\n network: network.id,\n ipCidrRange: \"10.0.60.0/24\",\n privateIpGoogleAccess: true,\n});\nconst address = new gcp.compute.Address(\"address\", {\n name: \"my-address\",\n region: \"us-central1\",\n address: \"10.0.60.100\",\n addressType: \"INTERNAL\",\n subnetwork: subnet.id,\n});\nconst fwRuleServiceAttachment = new gcp.compute.ForwardingRule(\"fw_rule_service_attachment\", {\n name: \"fw-rule-service-attachment\",\n region: \"us-central1\",\n loadBalancingScheme: \"\",\n ipAddress: address.id,\n network: network.id,\n target: _default.privateConfig.apply(privateConfig =\u003e privateConfig?.httpServiceAttachment),\n});\nconst privateZone = new gcp.dns.ManagedZone(\"private_zone\", {\n name: \"my-dns-zone\",\n dnsName: \"p.sourcemanager.dev.\",\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [{\n networkUrl: network.id,\n }],\n },\n});\nconst ssmInstanceHtmlRecord = new gcp.dns.RecordSet(\"ssm_instance_html_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].html}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleServiceAttachment.ipAddress],\n});\nconst ssmInstanceApiRecord = new gcp.dns.RecordSet(\"ssm_instance_api_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].api}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleServiceAttachment.ipAddress],\n});\nconst ssmInstanceGitRecord = new gcp.dns.RecordSet(\"ssm_instance_git_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].gitHttp}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleServiceAttachment.ipAddress],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\nproject = gcp.organizations.get_project()\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)\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\nwait120_seconds = time.index.Sleep(\"wait_120_seconds\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[ca_pool_binding]))\n# See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\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 wait120_seconds,\n ]))\n# Connect SSM private instance with endpoint.\nnetwork = gcp.compute.Network(\"network\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"my-subnet\",\n region=\"us-central1\",\n network=network.id,\n ip_cidr_range=\"10.0.60.0/24\",\n private_ip_google_access=True)\naddress = gcp.compute.Address(\"address\",\n name=\"my-address\",\n region=\"us-central1\",\n address=\"10.0.60.100\",\n address_type=\"INTERNAL\",\n subnetwork=subnet.id)\nfw_rule_service_attachment = gcp.compute.ForwardingRule(\"fw_rule_service_attachment\",\n name=\"fw-rule-service-attachment\",\n region=\"us-central1\",\n load_balancing_scheme=\"\",\n ip_address=address.id,\n network=network.id,\n target=default.private_config.http_service_attachment)\nprivate_zone = gcp.dns.ManagedZone(\"private_zone\",\n name=\"my-dns-zone\",\n dns_name=\"p.sourcemanager.dev.\",\n visibility=\"private\",\n private_visibility_config={\n \"networks\": [{\n \"network_url\": network.id,\n }],\n })\nssm_instance_html_record = gcp.dns.RecordSet(\"ssm_instance_html_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].html}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_service_attachment.ip_address])\nssm_instance_api_record = gcp.dns.RecordSet(\"ssm_instance_api_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].api}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_service_attachment.ip_address])\nssm_instance_git_record = gcp.dns.RecordSet(\"ssm_instance_git_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].git_http}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_service_attachment.ip_address])\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 = Gcp.Organizations.GetProject.Invoke();\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 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 wait120Seconds = new Time.Index.Sleep(\"wait_120_seconds\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n caPoolBinding,\n },\n });\n\n // See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\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 wait120Seconds,\n },\n });\n\n // Connect SSM private instance with endpoint.\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"my-subnet\",\n Region = \"us-central1\",\n Network = network.Id,\n IpCidrRange = \"10.0.60.0/24\",\n PrivateIpGoogleAccess = true,\n });\n\n var address = new Gcp.Compute.Address(\"address\", new()\n {\n Name = \"my-address\",\n Region = \"us-central1\",\n IPAddress = \"10.0.60.100\",\n AddressType = \"INTERNAL\",\n Subnetwork = subnet.Id,\n });\n\n var fwRuleServiceAttachment = new Gcp.Compute.ForwardingRule(\"fw_rule_service_attachment\", new()\n {\n Name = \"fw-rule-service-attachment\",\n Region = \"us-central1\",\n LoadBalancingScheme = \"\",\n IpAddress = address.Id,\n Network = network.Id,\n Target = @default.PrivateConfig.Apply(privateConfig =\u003e privateConfig?.HttpServiceAttachment),\n });\n\n var privateZone = new Gcp.Dns.ManagedZone(\"private_zone\", new()\n {\n Name = \"my-dns-zone\",\n DnsName = \"p.sourcemanager.dev.\",\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 });\n\n var ssmInstanceHtmlRecord = new Gcp.Dns.RecordSet(\"ssm_instance_html_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].Html}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleServiceAttachment.IpAddress,\n },\n });\n\n var ssmInstanceApiRecord = new Gcp.Dns.RecordSet(\"ssm_instance_api_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].Api}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleServiceAttachment.IpAddress,\n },\n });\n\n var ssmInstanceGitRecord = new Gcp.Dns.RecordSet(\"ssm_instance_git_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].GitHttp}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleServiceAttachment.IpAddress,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\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\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.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\twait120Seconds, err := time.NewSleep(ctx, \"wait_120_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\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// See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\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\twait120Seconds,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Connect SSM private instance with endpoint.\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})\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-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.60.0/24\"),\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\taddress, err := compute.NewAddress(ctx, \"address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"my-address\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tAddress: pulumi.String(\"10.0.60.100\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tSubnetwork: subnet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfwRuleServiceAttachment, err := compute.NewForwardingRule(ctx, \"fw_rule_service_attachment\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"fw-rule-service-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tIpAddress: address.ID(),\n\t\t\tNetwork: network.ID(),\n\t\t\tTarget: pulumi.String(_default.PrivateConfig.ApplyT(func(privateConfig securesourcemanager.InstancePrivateConfig) (*string, error) {\n\t\t\t\treturn \u0026privateConfig.HttpServiceAttachment, 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\tprivateZone, err := dns.NewManagedZone(ctx, \"private_zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"my-dns-zone\"),\n\t\t\tDnsName: pulumi.String(\"p.sourcemanager.dev.\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"ssm_instance_html_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].Html), 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: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleServiceAttachment.IpAddress,\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.NewRecordSet(ctx, \"ssm_instance_api_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].Api), 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: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleServiceAttachment.IpAddress,\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.NewRecordSet(ctx, \"ssm_instance_git_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].GitHttp), 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: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleServiceAttachment.IpAddress,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\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.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.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.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.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePrivateVisibilityConfigArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\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 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 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 wait120Seconds = new Sleep(\"wait120Seconds\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(caPoolBinding)\n .build());\n\n // See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\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 wait120Seconds)\n .build());\n\n // Connect SSM private instance with endpoint.\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"my-subnet\")\n .region(\"us-central1\")\n .network(network.id())\n .ipCidrRange(\"10.0.60.0/24\")\n .privateIpGoogleAccess(true)\n .build());\n\n var address = new Address(\"address\", AddressArgs.builder()\n .name(\"my-address\")\n .region(\"us-central1\")\n .address(\"10.0.60.100\")\n .addressType(\"INTERNAL\")\n .subnetwork(subnet.id())\n .build());\n\n var fwRuleServiceAttachment = new ForwardingRule(\"fwRuleServiceAttachment\", ForwardingRuleArgs.builder()\n .name(\"fw-rule-service-attachment\")\n .region(\"us-central1\")\n .loadBalancingScheme(\"\")\n .ipAddress(address.id())\n .network(network.id())\n .target(default_.privateConfig().applyValue(privateConfig -\u003e privateConfig.httpServiceAttachment()))\n .build());\n\n var privateZone = new ManagedZone(\"privateZone\", ManagedZoneArgs.builder()\n .name(\"my-dns-zone\")\n .dnsName(\"p.sourcemanager.dev.\")\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks(ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network.id())\n .build())\n .build())\n .build());\n\n var ssmInstanceHtmlRecord = new RecordSet(\"ssmInstanceHtmlRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].html())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleServiceAttachment.ipAddress())\n .build());\n\n var ssmInstanceApiRecord = new RecordSet(\"ssmInstanceApiRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].api())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleServiceAttachment.ipAddress())\n .build());\n\n var ssmInstanceGitRecord = new RecordSet(\"ssmInstanceGitRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].gitHttp())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleServiceAttachment.ipAddress())\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 # See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\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 - ${wait120Seconds}\n # ca pool IAM permissions can take time to propagate\n wait120Seconds:\n type: time:sleep\n name: wait_120_seconds\n properties:\n createDuration: 120s\n options:\n dependsOn:\n - ${caPoolBinding}\n # Connect SSM private instance with endpoint.\n network:\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-subnet\n region: us-central1\n network: ${network.id}\n ipCidrRange: 10.0.60.0/24\n privateIpGoogleAccess: true\n address:\n type: gcp:compute:Address\n properties:\n name: my-address\n region: us-central1\n address: 10.0.60.100\n addressType: INTERNAL\n subnetwork: ${subnet.id}\n fwRuleServiceAttachment:\n type: gcp:compute:ForwardingRule\n name: fw_rule_service_attachment\n properties:\n name: fw-rule-service-attachment\n region: us-central1\n loadBalancingScheme: \"\"\n ipAddress: ${address.id}\n network: ${network.id}\n target: ${default.privateConfig.httpServiceAttachment}\n privateZone:\n type: gcp:dns:ManagedZone\n name: private_zone\n properties:\n name: my-dns-zone\n dnsName: p.sourcemanager.dev.\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${network.id}\n ssmInstanceHtmlRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_html_record\n properties:\n name: ${default.hostConfigs[0].html}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleServiceAttachment.ipAddress}\n ssmInstanceApiRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_api_record\n properties:\n name: ${default.hostConfigs[0].api}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleServiceAttachment.ipAddress}\n ssmInstanceGitRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_git_record\n properties:\n name: ${default.hostConfigs[0].gitHttp}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleServiceAttachment.ipAddress}\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secure Source Manager Instance Workforce Identity Federation\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 workforceIdentityFederationConfig: {\n enabled: true,\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 workforce_identity_federation_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 @default = new Gcp.SecureSourceManager.Instance(\"default\", new()\n {\n Location = \"us-central1\",\n InstanceId = \"my-instance\",\n WorkforceIdentityFederationConfig = new Gcp.SecureSourceManager.Inputs.InstanceWorkforceIdentityFederationConfigArgs\n {\n Enabled = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tWorkforceIdentityFederationConfig: \u0026securesourcemanager.InstanceWorkforceIdentityFederationConfigArgs{\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.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\nimport com.pulumi.gcp.securesourcemanager.inputs.InstanceWorkforceIdentityFederationConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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 .workforceIdentityFederationConfig(InstanceWorkforceIdentityFederationConfigArgs.builder()\n .enabled(true)\n .build())\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 workforceIdentityFederationConfig:\n enabled: true\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/v8/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 project = gcp.organizations.getProject({});\nconst cryptoKeyBinding = new gcp.kms.CryptoKeyIAMMember(\"crypto_key_binding\", {\n cryptoKeyId: \"my-key\",\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: \"my-key\",\n}, {\n dependsOn: [cryptoKeyBinding],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncrypto_key_binding = gcp.kms.CryptoKeyIAMMember(\"crypto_key_binding\",\n crypto_key_id=\"my-key\",\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=\"my-key\",\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 project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKeyBinding = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key_binding\", new()\n {\n CryptoKeyId = \"my-key\",\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 = \"my-key\",\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/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, 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: pulumi.String(\"my-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.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: pulumi.String(\"my-key\"),\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.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 final var project = OrganizationsFunctions.getProject();\n\n var cryptoKeyBinding = new CryptoKeyIAMMember(\"cryptoKeyBinding\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"my-key\")\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(\"my-key\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyBinding)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cryptoKeyBinding:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key_binding\n properties:\n cryptoKeyId: my-key\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: my-key\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 wait120Seconds = new time.index.Sleep(\"wait_120_seconds\", {createDuration: \"120s\"}, {\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 wait120Seconds,\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\nwait120_seconds = time.index.Sleep(\"wait_120_seconds\", create_duration=120s,\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 wait120_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 wait120Seconds = new Time.Index.Sleep(\"wait_120_seconds\", new()\n {\n CreateDuration = \"120s\",\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 wait120Seconds,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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.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\twait120Seconds, err := time.NewSleep(ctx, \"wait_120_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\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\twait120Seconds,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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 wait120Seconds = new Sleep(\"wait120Seconds\", SleepArgs.builder()\n .createDuration(\"120s\")\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 wait120Seconds)\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 - ${wait120Seconds}\n # ca pool IAM permissions can take time to propagate\n wait120Seconds:\n type: time:sleep\n name: wait_120_seconds\n properties:\n createDuration: 120s\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### Secure Source Manager Instance Private Psc Backend\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 = gcp.organizations.getProject({});\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 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 wait120Seconds = new time.index.Sleep(\"wait_120_seconds\", {createDuration: \"120s\"}, {\n dependsOn: [caPoolBinding],\n});\n// See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\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 wait120Seconds,\n ],\n});\n// Connect SSM private instance with L4 proxy ILB.\nconst network = new gcp.compute.Network(\"network\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"my-subnet\",\n region: \"us-central1\",\n network: network.id,\n ipCidrRange: \"10.0.1.0/24\",\n privateIpGoogleAccess: true,\n});\nconst pscNeg = new gcp.compute.RegionNetworkEndpointGroup(\"psc_neg\", {\n name: \"my-neg\",\n region: \"us-central1\",\n networkEndpointType: \"PRIVATE_SERVICE_CONNECT\",\n pscTargetService: _default.privateConfig.apply(privateConfig =\u003e privateConfig?.httpServiceAttachment),\n network: network.id,\n subnetwork: subnet.id,\n});\nconst backendService = new gcp.compute.RegionBackendService(\"backend_service\", {\n name: \"my-backend-service\",\n region: \"us-central1\",\n protocol: \"TCP\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n backends: [{\n group: pscNeg.id,\n balancingMode: \"UTILIZATION\",\n capacityScaler: 1,\n }],\n});\nconst proxySubnet = new gcp.compute.Subnetwork(\"proxy_subnet\", {\n name: \"my-proxy-subnet\",\n region: \"us-central1\",\n network: network.id,\n ipCidrRange: \"10.0.2.0/24\",\n purpose: \"REGIONAL_MANAGED_PROXY\",\n role: \"ACTIVE\",\n});\nconst targetProxy = new gcp.compute.RegionTargetTcpProxy(\"target_proxy\", {\n name: \"my-target-proxy\",\n region: \"us-central1\",\n backendService: backendService.id,\n});\nconst fwRuleTargetProxy = new gcp.compute.ForwardingRule(\"fw_rule_target_proxy\", {\n name: \"fw-rule-target-proxy\",\n region: \"us-central1\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n ipProtocol: \"TCP\",\n portRange: \"443\",\n target: targetProxy.id,\n network: network.id,\n subnetwork: subnet.id,\n networkTier: \"PREMIUM\",\n}, {\n dependsOn: [proxySubnet],\n});\nconst privateZone = new gcp.dns.ManagedZone(\"private_zone\", {\n name: \"my-dns-zone\",\n dnsName: \"p.sourcemanager.dev.\",\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [{\n networkUrl: network.id,\n }],\n },\n});\nconst ssmInstanceHtmlRecord = new gcp.dns.RecordSet(\"ssm_instance_html_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].html}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleTargetProxy.ipAddress],\n});\nconst ssmInstanceApiRecord = new gcp.dns.RecordSet(\"ssm_instance_api_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].api}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleTargetProxy.ipAddress],\n});\nconst ssmInstanceGitRecord = new gcp.dns.RecordSet(\"ssm_instance_git_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].gitHttp}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleTargetProxy.ipAddress],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\nproject = gcp.organizations.get_project()\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)\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\nwait120_seconds = time.index.Sleep(\"wait_120_seconds\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[ca_pool_binding]))\n# See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\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 wait120_seconds,\n ]))\n# Connect SSM private instance with L4 proxy ILB.\nnetwork = gcp.compute.Network(\"network\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"my-subnet\",\n region=\"us-central1\",\n network=network.id,\n ip_cidr_range=\"10.0.1.0/24\",\n private_ip_google_access=True)\npsc_neg = gcp.compute.RegionNetworkEndpointGroup(\"psc_neg\",\n name=\"my-neg\",\n region=\"us-central1\",\n network_endpoint_type=\"PRIVATE_SERVICE_CONNECT\",\n psc_target_service=default.private_config.http_service_attachment,\n network=network.id,\n subnetwork=subnet.id)\nbackend_service = gcp.compute.RegionBackendService(\"backend_service\",\n name=\"my-backend-service\",\n region=\"us-central1\",\n protocol=\"TCP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n backends=[{\n \"group\": psc_neg.id,\n \"balancing_mode\": \"UTILIZATION\",\n \"capacity_scaler\": 1,\n }])\nproxy_subnet = gcp.compute.Subnetwork(\"proxy_subnet\",\n name=\"my-proxy-subnet\",\n region=\"us-central1\",\n network=network.id,\n ip_cidr_range=\"10.0.2.0/24\",\n purpose=\"REGIONAL_MANAGED_PROXY\",\n role=\"ACTIVE\")\ntarget_proxy = gcp.compute.RegionTargetTcpProxy(\"target_proxy\",\n name=\"my-target-proxy\",\n region=\"us-central1\",\n backend_service=backend_service.id)\nfw_rule_target_proxy = gcp.compute.ForwardingRule(\"fw_rule_target_proxy\",\n name=\"fw-rule-target-proxy\",\n region=\"us-central1\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n ip_protocol=\"TCP\",\n port_range=\"443\",\n target=target_proxy.id,\n network=network.id,\n subnetwork=subnet.id,\n network_tier=\"PREMIUM\",\n opts = pulumi.ResourceOptions(depends_on=[proxy_subnet]))\nprivate_zone = gcp.dns.ManagedZone(\"private_zone\",\n name=\"my-dns-zone\",\n dns_name=\"p.sourcemanager.dev.\",\n visibility=\"private\",\n private_visibility_config={\n \"networks\": [{\n \"network_url\": network.id,\n }],\n })\nssm_instance_html_record = gcp.dns.RecordSet(\"ssm_instance_html_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].html}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_target_proxy.ip_address])\nssm_instance_api_record = gcp.dns.RecordSet(\"ssm_instance_api_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].api}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_target_proxy.ip_address])\nssm_instance_git_record = gcp.dns.RecordSet(\"ssm_instance_git_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].git_http}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_target_proxy.ip_address])\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 = Gcp.Organizations.GetProject.Invoke();\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 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 wait120Seconds = new Time.Index.Sleep(\"wait_120_seconds\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n caPoolBinding,\n },\n });\n\n // See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\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 wait120Seconds,\n },\n });\n\n // Connect SSM private instance with L4 proxy ILB.\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"my-subnet\",\n Region = \"us-central1\",\n Network = network.Id,\n IpCidrRange = \"10.0.1.0/24\",\n PrivateIpGoogleAccess = true,\n });\n\n var pscNeg = new Gcp.Compute.RegionNetworkEndpointGroup(\"psc_neg\", new()\n {\n Name = \"my-neg\",\n Region = \"us-central1\",\n NetworkEndpointType = \"PRIVATE_SERVICE_CONNECT\",\n PscTargetService = @default.PrivateConfig.Apply(privateConfig =\u003e privateConfig?.HttpServiceAttachment),\n Network = network.Id,\n Subnetwork = subnet.Id,\n });\n\n var backendService = new Gcp.Compute.RegionBackendService(\"backend_service\", new()\n {\n Name = \"my-backend-service\",\n Region = \"us-central1\",\n Protocol = \"TCP\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n Backends = new[]\n {\n new Gcp.Compute.Inputs.RegionBackendServiceBackendArgs\n {\n Group = pscNeg.Id,\n BalancingMode = \"UTILIZATION\",\n CapacityScaler = 1,\n },\n },\n });\n\n var proxySubnet = new Gcp.Compute.Subnetwork(\"proxy_subnet\", new()\n {\n Name = \"my-proxy-subnet\",\n Region = \"us-central1\",\n Network = network.Id,\n IpCidrRange = \"10.0.2.0/24\",\n Purpose = \"REGIONAL_MANAGED_PROXY\",\n Role = \"ACTIVE\",\n });\n\n var targetProxy = new Gcp.Compute.RegionTargetTcpProxy(\"target_proxy\", new()\n {\n Name = \"my-target-proxy\",\n Region = \"us-central1\",\n BackendService = backendService.Id,\n });\n\n var fwRuleTargetProxy = new Gcp.Compute.ForwardingRule(\"fw_rule_target_proxy\", new()\n {\n Name = \"fw-rule-target-proxy\",\n Region = \"us-central1\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n IpProtocol = \"TCP\",\n PortRange = \"443\",\n Target = targetProxy.Id,\n Network = network.Id,\n Subnetwork = subnet.Id,\n NetworkTier = \"PREMIUM\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxySubnet,\n },\n });\n\n var privateZone = new Gcp.Dns.ManagedZone(\"private_zone\", new()\n {\n Name = \"my-dns-zone\",\n DnsName = \"p.sourcemanager.dev.\",\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 });\n\n var ssmInstanceHtmlRecord = new Gcp.Dns.RecordSet(\"ssm_instance_html_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].Html}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleTargetProxy.IpAddress,\n },\n });\n\n var ssmInstanceApiRecord = new Gcp.Dns.RecordSet(\"ssm_instance_api_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].Api}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleTargetProxy.IpAddress,\n },\n });\n\n var ssmInstanceGitRecord = new Gcp.Dns.RecordSet(\"ssm_instance_git_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].GitHttp}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleTargetProxy.IpAddress,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\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\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.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\twait120Seconds, err := time.NewSleep(ctx, \"wait_120_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\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// See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\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\twait120Seconds,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Connect SSM private instance with L4 proxy ILB.\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})\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-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.1.0/24\"),\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\tpscNeg, err := compute.NewRegionNetworkEndpointGroup(ctx, \"psc_neg\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"my-neg\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tPscTargetService: pulumi.String(_default.PrivateConfig.ApplyT(func(privateConfig securesourcemanager.InstancePrivateConfig) (*string, error) {\n\t\t\t\treturn \u0026privateConfig.HttpServiceAttachment, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tNetwork: network.ID(),\n\t\t\tSubnetwork: subnet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbackendService, err := compute.NewRegionBackendService(ctx, \"backend_service\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tProtocol: pulumi.String(\"TCP\"),\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: pscNeg.ID(),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproxySubnet, err := compute.NewSubnetwork(ctx, \"proxy_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-proxy-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.2.0/24\"),\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\ttargetProxy, err := compute.NewRegionTargetTcpProxy(ctx, \"target_proxy\", \u0026compute.RegionTargetTcpProxyArgs{\n\t\t\tName: pulumi.String(\"my-target-proxy\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBackendService: backendService.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfwRuleTargetProxy, err := compute.NewForwardingRule(ctx, \"fw_rule_target_proxy\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"fw-rule-target-proxy\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tIpProtocol: pulumi.String(\"TCP\"),\n\t\t\tPortRange: pulumi.String(\"443\"),\n\t\t\tTarget: targetProxy.ID(),\n\t\t\tNetwork: network.ID(),\n\t\t\tSubnetwork: subnet.ID(),\n\t\t\tNetworkTier: pulumi.String(\"PREMIUM\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxySubnet,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateZone, err := dns.NewManagedZone(ctx, \"private_zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"my-dns-zone\"),\n\t\t\tDnsName: pulumi.String(\"p.sourcemanager.dev.\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"ssm_instance_html_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].Html), 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: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleTargetProxy.IpAddress,\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.NewRecordSet(ctx, \"ssm_instance_api_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].Api), 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: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleTargetProxy.IpAddress,\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.NewRecordSet(ctx, \"ssm_instance_git_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].GitHttp), 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: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleTargetProxy.IpAddress,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\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.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.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.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.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.RegionBackendServiceBackendArgs;\nimport com.pulumi.gcp.compute.RegionTargetTcpProxy;\nimport com.pulumi.gcp.compute.RegionTargetTcpProxyArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePrivateVisibilityConfigArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\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 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 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 wait120Seconds = new Sleep(\"wait120Seconds\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(caPoolBinding)\n .build());\n\n // See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\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 wait120Seconds)\n .build());\n\n // Connect SSM private instance with L4 proxy ILB.\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"my-subnet\")\n .region(\"us-central1\")\n .network(network.id())\n .ipCidrRange(\"10.0.1.0/24\")\n .privateIpGoogleAccess(true)\n .build());\n\n var pscNeg = new RegionNetworkEndpointGroup(\"pscNeg\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"my-neg\")\n .region(\"us-central1\")\n .networkEndpointType(\"PRIVATE_SERVICE_CONNECT\")\n .pscTargetService(default_.privateConfig().applyValue(privateConfig -\u003e privateConfig.httpServiceAttachment()))\n .network(network.id())\n .subnetwork(subnet.id())\n .build());\n\n var backendService = new RegionBackendService(\"backendService\", RegionBackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .region(\"us-central1\")\n .protocol(\"TCP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .backends(RegionBackendServiceBackendArgs.builder()\n .group(pscNeg.id())\n .balancingMode(\"UTILIZATION\")\n .capacityScaler(1)\n .build())\n .build());\n\n var proxySubnet = new Subnetwork(\"proxySubnet\", SubnetworkArgs.builder()\n .name(\"my-proxy-subnet\")\n .region(\"us-central1\")\n .network(network.id())\n .ipCidrRange(\"10.0.2.0/24\")\n .purpose(\"REGIONAL_MANAGED_PROXY\")\n .role(\"ACTIVE\")\n .build());\n\n var targetProxy = new RegionTargetTcpProxy(\"targetProxy\", RegionTargetTcpProxyArgs.builder()\n .name(\"my-target-proxy\")\n .region(\"us-central1\")\n .backendService(backendService.id())\n .build());\n\n var fwRuleTargetProxy = new ForwardingRule(\"fwRuleTargetProxy\", ForwardingRuleArgs.builder()\n .name(\"fw-rule-target-proxy\")\n .region(\"us-central1\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .ipProtocol(\"TCP\")\n .portRange(\"443\")\n .target(targetProxy.id())\n .network(network.id())\n .subnetwork(subnet.id())\n .networkTier(\"PREMIUM\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxySubnet)\n .build());\n\n var privateZone = new ManagedZone(\"privateZone\", ManagedZoneArgs.builder()\n .name(\"my-dns-zone\")\n .dnsName(\"p.sourcemanager.dev.\")\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks(ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network.id())\n .build())\n .build())\n .build());\n\n var ssmInstanceHtmlRecord = new RecordSet(\"ssmInstanceHtmlRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].html())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleTargetProxy.ipAddress())\n .build());\n\n var ssmInstanceApiRecord = new RecordSet(\"ssmInstanceApiRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].api())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleTargetProxy.ipAddress())\n .build());\n\n var ssmInstanceGitRecord = new RecordSet(\"ssmInstanceGitRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].gitHttp())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleTargetProxy.ipAddress())\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 # See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\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 - ${wait120Seconds}\n # ca pool IAM permissions can take time to propagate\n wait120Seconds:\n type: time:sleep\n name: wait_120_seconds\n properties:\n createDuration: 120s\n options:\n dependsOn:\n - ${caPoolBinding}\n # Connect SSM private instance with L4 proxy ILB.\n network:\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-subnet\n region: us-central1\n network: ${network.id}\n ipCidrRange: 10.0.1.0/24\n privateIpGoogleAccess: true\n pscNeg:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: psc_neg\n properties:\n name: my-neg\n region: us-central1\n networkEndpointType: PRIVATE_SERVICE_CONNECT\n pscTargetService: ${default.privateConfig.httpServiceAttachment}\n network: ${network.id}\n subnetwork: ${subnet.id}\n backendService:\n type: gcp:compute:RegionBackendService\n name: backend_service\n properties:\n name: my-backend-service\n region: us-central1\n protocol: TCP\n loadBalancingScheme: INTERNAL_MANAGED\n backends:\n - group: ${pscNeg.id}\n balancingMode: UTILIZATION\n capacityScaler: 1\n proxySubnet:\n type: gcp:compute:Subnetwork\n name: proxy_subnet\n properties:\n name: my-proxy-subnet\n region: us-central1\n network: ${network.id}\n ipCidrRange: 10.0.2.0/24\n purpose: REGIONAL_MANAGED_PROXY\n role: ACTIVE\n targetProxy:\n type: gcp:compute:RegionTargetTcpProxy\n name: target_proxy\n properties:\n name: my-target-proxy\n region: us-central1\n backendService: ${backendService.id}\n fwRuleTargetProxy:\n type: gcp:compute:ForwardingRule\n name: fw_rule_target_proxy\n properties:\n name: fw-rule-target-proxy\n region: us-central1\n loadBalancingScheme: INTERNAL_MANAGED\n ipProtocol: TCP\n portRange: '443'\n target: ${targetProxy.id}\n network: ${network.id}\n subnetwork: ${subnet.id}\n networkTier: PREMIUM\n options:\n dependsOn:\n - ${proxySubnet}\n privateZone:\n type: gcp:dns:ManagedZone\n name: private_zone\n properties:\n name: my-dns-zone\n dnsName: p.sourcemanager.dev.\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${network.id}\n ssmInstanceHtmlRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_html_record\n properties:\n name: ${default.hostConfigs[0].html}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleTargetProxy.ipAddress}\n ssmInstanceApiRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_api_record\n properties:\n name: ${default.hostConfigs[0].api}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleTargetProxy.ipAddress}\n ssmInstanceGitRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_git_record\n properties:\n name: ${default.hostConfigs[0].gitHttp}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleTargetProxy.ipAddress}\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 Psc Endpoint\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 = gcp.organizations.getProject({});\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 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 wait120Seconds = new time.index.Sleep(\"wait_120_seconds\", {createDuration: \"120s\"}, {\n dependsOn: [caPoolBinding],\n});\n// See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\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 wait120Seconds,\n ],\n});\n// Connect SSM private instance with endpoint.\nconst network = new gcp.compute.Network(\"network\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"my-subnet\",\n region: \"us-central1\",\n network: network.id,\n ipCidrRange: \"10.0.60.0/24\",\n privateIpGoogleAccess: true,\n});\nconst address = new gcp.compute.Address(\"address\", {\n name: \"my-address\",\n region: \"us-central1\",\n address: \"10.0.60.100\",\n addressType: \"INTERNAL\",\n subnetwork: subnet.id,\n});\nconst fwRuleServiceAttachment = new gcp.compute.ForwardingRule(\"fw_rule_service_attachment\", {\n name: \"fw-rule-service-attachment\",\n region: \"us-central1\",\n loadBalancingScheme: \"\",\n ipAddress: address.id,\n network: network.id,\n target: _default.privateConfig.apply(privateConfig =\u003e privateConfig?.httpServiceAttachment),\n});\nconst privateZone = new gcp.dns.ManagedZone(\"private_zone\", {\n name: \"my-dns-zone\",\n dnsName: \"p.sourcemanager.dev.\",\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [{\n networkUrl: network.id,\n }],\n },\n});\nconst ssmInstanceHtmlRecord = new gcp.dns.RecordSet(\"ssm_instance_html_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].html}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleServiceAttachment.ipAddress],\n});\nconst ssmInstanceApiRecord = new gcp.dns.RecordSet(\"ssm_instance_api_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].api}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleServiceAttachment.ipAddress],\n});\nconst ssmInstanceGitRecord = new gcp.dns.RecordSet(\"ssm_instance_git_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].gitHttp}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleServiceAttachment.ipAddress],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\nproject = gcp.organizations.get_project()\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)\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\nwait120_seconds = time.index.Sleep(\"wait_120_seconds\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[ca_pool_binding]))\n# See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\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 wait120_seconds,\n ]))\n# Connect SSM private instance with endpoint.\nnetwork = gcp.compute.Network(\"network\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"my-subnet\",\n region=\"us-central1\",\n network=network.id,\n ip_cidr_range=\"10.0.60.0/24\",\n private_ip_google_access=True)\naddress = gcp.compute.Address(\"address\",\n name=\"my-address\",\n region=\"us-central1\",\n address=\"10.0.60.100\",\n address_type=\"INTERNAL\",\n subnetwork=subnet.id)\nfw_rule_service_attachment = gcp.compute.ForwardingRule(\"fw_rule_service_attachment\",\n name=\"fw-rule-service-attachment\",\n region=\"us-central1\",\n load_balancing_scheme=\"\",\n ip_address=address.id,\n network=network.id,\n target=default.private_config.http_service_attachment)\nprivate_zone = gcp.dns.ManagedZone(\"private_zone\",\n name=\"my-dns-zone\",\n dns_name=\"p.sourcemanager.dev.\",\n visibility=\"private\",\n private_visibility_config={\n \"networks\": [{\n \"network_url\": network.id,\n }],\n })\nssm_instance_html_record = gcp.dns.RecordSet(\"ssm_instance_html_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].html}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_service_attachment.ip_address])\nssm_instance_api_record = gcp.dns.RecordSet(\"ssm_instance_api_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].api}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_service_attachment.ip_address])\nssm_instance_git_record = gcp.dns.RecordSet(\"ssm_instance_git_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].git_http}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_service_attachment.ip_address])\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 = Gcp.Organizations.GetProject.Invoke();\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 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 wait120Seconds = new Time.Index.Sleep(\"wait_120_seconds\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n caPoolBinding,\n },\n });\n\n // See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\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 wait120Seconds,\n },\n });\n\n // Connect SSM private instance with endpoint.\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"my-subnet\",\n Region = \"us-central1\",\n Network = network.Id,\n IpCidrRange = \"10.0.60.0/24\",\n PrivateIpGoogleAccess = true,\n });\n\n var address = new Gcp.Compute.Address(\"address\", new()\n {\n Name = \"my-address\",\n Region = \"us-central1\",\n IPAddress = \"10.0.60.100\",\n AddressType = \"INTERNAL\",\n Subnetwork = subnet.Id,\n });\n\n var fwRuleServiceAttachment = new Gcp.Compute.ForwardingRule(\"fw_rule_service_attachment\", new()\n {\n Name = \"fw-rule-service-attachment\",\n Region = \"us-central1\",\n LoadBalancingScheme = \"\",\n IpAddress = address.Id,\n Network = network.Id,\n Target = @default.PrivateConfig.Apply(privateConfig =\u003e privateConfig?.HttpServiceAttachment),\n });\n\n var privateZone = new Gcp.Dns.ManagedZone(\"private_zone\", new()\n {\n Name = \"my-dns-zone\",\n DnsName = \"p.sourcemanager.dev.\",\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 });\n\n var ssmInstanceHtmlRecord = new Gcp.Dns.RecordSet(\"ssm_instance_html_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].Html}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleServiceAttachment.IpAddress,\n },\n });\n\n var ssmInstanceApiRecord = new Gcp.Dns.RecordSet(\"ssm_instance_api_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].Api}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleServiceAttachment.IpAddress,\n },\n });\n\n var ssmInstanceGitRecord = new Gcp.Dns.RecordSet(\"ssm_instance_git_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].GitHttp}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleServiceAttachment.IpAddress,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\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\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.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\twait120Seconds, err := time.NewSleep(ctx, \"wait_120_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\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// See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\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\twait120Seconds,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Connect SSM private instance with endpoint.\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})\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-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.60.0/24\"),\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\taddress, err := compute.NewAddress(ctx, \"address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"my-address\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tAddress: pulumi.String(\"10.0.60.100\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tSubnetwork: subnet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfwRuleServiceAttachment, err := compute.NewForwardingRule(ctx, \"fw_rule_service_attachment\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"fw-rule-service-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tIpAddress: address.ID(),\n\t\t\tNetwork: network.ID(),\n\t\t\tTarget: pulumi.String(_default.PrivateConfig.ApplyT(func(privateConfig securesourcemanager.InstancePrivateConfig) (*string, error) {\n\t\t\t\treturn \u0026privateConfig.HttpServiceAttachment, 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\tprivateZone, err := dns.NewManagedZone(ctx, \"private_zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"my-dns-zone\"),\n\t\t\tDnsName: pulumi.String(\"p.sourcemanager.dev.\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"ssm_instance_html_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].Html), 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: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleServiceAttachment.IpAddress,\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.NewRecordSet(ctx, \"ssm_instance_api_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].Api), 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: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleServiceAttachment.IpAddress,\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.NewRecordSet(ctx, \"ssm_instance_git_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].GitHttp), 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: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleServiceAttachment.IpAddress,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\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.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.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.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.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePrivateVisibilityConfigArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\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 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 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 wait120Seconds = new Sleep(\"wait120Seconds\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(caPoolBinding)\n .build());\n\n // See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\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 wait120Seconds)\n .build());\n\n // Connect SSM private instance with endpoint.\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"my-subnet\")\n .region(\"us-central1\")\n .network(network.id())\n .ipCidrRange(\"10.0.60.0/24\")\n .privateIpGoogleAccess(true)\n .build());\n\n var address = new Address(\"address\", AddressArgs.builder()\n .name(\"my-address\")\n .region(\"us-central1\")\n .address(\"10.0.60.100\")\n .addressType(\"INTERNAL\")\n .subnetwork(subnet.id())\n .build());\n\n var fwRuleServiceAttachment = new ForwardingRule(\"fwRuleServiceAttachment\", ForwardingRuleArgs.builder()\n .name(\"fw-rule-service-attachment\")\n .region(\"us-central1\")\n .loadBalancingScheme(\"\")\n .ipAddress(address.id())\n .network(network.id())\n .target(default_.privateConfig().applyValue(privateConfig -\u003e privateConfig.httpServiceAttachment()))\n .build());\n\n var privateZone = new ManagedZone(\"privateZone\", ManagedZoneArgs.builder()\n .name(\"my-dns-zone\")\n .dnsName(\"p.sourcemanager.dev.\")\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks(ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network.id())\n .build())\n .build())\n .build());\n\n var ssmInstanceHtmlRecord = new RecordSet(\"ssmInstanceHtmlRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].html())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleServiceAttachment.ipAddress())\n .build());\n\n var ssmInstanceApiRecord = new RecordSet(\"ssmInstanceApiRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].api())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleServiceAttachment.ipAddress())\n .build());\n\n var ssmInstanceGitRecord = new RecordSet(\"ssmInstanceGitRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].gitHttp())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleServiceAttachment.ipAddress())\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 # See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\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 - ${wait120Seconds}\n # ca pool IAM permissions can take time to propagate\n wait120Seconds:\n type: time:sleep\n name: wait_120_seconds\n properties:\n createDuration: 120s\n options:\n dependsOn:\n - ${caPoolBinding}\n # Connect SSM private instance with endpoint.\n network:\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-subnet\n region: us-central1\n network: ${network.id}\n ipCidrRange: 10.0.60.0/24\n privateIpGoogleAccess: true\n address:\n type: gcp:compute:Address\n properties:\n name: my-address\n region: us-central1\n address: 10.0.60.100\n addressType: INTERNAL\n subnetwork: ${subnet.id}\n fwRuleServiceAttachment:\n type: gcp:compute:ForwardingRule\n name: fw_rule_service_attachment\n properties:\n name: fw-rule-service-attachment\n region: us-central1\n loadBalancingScheme: \"\"\n ipAddress: ${address.id}\n network: ${network.id}\n target: ${default.privateConfig.httpServiceAttachment}\n privateZone:\n type: gcp:dns:ManagedZone\n name: private_zone\n properties:\n name: my-dns-zone\n dnsName: p.sourcemanager.dev.\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${network.id}\n ssmInstanceHtmlRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_html_record\n properties:\n name: ${default.hostConfigs[0].html}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleServiceAttachment.ipAddress}\n ssmInstanceApiRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_api_record\n properties:\n name: ${default.hostConfigs[0].api}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleServiceAttachment.ipAddress}\n ssmInstanceGitRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_git_record\n properties:\n name: ${default.hostConfigs[0].gitHttp}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleServiceAttachment.ipAddress}\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secure Source Manager Instance Workforce Identity Federation\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 workforceIdentityFederationConfig: {\n enabled: true,\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 workforce_identity_federation_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 @default = new Gcp.SecureSourceManager.Instance(\"default\", new()\n {\n Location = \"us-central1\",\n InstanceId = \"my-instance\",\n WorkforceIdentityFederationConfig = new Gcp.SecureSourceManager.Inputs.InstanceWorkforceIdentityFederationConfigArgs\n {\n Enabled = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tWorkforceIdentityFederationConfig: \u0026securesourcemanager.InstanceWorkforceIdentityFederationConfigArgs{\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.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\nimport com.pulumi.gcp.securesourcemanager.inputs.InstanceWorkforceIdentityFederationConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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 .workforceIdentityFederationConfig(InstanceWorkforceIdentityFederationConfigArgs.builder()\n .enabled(true)\n .build())\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 workforceIdentityFederationConfig:\n enabled: true\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",
@@ -270364,7 +273497,7 @@
"items": {
"type": "string"
},
- "description": "Identities that will be granted the privilege in `role`.\nEach entry can have one of the following values:\n* **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.\n* **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.\n* **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n* **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n* **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.\n* **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.\n"
+ "description": "Identities that will be granted the privilege in `role`.\nEach entry can have one of the following values:\n* **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.\n* **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.\n* **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n* **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n* **principal:{principal}**: Federated single identity. For example, principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/NAMESPACE/sa/SERVICEACCOUNT\n* **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE\n* **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.\n* **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.\n"
},
"project": {
"type": "string",
@@ -270397,7 +273530,7 @@
"items": {
"type": "string"
},
- "description": "Identities that will be granted the privilege in `role`.\nEach entry can have one of the following values:\n* **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.\n* **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.\n* **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n* **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n* **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.\n* **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.\n"
+ "description": "Identities that will be granted the privilege in `role`.\nEach entry can have one of the following values:\n* **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.\n* **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.\n* **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n* **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n* **principal:{principal}**: Federated single identity. For example, principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/NAMESPACE/sa/SERVICEACCOUNT\n* **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE\n* **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.\n* **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.\n"
},
"project": {
"type": "string",
@@ -270436,7 +273569,7 @@
"items": {
"type": "string"
},
- "description": "Identities that will be granted the privilege in `role`.\nEach entry can have one of the following values:\n* **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.\n* **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.\n* **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n* **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n* **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.\n* **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.\n"
+ "description": "Identities that will be granted the privilege in `role`.\nEach entry can have one of the following values:\n* **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.\n* **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.\n* **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n* **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n* **principal:{principal}**: Federated single identity. For example, principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/NAMESPACE/sa/SERVICEACCOUNT\n* **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE\n* **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.\n* **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.\n"
},
"project": {
"type": "string",
@@ -270468,7 +273601,7 @@
},
"member": {
"type": "string",
- "description": "Identities that will be granted the privilege in `role`.\nEach entry can have one of the following values:\n* **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.\n* **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.\n* **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n* **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n* **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.\n* **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.\n"
+ "description": "Identities that will be granted the privilege in `role`.\nEach entry can have one of the following values:\n* **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.\n* **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.\n* **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n* **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n* **principal:{principal}**: Federated single identity. For example, principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/NAMESPACE/sa/SERVICEACCOUNT\n* **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE\n* **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.\n* **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.\n"
},
"project": {
"type": "string",
@@ -270498,7 +273631,7 @@
},
"member": {
"type": "string",
- "description": "Identities that will be granted the privilege in `role`.\nEach entry can have one of the following values:\n* **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.\n* **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.\n* **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n* **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n* **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.\n* **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.\n",
+ "description": "Identities that will be granted the privilege in `role`.\nEach entry can have one of the following values:\n* **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.\n* **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.\n* **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n* **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n* **principal:{principal}**: Federated single identity. For example, principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/NAMESPACE/sa/SERVICEACCOUNT\n* **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE\n* **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.\n* **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.\n",
"willReplaceOnChanges": true
},
"project": {
@@ -270535,7 +273668,7 @@
},
"member": {
"type": "string",
- "description": "Identities that will be granted the privilege in `role`.\nEach entry can have one of the following values:\n* **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.\n* **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.\n* **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n* **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n* **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.\n* **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.\n",
+ "description": "Identities that will be granted the privilege in `role`.\nEach entry can have one of the following values:\n* **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.\n* **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.\n* **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n* **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n* **principal:{principal}**: Federated single identity. For example, principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/NAMESPACE/sa/SERVICEACCOUNT\n* **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE\n* **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.\n* **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.\n",
"willReplaceOnChanges": true
},
"project": {
@@ -270753,7 +273886,7 @@
},
"databaseVersion": {
"type": "string",
- "description": "The MySQL, PostgreSQL or\nSQL Server version to use. Supported values include `MYSQL_5_6`,\n`MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`,\n`POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`,\n`SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`.\n`SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`,\n`SQLSERVER_2019_WEB`.\n[Database Version Policies](https://cloud.google.com/sql/docs/db-versions)\nincludes an up-to-date reference of supported versions.\n"
+ "description": "The MySQL, PostgreSQL or\nSQL Server version to use. Supported values include `MYSQL_5_6`,\n`MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`,\n`POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`,\n`SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`.\n`SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`,\n`SQLSERVER_2019_WEB`.\n[Database Version Policies](https://cloud.google.com/sql/docs/db-versions)\nincludes an up-to-date reference of supported versions.\n"
},
"deletionProtection": {
"type": "boolean",
@@ -270885,7 +274018,7 @@
},
"databaseVersion": {
"type": "string",
- "description": "The MySQL, PostgreSQL or\nSQL Server version to use. Supported values include `MYSQL_5_6`,\n`MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`,\n`POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`,\n`SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`.\n`SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`,\n`SQLSERVER_2019_WEB`.\n[Database Version Policies](https://cloud.google.com/sql/docs/db-versions)\nincludes an up-to-date reference of supported versions.\n"
+ "description": "The MySQL, PostgreSQL or\nSQL Server version to use. Supported values include `MYSQL_5_6`,\n`MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`,\n`POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`,\n`SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`.\n`SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`,\n`SQLSERVER_2019_WEB`.\n[Database Version Policies](https://cloud.google.com/sql/docs/db-versions)\nincludes an up-to-date reference of supported versions.\n"
},
"deletionProtection": {
"type": "boolean",
@@ -270972,7 +274105,7 @@
},
"databaseVersion": {
"type": "string",
- "description": "The MySQL, PostgreSQL or\nSQL Server version to use. Supported values include `MYSQL_5_6`,\n`MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`,\n`POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`,\n`SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`.\n`SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`,\n`SQLSERVER_2019_WEB`.\n[Database Version Policies](https://cloud.google.com/sql/docs/db-versions)\nincludes an up-to-date reference of supported versions.\n"
+ "description": "The MySQL, PostgreSQL or\nSQL Server version to use. Supported values include `MYSQL_5_6`,\n`MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`,\n`POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`,\n`SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`.\n`SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`,\n`SQLSERVER_2019_WEB`.\n[Database Version Policies](https://cloud.google.com/sql/docs/db-versions)\nincludes an up-to-date reference of supported versions.\n"
},
"deletionProtection": {
"type": "boolean",
@@ -272840,6 +275973,102 @@
"type": "object"
}
},
+ "gcp:storage/folder:Folder": {
+ "description": "A Google Cloud Storage Folder.\n\nThe Folder resource represents a folder in a Cloud Storage bucket with hierarchical namespace enabled\n\n\nTo get more information about Folder, see:\n\n* [API documentation](https://cloud.google.com/storage/docs/json_api/v1/folders)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/storage/docs/folders-overview)\n\n## Example Usage\n\n### Storage Folder 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: \"my-bucket\",\n location: \"EU\",\n uniformBucketLevelAccess: true,\n hierarchicalNamespace: {\n enabled: true,\n },\n});\nconst folder = new gcp.storage.Folder(\"folder\", {\n bucket: bucket.name,\n name: \"parent-folder/\",\n});\nconst subfolder = new gcp.storage.Folder(\"subfolder\", {\n bucket: bucket.name,\n name: pulumi.interpolate`${folder.name}subfolder/`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"my-bucket\",\n location=\"EU\",\n uniform_bucket_level_access=True,\n hierarchical_namespace={\n \"enabled\": True,\n })\nfolder = gcp.storage.Folder(\"folder\",\n bucket=bucket.name,\n name=\"parent-folder/\")\nsubfolder = gcp.storage.Folder(\"subfolder\",\n bucket=bucket.name,\n name=folder.name.apply(lambda name: f\"{name}subfolder/\"))\n```\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-bucket\",\n Location = \"EU\",\n UniformBucketLevelAccess = true,\n HierarchicalNamespace = new Gcp.Storage.Inputs.BucketHierarchicalNamespaceArgs\n {\n Enabled = true,\n },\n });\n\n var folder = new Gcp.Storage.Folder(\"folder\", new()\n {\n Bucket = bucket.Name,\n Name = \"parent-folder/\",\n });\n\n var subfolder = new Gcp.Storage.Folder(\"subfolder\", new()\n {\n Bucket = bucket.Name,\n Name = folder.Name.Apply(name =\u003e $\"{name}subfolder/\"),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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-bucket\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t\tHierarchicalNamespace: \u0026storage.BucketHierarchicalNamespaceArgs{\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\tfolder, err := storage.NewFolder(ctx, \"folder\", \u0026storage.FolderArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tName: pulumi.String(\"parent-folder/\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewFolder(ctx, \"subfolder\", \u0026storage.FolderArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tName: folder.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%vsubfolder/\", name), 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.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.inputs.BucketHierarchicalNamespaceArgs;\nimport com.pulumi.gcp.storage.Folder;\nimport com.pulumi.gcp.storage.FolderArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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-bucket\")\n .location(\"EU\")\n .uniformBucketLevelAccess(true)\n .hierarchicalNamespace(BucketHierarchicalNamespaceArgs.builder()\n .enabled(true)\n .build())\n .build());\n\n var folder = new Folder(\"folder\", FolderArgs.builder()\n .bucket(bucket.name())\n .name(\"parent-folder/\")\n .build());\n\n var subfolder = new Folder(\"subfolder\", FolderArgs.builder()\n .bucket(bucket.name())\n .name(folder.name().applyValue(name -\u003e String.format(\"%ssubfolder/\", name)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: my-bucket\n location: EU\n uniformBucketLevelAccess: true\n hierarchicalNamespace:\n enabled: true\n folder:\n type: gcp:storage:Folder\n properties:\n bucket: ${bucket.name}\n name: parent-folder/\n subfolder:\n type: gcp:storage:Folder\n properties:\n bucket: ${bucket.name}\n name: ${folder.name}subfolder/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFolder can be imported using any of these accepted formats:\n\n* `{{bucket}}/folders/{{name}}`\n\n* `{{bucket}}/{{name}}`\n\nWhen using the `pulumi import` command, Folder can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:storage/folder:Folder default {{bucket}}/folders/{{name}}\n```\n\n```sh\n$ pulumi import gcp:storage/folder:Folder default {{bucket}}/{{name}}\n```\n\n",
+ "properties": {
+ "bucket": {
+ "type": "string",
+ "description": "The name of the bucket that contains the folder.\n"
+ },
+ "createTime": {
+ "type": "string",
+ "description": "The timestamp at which this folder was created.\n"
+ },
+ "forceDestroy": {
+ "type": "boolean",
+ "description": "If set to true, items within folder if any will be force destroyed.\n"
+ },
+ "metageneration": {
+ "type": "string",
+ "description": "The metadata generation of the folder.\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the folder expressed as a path. Must include\ntrailing '/'. For example, `example_dir/example_dir2/`, `example@#/`, `a-b/d-f/`.\n\n\n- - -\n"
+ },
+ "selfLink": {
+ "type": "string",
+ "description": "The URI of the created resource.\n"
+ },
+ "updateTime": {
+ "type": "string",
+ "description": "The timestamp at which this folder was most recently updated.\n"
+ }
+ },
+ "required": [
+ "bucket",
+ "createTime",
+ "metageneration",
+ "name",
+ "selfLink",
+ "updateTime"
+ ],
+ "inputProperties": {
+ "bucket": {
+ "type": "string",
+ "description": "The name of the bucket that contains the folder.\n",
+ "willReplaceOnChanges": true
+ },
+ "forceDestroy": {
+ "type": "boolean",
+ "description": "If set to true, items within folder if any will be force destroyed.\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the folder expressed as a path. Must include\ntrailing '/'. For example, `example_dir/example_dir2/`, `example@#/`, `a-b/d-f/`.\n\n\n- - -\n",
+ "willReplaceOnChanges": true
+ }
+ },
+ "requiredInputs": [
+ "bucket"
+ ],
+ "stateInputs": {
+ "description": "Input properties used for looking up and filtering Folder resources.\n",
+ "properties": {
+ "bucket": {
+ "type": "string",
+ "description": "The name of the bucket that contains the folder.\n",
+ "willReplaceOnChanges": true
+ },
+ "createTime": {
+ "type": "string",
+ "description": "The timestamp at which this folder was created.\n"
+ },
+ "forceDestroy": {
+ "type": "boolean",
+ "description": "If set to true, items within folder if any will be force destroyed.\n"
+ },
+ "metageneration": {
+ "type": "string",
+ "description": "The metadata generation of the folder.\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the folder expressed as a path. Must include\ntrailing '/'. For example, `example_dir/example_dir2/`, `example@#/`, `a-b/d-f/`.\n\n\n- - -\n",
+ "willReplaceOnChanges": true
+ },
+ "selfLink": {
+ "type": "string",
+ "description": "The URI of the created resource.\n"
+ },
+ "updateTime": {
+ "type": "string",
+ "description": "The timestamp at which this folder was most recently updated.\n"
+ }
+ },
+ "type": "object"
+ }
+ },
"gcp:storage/hmacKey:HmacKey": {
"description": "The hmacKeys resource represents an HMAC key within Cloud Storage. The resource\nconsists of a secret and HMAC key metadata. HMAC keys can be used as credentials\nfor service accounts.\n\n\nTo get more information about HmacKey, see:\n\n* [API documentation](https://cloud.google.com/storage/docs/json_api/v1/projects/hmacKeys)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/storage/docs/authentication/managing-hmackeys)\n\n\n\n## Example Usage\n\n### Storage Hmac Key\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// Create a new service account\nconst serviceAccount = new gcp.serviceaccount.Account(\"service_account\", {accountId: \"my-svc-acc\"});\n//Create the HMAC key for the associated service account\nconst key = new gcp.storage.HmacKey(\"key\", {serviceAccountEmail: serviceAccount.email});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# Create a new service account\nservice_account = gcp.serviceaccount.Account(\"service_account\", account_id=\"my-svc-acc\")\n#Create the HMAC key for the associated service account\nkey = gcp.storage.HmacKey(\"key\", service_account_email=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 // Create a new service account\n var serviceAccount = new Gcp.ServiceAccount.Account(\"service_account\", new()\n {\n AccountId = \"my-svc-acc\",\n });\n\n //Create the HMAC key for the associated service account\n var key = new Gcp.Storage.HmacKey(\"key\", new()\n {\n ServiceAccountEmail = serviceAccount.Email,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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// Create a new service account\n\t\tserviceAccount, err := serviceaccount.NewAccount(ctx, \"service_account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-svc-acc\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create the HMAC key for the associated service account\n\t\t_, err = storage.NewHmacKey(ctx, \"key\", \u0026storage.HmacKeyArgs{\n\t\t\tServiceAccountEmail: serviceAccount.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.storage.HmacKey;\nimport com.pulumi.gcp.storage.HmacKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Create a new service account\n var serviceAccount = new Account(\"serviceAccount\", AccountArgs.builder()\n .accountId(\"my-svc-acc\")\n .build());\n\n //Create the HMAC key for the associated service account\n var key = new HmacKey(\"key\", HmacKeyArgs.builder()\n .serviceAccountEmail(serviceAccount.email())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Create a new service account\n serviceAccount:\n type: gcp:serviceaccount:Account\n name: service_account\n properties:\n accountId: my-svc-acc\n #Create the HMAC key for the associated service account\n key:\n type: gcp:storage:HmacKey\n properties:\n serviceAccountEmail: ${serviceAccount.email}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nHmacKey can be imported using any of these accepted formats:\n\n* `projects/{{project}}/hmacKeys/{{access_id}}`\n\n* `{{project}}/{{access_id}}`\n\n* `{{access_id}}`\n\nWhen using the `pulumi import` command, HmacKey can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:storage/hmacKey:HmacKey default projects/{{project}}/hmacKeys/{{access_id}}\n```\n\n```sh\n$ pulumi import gcp:storage/hmacKey:HmacKey default {{project}}/{{access_id}}\n```\n\n```sh\n$ pulumi import gcp:storage/hmacKey:HmacKey default {{access_id}}\n```\n\n",
"properties": {
@@ -273888,6 +277117,10 @@
"type": "string",
"description": "The project in which the resource belongs. If it\nis not provided, the provider project is used.\n"
},
+ "replicationSpec": {
+ "$ref": "#/types/gcp:storage/TransferJobReplicationSpec:TransferJobReplicationSpec",
+ "description": "Replication specification. Structure documented below. User should not configure `schedule`, `event_stream` with this argument. One of `transfer_spec`, or `replication_spec` must be specified.\n\n- - -\n"
+ },
"schedule": {
"$ref": "#/types/gcp:storage/TransferJobSchedule:TransferJobSchedule",
"description": "Schedule specification defining when the Transfer Job should be scheduled to start, end and what time to run. Structure documented below. Either `schedule` or `event_stream` must be set.\n"
@@ -273898,7 +277131,7 @@
},
"transferSpec": {
"$ref": "#/types/gcp:storage/TransferJobTransferSpec:TransferJobTransferSpec",
- "description": "Transfer specification. Structure documented below.\n\n- - -\n"
+ "description": "Transfer specification. Structure documented below. One of `transfer_spec`, or `replication_spec` can be specified.\n"
}
},
"required": [
@@ -273907,8 +277140,7 @@
"description",
"lastModificationTime",
"name",
- "project",
- "transferSpec"
+ "project"
],
"inputProperties": {
"description": {
@@ -273932,6 +277164,10 @@
"description": "The project in which the resource belongs. If it\nis not provided, the provider project is used.\n",
"willReplaceOnChanges": true
},
+ "replicationSpec": {
+ "$ref": "#/types/gcp:storage/TransferJobReplicationSpec:TransferJobReplicationSpec",
+ "description": "Replication specification. Structure documented below. User should not configure `schedule`, `event_stream` with this argument. One of `transfer_spec`, or `replication_spec` must be specified.\n\n- - -\n"
+ },
"schedule": {
"$ref": "#/types/gcp:storage/TransferJobSchedule:TransferJobSchedule",
"description": "Schedule specification defining when the Transfer Job should be scheduled to start, end and what time to run. Structure documented below. Either `schedule` or `event_stream` must be set.\n"
@@ -273942,12 +277178,11 @@
},
"transferSpec": {
"$ref": "#/types/gcp:storage/TransferJobTransferSpec:TransferJobTransferSpec",
- "description": "Transfer specification. Structure documented below.\n\n- - -\n"
+ "description": "Transfer specification. Structure documented below. One of `transfer_spec`, or `replication_spec` can be specified.\n"
}
},
"requiredInputs": [
- "description",
- "transferSpec"
+ "description"
],
"stateInputs": {
"description": "Input properties used for looking up and filtering TransferJob resources.\n",
@@ -273985,6 +277220,10 @@
"description": "The project in which the resource belongs. If it\nis not provided, the provider project is used.\n",
"willReplaceOnChanges": true
},
+ "replicationSpec": {
+ "$ref": "#/types/gcp:storage/TransferJobReplicationSpec:TransferJobReplicationSpec",
+ "description": "Replication specification. Structure documented below. User should not configure `schedule`, `event_stream` with this argument. One of `transfer_spec`, or `replication_spec` must be specified.\n\n- - -\n"
+ },
"schedule": {
"$ref": "#/types/gcp:storage/TransferJobSchedule:TransferJobSchedule",
"description": "Schedule specification defining when the Transfer Job should be scheduled to start, end and what time to run. Structure documented below. Either `schedule` or `event_stream` must be set.\n"
@@ -273995,7 +277234,7 @@
},
"transferSpec": {
"$ref": "#/types/gcp:storage/TransferJobTransferSpec:TransferJobTransferSpec",
- "description": "Transfer specification. Structure documented below.\n\n- - -\n"
+ "description": "Transfer specification. Structure documented below. One of `transfer_spec`, or `replication_spec` can be specified.\n"
}
},
"type": "object"
@@ -276143,7 +279382,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 bqDataset = new gcp.bigquery.Dataset(\"bq_dataset\", {\n datasetId: \"some_dataset\",\n friendlyName: \"logging dataset\",\n description: \"This is a dataset that requests are logged to\",\n location: \"US\",\n deleteContentsOnDestroy: true,\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 predictRequestResponseLoggingConfig: {\n bigqueryDestination: {\n outputUri: pulumi.all([project, bqDataset.datasetId]).apply(([project, datasetId]) =\u003e `bq://${project.projectId}.${datasetId}.request_response_logging`),\n },\n enabled: true,\n samplingRate: 0.1,\n },\n trafficSplit: JSON.stringify({\n \"12345\": 100,\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 json\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])\nbq_dataset = gcp.bigquery.Dataset(\"bq_dataset\",\n dataset_id=\"some_dataset\",\n friendly_name=\"logging dataset\",\n description=\"This is a dataset that requests are logged to\",\n location=\"US\",\n delete_contents_on_destroy=True)\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 predict_request_response_logging_config={\n \"bigquery_destination\": {\n \"output_uri\": bq_dataset.dataset_id.apply(lambda dataset_id: f\"bq://{project.project_id}.{dataset_id}.request_response_logging\"),\n },\n \"enabled\": True,\n \"sampling_rate\": 0.1,\n },\n traffic_split=json.dumps({\n \"12345\": 100,\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 System.Text.Json;\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 bqDataset = new Gcp.BigQuery.Dataset(\"bq_dataset\", new()\n {\n DatasetId = \"some_dataset\",\n FriendlyName = \"logging dataset\",\n Description = \"This is a dataset that requests are logged to\",\n Location = \"US\",\n DeleteContentsOnDestroy = true,\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 PredictRequestResponseLoggingConfig = new Gcp.Vertex.Inputs.AiEndpointPredictRequestResponseLoggingConfigArgs\n {\n BigqueryDestination = new Gcp.Vertex.Inputs.AiEndpointPredictRequestResponseLoggingConfigBigqueryDestinationArgs\n {\n OutputUri = Output.Tuple(project, bqDataset.DatasetId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n return $\"bq://{project.Apply(getProjectResult =\u003e getProjectResult.ProjectId)}.{datasetId}.request_response_logging\";\n }),\n },\n Enabled = true,\n SamplingRate = 0.1,\n },\n TrafficSplit = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"12345\"] = 100,\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\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tbqDataset, err := bigquery.NewDataset(ctx, \"bq_dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"some_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"logging dataset\"),\n\t\t\tDescription: pulumi.String(\"This is a dataset that requests are logged to\"),\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\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\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\"12345\": 100,\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 = 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\tPredictRequestResponseLoggingConfig: \u0026vertex.AiEndpointPredictRequestResponseLoggingConfigArgs{\n\t\t\t\tBigqueryDestination: \u0026vertex.AiEndpointPredictRequestResponseLoggingConfigBigqueryDestinationArgs{\n\t\t\t\t\tOutputUri: bqDataset.DatasetId.ApplyT(func(datasetId string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"bq://%v.%v.request_response_logging\", project.ProjectId, datasetId), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tSamplingRate: pulumi.Float64(0.1),\n\t\t\t},\n\t\t\tTrafficSplit: pulumi.String(json0),\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.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.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\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.vertex.inputs.AiEndpointPredictRequestResponseLoggingConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiEndpointPredictRequestResponseLoggingConfigBigqueryDestinationArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 var bqDataset = new Dataset(\"bqDataset\", DatasetArgs.builder()\n .datasetId(\"some_dataset\")\n .friendlyName(\"logging dataset\")\n .description(\"This is a dataset that requests are logged to\")\n .location(\"US\")\n .deleteContentsOnDestroy(true)\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 .predictRequestResponseLoggingConfig(AiEndpointPredictRequestResponseLoggingConfigArgs.builder()\n .bigqueryDestination(AiEndpointPredictRequestResponseLoggingConfigBigqueryDestinationArgs.builder()\n .outputUri(bqDataset.datasetId().applyValue(datasetId -\u003e String.format(\"bq://%s.%s.request_response_logging\", project.applyValue(getProjectResult -\u003e getProjectResult.projectId()),datasetId)))\n .build())\n .enabled(true)\n .samplingRate(0.1)\n .build())\n .trafficSplit(serializeJson(\n jsonObject(\n jsonProperty(\"12345\", 100)\n )))\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 predictRequestResponseLoggingConfig:\n bigqueryDestination:\n outputUri: bq://${project.projectId}.${bqDataset.datasetId}.request_response_logging\n enabled: true\n samplingRate: 0.1\n trafficSplit:\n fn::toJSON:\n '12345': 100\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\n bqDataset:\n type: gcp:bigquery:Dataset\n name: bq_dataset\n properties:\n datasetId: some_dataset\n friendlyName: logging dataset\n description: This is a dataset that requests are logged to\n location: US\n deleteContentsOnDestroy: true\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Endpoint 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 project = gcp.organizations.getProject({});\nconst endpoint = new gcp.vertex.AiEndpoint(\"endpoint\", {\n name: \"endpoint-name_8270\",\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 privateServiceConnectConfig: {\n enablePrivateServiceConnect: true,\n projectAllowlists: [project.then(project =\u003e project.projectId)],\n enableSecurePrivateServiceConnect: false,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nendpoint = gcp.vertex.AiEndpoint(\"endpoint\",\n name=\"endpoint-name_8270\",\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 private_service_connect_config={\n \"enable_private_service_connect\": True,\n \"project_allowlists\": [project.project_id],\n \"enable_secure_private_service_connect\": 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 project = Gcp.Organizations.GetProject.Invoke();\n\n var endpoint = new Gcp.Vertex.AiEndpoint(\"endpoint\", new()\n {\n Name = \"endpoint-name_8270\",\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 PrivateServiceConnectConfig = new Gcp.Vertex.Inputs.AiEndpointPrivateServiceConnectConfigArgs\n {\n EnablePrivateServiceConnect = true,\n ProjectAllowlists = new[]\n {\n project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n },\n EnableSecurePrivateServiceConnect = false,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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_8270\"),\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\tPrivateServiceConnectConfig: \u0026vertex.AiEndpointPrivateServiceConnectConfigArgs{\n\t\t\t\tEnablePrivateServiceConnect: pulumi.Bool(true),\n\t\t\t\tProjectAllowlists: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(project.ProjectId),\n\t\t\t\t},\n\t\t\t\tEnableSecurePrivateServiceConnect: 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.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.AiEndpointPrivateServiceConnectConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\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 endpoint = new AiEndpoint(\"endpoint\", AiEndpointArgs.builder()\n .name(\"endpoint-name_8270\")\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 .privateServiceConnectConfig(AiEndpointPrivateServiceConnectConfigArgs.builder()\n .enablePrivateServiceConnect(true)\n .projectAllowlists(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .enableSecurePrivateServiceConnect(false)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n endpoint:\n type: gcp:vertex:AiEndpoint\n properties:\n name: endpoint-name_8270\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 privateServiceConnectConfig:\n enablePrivateServiceConnect: true\n projectAllowlists:\n - ${project.projectId}\n enableSecurePrivateServiceConnect: false\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Endpoint Dedicated Endpoint\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst endpoint = new gcp.vertex.AiEndpoint(\"endpoint\", {\n name: \"endpoint-name_41150\",\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 dedicatedEndpointEnabled: true,\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nendpoint = gcp.vertex.AiEndpoint(\"endpoint\",\n name=\"endpoint-name_41150\",\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 dedicated_endpoint_enabled=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 endpoint = new Gcp.Vertex.AiEndpoint(\"endpoint\", new()\n {\n Name = \"endpoint-name_41150\",\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 DedicatedEndpointEnabled = 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/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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.NewAiEndpoint(ctx, \"endpoint\", \u0026vertex.AiEndpointArgs{\n\t\t\tName: pulumi.String(\"endpoint-name_41150\"),\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\tDedicatedEndpointEnabled: 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, \u0026organizations.LookupProjectArgs{}, 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.AiEndpoint;\nimport com.pulumi.gcp.vertex.AiEndpointArgs;\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 endpoint = new AiEndpoint(\"endpoint\", AiEndpointArgs.builder()\n .name(\"endpoint-name_41150\")\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 .dedicatedEndpointEnabled(true)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n endpoint:\n type: gcp:vertex:AiEndpoint\n properties:\n name: endpoint-name_41150\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 dedicatedEndpointEnabled: true\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 bqDataset = new gcp.bigquery.Dataset(\"bq_dataset\", {\n datasetId: \"some_dataset\",\n friendlyName: \"logging dataset\",\n description: \"This is a dataset that requests are logged to\",\n location: \"US\",\n deleteContentsOnDestroy: true,\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 predictRequestResponseLoggingConfig: {\n bigqueryDestination: {\n outputUri: pulumi.all([project, bqDataset.datasetId]).apply(([project, datasetId]) =\u003e `bq://${project.projectId}.${datasetId}.request_response_logging`),\n },\n enabled: true,\n samplingRate: 0.1,\n },\n trafficSplit: JSON.stringify({\n \"12345\": 100,\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 json\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])\nbq_dataset = gcp.bigquery.Dataset(\"bq_dataset\",\n dataset_id=\"some_dataset\",\n friendly_name=\"logging dataset\",\n description=\"This is a dataset that requests are logged to\",\n location=\"US\",\n delete_contents_on_destroy=True)\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 predict_request_response_logging_config={\n \"bigquery_destination\": {\n \"output_uri\": bq_dataset.dataset_id.apply(lambda dataset_id: f\"bq://{project.project_id}.{dataset_id}.request_response_logging\"),\n },\n \"enabled\": True,\n \"sampling_rate\": 0.1,\n },\n traffic_split=json.dumps({\n \"12345\": 100,\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 System.Text.Json;\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 bqDataset = new Gcp.BigQuery.Dataset(\"bq_dataset\", new()\n {\n DatasetId = \"some_dataset\",\n FriendlyName = \"logging dataset\",\n Description = \"This is a dataset that requests are logged to\",\n Location = \"US\",\n DeleteContentsOnDestroy = true,\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 PredictRequestResponseLoggingConfig = new Gcp.Vertex.Inputs.AiEndpointPredictRequestResponseLoggingConfigArgs\n {\n BigqueryDestination = new Gcp.Vertex.Inputs.AiEndpointPredictRequestResponseLoggingConfigBigqueryDestinationArgs\n {\n OutputUri = Output.Tuple(project, bqDataset.DatasetId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n return $\"bq://{project.Apply(getProjectResult =\u003e getProjectResult.ProjectId)}.{datasetId}.request_response_logging\";\n }),\n },\n Enabled = true,\n SamplingRate = 0.1,\n },\n TrafficSplit = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"12345\"] = 100,\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\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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\tbqDataset, err := bigquery.NewDataset(ctx, \"bq_dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"some_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"logging dataset\"),\n\t\t\tDescription: pulumi.String(\"This is a dataset that requests are logged to\"),\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\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\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\"12345\": 100,\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 = 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\tPredictRequestResponseLoggingConfig: \u0026vertex.AiEndpointPredictRequestResponseLoggingConfigArgs{\n\t\t\t\tBigqueryDestination: \u0026vertex.AiEndpointPredictRequestResponseLoggingConfigBigqueryDestinationArgs{\n\t\t\t\t\tOutputUri: bqDataset.DatasetId.ApplyT(func(datasetId string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"bq://%v.%v.request_response_logging\", project.ProjectId, datasetId), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tSamplingRate: pulumi.Float64(0.1),\n\t\t\t},\n\t\t\tTrafficSplit: pulumi.String(json0),\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.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.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\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.vertex.inputs.AiEndpointPredictRequestResponseLoggingConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiEndpointPredictRequestResponseLoggingConfigBigqueryDestinationArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 var bqDataset = new Dataset(\"bqDataset\", DatasetArgs.builder()\n .datasetId(\"some_dataset\")\n .friendlyName(\"logging dataset\")\n .description(\"This is a dataset that requests are logged to\")\n .location(\"US\")\n .deleteContentsOnDestroy(true)\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 .predictRequestResponseLoggingConfig(AiEndpointPredictRequestResponseLoggingConfigArgs.builder()\n .bigqueryDestination(AiEndpointPredictRequestResponseLoggingConfigBigqueryDestinationArgs.builder()\n .outputUri(bqDataset.datasetId().applyValue(datasetId -\u003e String.format(\"bq://%s.%s.request_response_logging\", project.applyValue(getProjectResult -\u003e getProjectResult.projectId()),datasetId)))\n .build())\n .enabled(true)\n .samplingRate(0.1)\n .build())\n .trafficSplit(serializeJson(\n jsonObject(\n jsonProperty(\"12345\", 100)\n )))\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 predictRequestResponseLoggingConfig:\n bigqueryDestination:\n outputUri: bq://${project.projectId}.${bqDataset.datasetId}.request_response_logging\n enabled: true\n samplingRate: 0.1\n trafficSplit:\n fn::toJSON:\n '12345': 100\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\n bqDataset:\n type: gcp:bigquery:Dataset\n name: bq_dataset\n properties:\n datasetId: some_dataset\n friendlyName: logging dataset\n description: This is a dataset that requests are logged to\n location: US\n deleteContentsOnDestroy: true\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Endpoint 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 project = gcp.organizations.getProject({});\nconst endpoint = new gcp.vertex.AiEndpoint(\"endpoint\", {\n name: \"endpoint-name_89313\",\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 privateServiceConnectConfig: {\n enablePrivateServiceConnect: true,\n projectAllowlists: [project.then(project =\u003e project.projectId)],\n enableSecurePrivateServiceConnect: false,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nendpoint = gcp.vertex.AiEndpoint(\"endpoint\",\n name=\"endpoint-name_89313\",\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 private_service_connect_config={\n \"enable_private_service_connect\": True,\n \"project_allowlists\": [project.project_id],\n \"enable_secure_private_service_connect\": 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 project = Gcp.Organizations.GetProject.Invoke();\n\n var endpoint = new Gcp.Vertex.AiEndpoint(\"endpoint\", new()\n {\n Name = \"endpoint-name_89313\",\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 PrivateServiceConnectConfig = new Gcp.Vertex.Inputs.AiEndpointPrivateServiceConnectConfigArgs\n {\n EnablePrivateServiceConnect = true,\n ProjectAllowlists = new[]\n {\n project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n },\n EnableSecurePrivateServiceConnect = false,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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_89313\"),\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\tPrivateServiceConnectConfig: \u0026vertex.AiEndpointPrivateServiceConnectConfigArgs{\n\t\t\t\tEnablePrivateServiceConnect: pulumi.Bool(true),\n\t\t\t\tProjectAllowlists: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(project.ProjectId),\n\t\t\t\t},\n\t\t\t\tEnableSecurePrivateServiceConnect: 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.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.AiEndpointPrivateServiceConnectConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\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 endpoint = new AiEndpoint(\"endpoint\", AiEndpointArgs.builder()\n .name(\"endpoint-name_89313\")\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 .privateServiceConnectConfig(AiEndpointPrivateServiceConnectConfigArgs.builder()\n .enablePrivateServiceConnect(true)\n .projectAllowlists(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .enableSecurePrivateServiceConnect(false)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n endpoint:\n type: gcp:vertex:AiEndpoint\n properties:\n name: endpoint-name_89313\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 privateServiceConnectConfig:\n enablePrivateServiceConnect: true\n projectAllowlists:\n - ${project.projectId}\n enableSecurePrivateServiceConnect: false\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Endpoint Dedicated Endpoint\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst endpoint = new gcp.vertex.AiEndpoint(\"endpoint\", {\n name: \"endpoint-name_60646\",\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 dedicatedEndpointEnabled: true,\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nendpoint = gcp.vertex.AiEndpoint(\"endpoint\",\n name=\"endpoint-name_60646\",\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 dedicated_endpoint_enabled=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 endpoint = new Gcp.Vertex.AiEndpoint(\"endpoint\", new()\n {\n Name = \"endpoint-name_60646\",\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 DedicatedEndpointEnabled = 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/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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.NewAiEndpoint(ctx, \"endpoint\", \u0026vertex.AiEndpointArgs{\n\t\t\tName: pulumi.String(\"endpoint-name_60646\"),\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\tDedicatedEndpointEnabled: 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, \u0026organizations.LookupProjectArgs{}, 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.AiEndpoint;\nimport com.pulumi.gcp.vertex.AiEndpointArgs;\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 endpoint = new AiEndpoint(\"endpoint\", AiEndpointArgs.builder()\n .name(\"endpoint-name_60646\")\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 .dedicatedEndpointEnabled(true)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n endpoint:\n type: gcp:vertex:AiEndpoint\n properties:\n name: endpoint-name_60646\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 dedicatedEndpointEnabled: true\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",
@@ -277266,7 +280505,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 \"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(\n project=tf_test_table.project,\n dataset_id=tf_test_table.dataset_id,\n table_id=tf_test_table.table_id\n).apply(lambda resolved_outputs: f\"bq://{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\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/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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(\n project=sample_table.project,\n dataset_id=sample_table.dataset_id,\n table_id=sample_table.table_id\n).apply(lambda resolved_outputs: f\"bq://{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\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/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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_89313\",\n name: \"tf-test_60646\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n deletionPolicy: \"DELETE\",\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_89313\",\n name=\"tf-test_60646\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\",\n deletion_policy=\"DELETE\")\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(\n project=sample_table.project,\n dataset_id=sample_table.dataset_id,\n table_id=sample_table.table_id\n).apply(lambda resolved_outputs: f\"bq://{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\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_89313\",\n Name = \"tf-test_60646\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n DeletionPolicy = \"DELETE\",\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/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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_89313\"),\n\t\t\tName: pulumi.String(\"tf-test_60646\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\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\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_89313\")\n .name(\"tf-test_60646\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .deletionPolicy(\"DELETE\")\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_89313\n name: tf-test_60646\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n deletionPolicy: DELETE\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(\n project=tf_test_table.project,\n dataset_id=tf_test_table.dataset_id,\n table_id=tf_test_table.table_id\n).apply(lambda resolved_outputs: f\"bq://{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\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/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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(\n project=tf_test_table.project,\n dataset_id=tf_test_table.dataset_id,\n table_id=tf_test_table.table_id\n).apply(lambda resolved_outputs: f\"bq://{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\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/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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(\n project=sample_table.project,\n dataset_id=sample_table.dataset_id,\n table_id=sample_table.table_id\n).apply(lambda resolved_outputs: f\"bq://{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\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/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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_9394\",\n name: \"tf-test_11380\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n deletionPolicy: \"DELETE\",\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_9394\",\n name=\"tf-test_11380\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\",\n deletion_policy=\"DELETE\")\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(\n project=sample_table.project,\n dataset_id=sample_table.dataset_id,\n table_id=sample_table.table_id\n).apply(lambda resolved_outputs: f\"bq://{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\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_9394\",\n Name = \"tf-test_11380\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n DeletionPolicy = \"DELETE\",\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/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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_9394\"),\n\t\t\tName: pulumi.String(\"tf-test_11380\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\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\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_9394\")\n .name(\"tf-test_11380\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .deletionPolicy(\"DELETE\")\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_9394\n name: tf-test_11380\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n deletionPolicy: DELETE\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(\n project=tf_test_table.project,\n dataset_id=tf_test_table.dataset_id,\n table_id=tf_test_table.table_id\n).apply(lambda resolved_outputs: f\"bq://{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\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/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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, \u0026organizations.LookupProjectArgs{}, 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",
@@ -281961,6 +285200,10 @@
"description": "The combination of labels configured directly on the resource\nand default labels configured on the provider.\n",
"secret": true
},
+ "sourceWorkstation": {
+ "type": "string",
+ "description": "Full resource name of the source workstation from which the workstation's persistent\ndirectories will be cloned from during creation.\n"
+ },
"state": {
"type": "string",
"description": "Current state of the workstation.\n"
@@ -282033,6 +285276,11 @@
"description": "The ID of the project in which the resource belongs.\nIf it is not provided, the provider project is used.\n",
"willReplaceOnChanges": true
},
+ "sourceWorkstation": {
+ "type": "string",
+ "description": "Full resource name of the source workstation from which the workstation's persistent\ndirectories will be cloned from during creation.\n",
+ "willReplaceOnChanges": true
+ },
"workstationClusterId": {
"type": "string",
"description": "The ID of the parent workstation cluster.\n",
@@ -282127,6 +285375,11 @@
"description": "The combination of labels configured directly on the resource\nand default labels configured on the provider.\n",
"secret": true
},
+ "sourceWorkstation": {
+ "type": "string",
+ "description": "Full resource name of the source workstation from which the workstation's persistent\ndirectories will be cloned from during creation.\n",
+ "willReplaceOnChanges": true
+ },
"state": {
"type": "string",
"description": "Current state of the workstation.\n"
@@ -284724,6 +287977,12 @@
"$ref": "#/types/gcp:artifactregistry/getRepositoryVirtualRepositoryConfig:getRepositoryVirtualRepositoryConfig"
},
"type": "array"
+ },
+ "vulnerabilityScanningConfigs": {
+ "items": {
+ "$ref": "#/types/gcp:artifactregistry/getRepositoryVulnerabilityScanningConfig:getRepositoryVulnerabilityScanningConfig"
+ },
+ "type": "array"
}
},
"required": [
@@ -284745,6 +288004,7 @@
"pulumiLabels",
"updateTime",
"virtualRepositoryConfigs",
+ "vulnerabilityScanningConfigs",
"id"
],
"type": "object"
@@ -284813,20 +288073,25 @@
}
},
"gcp:backupdisasterrecovery/getBackup:getBackup": {
+ "description": "A Backup and DR Backup.\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 = gcp.backupdisasterrecovery.getBackup({\n location: \"us-central1\",\n project: \"project-test\",\n dataSourceId: \"ds-test\",\n backupVaultId: \"bv-test\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfoo = gcp.backupdisasterrecovery.get_backup(location=\"us-central1\",\n project=\"project-test\",\n data_source_id=\"ds-test\",\n backup_vault_id=\"bv-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 foo = Gcp.BackupDisasterRecovery.GetBackup.Invoke(new()\n {\n Location = \"us-central1\",\n Project = \"project-test\",\n DataSourceId = \"ds-test\",\n BackupVaultId = \"bv-test\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/backupdisasterrecovery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := backupdisasterrecovery.GetBackup(ctx, \u0026backupdisasterrecovery.GetBackupArgs{\n\t\t\tLocation: \"us-central1\",\n\t\t\tProject: \"project-test\",\n\t\t\tDataSourceId: \"ds-test\",\n\t\t\tBackupVaultId: \"bv-test\",\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.backupdisasterrecovery.BackupdisasterrecoveryFunctions;\nimport com.pulumi.gcp.backupdisasterrecovery.inputs.GetBackupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var foo = BackupdisasterrecoveryFunctions.getBackup(GetBackupArgs.builder()\n .location(\"us-central1\")\n .project(\"project-test\")\n .dataSourceId(\"ds-test\")\n .backupVaultId(\"bv-test\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n foo:\n fn::invoke:\n function: gcp:backupdisasterrecovery:getBackup\n arguments:\n location: us-central1\n project: project-test\n dataSourceId: ds-test\n backupVaultId: bv-test\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
"inputs": {
"description": "A collection of arguments for invoking getBackup.\n",
"properties": {
"backupVaultId": {
- "type": "string"
+ "type": "string",
+ "description": "The ID of the Backup Vault of the Data Source in which the Backup belongs.\n"
},
"dataSourceId": {
- "type": "string"
+ "type": "string",
+ "description": "The ID of the Data Source in which the Backup belongs.\n"
},
"location": {
- "type": "string"
+ "type": "string",
+ "description": "The location in which the Backup belongs.\n"
},
"project": {
- "type": "string"
+ "type": "string",
+ "description": "The Google Cloud Project in which the Backup belongs.\n"
}
},
"type": "object",
@@ -285208,20 +288473,25 @@
}
},
"gcp:backupdisasterrecovery/getDataSource:getDataSource": {
+ "description": "A Backup and DR Data Source.\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 = gcp.backupdisasterrecovery.getDataSource({\n location: \"us-central1\",\n project: \"project-test\",\n dataSourceId: \"ds-test\",\n backupVaultId: \"bv-test\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfoo = gcp.backupdisasterrecovery.get_data_source(location=\"us-central1\",\n project=\"project-test\",\n data_source_id=\"ds-test\",\n backup_vault_id=\"bv-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 foo = Gcp.BackupDisasterRecovery.GetDataSource.Invoke(new()\n {\n Location = \"us-central1\",\n Project = \"project-test\",\n DataSourceId = \"ds-test\",\n BackupVaultId = \"bv-test\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/backupdisasterrecovery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := backupdisasterrecovery.GetDataSource(ctx, \u0026backupdisasterrecovery.GetDataSourceArgs{\n\t\t\tLocation: \"us-central1\",\n\t\t\tProject: \"project-test\",\n\t\t\tDataSourceId: \"ds-test\",\n\t\t\tBackupVaultId: \"bv-test\",\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.backupdisasterrecovery.BackupdisasterrecoveryFunctions;\nimport com.pulumi.gcp.backupdisasterrecovery.inputs.GetDataSourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var foo = BackupdisasterrecoveryFunctions.getDataSource(GetDataSourceArgs.builder()\n .location(\"us-central1\")\n .project(\"project-test\")\n .dataSourceId(\"ds-test\")\n .backupVaultId(\"bv-test\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n foo:\n fn::invoke:\n function: gcp:backupdisasterrecovery:getDataSource\n arguments:\n location: us-central1\n project: project-test\n dataSourceId: ds-test\n backupVaultId: bv-test\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
"inputs": {
"description": "A collection of arguments for invoking getDataSource.\n",
"properties": {
"backupVaultId": {
- "type": "string"
+ "type": "string",
+ "description": "The ID of the Backup Vault in which the Data Source belongs.\n"
},
"dataSourceId": {
- "type": "string"
+ "type": "string",
+ "description": "The ID of the Data Source.\n"
},
"location": {
- "type": "string"
+ "type": "string",
+ "description": "The location in which the Data Source belongs.\n"
},
"project": {
- "type": "string"
+ "type": "string",
+ "description": "The Google Cloud Project in which the Data Source belongs.\n"
}
},
"type": "object",
@@ -292441,12 +295711,17 @@
"name": {
"type": "string"
},
+ "networkId": {
+ "description": "The numeric unique identifier for the resource.\n",
+ "type": "integer"
+ },
"networkProfile": {
"description": "Beta A full or partial URL of the network profile to apply to this network.\n",
"type": "string"
},
"numericId": {
- "description": "The numeric unique identifier for the resource.\n",
+ "deprecationMessage": "`numeric_id` is deprecated and will be removed in a future major release. Use `network_id` instead.",
+ "description": "(Deprecated) The numeric unique identifier for the resource. `numeric_id` is deprecated and will be removed in a future major release. Use `network_id` instead.\n",
"type": "string"
},
"project": {
@@ -292469,6 +295744,7 @@
"gatewayIpv4",
"internalIpv6Range",
"name",
+ "networkId",
"numericId",
"selfLink",
"subnetworksSelfLinks",
@@ -294705,6 +297981,10 @@
},
"selfLink": {
"type": "string"
+ },
+ "subnetworkId": {
+ "description": "The numeric ID of the resource.\n",
+ "type": "integer"
}
},
"required": [
@@ -294718,6 +297998,7 @@
"region",
"secondaryIpRanges",
"selfLink",
+ "subnetworkId",
"id"
],
"type": "object"
@@ -298687,6 +301968,114 @@
"type": "object"
}
},
+ "gcp:gkehub/getFeature:getFeature": {
+ "inputs": {
+ "description": "A collection of arguments for invoking getFeature.\n",
+ "properties": {
+ "location": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "project": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "location",
+ "name"
+ ]
+ },
+ "outputs": {
+ "description": "A collection of values returned by getFeature.\n",
+ "properties": {
+ "createTime": {
+ "type": "string"
+ },
+ "deleteTime": {
+ "type": "string"
+ },
+ "effectiveLabels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "secret": true,
+ "type": "object"
+ },
+ "fleetDefaultMemberConfigs": {
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureFleetDefaultMemberConfig:getFeatureFleetDefaultMemberConfig"
+ },
+ "type": "array"
+ },
+ "id": {
+ "description": "The provider-assigned unique ID for this managed resource.\n",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "location": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "project": {
+ "type": "string"
+ },
+ "pulumiLabels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "secret": true,
+ "type": "object"
+ },
+ "resourceStates": {
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureResourceState:getFeatureResourceState"
+ },
+ "type": "array"
+ },
+ "specs": {
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureSpec:getFeatureSpec"
+ },
+ "type": "array"
+ },
+ "states": {
+ "items": {
+ "$ref": "#/types/gcp:gkehub/getFeatureState:getFeatureState"
+ },
+ "type": "array"
+ },
+ "updateTime": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "createTime",
+ "deleteTime",
+ "effectiveLabels",
+ "fleetDefaultMemberConfigs",
+ "labels",
+ "location",
+ "name",
+ "resourceStates",
+ "specs",
+ "states",
+ "pulumiLabels",
+ "updateTime",
+ "id"
+ ],
+ "type": "object"
+ }
+ },
"gcp:gkehub/getFeatureIamPolicy:getFeatureIamPolicy": {
"description": "Retrieves the current IAM policy data for feature\n\n\n## example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst policy = gcp.gkehub.getFeatureIamPolicy({\n project: feature.project,\n location: feature.location,\n name: feature.name,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npolicy = gcp.gkehub.get_feature_iam_policy(project=feature[\"project\"],\n location=feature[\"location\"],\n name=feature[\"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 policy = Gcp.GkeHub.GetFeatureIamPolicy.Invoke(new()\n {\n Project = feature.Project,\n Location = feature.Location,\n Name = feature.Name,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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.LookupFeatureIamPolicy(ctx, \u0026gkehub.LookupFeatureIamPolicyArgs{\n\t\t\tProject: pulumi.StringRef(feature.Project),\n\t\t\tLocation: pulumi.StringRef(feature.Location),\n\t\t\tName: feature.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.gkehub.GkehubFunctions;\nimport com.pulumi.gcp.gkehub.inputs.GetFeatureIamPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var policy = GkehubFunctions.getFeatureIamPolicy(GetFeatureIamPolicyArgs.builder()\n .project(feature.project())\n .location(feature.location())\n .name(feature.name())\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n policy:\n fn::invoke:\n function: gcp:gkehub:getFeatureIamPolicy\n arguments:\n project: ${feature.project}\n location: ${feature.location}\n name: ${feature.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
"inputs": {
@@ -300078,6 +303467,44 @@
"type": "object"
}
},
+ "gcp:kms/getAutokeyConfig:getAutokeyConfig": {
+ "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 myAutokeyConfig = gcp.kms.getAutokeyConfig({\n folder: \"folders/123\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_autokey_config = gcp.kms.get_autokey_config(folder=\"folders/123\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myAutokeyConfig = Gcp.Kms.GetAutokeyConfig.Invoke(new()\n {\n Folder = \"folders/123\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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.LookupAutokeyConfig(ctx, \u0026kms.LookupAutokeyConfigArgs{\n\t\t\tFolder: \"folders/123\",\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.kms.KmsFunctions;\nimport com.pulumi.gcp.kms.inputs.GetAutokeyConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var myAutokeyConfig = KmsFunctions.getAutokeyConfig(GetAutokeyConfigArgs.builder()\n .folder(\"folders/123\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n myAutokeyConfig:\n fn::invoke:\n function: gcp:kms:getAutokeyConfig\n arguments:\n folder: folders/123\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+ "inputs": {
+ "description": "A collection of arguments for invoking getAutokeyConfig.\n",
+ "properties": {
+ "folder": {
+ "type": "string",
+ "description": "The folder in which the AutokeyConfig is configured. If it\nis not provided, the provider folder is used.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "folder"
+ ]
+ },
+ "outputs": {
+ "description": "A collection of values returned by getAutokeyConfig.\n",
+ "properties": {
+ "folder": {
+ "type": "string"
+ },
+ "id": {
+ "description": "The provider-assigned unique ID for this managed resource.\n",
+ "type": "string"
+ },
+ "keyProject": {
+ "description": "The identifier of the project hosting KMS KeyRings and Keys generated by Autokey. Its format is `projects/{projectId}`.\n",
+ "type": "string"
+ }
+ },
+ "required": [
+ "folder",
+ "keyProject",
+ "id"
+ ],
+ "type": "object"
+ }
+ },
"gcp:kms/getCryptoKeyIamPolicy:getCryptoKeyIamPolicy": {
"description": "Retrieves the current IAM policy data for a Google Cloud KMS crypto key.\n\n## example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst foo = gcp.kms.getCryptoKeyIamPolicy({\n cryptoKeyId: cryptoKey.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfoo = gcp.kms.get_crypto_key_iam_policy(crypto_key_id=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 foo = Gcp.Kms.GetCryptoKeyIamPolicy.Invoke(new()\n {\n CryptoKeyId = cryptoKey.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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.GetCryptoKeyIamPolicy(ctx, \u0026kms.GetCryptoKeyIamPolicyArgs{\n\t\t\tCryptoKeyId: cryptoKey.Id,\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.kms.KmsFunctions;\nimport com.pulumi.gcp.kms.inputs.GetCryptoKeyIamPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var foo = KmsFunctions.getCryptoKeyIamPolicy(GetCryptoKeyIamPolicyArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n foo:\n fn::invoke:\n function: gcp:kms:getCryptoKeyIamPolicy\n arguments:\n cryptoKeyId: ${cryptoKey.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
"inputs": {
@@ -300750,6 +304177,67 @@
"type": "object"
}
},
+ "gcp:kms/getKeyHandle:getKeyHandle": {
+ "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 myKeyHandle = gcp.kms.getKeyHandle({\n name: \"eed58b7b-20ad-4da8-ad85-ba78a0d5ab87\",\n location: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_key_handle = gcp.kms.get_key_handle(name=\"eed58b7b-20ad-4da8-ad85-ba78a0d5ab87\",\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 myKeyHandle = Gcp.Kms.GetKeyHandle.Invoke(new()\n {\n Name = \"eed58b7b-20ad-4da8-ad85-ba78a0d5ab87\",\n Location = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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.LookupKeyHandle(ctx, \u0026kms.LookupKeyHandleArgs{\n\t\t\tName: \"eed58b7b-20ad-4da8-ad85-ba78a0d5ab87\",\n\t\t\tLocation: \"us-central1\",\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.kms.KmsFunctions;\nimport com.pulumi.gcp.kms.inputs.GetKeyHandleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var myKeyHandle = KmsFunctions.getKeyHandle(GetKeyHandleArgs.builder()\n .name(\"eed58b7b-20ad-4da8-ad85-ba78a0d5ab87\")\n .location(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n myKeyHandle:\n fn::invoke:\n function: gcp:kms:getKeyHandle\n arguments:\n name: eed58b7b-20ad-4da8-ad85-ba78a0d5ab87\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
+ "inputs": {
+ "description": "A collection of arguments for invoking getKeyHandle.\n",
+ "properties": {
+ "location": {
+ "type": "string",
+ "description": "The Google Cloud Platform location for the KeyHandle.\nA full list of valid locations can be found by running `gcloud kms locations list`.\n\n- - -\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "The KeyHandle's name.\nA KeyHandle name must exist within the provided location and must be valid UUID.\n"
+ },
+ "project": {
+ "type": "string",
+ "description": "The project in which the resource belongs. If it\nis not provided, the provider project is used.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "location",
+ "name"
+ ]
+ },
+ "outputs": {
+ "description": "A collection of values returned by getKeyHandle.\n",
+ "properties": {
+ "id": {
+ "description": "The provider-assigned unique ID for this managed resource.\n",
+ "type": "string"
+ },
+ "kmsKey": {
+ "description": "The identifier of the KMS Key created for the KeyHandle. Its format is `projects/{projectId}/locations/{location}/keyRings/{keyRingName}/cryptoKeys/{cryptoKeyName}`.\n",
+ "type": "string"
+ },
+ "location": {
+ "description": "The location of the KMS Key and KeyHandle.\n",
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "project": {
+ "description": "The identifier of the project where KMS KeyHandle is created.\n",
+ "type": "string"
+ },
+ "resourceTypeSelector": {
+ "description": "Indicates the resource type that the resulting CryptoKey is meant to protect, e.g. {SERVICE}.googleapis.com/{TYPE}. See documentation for supported resource types.\n",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kmsKey",
+ "location",
+ "name",
+ "resourceTypeSelector",
+ "id"
+ ],
+ "type": "object"
+ }
+ },
"gcp:kms/getKeyRingIamPolicy:getKeyRingIamPolicy": {
"description": "Retrieves the current IAM policy data for a Google Cloud KMS key ring.\n\n## example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testKeyRingIamPolicy = gcp.kms.getKeyRingIamPolicy({\n keyRingId: \"{project_id}/{location_name}/{key_ring_name}\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_key_ring_iam_policy = gcp.kms.get_key_ring_iam_policy(key_ring_id=\"{project_id}/{location_name}/{key_ring_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 testKeyRingIamPolicy = Gcp.Kms.GetKeyRingIamPolicy.Invoke(new()\n {\n KeyRingId = \"{project_id}/{location_name}/{key_ring_name}\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/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.GetKeyRingIamPolicy(ctx, \u0026kms.GetKeyRingIamPolicyArgs{\n\t\t\tKeyRingId: \"{project_id}/{location_name}/{key_ring_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.kms.KmsFunctions;\nimport com.pulumi.gcp.kms.inputs.GetKeyRingIamPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var testKeyRingIamPolicy = KmsFunctions.getKeyRingIamPolicy(GetKeyRingIamPolicyArgs.builder()\n .keyRingId(\"{project_id}/{location_name}/{key_ring_name}\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n testKeyRingIamPolicy:\n fn::invoke:\n function: gcp:kms:getKeyRingIamPolicy\n arguments:\n keyRingId: '{project_id}/{location_name}/{key_ring_name}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
"inputs": {
diff --git a/provider/resources.go b/provider/resources.go
index 191490ffc3..889ed28a5d 100644
--- a/provider/resources.go
+++ b/provider/resources.go
@@ -192,6 +192,7 @@ var moduleMapping = map[string]string{
"blockchain_node_engine": gcpBlockchainNodeEngine,
"binary_authorization": gcpBinaryAuthorization,
"certificate_manager": gcpCertificateManager,
+ "chronicle": "Chronicle",
"cloud_asset": gcpCloudAsset,
"cloud_identity": gcpCloudIdentity,
"cloud_ids": gcpCloudIDs,
@@ -2148,7 +2149,7 @@ func Provider() tfbridge.ProviderInfo {
// gke hub
"google_gke_hub_membership": {Tok: gcpResource(gcpGkeHub, "Membership")},
- "google_gke_hub_feature": {Tok: gcpResource(gcpGkeHub, "Feature")},
+ "google_gke_hub_feature": {Tok: gcpResource(gcpGkeHub, "Feature"), Docs: &info.Doc{AllowMissing: true}},
"google_gke_hub_feature_membership": {Tok: gcpResource(gcpGkeHub, "FeatureMembership")},
// tags
@@ -2741,8 +2742,9 @@ func Provider() tfbridge.ProviderInfo {
},
},
- "google_kms_key_rings": {Docs: &tfbridge.DocInfo{AllowMissing: true}},
+ "google_gke_hub_feature": {Docs: &info.Doc{AllowMissing: true}},
"google_gke_hub_membership_binding": {Docs: &tfbridge.DocInfo{AllowMissing: true}},
+ "google_kms_key_rings": {Docs: &tfbridge.DocInfo{AllowMissing: true}},
"google_privileged_access_manager_entitlement": {
Docs: &tfbridge.DocInfo{AllowMissing: true},
},
diff --git a/sdk/dotnet/AccessContextManager/Inputs/AccessLevelBasicConditionVpcNetworkSourceVpcSubnetworkArgs.cs b/sdk/dotnet/AccessContextManager/Inputs/AccessLevelBasicConditionVpcNetworkSourceVpcSubnetworkArgs.cs
index 35cdae98b2..3f84a8e05c 100644
--- a/sdk/dotnet/AccessContextManager/Inputs/AccessLevelBasicConditionVpcNetworkSourceVpcSubnetworkArgs.cs
+++ b/sdk/dotnet/AccessContextManager/Inputs/AccessLevelBasicConditionVpcNetworkSourceVpcSubnetworkArgs.cs
@@ -22,7 +22,7 @@ public sealed class AccessLevelBasicConditionVpcNetworkSourceVpcSubnetworkArgs :
private InputList? _vpcIpSubnetworks;
///
- /// CIDR block IP subnetwork specification. Must be IPv4.
+ /// A list of CIDR block IP subnetwork specification. Must be IPv4.
///
public InputList VpcIpSubnetworks
{
diff --git a/sdk/dotnet/AccessContextManager/Inputs/AccessLevelBasicConditionVpcNetworkSourceVpcSubnetworkGetArgs.cs b/sdk/dotnet/AccessContextManager/Inputs/AccessLevelBasicConditionVpcNetworkSourceVpcSubnetworkGetArgs.cs
index c5e87dd3a8..4013465153 100644
--- a/sdk/dotnet/AccessContextManager/Inputs/AccessLevelBasicConditionVpcNetworkSourceVpcSubnetworkGetArgs.cs
+++ b/sdk/dotnet/AccessContextManager/Inputs/AccessLevelBasicConditionVpcNetworkSourceVpcSubnetworkGetArgs.cs
@@ -22,7 +22,7 @@ public sealed class AccessLevelBasicConditionVpcNetworkSourceVpcSubnetworkGetArg
private InputList? _vpcIpSubnetworks;
///
- /// CIDR block IP subnetwork specification. Must be IPv4.
+ /// A list of CIDR block IP subnetwork specification. Must be IPv4.
///
public InputList VpcIpSubnetworks
{
diff --git a/sdk/dotnet/AccessContextManager/Outputs/AccessLevelBasicConditionVpcNetworkSourceVpcSubnetwork.cs b/sdk/dotnet/AccessContextManager/Outputs/AccessLevelBasicConditionVpcNetworkSourceVpcSubnetwork.cs
index 2312a23560..7e9d140c23 100644
--- a/sdk/dotnet/AccessContextManager/Outputs/AccessLevelBasicConditionVpcNetworkSourceVpcSubnetwork.cs
+++ b/sdk/dotnet/AccessContextManager/Outputs/AccessLevelBasicConditionVpcNetworkSourceVpcSubnetwork.cs
@@ -18,7 +18,7 @@ public sealed class AccessLevelBasicConditionVpcNetworkSourceVpcSubnetwork
///
public readonly string Network;
///
- /// CIDR block IP subnetwork specification. Must be IPv4.
+ /// A list of CIDR block IP subnetwork specification. Must be IPv4.
///
public readonly ImmutableArray VpcIpSubnetworks;
diff --git a/sdk/dotnet/ArtifactRegistry/GetRepository.cs b/sdk/dotnet/ArtifactRegistry/GetRepository.cs
index 18604268c7..8c02354a9d 100644
--- a/sdk/dotnet/ArtifactRegistry/GetRepository.cs
+++ b/sdk/dotnet/ArtifactRegistry/GetRepository.cs
@@ -179,6 +179,7 @@ public sealed class GetRepositoryResult
public readonly string RepositoryId;
public readonly string UpdateTime;
public readonly ImmutableArray VirtualRepositoryConfigs;
+ public readonly ImmutableArray VulnerabilityScanningConfigs;
[OutputConstructor]
private GetRepositoryResult(
@@ -220,7 +221,9 @@ private GetRepositoryResult(
string updateTime,
- ImmutableArray virtualRepositoryConfigs)
+ ImmutableArray virtualRepositoryConfigs,
+
+ ImmutableArray vulnerabilityScanningConfigs)
{
CleanupPolicies = cleanupPolicies;
CleanupPolicyDryRun = cleanupPolicyDryRun;
@@ -242,6 +245,7 @@ private GetRepositoryResult(
RepositoryId = repositoryId;
UpdateTime = updateTime;
VirtualRepositoryConfigs = virtualRepositoryConfigs;
+ VulnerabilityScanningConfigs = vulnerabilityScanningConfigs;
}
}
}
diff --git a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryVulnerabilityScanningConfigArgs.cs b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryVulnerabilityScanningConfigArgs.cs
new file mode 100644
index 0000000000..77f0660932
--- /dev/null
+++ b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryVulnerabilityScanningConfigArgs.cs
@@ -0,0 +1,41 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.ArtifactRegistry.Inputs
+{
+
+ public sealed class RepositoryVulnerabilityScanningConfigArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository.
+ /// Possible values are: `INHERITED`, `DISABLED`.
+ ///
+ [Input("enablementConfig")]
+ public Input? EnablementConfig { get; set; }
+
+ ///
+ /// (Output)
+ /// This field returns whether scanning is active for this repository.
+ ///
+ [Input("enablementState")]
+ public Input? EnablementState { get; set; }
+
+ ///
+ /// (Output)
+ /// This provides an explanation for the state of scanning on this repository.
+ ///
+ [Input("enablementStateReason")]
+ public Input? EnablementStateReason { get; set; }
+
+ public RepositoryVulnerabilityScanningConfigArgs()
+ {
+ }
+ public static new RepositoryVulnerabilityScanningConfigArgs Empty => new RepositoryVulnerabilityScanningConfigArgs();
+ }
+}
diff --git a/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryVulnerabilityScanningConfigGetArgs.cs b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryVulnerabilityScanningConfigGetArgs.cs
new file mode 100644
index 0000000000..1581dd01c1
--- /dev/null
+++ b/sdk/dotnet/ArtifactRegistry/Inputs/RepositoryVulnerabilityScanningConfigGetArgs.cs
@@ -0,0 +1,41 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.ArtifactRegistry.Inputs
+{
+
+ public sealed class RepositoryVulnerabilityScanningConfigGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository.
+ /// Possible values are: `INHERITED`, `DISABLED`.
+ ///
+ [Input("enablementConfig")]
+ public Input? EnablementConfig { get; set; }
+
+ ///
+ /// (Output)
+ /// This field returns whether scanning is active for this repository.
+ ///
+ [Input("enablementState")]
+ public Input? EnablementState { get; set; }
+
+ ///
+ /// (Output)
+ /// This provides an explanation for the state of scanning on this repository.
+ ///
+ [Input("enablementStateReason")]
+ public Input? EnablementStateReason { get; set; }
+
+ public RepositoryVulnerabilityScanningConfigGetArgs()
+ {
+ }
+ public static new RepositoryVulnerabilityScanningConfigGetArgs Empty => new RepositoryVulnerabilityScanningConfigGetArgs();
+ }
+}
diff --git a/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryVulnerabilityScanningConfigResult.cs b/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryVulnerabilityScanningConfigResult.cs
new file mode 100644
index 0000000000..9f364b38ad
--- /dev/null
+++ b/sdk/dotnet/ArtifactRegistry/Outputs/GetRepositoryVulnerabilityScanningConfigResult.cs
@@ -0,0 +1,42 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.ArtifactRegistry.Outputs
+{
+
+ [OutputType]
+ public sealed class GetRepositoryVulnerabilityScanningConfigResult
+ {
+ ///
+ /// This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository. Possible values: ["INHERITED", "DISABLED"]
+ ///
+ public readonly string EnablementConfig;
+ ///
+ /// This field returns whether scanning is active for this repository.
+ ///
+ public readonly string EnablementState;
+ ///
+ /// This provides an explanation for the state of scanning on this repository.
+ ///
+ public readonly string EnablementStateReason;
+
+ [OutputConstructor]
+ private GetRepositoryVulnerabilityScanningConfigResult(
+ string enablementConfig,
+
+ string enablementState,
+
+ string enablementStateReason)
+ {
+ EnablementConfig = enablementConfig;
+ EnablementState = enablementState;
+ EnablementStateReason = enablementStateReason;
+ }
+ }
+}
diff --git a/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryVulnerabilityScanningConfig.cs b/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryVulnerabilityScanningConfig.cs
new file mode 100644
index 0000000000..9ff95e459c
--- /dev/null
+++ b/sdk/dotnet/ArtifactRegistry/Outputs/RepositoryVulnerabilityScanningConfig.cs
@@ -0,0 +1,45 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.ArtifactRegistry.Outputs
+{
+
+ [OutputType]
+ public sealed class RepositoryVulnerabilityScanningConfig
+ {
+ ///
+ /// This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository.
+ /// Possible values are: `INHERITED`, `DISABLED`.
+ ///
+ public readonly string? EnablementConfig;
+ ///
+ /// (Output)
+ /// This field returns whether scanning is active for this repository.
+ ///
+ public readonly string? EnablementState;
+ ///
+ /// (Output)
+ /// This provides an explanation for the state of scanning on this repository.
+ ///
+ public readonly string? EnablementStateReason;
+
+ [OutputConstructor]
+ private RepositoryVulnerabilityScanningConfig(
+ string? enablementConfig,
+
+ string? enablementState,
+
+ string? enablementStateReason)
+ {
+ EnablementConfig = enablementConfig;
+ EnablementState = enablementState;
+ EnablementStateReason = enablementStateReason;
+ }
+ }
+}
diff --git a/sdk/dotnet/ArtifactRegistry/Repository.cs b/sdk/dotnet/ArtifactRegistry/Repository.cs
index 8d2d7e60d0..02e711f88f 100644
--- a/sdk/dotnet/ArtifactRegistry/Repository.cs
+++ b/sdk/dotnet/ArtifactRegistry/Repository.cs
@@ -733,9 +733,15 @@ namespace Pulumi.Gcp.ArtifactRegistry
/// Description = "pull-through cache of another Artifact Registry repository by URL",
/// CommonRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigCommonRepositoryArgs
/// {
- /// Uri = "https://us-central1-docker.pkg.dev//example-upstream-repo",
+ /// Uri = $"https://us-central1-docker.pkg.dev/{project.Apply(getProjectResult => getProjectResult.ProjectId)}/example-upstream-repo",
/// },
/// },
+ /// }, new CustomResourceOptions
+ /// {
+ /// DependsOn =
+ /// {
+ /// upstreamRepo,
+ /// },
/// });
///
/// });
@@ -802,6 +808,30 @@ namespace Pulumi.Gcp.ArtifactRegistry
///
/// });
/// ```
+ /// ### Artifact Registry Repository Vulnerability Scanning
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Gcp = Pulumi.Gcp;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var my_repo = new Gcp.ArtifactRegistry.Repository("my-repo", new()
+ /// {
+ /// Location = "us-central1",
+ /// RepositoryId = "my-repository",
+ /// Description = "example docker repository with vulnerability scanning config",
+ /// Format = "DOCKER",
+ /// VulnerabilityScanningConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryVulnerabilityScanningConfigArgs
+ /// {
+ /// EnablementConfig = "INHERITED",
+ /// },
+ /// });
+ ///
+ /// });
+ /// ```
///
/// ## Import
///
@@ -982,6 +1012,13 @@ public partial class Repository : global::Pulumi.CustomResource
[Output("virtualRepositoryConfig")]
public Output VirtualRepositoryConfig { get; private set; } = null!;
+ ///
+ /// Configuration for vulnerability scanning of artifacts stored in this repository.
+ /// Structure is documented below.
+ ///
+ [Output("vulnerabilityScanningConfig")]
+ public Output VulnerabilityScanningConfig { get; private set; } = null!;
+
///
/// Create a Repository resource with the given unique name, arguments, and options.
@@ -1165,6 +1202,13 @@ public InputMap Labels
[Input("virtualRepositoryConfig")]
public Input? VirtualRepositoryConfig { get; set; }
+ ///
+ /// Configuration for vulnerability scanning of artifacts stored in this repository.
+ /// Structure is documented below.
+ ///
+ [Input("vulnerabilityScanningConfig")]
+ public Input? VulnerabilityScanningConfig { get; set; }
+
public RepositoryArgs()
{
}
@@ -1357,6 +1401,13 @@ public InputMap PulumiLabels
[Input("virtualRepositoryConfig")]
public Input? VirtualRepositoryConfig { get; set; }
+ ///
+ /// Configuration for vulnerability scanning of artifacts stored in this repository.
+ /// Structure is documented below.
+ ///
+ [Input("vulnerabilityScanningConfig")]
+ public Input? VulnerabilityScanningConfig { get; set; }
+
public RepositoryState()
{
}
diff --git a/sdk/dotnet/BackupDisasterRecovery/GetBackup.cs b/sdk/dotnet/BackupDisasterRecovery/GetBackup.cs
index 3fd03a88f6..5506f1341b 100644
--- a/sdk/dotnet/BackupDisasterRecovery/GetBackup.cs
+++ b/sdk/dotnet/BackupDisasterRecovery/GetBackup.cs
@@ -11,12 +11,84 @@ namespace Pulumi.Gcp.BackupDisasterRecovery
{
public static class GetBackup
{
+ ///
+ /// A Backup and DR Backup.
+ ///
+ /// ## Example Usage
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Gcp = Pulumi.Gcp;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var foo = Gcp.BackupDisasterRecovery.GetBackup.Invoke(new()
+ /// {
+ /// Location = "us-central1",
+ /// Project = "project-test",
+ /// DataSourceId = "ds-test",
+ /// BackupVaultId = "bv-test",
+ /// });
+ ///
+ /// });
+ /// ```
+ ///
public static Task InvokeAsync(GetBackupArgs args, InvokeOptions? options = null)
=> global::Pulumi.Deployment.Instance.InvokeAsync("gcp:backupdisasterrecovery/getBackup:getBackup", args ?? new GetBackupArgs(), options.WithDefaults());
+ ///
+ /// A Backup and DR Backup.
+ ///
+ /// ## Example Usage
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Gcp = Pulumi.Gcp;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var foo = Gcp.BackupDisasterRecovery.GetBackup.Invoke(new()
+ /// {
+ /// Location = "us-central1",
+ /// Project = "project-test",
+ /// DataSourceId = "ds-test",
+ /// BackupVaultId = "bv-test",
+ /// });
+ ///
+ /// });
+ /// ```
+ ///
public static Output Invoke(GetBackupInvokeArgs args, InvokeOptions? options = null)
=> global::Pulumi.Deployment.Instance.Invoke("gcp:backupdisasterrecovery/getBackup:getBackup", args ?? new GetBackupInvokeArgs(), options.WithDefaults());
+ ///
+ /// A Backup and DR Backup.
+ ///
+ /// ## Example Usage
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Gcp = Pulumi.Gcp;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var foo = Gcp.BackupDisasterRecovery.GetBackup.Invoke(new()
+ /// {
+ /// Location = "us-central1",
+ /// Project = "project-test",
+ /// DataSourceId = "ds-test",
+ /// BackupVaultId = "bv-test",
+ /// });
+ ///
+ /// });
+ /// ```
+ ///
public static Output Invoke(GetBackupInvokeArgs args, InvokeOutputOptions options)
=> global::Pulumi.Deployment.Instance.Invoke("gcp:backupdisasterrecovery/getBackup:getBackup", args ?? new GetBackupInvokeArgs(), options.WithDefaults());
}
@@ -24,15 +96,27 @@ public static Output Invoke(GetBackupInvokeArgs args, InvokeOut
public sealed class GetBackupArgs : global::Pulumi.InvokeArgs
{
+ ///
+ /// The ID of the Backup Vault of the Data Source in which the Backup belongs.
+ ///
[Input("backupVaultId", required: true)]
public string BackupVaultId { get; set; } = null!;
+ ///
+ /// The ID of the Data Source in which the Backup belongs.
+ ///
[Input("dataSourceId", required: true)]
public string DataSourceId { get; set; } = null!;
+ ///
+ /// The location in which the Backup belongs.
+ ///
[Input("location", required: true)]
public string Location { get; set; } = null!;
+ ///
+ /// The Google Cloud Project in which the Backup belongs.
+ ///
[Input("project", required: true)]
public string Project { get; set; } = null!;
@@ -44,15 +128,27 @@ public GetBackupArgs()
public sealed class GetBackupInvokeArgs : global::Pulumi.InvokeArgs
{
+ ///
+ /// The ID of the Backup Vault of the Data Source in which the Backup belongs.
+ ///
[Input("backupVaultId", required: true)]
public Input BackupVaultId { get; set; } = null!;
+ ///
+ /// The ID of the Data Source in which the Backup belongs.
+ ///
[Input("dataSourceId", required: true)]
public Input DataSourceId { get; set; } = null!;
+ ///
+ /// The location in which the Backup belongs.
+ ///
[Input("location", required: true)]
public Input Location { get; set; } = null!;
+ ///
+ /// The Google Cloud Project in which the Backup belongs.
+ ///
[Input("project", required: true)]
public Input Project { get; set; } = null!;
diff --git a/sdk/dotnet/BackupDisasterRecovery/GetDataSource.cs b/sdk/dotnet/BackupDisasterRecovery/GetDataSource.cs
index 8b0cfe7dbd..bd92437d79 100644
--- a/sdk/dotnet/BackupDisasterRecovery/GetDataSource.cs
+++ b/sdk/dotnet/BackupDisasterRecovery/GetDataSource.cs
@@ -11,12 +11,84 @@ namespace Pulumi.Gcp.BackupDisasterRecovery
{
public static class GetDataSource
{
+ ///
+ /// A Backup and DR Data Source.
+ ///
+ /// ## Example Usage
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Gcp = Pulumi.Gcp;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var foo = Gcp.BackupDisasterRecovery.GetDataSource.Invoke(new()
+ /// {
+ /// Location = "us-central1",
+ /// Project = "project-test",
+ /// DataSourceId = "ds-test",
+ /// BackupVaultId = "bv-test",
+ /// });
+ ///
+ /// });
+ /// ```
+ ///
public static Task InvokeAsync(GetDataSourceArgs args, InvokeOptions? options = null)
=> global::Pulumi.Deployment.Instance.InvokeAsync("gcp:backupdisasterrecovery/getDataSource:getDataSource", args ?? new GetDataSourceArgs(), options.WithDefaults());
+ ///
+ /// A Backup and DR Data Source.
+ ///
+ /// ## Example Usage
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Gcp = Pulumi.Gcp;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var foo = Gcp.BackupDisasterRecovery.GetDataSource.Invoke(new()
+ /// {
+ /// Location = "us-central1",
+ /// Project = "project-test",
+ /// DataSourceId = "ds-test",
+ /// BackupVaultId = "bv-test",
+ /// });
+ ///
+ /// });
+ /// ```
+ ///
public static Output Invoke(GetDataSourceInvokeArgs args, InvokeOptions? options = null)
=> global::Pulumi.Deployment.Instance.Invoke("gcp:backupdisasterrecovery/getDataSource:getDataSource", args ?? new GetDataSourceInvokeArgs(), options.WithDefaults());
+ ///
+ /// A Backup and DR Data Source.
+ ///
+ /// ## Example Usage
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Gcp = Pulumi.Gcp;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var foo = Gcp.BackupDisasterRecovery.GetDataSource.Invoke(new()
+ /// {
+ /// Location = "us-central1",
+ /// Project = "project-test",
+ /// DataSourceId = "ds-test",
+ /// BackupVaultId = "bv-test",
+ /// });
+ ///
+ /// });
+ /// ```
+ ///
public static Output Invoke(GetDataSourceInvokeArgs args, InvokeOutputOptions options)
=> global::Pulumi.Deployment.Instance.Invoke("gcp:backupdisasterrecovery/getDataSource:getDataSource", args ?? new GetDataSourceInvokeArgs(), options.WithDefaults());
}
@@ -24,15 +96,27 @@ public static Output Invoke(GetDataSourceInvokeArgs args, I
public sealed class GetDataSourceArgs : global::Pulumi.InvokeArgs
{
+ ///
+ /// The ID of the Backup Vault in which the Data Source belongs.
+ ///
[Input("backupVaultId", required: true)]
public string BackupVaultId { get; set; } = null!;
+ ///
+ /// The ID of the Data Source.
+ ///
[Input("dataSourceId", required: true)]
public string DataSourceId { get; set; } = null!;
+ ///
+ /// The location in which the Data Source belongs.
+ ///
[Input("location", required: true)]
public string Location { get; set; } = null!;
+ ///
+ /// The Google Cloud Project in which the Data Source belongs.
+ ///
[Input("project", required: true)]
public string Project { get; set; } = null!;
@@ -44,15 +128,27 @@ public GetDataSourceArgs()
public sealed class GetDataSourceInvokeArgs : global::Pulumi.InvokeArgs
{
+ ///
+ /// The ID of the Backup Vault in which the Data Source belongs.
+ ///
[Input("backupVaultId", required: true)]
public Input BackupVaultId { get; set; } = null!;
+ ///
+ /// The ID of the Data Source.
+ ///
[Input("dataSourceId", required: true)]
public Input DataSourceId { get; set; } = null!;
+ ///
+ /// The location in which the Data Source belongs.
+ ///
[Input("location", required: true)]
public Input Location { get; set; } = null!;
+ ///
+ /// The Google Cloud Project in which the Data Source belongs.
+ ///
[Input("project", required: true)]
public Input Project { get; set; } = null!;
diff --git a/sdk/dotnet/BackupDisasterRecovery/Outputs/GetBackupBackupResult.cs b/sdk/dotnet/BackupDisasterRecovery/Outputs/GetBackupBackupResult.cs
index 3597f99f58..100f4de99d 100644
--- a/sdk/dotnet/BackupDisasterRecovery/Outputs/GetBackupBackupResult.cs
+++ b/sdk/dotnet/BackupDisasterRecovery/Outputs/GetBackupBackupResult.cs
@@ -18,15 +18,15 @@ public sealed class GetBackupBackupResult
///
public readonly string BackupId;
///
- /// Name of the Backup Vault associated with Backup.
+ /// The ID of the Backup Vault of the Data Source in which the Backup belongs.
///
public readonly string BackupVaultId;
///
- /// Name of the Data Source associated with Backup.
+ /// The ID of the Data Source in which the Backup belongs.
///
public readonly string DataSourceId;
///
- /// Location of the resource.
+ /// The location in which the Backup belongs.
///
public readonly string Location;
///
diff --git a/sdk/dotnet/BackupDisasterRecovery/Outputs/GetDataSourceDataSourceGcpResourceResult.cs b/sdk/dotnet/BackupDisasterRecovery/Outputs/GetDataSourceDataSourceGcpResourceResult.cs
index f057e9c7b2..8c5a7e1c25 100644
--- a/sdk/dotnet/BackupDisasterRecovery/Outputs/GetDataSourceDataSourceGcpResourceResult.cs
+++ b/sdk/dotnet/BackupDisasterRecovery/Outputs/GetDataSourceDataSourceGcpResourceResult.cs
@@ -22,7 +22,7 @@ public sealed class GetDataSourceDataSourceGcpResourceResult
///
public readonly string GcpResourcename;
///
- /// Location of the resource: <region>/<zone>/"global"/"unspecified".
+ /// The location in which the Data Source belongs.
///
public readonly string Location;
///
diff --git a/sdk/dotnet/BigQuery/DatasetAccess.cs b/sdk/dotnet/BigQuery/DatasetAccess.cs
index 14a67bb2f5..712776ee6f 100644
--- a/sdk/dotnet/BigQuery/DatasetAccess.cs
+++ b/sdk/dotnet/BigQuery/DatasetAccess.cs
@@ -219,6 +219,14 @@ public partial class DatasetAccess : global::Pulumi.CustomResource
[Output("authorizedDataset")]
public Output AuthorizedDataset { get; private set; } = null!;
+ ///
+ /// Condition for the binding. If CEL expression in this field is true, this
+ /// access binding will be considered.
+ /// Structure is documented below.
+ ///
+ [Output("condition")]
+ public Output Condition { get; private set; } = null!;
+
///
/// A unique ID for this dataset, without the project name. The ID
/// must contain only letters (a-z, A-Z), numbers (0-9), or
@@ -360,6 +368,14 @@ public sealed class DatasetAccessArgs : global::Pulumi.ResourceArgs
[Input("authorizedDataset")]
public Input? AuthorizedDataset { get; set; }
+ ///
+ /// Condition for the binding. If CEL expression in this field is true, this
+ /// access binding will be considered.
+ /// Structure is documented below.
+ ///
+ [Input("condition")]
+ public Input? Condition { get; set; }
+
///
/// A unique ID for this dataset, without the project name. The ID
/// must contain only letters (a-z, A-Z), numbers (0-9), or
@@ -470,6 +486,14 @@ public sealed class DatasetAccessState : global::Pulumi.ResourceArgs
[Input("authorizedDataset")]
public Input? AuthorizedDataset { get; set; }
+ ///
+ /// Condition for the binding. If CEL expression in this field is true, this
+ /// access binding will be considered.
+ /// Structure is documented below.
+ ///
+ [Input("condition")]
+ public Input? Condition { get; set; }
+
///
/// A unique ID for this dataset, without the project name. The ID
/// must contain only letters (a-z, A-Z), numbers (0-9), or
diff --git a/sdk/dotnet/BigQuery/Inputs/DatasetAccessArgs.cs b/sdk/dotnet/BigQuery/Inputs/DatasetAccessArgs.cs
index 102897ddde..26459757f0 100644
--- a/sdk/dotnet/BigQuery/Inputs/DatasetAccessArgs.cs
+++ b/sdk/dotnet/BigQuery/Inputs/DatasetAccessArgs.cs
@@ -12,6 +12,14 @@ namespace Pulumi.Gcp.BigQuery.Inputs
public sealed class DatasetAccessArgs : global::Pulumi.ResourceArgs
{
+ ///
+ /// Condition for the binding. If CEL expression in this field is true, this
+ /// access binding will be considered.
+ /// Structure is documented below.
+ ///
+ [Input("condition")]
+ public Input? Condition { get; set; }
+
///
/// Grants all resources of particular types in a particular dataset read access to the current dataset.
/// Structure is documented below.
diff --git a/sdk/dotnet/BigQuery/Inputs/DatasetAccessConditionArgs.cs b/sdk/dotnet/BigQuery/Inputs/DatasetAccessConditionArgs.cs
new file mode 100644
index 0000000000..1aad93ecd0
--- /dev/null
+++ b/sdk/dotnet/BigQuery/Inputs/DatasetAccessConditionArgs.cs
@@ -0,0 +1,47 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.BigQuery.Inputs
+{
+
+ public sealed class DatasetAccessConditionArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Description of the expression. This is a longer text which describes the expression,
+ /// e.g. when hovered over it in a UI.
+ ///
+ [Input("description")]
+ public Input? Description { get; set; }
+
+ ///
+ /// Textual representation of an expression in Common Expression Language syntax.
+ ///
+ [Input("expression", required: true)]
+ public Input Expression { get; set; } = null!;
+
+ ///
+ /// String indicating the location of the expression for error reporting, e.g. a file
+ /// name and a position in the file.
+ ///
+ [Input("location")]
+ public Input? Location { get; set; }
+
+ ///
+ /// Title for the expression, i.e. a short string describing its purpose.
+ /// This can be used e.g. in UIs which allow to enter the expression.
+ ///
+ [Input("title")]
+ public Input? Title { get; set; }
+
+ public DatasetAccessConditionArgs()
+ {
+ }
+ public static new DatasetAccessConditionArgs Empty => new DatasetAccessConditionArgs();
+ }
+}
diff --git a/sdk/dotnet/BigQuery/Inputs/DatasetAccessConditionGetArgs.cs b/sdk/dotnet/BigQuery/Inputs/DatasetAccessConditionGetArgs.cs
new file mode 100644
index 0000000000..42c6e49073
--- /dev/null
+++ b/sdk/dotnet/BigQuery/Inputs/DatasetAccessConditionGetArgs.cs
@@ -0,0 +1,47 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.BigQuery.Inputs
+{
+
+ public sealed class DatasetAccessConditionGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Description of the expression. This is a longer text which describes the expression,
+ /// e.g. when hovered over it in a UI.
+ ///
+ [Input("description")]
+ public Input? Description { get; set; }
+
+ ///
+ /// Textual representation of an expression in Common Expression Language syntax.
+ ///
+ [Input("expression", required: true)]
+ public Input Expression { get; set; } = null!;
+
+ ///
+ /// String indicating the location of the expression for error reporting, e.g. a file
+ /// name and a position in the file.
+ ///
+ [Input("location")]
+ public Input? Location { get; set; }
+
+ ///
+ /// Title for the expression, i.e. a short string describing its purpose.
+ /// This can be used e.g. in UIs which allow to enter the expression.
+ ///
+ [Input("title")]
+ public Input? Title { get; set; }
+
+ public DatasetAccessConditionGetArgs()
+ {
+ }
+ public static new DatasetAccessConditionGetArgs Empty => new DatasetAccessConditionGetArgs();
+ }
+}
diff --git a/sdk/dotnet/BigQuery/Inputs/DatasetAccessGetArgs.cs b/sdk/dotnet/BigQuery/Inputs/DatasetAccessGetArgs.cs
index c72a746886..495c5f16be 100644
--- a/sdk/dotnet/BigQuery/Inputs/DatasetAccessGetArgs.cs
+++ b/sdk/dotnet/BigQuery/Inputs/DatasetAccessGetArgs.cs
@@ -12,6 +12,14 @@ namespace Pulumi.Gcp.BigQuery.Inputs
public sealed class DatasetAccessGetArgs : global::Pulumi.ResourceArgs
{
+ ///
+ /// Condition for the binding. If CEL expression in this field is true, this
+ /// access binding will be considered.
+ /// Structure is documented below.
+ ///
+ [Input("condition")]
+ public Input? Condition { get; set; }
+
///
/// Grants all resources of particular types in a particular dataset read access to the current dataset.
/// Structure is documented below.
diff --git a/sdk/dotnet/BigQuery/Inputs/TableExternalCatalogTableOptionsArgs.cs b/sdk/dotnet/BigQuery/Inputs/TableExternalCatalogTableOptionsArgs.cs
new file mode 100644
index 0000000000..fee8dad57d
--- /dev/null
+++ b/sdk/dotnet/BigQuery/Inputs/TableExternalCatalogTableOptionsArgs.cs
@@ -0,0 +1,44 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.BigQuery.Inputs
+{
+
+ public sealed class TableExternalCatalogTableOptionsArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The connection specifying the credentials to be used to read external storage, such as Azure Blob, Cloud Storage, or S3. The connection is needed to read the open source table from BigQuery Engine. The connection_id can have the form <project_id>.<location_id>.<connection_id> or projects/<project_id>/locations/<location_id>/connections/<connection_id>.
+ ///
+ [Input("connectionId")]
+ public Input? ConnectionId { get; set; }
+
+ [Input("parameters")]
+ private InputMap? _parameters;
+
+ ///
+ /// A map of key value pairs defining the parameters and properties of the open source table. Corresponds with hive meta store table parameters. Maximum size of 4Mib.
+ ///
+ public InputMap Parameters
+ {
+ get => _parameters ?? (_parameters = new InputMap());
+ set => _parameters = value;
+ }
+
+ ///
+ /// A storage descriptor containing information about the physical storage of this table.
+ ///
+ [Input("storageDescriptor")]
+ public Input? StorageDescriptor { get; set; }
+
+ public TableExternalCatalogTableOptionsArgs()
+ {
+ }
+ public static new TableExternalCatalogTableOptionsArgs Empty => new TableExternalCatalogTableOptionsArgs();
+ }
+}
diff --git a/sdk/dotnet/BigQuery/Inputs/TableExternalCatalogTableOptionsGetArgs.cs b/sdk/dotnet/BigQuery/Inputs/TableExternalCatalogTableOptionsGetArgs.cs
new file mode 100644
index 0000000000..9aec69d953
--- /dev/null
+++ b/sdk/dotnet/BigQuery/Inputs/TableExternalCatalogTableOptionsGetArgs.cs
@@ -0,0 +1,44 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.BigQuery.Inputs
+{
+
+ public sealed class TableExternalCatalogTableOptionsGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The connection specifying the credentials to be used to read external storage, such as Azure Blob, Cloud Storage, or S3. The connection is needed to read the open source table from BigQuery Engine. The connection_id can have the form <project_id>.<location_id>.<connection_id> or projects/<project_id>/locations/<location_id>/connections/<connection_id>.
+ ///
+ [Input("connectionId")]
+ public Input? ConnectionId { get; set; }
+
+ [Input("parameters")]
+ private InputMap? _parameters;
+
+ ///
+ /// A map of key value pairs defining the parameters and properties of the open source table. Corresponds with hive meta store table parameters. Maximum size of 4Mib.
+ ///
+ public InputMap Parameters
+ {
+ get => _parameters ?? (_parameters = new InputMap());
+ set => _parameters = value;
+ }
+
+ ///
+ /// A storage descriptor containing information about the physical storage of this table.
+ ///
+ [Input("storageDescriptor")]
+ public Input? StorageDescriptor { get; set; }
+
+ public TableExternalCatalogTableOptionsGetArgs()
+ {
+ }
+ public static new TableExternalCatalogTableOptionsGetArgs Empty => new TableExternalCatalogTableOptionsGetArgs();
+ }
+}
diff --git a/sdk/dotnet/BigQuery/Inputs/TableExternalCatalogTableOptionsStorageDescriptorArgs.cs b/sdk/dotnet/BigQuery/Inputs/TableExternalCatalogTableOptionsStorageDescriptorArgs.cs
new file mode 100644
index 0000000000..4158d48742
--- /dev/null
+++ b/sdk/dotnet/BigQuery/Inputs/TableExternalCatalogTableOptionsStorageDescriptorArgs.cs
@@ -0,0 +1,44 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.BigQuery.Inputs
+{
+
+ public sealed class TableExternalCatalogTableOptionsStorageDescriptorArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Specifies the fully qualified class name of the InputFormat (e.g. "org.apache.hadoop.hive.ql.io.orc.OrcInputFormat"). The maximum length is 128 characters.
+ ///
+ [Input("inputFormat")]
+ public Input? InputFormat { get; set; }
+
+ ///
+ /// The physical location of the table (e.g. 'gs://spark-dataproc-data/pangea-data/case_sensitive/' or 'gs://spark-dataproc-data/pangea-data/*'). The maximum length is 2056 bytes.
+ ///
+ [Input("locationUri")]
+ public Input? LocationUri { get; set; }
+
+ ///
+ /// Specifies the fully qualified class name of the OutputFormat (e.g. "org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat"). The maximum length is 128 characters.
+ ///
+ [Input("outputFormat")]
+ public Input? OutputFormat { get; set; }
+
+ ///
+ /// Serializer and deserializer information.
+ ///
+ [Input("serdeInfo")]
+ public Input? SerdeInfo { get; set; }
+
+ public TableExternalCatalogTableOptionsStorageDescriptorArgs()
+ {
+ }
+ public static new TableExternalCatalogTableOptionsStorageDescriptorArgs Empty => new TableExternalCatalogTableOptionsStorageDescriptorArgs();
+ }
+}
diff --git a/sdk/dotnet/BigQuery/Inputs/TableExternalCatalogTableOptionsStorageDescriptorGetArgs.cs b/sdk/dotnet/BigQuery/Inputs/TableExternalCatalogTableOptionsStorageDescriptorGetArgs.cs
new file mode 100644
index 0000000000..b2cdc7e288
--- /dev/null
+++ b/sdk/dotnet/BigQuery/Inputs/TableExternalCatalogTableOptionsStorageDescriptorGetArgs.cs
@@ -0,0 +1,44 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.BigQuery.Inputs
+{
+
+ public sealed class TableExternalCatalogTableOptionsStorageDescriptorGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Specifies the fully qualified class name of the InputFormat (e.g. "org.apache.hadoop.hive.ql.io.orc.OrcInputFormat"). The maximum length is 128 characters.
+ ///
+ [Input("inputFormat")]
+ public Input? InputFormat { get; set; }
+
+ ///
+ /// The physical location of the table (e.g. 'gs://spark-dataproc-data/pangea-data/case_sensitive/' or 'gs://spark-dataproc-data/pangea-data/*'). The maximum length is 2056 bytes.
+ ///
+ [Input("locationUri")]
+ public Input? LocationUri { get; set; }
+
+ ///
+ /// Specifies the fully qualified class name of the OutputFormat (e.g. "org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat"). The maximum length is 128 characters.
+ ///
+ [Input("outputFormat")]
+ public Input? OutputFormat { get; set; }
+
+ ///
+ /// Serializer and deserializer information.
+ ///
+ [Input("serdeInfo")]
+ public Input? SerdeInfo { get; set; }
+
+ public TableExternalCatalogTableOptionsStorageDescriptorGetArgs()
+ {
+ }
+ public static new TableExternalCatalogTableOptionsStorageDescriptorGetArgs Empty => new TableExternalCatalogTableOptionsStorageDescriptorGetArgs();
+ }
+}
diff --git a/sdk/dotnet/BigQuery/Inputs/TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs.cs b/sdk/dotnet/BigQuery/Inputs/TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs.cs
new file mode 100644
index 0000000000..c8c47ca497
--- /dev/null
+++ b/sdk/dotnet/BigQuery/Inputs/TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs.cs
@@ -0,0 +1,44 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.BigQuery.Inputs
+{
+
+ public sealed class TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Name of the SerDe. The maximum length is 256 characters.
+ ///
+ [Input("name")]
+ public Input? Name { get; set; }
+
+ [Input("parameters")]
+ private InputMap? _parameters;
+
+ ///
+ /// Key-value pairs that define the initialization parameters for the serialization library. Maximum size 10 Kib.
+ ///
+ public InputMap Parameters
+ {
+ get => _parameters ?? (_parameters = new InputMap());
+ set => _parameters = value;
+ }
+
+ ///
+ /// Specifies a fully-qualified class name of the serialization library that is responsible for the translation of data between table representation and the underlying low-level input and output format structures. The maximum length is 256 characters.
+ ///
+ [Input("serializationLibrary", required: true)]
+ public Input SerializationLibrary { get; set; } = null!;
+
+ public TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs()
+ {
+ }
+ public static new TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs Empty => new TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs();
+ }
+}
diff --git a/sdk/dotnet/BigQuery/Inputs/TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoGetArgs.cs b/sdk/dotnet/BigQuery/Inputs/TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoGetArgs.cs
new file mode 100644
index 0000000000..e9a01ad7ef
--- /dev/null
+++ b/sdk/dotnet/BigQuery/Inputs/TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoGetArgs.cs
@@ -0,0 +1,44 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.BigQuery.Inputs
+{
+
+ public sealed class TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Name of the SerDe. The maximum length is 256 characters.
+ ///
+ [Input("name")]
+ public Input? Name { get; set; }
+
+ [Input("parameters")]
+ private InputMap? _parameters;
+
+ ///
+ /// Key-value pairs that define the initialization parameters for the serialization library. Maximum size 10 Kib.
+ ///
+ public InputMap Parameters
+ {
+ get => _parameters ?? (_parameters = new InputMap());
+ set => _parameters = value;
+ }
+
+ ///
+ /// Specifies a fully-qualified class name of the serialization library that is responsible for the translation of data between table representation and the underlying low-level input and output format structures. The maximum length is 256 characters.
+ ///
+ [Input("serializationLibrary", required: true)]
+ public Input SerializationLibrary { get; set; } = null!;
+
+ public TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoGetArgs()
+ {
+ }
+ public static new TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoGetArgs Empty => new TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoGetArgs();
+ }
+}
diff --git a/sdk/dotnet/BigQuery/Job.cs b/sdk/dotnet/BigQuery/Job.cs
index e4b189b1f2..c55b98abfe 100644
--- a/sdk/dotnet/BigQuery/Job.cs
+++ b/sdk/dotnet/BigQuery/Job.cs
@@ -408,18 +408,6 @@ namespace Pulumi.Gcp.BigQuery
/// Location = "US",
/// });
///
- /// var keyRing = new Gcp.Kms.KeyRing("key_ring", new()
- /// {
- /// Name = "example-keyring",
- /// Location = "global",
- /// });
- ///
- /// var cryptoKey = new Gcp.Kms.CryptoKey("crypto_key", new()
- /// {
- /// Name = "example-key",
- /// KeyRing = keyRing.Id,
- /// });
- ///
/// var project = Gcp.Organizations.GetProject.Invoke(new()
/// {
/// ProjectId = "my-project-name",
@@ -427,7 +415,7 @@ namespace Pulumi.Gcp.BigQuery
///
/// var encryptRole = new Gcp.Kms.CryptoKeyIAMMember("encrypt_role", new()
/// {
- /// CryptoKeyId = cryptoKey.Id,
+ /// CryptoKeyId = "example-key",
/// Role = "roles/cloudkms.cryptoKeyEncrypterDecrypter",
/// Member = $"serviceAccount:bq-{project.Apply(getProjectResult => getProjectResult.Number)}@bigquery-encryption.iam.gserviceaccount.com",
/// });
@@ -457,7 +445,7 @@ namespace Pulumi.Gcp.BigQuery
/// ",
/// EncryptionConfiguration = new Gcp.BigQuery.Inputs.TableEncryptionConfigurationArgs
/// {
- /// KmsKeyName = cryptoKey.Id,
+ /// KmsKeyName = "example-key",
/// },
/// }, new CustomResourceOptions
/// {
@@ -495,7 +483,7 @@ namespace Pulumi.Gcp.BigQuery
/// },
/// DestinationEncryptionConfiguration = new Gcp.BigQuery.Inputs.JobCopyDestinationEncryptionConfigurationArgs
/// {
- /// KmsKeyName = cryptoKey.Id,
+ /// KmsKeyName = "example-key",
/// },
/// },
/// }, new CustomResourceOptions
diff --git a/sdk/dotnet/BigQuery/Outputs/DatasetAccess.cs b/sdk/dotnet/BigQuery/Outputs/DatasetAccess.cs
index 59bcc5ed5f..4f5c4e1404 100644
--- a/sdk/dotnet/BigQuery/Outputs/DatasetAccess.cs
+++ b/sdk/dotnet/BigQuery/Outputs/DatasetAccess.cs
@@ -13,6 +13,12 @@ namespace Pulumi.Gcp.BigQuery.Outputs
[OutputType]
public sealed class DatasetAccess
{
+ ///
+ /// Condition for the binding. If CEL expression in this field is true, this
+ /// access binding will be considered.
+ /// Structure is documented below.
+ ///
+ public readonly Outputs.DatasetAccessCondition? Condition;
///
/// Grants all resources of particular types in a particular dataset read access to the current dataset.
/// Structure is documented below.
@@ -74,6 +80,8 @@ public sealed class DatasetAccess
[OutputConstructor]
private DatasetAccess(
+ Outputs.DatasetAccessCondition? condition,
+
Outputs.DatasetAccessDataset? dataset,
string? domain,
@@ -92,6 +100,7 @@ private DatasetAccess(
Outputs.DatasetAccessView? view)
{
+ Condition = condition;
Dataset = dataset;
Domain = domain;
GroupByEmail = groupByEmail;
diff --git a/sdk/dotnet/BigQuery/Outputs/DatasetAccessCondition.cs b/sdk/dotnet/BigQuery/Outputs/DatasetAccessCondition.cs
new file mode 100644
index 0000000000..56ad035165
--- /dev/null
+++ b/sdk/dotnet/BigQuery/Outputs/DatasetAccessCondition.cs
@@ -0,0 +1,52 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.BigQuery.Outputs
+{
+
+ [OutputType]
+ public sealed class DatasetAccessCondition
+ {
+ ///
+ /// Description of the expression. This is a longer text which describes the expression,
+ /// e.g. when hovered over it in a UI.
+ ///
+ public readonly string? Description;
+ ///
+ /// Textual representation of an expression in Common Expression Language syntax.
+ ///
+ public readonly string Expression;
+ ///
+ /// String indicating the location of the expression for error reporting, e.g. a file
+ /// name and a position in the file.
+ ///
+ public readonly string? Location;
+ ///
+ /// Title for the expression, i.e. a short string describing its purpose.
+ /// This can be used e.g. in UIs which allow to enter the expression.
+ ///
+ public readonly string? Title;
+
+ [OutputConstructor]
+ private DatasetAccessCondition(
+ string? description,
+
+ string expression,
+
+ string? location,
+
+ string? title)
+ {
+ Description = description;
+ Expression = expression;
+ Location = location;
+ Title = title;
+ }
+ }
+}
diff --git a/sdk/dotnet/BigQuery/Outputs/GetDatasetAccessConditionResult.cs b/sdk/dotnet/BigQuery/Outputs/GetDatasetAccessConditionResult.cs
new file mode 100644
index 0000000000..302e49ca18
--- /dev/null
+++ b/sdk/dotnet/BigQuery/Outputs/GetDatasetAccessConditionResult.cs
@@ -0,0 +1,52 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.BigQuery.Outputs
+{
+
+ [OutputType]
+ public sealed class GetDatasetAccessConditionResult
+ {
+ ///
+ /// Description of the expression. This is a longer text which describes the expression,
+ /// e.g. when hovered over it in a UI.
+ ///
+ public readonly string Description;
+ ///
+ /// Textual representation of an expression in Common Expression Language syntax.
+ ///
+ public readonly string Expression;
+ ///
+ /// String indicating the location of the expression for error reporting, e.g. a file
+ /// name and a position in the file.
+ ///
+ public readonly string Location;
+ ///
+ /// Title for the expression, i.e. a short string describing its purpose.
+ /// This can be used e.g. in UIs which allow to enter the expression.
+ ///
+ public readonly string Title;
+
+ [OutputConstructor]
+ private GetDatasetAccessConditionResult(
+ string description,
+
+ string expression,
+
+ string location,
+
+ string title)
+ {
+ Description = description;
+ Expression = expression;
+ Location = location;
+ Title = title;
+ }
+ }
+}
diff --git a/sdk/dotnet/BigQuery/Outputs/GetDatasetAccessResult.cs b/sdk/dotnet/BigQuery/Outputs/GetDatasetAccessResult.cs
index bf0fbc8250..9b547ab534 100644
--- a/sdk/dotnet/BigQuery/Outputs/GetDatasetAccessResult.cs
+++ b/sdk/dotnet/BigQuery/Outputs/GetDatasetAccessResult.cs
@@ -13,6 +13,11 @@ namespace Pulumi.Gcp.BigQuery.Outputs
[OutputType]
public sealed class GetDatasetAccessResult
{
+ ///
+ /// Condition for the binding. If CEL expression in this field is true, this
+ /// access binding will be considered.
+ ///
+ public readonly ImmutableArray Conditions;
///
/// Grants all resources of particular types in a particular dataset read access to the current dataset.
///
@@ -71,6 +76,8 @@ public sealed class GetDatasetAccessResult
[OutputConstructor]
private GetDatasetAccessResult(
+ ImmutableArray conditions,
+
ImmutableArray datasets,
string domain,
@@ -89,6 +96,7 @@ private GetDatasetAccessResult(
ImmutableArray views)
{
+ Conditions = conditions;
Datasets = datasets;
Domain = domain;
GroupByEmail = groupByEmail;
diff --git a/sdk/dotnet/BigQuery/Outputs/TableExternalCatalogTableOptions.cs b/sdk/dotnet/BigQuery/Outputs/TableExternalCatalogTableOptions.cs
new file mode 100644
index 0000000000..1abcb04242
--- /dev/null
+++ b/sdk/dotnet/BigQuery/Outputs/TableExternalCatalogTableOptions.cs
@@ -0,0 +1,42 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.BigQuery.Outputs
+{
+
+ [OutputType]
+ public sealed class TableExternalCatalogTableOptions
+ {
+ ///
+ /// The connection specifying the credentials to be used to read external storage, such as Azure Blob, Cloud Storage, or S3. The connection is needed to read the open source table from BigQuery Engine. The connection_id can have the form <project_id>.<location_id>.<connection_id> or projects/<project_id>/locations/<location_id>/connections/<connection_id>.
+ ///
+ public readonly string? ConnectionId;
+ ///
+ /// A map of key value pairs defining the parameters and properties of the open source table. Corresponds with hive meta store table parameters. Maximum size of 4Mib.
+ ///
+ public readonly ImmutableDictionary? Parameters;
+ ///
+ /// A storage descriptor containing information about the physical storage of this table.
+ ///
+ public readonly Outputs.TableExternalCatalogTableOptionsStorageDescriptor? StorageDescriptor;
+
+ [OutputConstructor]
+ private TableExternalCatalogTableOptions(
+ string? connectionId,
+
+ ImmutableDictionary? parameters,
+
+ Outputs.TableExternalCatalogTableOptionsStorageDescriptor? storageDescriptor)
+ {
+ ConnectionId = connectionId;
+ Parameters = parameters;
+ StorageDescriptor = storageDescriptor;
+ }
+ }
+}
diff --git a/sdk/dotnet/BigQuery/Outputs/TableExternalCatalogTableOptionsStorageDescriptor.cs b/sdk/dotnet/BigQuery/Outputs/TableExternalCatalogTableOptionsStorageDescriptor.cs
new file mode 100644
index 0000000000..aa449b179e
--- /dev/null
+++ b/sdk/dotnet/BigQuery/Outputs/TableExternalCatalogTableOptionsStorageDescriptor.cs
@@ -0,0 +1,49 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.BigQuery.Outputs
+{
+
+ [OutputType]
+ public sealed class TableExternalCatalogTableOptionsStorageDescriptor
+ {
+ ///
+ /// Specifies the fully qualified class name of the InputFormat (e.g. "org.apache.hadoop.hive.ql.io.orc.OrcInputFormat"). The maximum length is 128 characters.
+ ///
+ public readonly string? InputFormat;
+ ///
+ /// The physical location of the table (e.g. 'gs://spark-dataproc-data/pangea-data/case_sensitive/' or 'gs://spark-dataproc-data/pangea-data/*'). The maximum length is 2056 bytes.
+ ///
+ public readonly string? LocationUri;
+ ///
+ /// Specifies the fully qualified class name of the OutputFormat (e.g. "org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat"). The maximum length is 128 characters.
+ ///
+ public readonly string? OutputFormat;
+ ///
+ /// Serializer and deserializer information.
+ ///
+ public readonly Outputs.TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo? SerdeInfo;
+
+ [OutputConstructor]
+ private TableExternalCatalogTableOptionsStorageDescriptor(
+ string? inputFormat,
+
+ string? locationUri,
+
+ string? outputFormat,
+
+ Outputs.TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo? serdeInfo)
+ {
+ InputFormat = inputFormat;
+ LocationUri = locationUri;
+ OutputFormat = outputFormat;
+ SerdeInfo = serdeInfo;
+ }
+ }
+}
diff --git a/sdk/dotnet/BigQuery/Outputs/TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo.cs b/sdk/dotnet/BigQuery/Outputs/TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo.cs
new file mode 100644
index 0000000000..93feedc5a3
--- /dev/null
+++ b/sdk/dotnet/BigQuery/Outputs/TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo.cs
@@ -0,0 +1,42 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.BigQuery.Outputs
+{
+
+ [OutputType]
+ public sealed class TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo
+ {
+ ///
+ /// Name of the SerDe. The maximum length is 256 characters.
+ ///
+ public readonly string? Name;
+ ///
+ /// Key-value pairs that define the initialization parameters for the serialization library. Maximum size 10 Kib.
+ ///
+ public readonly ImmutableDictionary? Parameters;
+ ///
+ /// Specifies a fully-qualified class name of the serialization library that is responsible for the translation of data between table representation and the underlying low-level input and output format structures. The maximum length is 256 characters.
+ ///
+ public readonly string SerializationLibrary;
+
+ [OutputConstructor]
+ private TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo(
+ string? name,
+
+ ImmutableDictionary? parameters,
+
+ string serializationLibrary)
+ {
+ Name = name;
+ Parameters = parameters;
+ SerializationLibrary = serializationLibrary;
+ }
+ }
+}
diff --git a/sdk/dotnet/BigQuery/Table.cs b/sdk/dotnet/BigQuery/Table.cs
index 2367fc7836..e4b1243254 100644
--- a/sdk/dotnet/BigQuery/Table.cs
+++ b/sdk/dotnet/BigQuery/Table.cs
@@ -203,6 +203,12 @@ public partial class Table : global::Pulumi.CustomResource
[Output("expirationTime")]
public Output ExpirationTime { get; private set; } = null!;
+ ///
+ /// Options defining open source compatible table.
+ ///
+ [Output("externalCatalogTableOptions")]
+ public Output ExternalCatalogTableOptions { get; private set; } = null!;
+
///
/// Describes the data format,
/// location, and other properties of a table stored outside of BigQuery.
@@ -474,6 +480,12 @@ public InputList Clusterings
[Input("expirationTime")]
public Input? ExpirationTime { get; set; }
+ ///
+ /// Options defining open source compatible table.
+ ///
+ [Input("externalCatalogTableOptions")]
+ public Input? ExternalCatalogTableOptions { get; set; }
+
///
/// Describes the data format,
/// location, and other properties of a table stored outside of BigQuery.
@@ -709,6 +721,12 @@ public InputMap EffectiveLabels
[Input("expirationTime")]
public Input? ExpirationTime { get; set; }
+ ///
+ /// Options defining open source compatible table.
+ ///
+ [Input("externalCatalogTableOptions")]
+ public Input? ExternalCatalogTableOptions { get; set; }
+
///
/// Describes the data format,
/// location, and other properties of a table stored outside of BigQuery.
diff --git a/sdk/dotnet/Chronicle/Inputs/WatchlistEntityCountArgs.cs b/sdk/dotnet/Chronicle/Inputs/WatchlistEntityCountArgs.cs
new file mode 100644
index 0000000000..be3c58dd8c
--- /dev/null
+++ b/sdk/dotnet/Chronicle/Inputs/WatchlistEntityCountArgs.cs
@@ -0,0 +1,34 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.Chronicle.Inputs
+{
+
+ public sealed class WatchlistEntityCountArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// (Output)
+ /// Output only. Count of asset type entities in the watchlist.
+ ///
+ [Input("asset")]
+ public Input? Asset { get; set; }
+
+ ///
+ /// (Output)
+ /// Output only. Count of user type entities in the watchlist.
+ ///
+ [Input("user")]
+ public Input? User { get; set; }
+
+ public WatchlistEntityCountArgs()
+ {
+ }
+ public static new WatchlistEntityCountArgs Empty => new WatchlistEntityCountArgs();
+ }
+}
diff --git a/sdk/dotnet/Chronicle/Inputs/WatchlistEntityCountGetArgs.cs b/sdk/dotnet/Chronicle/Inputs/WatchlistEntityCountGetArgs.cs
new file mode 100644
index 0000000000..27f4e442a7
--- /dev/null
+++ b/sdk/dotnet/Chronicle/Inputs/WatchlistEntityCountGetArgs.cs
@@ -0,0 +1,34 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.Chronicle.Inputs
+{
+
+ public sealed class WatchlistEntityCountGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// (Output)
+ /// Output only. Count of asset type entities in the watchlist.
+ ///
+ [Input("asset")]
+ public Input? Asset { get; set; }
+
+ ///
+ /// (Output)
+ /// Output only. Count of user type entities in the watchlist.
+ ///
+ [Input("user")]
+ public Input? User { get; set; }
+
+ public WatchlistEntityCountGetArgs()
+ {
+ }
+ public static new WatchlistEntityCountGetArgs Empty => new WatchlistEntityCountGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Chronicle/Inputs/WatchlistEntityPopulationMechanismArgs.cs b/sdk/dotnet/Chronicle/Inputs/WatchlistEntityPopulationMechanismArgs.cs
new file mode 100644
index 0000000000..bf9ec0af64
--- /dev/null
+++ b/sdk/dotnet/Chronicle/Inputs/WatchlistEntityPopulationMechanismArgs.cs
@@ -0,0 +1,28 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.Chronicle.Inputs
+{
+
+ public sealed class WatchlistEntityPopulationMechanismArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Entities are added manually.
+ ///
+ /// - - -
+ ///
+ [Input("manual")]
+ public Input? Manual { get; set; }
+
+ public WatchlistEntityPopulationMechanismArgs()
+ {
+ }
+ public static new WatchlistEntityPopulationMechanismArgs Empty => new WatchlistEntityPopulationMechanismArgs();
+ }
+}
diff --git a/sdk/dotnet/Chronicle/Inputs/WatchlistEntityPopulationMechanismGetArgs.cs b/sdk/dotnet/Chronicle/Inputs/WatchlistEntityPopulationMechanismGetArgs.cs
new file mode 100644
index 0000000000..3382299094
--- /dev/null
+++ b/sdk/dotnet/Chronicle/Inputs/WatchlistEntityPopulationMechanismGetArgs.cs
@@ -0,0 +1,28 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.Chronicle.Inputs
+{
+
+ public sealed class WatchlistEntityPopulationMechanismGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Entities are added manually.
+ ///
+ /// - - -
+ ///
+ [Input("manual")]
+ public Input? Manual { get; set; }
+
+ public WatchlistEntityPopulationMechanismGetArgs()
+ {
+ }
+ public static new WatchlistEntityPopulationMechanismGetArgs Empty => new WatchlistEntityPopulationMechanismGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Chronicle/Inputs/WatchlistEntityPopulationMechanismManualArgs.cs b/sdk/dotnet/Chronicle/Inputs/WatchlistEntityPopulationMechanismManualArgs.cs
new file mode 100644
index 0000000000..99d7f171ff
--- /dev/null
+++ b/sdk/dotnet/Chronicle/Inputs/WatchlistEntityPopulationMechanismManualArgs.cs
@@ -0,0 +1,20 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.Chronicle.Inputs
+{
+
+ public sealed class WatchlistEntityPopulationMechanismManualArgs : global::Pulumi.ResourceArgs
+ {
+ public WatchlistEntityPopulationMechanismManualArgs()
+ {
+ }
+ public static new WatchlistEntityPopulationMechanismManualArgs Empty => new WatchlistEntityPopulationMechanismManualArgs();
+ }
+}
diff --git a/sdk/dotnet/Chronicle/Inputs/WatchlistEntityPopulationMechanismManualGetArgs.cs b/sdk/dotnet/Chronicle/Inputs/WatchlistEntityPopulationMechanismManualGetArgs.cs
new file mode 100644
index 0000000000..67101f1c0c
--- /dev/null
+++ b/sdk/dotnet/Chronicle/Inputs/WatchlistEntityPopulationMechanismManualGetArgs.cs
@@ -0,0 +1,20 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.Chronicle.Inputs
+{
+
+ public sealed class WatchlistEntityPopulationMechanismManualGetArgs : global::Pulumi.ResourceArgs
+ {
+ public WatchlistEntityPopulationMechanismManualGetArgs()
+ {
+ }
+ public static new WatchlistEntityPopulationMechanismManualGetArgs Empty => new WatchlistEntityPopulationMechanismManualGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Chronicle/Inputs/WatchlistWatchlistUserPreferencesArgs.cs b/sdk/dotnet/Chronicle/Inputs/WatchlistWatchlistUserPreferencesArgs.cs
new file mode 100644
index 0000000000..6838792d16
--- /dev/null
+++ b/sdk/dotnet/Chronicle/Inputs/WatchlistWatchlistUserPreferencesArgs.cs
@@ -0,0 +1,26 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.Chronicle.Inputs
+{
+
+ public sealed class WatchlistWatchlistUserPreferencesArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Optional. Whether the watchlist is pinned on the dashboard.
+ ///
+ [Input("pinned")]
+ public Input? Pinned { get; set; }
+
+ public WatchlistWatchlistUserPreferencesArgs()
+ {
+ }
+ public static new WatchlistWatchlistUserPreferencesArgs Empty => new WatchlistWatchlistUserPreferencesArgs();
+ }
+}
diff --git a/sdk/dotnet/Chronicle/Inputs/WatchlistWatchlistUserPreferencesGetArgs.cs b/sdk/dotnet/Chronicle/Inputs/WatchlistWatchlistUserPreferencesGetArgs.cs
new file mode 100644
index 0000000000..0bf64d80f7
--- /dev/null
+++ b/sdk/dotnet/Chronicle/Inputs/WatchlistWatchlistUserPreferencesGetArgs.cs
@@ -0,0 +1,26 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.Chronicle.Inputs
+{
+
+ public sealed class WatchlistWatchlistUserPreferencesGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Optional. Whether the watchlist is pinned on the dashboard.
+ ///
+ [Input("pinned")]
+ public Input? Pinned { get; set; }
+
+ public WatchlistWatchlistUserPreferencesGetArgs()
+ {
+ }
+ public static new WatchlistWatchlistUserPreferencesGetArgs Empty => new WatchlistWatchlistUserPreferencesGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Chronicle/Outputs/WatchlistEntityCount.cs b/sdk/dotnet/Chronicle/Outputs/WatchlistEntityCount.cs
new file mode 100644
index 0000000000..36ebd76d39
--- /dev/null
+++ b/sdk/dotnet/Chronicle/Outputs/WatchlistEntityCount.cs
@@ -0,0 +1,37 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.Chronicle.Outputs
+{
+
+ [OutputType]
+ public sealed class WatchlistEntityCount
+ {
+ ///
+ /// (Output)
+ /// Output only. Count of asset type entities in the watchlist.
+ ///
+ public readonly int? Asset;
+ ///
+ /// (Output)
+ /// Output only. Count of user type entities in the watchlist.
+ ///
+ public readonly int? User;
+
+ [OutputConstructor]
+ private WatchlistEntityCount(
+ int? asset,
+
+ int? user)
+ {
+ Asset = asset;
+ User = user;
+ }
+ }
+}
diff --git a/sdk/dotnet/Chronicle/Outputs/WatchlistEntityPopulationMechanism.cs b/sdk/dotnet/Chronicle/Outputs/WatchlistEntityPopulationMechanism.cs
new file mode 100644
index 0000000000..ab219c8ffb
--- /dev/null
+++ b/sdk/dotnet/Chronicle/Outputs/WatchlistEntityPopulationMechanism.cs
@@ -0,0 +1,29 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.Chronicle.Outputs
+{
+
+ [OutputType]
+ public sealed class WatchlistEntityPopulationMechanism
+ {
+ ///
+ /// Entities are added manually.
+ ///
+ /// - - -
+ ///
+ public readonly Outputs.WatchlistEntityPopulationMechanismManual? Manual;
+
+ [OutputConstructor]
+ private WatchlistEntityPopulationMechanism(Outputs.WatchlistEntityPopulationMechanismManual? manual)
+ {
+ Manual = manual;
+ }
+ }
+}
diff --git a/sdk/dotnet/Chronicle/Outputs/WatchlistEntityPopulationMechanismManual.cs b/sdk/dotnet/Chronicle/Outputs/WatchlistEntityPopulationMechanismManual.cs
new file mode 100644
index 0000000000..87deeac7f1
--- /dev/null
+++ b/sdk/dotnet/Chronicle/Outputs/WatchlistEntityPopulationMechanismManual.cs
@@ -0,0 +1,21 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.Chronicle.Outputs
+{
+
+ [OutputType]
+ public sealed class WatchlistEntityPopulationMechanismManual
+ {
+ [OutputConstructor]
+ private WatchlistEntityPopulationMechanismManual()
+ {
+ }
+ }
+}
diff --git a/sdk/dotnet/Chronicle/Outputs/WatchlistWatchlistUserPreferences.cs b/sdk/dotnet/Chronicle/Outputs/WatchlistWatchlistUserPreferences.cs
new file mode 100644
index 0000000000..b6353826b4
--- /dev/null
+++ b/sdk/dotnet/Chronicle/Outputs/WatchlistWatchlistUserPreferences.cs
@@ -0,0 +1,27 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.Chronicle.Outputs
+{
+
+ [OutputType]
+ public sealed class WatchlistWatchlistUserPreferences
+ {
+ ///
+ /// Optional. Whether the watchlist is pinned on the dashboard.
+ ///
+ public readonly bool? Pinned;
+
+ [OutputConstructor]
+ private WatchlistWatchlistUserPreferences(bool? pinned)
+ {
+ Pinned = pinned;
+ }
+ }
+}
diff --git a/sdk/dotnet/Chronicle/README.md b/sdk/dotnet/Chronicle/README.md
new file mode 100644
index 0000000000..061b113996
--- /dev/null
+++ b/sdk/dotnet/Chronicle/README.md
@@ -0,0 +1 @@
+A Pulumi package for creating and managing Google Cloud Platform resources.
diff --git a/sdk/dotnet/Chronicle/Watchlist.cs b/sdk/dotnet/Chronicle/Watchlist.cs
new file mode 100644
index 0000000000..38b8683548
--- /dev/null
+++ b/sdk/dotnet/Chronicle/Watchlist.cs
@@ -0,0 +1,363 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.Chronicle
+{
+ ///
+ /// ## Example Usage
+ ///
+ /// ### Chronicle Watchlist Basic
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Gcp = Pulumi.Gcp;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var example = new Gcp.Chronicle.Watchlist("example", new()
+ /// {
+ /// Location = "us",
+ /// Instance = "00000000-0000-0000-0000-000000000000",
+ /// WatchlistId = "watchlist-name",
+ /// Description = "watchlist-description",
+ /// DisplayName = "watchlist-name",
+ /// MultiplyingFactor = 1,
+ /// EntityPopulationMechanism = new Gcp.Chronicle.Inputs.WatchlistEntityPopulationMechanismArgs
+ /// {
+ /// Manual = null,
+ /// },
+ /// WatchlistUserPreferences = new Gcp.Chronicle.Inputs.WatchlistWatchlistUserPreferencesArgs
+ /// {
+ /// Pinned = true,
+ /// },
+ /// });
+ ///
+ /// });
+ /// ```
+ ///
+ /// ## Import
+ ///
+ /// Watchlist can be imported using any of these accepted formats:
+ ///
+ /// * `projects/{{project}}/locations/{{location}}/instances/{{instance}}/watchlists/{{watchlist_id}}`
+ ///
+ /// * `{{project}}/{{location}}/{{instance}}/{{watchlist_id}}`
+ ///
+ /// * `{{location}}/{{instance}}/{{watchlist_id}}`
+ ///
+ /// When using the `pulumi import` command, Watchlist can be imported using one of the formats above. For example:
+ ///
+ /// ```sh
+ /// $ pulumi import gcp:chronicle/watchlist:Watchlist default projects/{{project}}/locations/{{location}}/instances/{{instance}}/watchlists/{{watchlist_id}}
+ /// ```
+ ///
+ /// ```sh
+ /// $ pulumi import gcp:chronicle/watchlist:Watchlist default {{project}}/{{location}}/{{instance}}/{{watchlist_id}}
+ /// ```
+ ///
+ /// ```sh
+ /// $ pulumi import gcp:chronicle/watchlist:Watchlist default {{location}}/{{instance}}/{{watchlist_id}}
+ /// ```
+ ///
+ [GcpResourceType("gcp:chronicle/watchlist:Watchlist")]
+ public partial class Watchlist : global::Pulumi.CustomResource
+ {
+ ///
+ /// Output only. Time the watchlist was created.
+ ///
+ [Output("createTime")]
+ public Output CreateTime { get; private set; } = null!;
+
+ ///
+ /// Optional. Description of the watchlist.
+ ///
+ [Output("description")]
+ public Output Description { get; private set; } = null!;
+
+ ///
+ /// Required. Display name of the watchlist.
+ /// Note that it must be at least one character and less than 63 characters
+ /// (https://google.aip.dev/148).
+ ///
+ [Output("displayName")]
+ public Output DisplayName { get; private set; } = null!;
+
+ ///
+ /// Count of different types of entities in the watchlist.
+ /// Structure is documented below.
+ ///
+ [Output("entityCounts")]
+ public Output> EntityCounts { get; private set; } = null!;
+
+ ///
+ /// Mechanism to populate entities in the watchlist.
+ /// Structure is documented below.
+ ///
+ [Output("entityPopulationMechanism")]
+ public Output EntityPopulationMechanism { get; private set; } = null!;
+
+ ///
+ /// The unique identifier for the Chronicle instance, which is the same as the customer ID.
+ ///
+ [Output("instance")]
+ public Output Instance { get; private set; } = null!;
+
+ ///
+ /// The location of the resource. This is the geographical region where the Chronicle instance resides, such as "us" or "europe-west2".
+ ///
+ [Output("location")]
+ public Output Location { get; private set; } = null!;
+
+ ///
+ /// Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified.
+ ///
+ [Output("multiplyingFactor")]
+ public Output MultiplyingFactor { get; private set; } = null!;
+
+ ///
+ /// Identifier. Resource name of the watchlist. This unique identifier is generated using values provided for the URL parameters.
+ /// Format:
+ /// projects/{project}/locations/{location}/instances/{instance}/watchlists/{watchlist}
+ ///
+ [Output("name")]
+ public Output Name { get; private set; } = null!;
+
+ [Output("project")]
+ public Output Project { get; private set; } = null!;
+
+ ///
+ /// Output only. Time the watchlist was last updated.
+ ///
+ [Output("updateTime")]
+ public Output UpdateTime { get; private set; } = null!;
+
+ ///
+ /// Optional. The ID to use for the watchlist,
+ /// which will become the final component of the watchlist's resource name.
+ /// This value should be 4-63 characters, and valid characters
+ /// are /a-z-/.
+ ///
+ [Output("watchlistId")]
+ public Output WatchlistId { get; private set; } = null!;
+
+ ///
+ /// A collection of user preferences for watchlist UI configuration.
+ ///
+ [Output("watchlistUserPreferences")]
+ public Output WatchlistUserPreferences { get; private set; } = null!;
+
+
+ ///
+ /// Create a Watchlist resource with the given unique name, arguments, and options.
+ ///
+ ///
+ /// The unique name of the resource
+ /// The arguments used to populate this resource's properties
+ /// A bag of options that control this resource's behavior
+ public Watchlist(string name, WatchlistArgs args, CustomResourceOptions? options = null)
+ : base("gcp:chronicle/watchlist:Watchlist", name, args ?? new WatchlistArgs(), MakeResourceOptions(options, ""))
+ {
+ }
+
+ private Watchlist(string name, Input id, WatchlistState? state = null, CustomResourceOptions? options = null)
+ : base("gcp:chronicle/watchlist:Watchlist", name, state, MakeResourceOptions(options, id))
+ {
+ }
+
+ private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id)
+ {
+ var defaultOptions = new CustomResourceOptions
+ {
+ Version = Utilities.Version,
+ };
+ var merged = CustomResourceOptions.Merge(defaultOptions, options);
+ // Override the ID if one was specified for consistency with other language SDKs.
+ merged.Id = id ?? merged.Id;
+ return merged;
+ }
+ ///
+ /// Get an existing Watchlist resource's state with the given name, ID, and optional extra
+ /// properties used to qualify the lookup.
+ ///
+ ///
+ /// The unique name of the resulting resource.
+ /// The unique provider ID of the resource to lookup.
+ /// Any extra arguments used during the lookup.
+ /// A bag of options that control this resource's behavior
+ public static Watchlist Get(string name, Input id, WatchlistState? state = null, CustomResourceOptions? options = null)
+ {
+ return new Watchlist(name, id, state, options);
+ }
+ }
+
+ public sealed class WatchlistArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Optional. Description of the watchlist.
+ ///
+ [Input("description")]
+ public Input? Description { get; set; }
+
+ ///
+ /// Required. Display name of the watchlist.
+ /// Note that it must be at least one character and less than 63 characters
+ /// (https://google.aip.dev/148).
+ ///
+ [Input("displayName", required: true)]
+ public Input DisplayName { get; set; } = null!;
+
+ ///
+ /// Mechanism to populate entities in the watchlist.
+ /// Structure is documented below.
+ ///
+ [Input("entityPopulationMechanism", required: true)]
+ public Input EntityPopulationMechanism { get; set; } = null!;
+
+ ///
+ /// The unique identifier for the Chronicle instance, which is the same as the customer ID.
+ ///
+ [Input("instance", required: true)]
+ public Input Instance { get; set; } = null!;
+
+ ///
+ /// The location of the resource. This is the geographical region where the Chronicle instance resides, such as "us" or "europe-west2".
+ ///
+ [Input("location", required: true)]
+ public Input Location { get; set; } = null!;
+
+ ///
+ /// Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified.
+ ///
+ [Input("multiplyingFactor")]
+ public Input? MultiplyingFactor { get; set; }
+
+ [Input("project")]
+ public Input? Project { get; set; }
+
+ ///
+ /// Optional. The ID to use for the watchlist,
+ /// which will become the final component of the watchlist's resource name.
+ /// This value should be 4-63 characters, and valid characters
+ /// are /a-z-/.
+ ///
+ [Input("watchlistId", required: true)]
+ public Input WatchlistId { get; set; } = null!;
+
+ ///
+ /// A collection of user preferences for watchlist UI configuration.
+ ///
+ [Input("watchlistUserPreferences")]
+ public Input? WatchlistUserPreferences { get; set; }
+
+ public WatchlistArgs()
+ {
+ }
+ public static new WatchlistArgs Empty => new WatchlistArgs();
+ }
+
+ public sealed class WatchlistState : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Output only. Time the watchlist was created.
+ ///
+ [Input("createTime")]
+ public Input? CreateTime { get; set; }
+
+ ///
+ /// Optional. Description of the watchlist.
+ ///
+ [Input("description")]
+ public Input? Description { get; set; }
+
+ ///
+ /// Required. Display name of the watchlist.
+ /// Note that it must be at least one character and less than 63 characters
+ /// (https://google.aip.dev/148).
+ ///
+ [Input("displayName")]
+ public Input? DisplayName { get; set; }
+
+ [Input("entityCounts")]
+ private InputList? _entityCounts;
+
+ ///
+ /// Count of different types of entities in the watchlist.
+ /// Structure is documented below.
+ ///
+ public InputList EntityCounts
+ {
+ get => _entityCounts ?? (_entityCounts = new InputList());
+ set => _entityCounts = value;
+ }
+
+ ///
+ /// Mechanism to populate entities in the watchlist.
+ /// Structure is documented below.
+ ///
+ [Input("entityPopulationMechanism")]
+ public Input? EntityPopulationMechanism { get; set; }
+
+ ///
+ /// The unique identifier for the Chronicle instance, which is the same as the customer ID.
+ ///
+ [Input("instance")]
+ public Input? Instance { get; set; }
+
+ ///
+ /// The location of the resource. This is the geographical region where the Chronicle instance resides, such as "us" or "europe-west2".
+ ///
+ [Input("location")]
+ public Input? Location { get; set; }
+
+ ///
+ /// Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified.
+ ///
+ [Input("multiplyingFactor")]
+ public Input? MultiplyingFactor { get; set; }
+
+ ///
+ /// Identifier. Resource name of the watchlist. This unique identifier is generated using values provided for the URL parameters.
+ /// Format:
+ /// projects/{project}/locations/{location}/instances/{instance}/watchlists/{watchlist}
+ ///
+ [Input("name")]
+ public Input? Name { get; set; }
+
+ [Input("project")]
+ public Input? Project { get; set; }
+
+ ///
+ /// Output only. Time the watchlist was last updated.
+ ///
+ [Input("updateTime")]
+ public Input? UpdateTime { get; set; }
+
+ ///
+ /// Optional. The ID to use for the watchlist,
+ /// which will become the final component of the watchlist's resource name.
+ /// This value should be 4-63 characters, and valid characters
+ /// are /a-z-/.
+ ///
+ [Input("watchlistId")]
+ public Input? WatchlistId { get; set; }
+
+ ///
+ /// A collection of user preferences for watchlist UI configuration.
+ ///
+ [Input("watchlistUserPreferences")]
+ public Input? WatchlistUserPreferences { get; set; }
+
+ public WatchlistState()
+ {
+ }
+ public static new WatchlistState Empty => new WatchlistState();
+ }
+}
diff --git a/sdk/dotnet/CloudRunV2/Inputs/ServiceTemplateScalingArgs.cs b/sdk/dotnet/CloudRunV2/Inputs/ServiceTemplateScalingArgs.cs
index 96a86f7722..6692033519 100644
--- a/sdk/dotnet/CloudRunV2/Inputs/ServiceTemplateScalingArgs.cs
+++ b/sdk/dotnet/CloudRunV2/Inputs/ServiceTemplateScalingArgs.cs
@@ -13,7 +13,8 @@ namespace Pulumi.Gcp.CloudRunV2.Inputs
public sealed class ServiceTemplateScalingArgs : global::Pulumi.ResourceArgs
{
///
- /// Maximum number of serving instances that this resource should have.
+ /// Maximum number of serving instances that this resource should have. Must not be less than minimum instance count. If absent, Cloud Run will calculate
+ /// a default value based on the project's available container instances quota in the region and specified instance size.
///
[Input("maxInstanceCount")]
public Input? MaxInstanceCount { get; set; }
diff --git a/sdk/dotnet/CloudRunV2/Inputs/ServiceTemplateScalingGetArgs.cs b/sdk/dotnet/CloudRunV2/Inputs/ServiceTemplateScalingGetArgs.cs
index 82b563aa88..80069b3ce2 100644
--- a/sdk/dotnet/CloudRunV2/Inputs/ServiceTemplateScalingGetArgs.cs
+++ b/sdk/dotnet/CloudRunV2/Inputs/ServiceTemplateScalingGetArgs.cs
@@ -13,7 +13,8 @@ namespace Pulumi.Gcp.CloudRunV2.Inputs
public sealed class ServiceTemplateScalingGetArgs : global::Pulumi.ResourceArgs
{
///
- /// Maximum number of serving instances that this resource should have.
+ /// Maximum number of serving instances that this resource should have. Must not be less than minimum instance count. If absent, Cloud Run will calculate
+ /// a default value based on the project's available container instances quota in the region and specified instance size.
///
[Input("maxInstanceCount")]
public Input? MaxInstanceCount { get; set; }
diff --git a/sdk/dotnet/CloudRunV2/Outputs/GetServiceTemplateScalingResult.cs b/sdk/dotnet/CloudRunV2/Outputs/GetServiceTemplateScalingResult.cs
index 815a8722e7..22c015dd1a 100644
--- a/sdk/dotnet/CloudRunV2/Outputs/GetServiceTemplateScalingResult.cs
+++ b/sdk/dotnet/CloudRunV2/Outputs/GetServiceTemplateScalingResult.cs
@@ -14,11 +14,12 @@ namespace Pulumi.Gcp.CloudRunV2.Outputs
public sealed class GetServiceTemplateScalingResult
{
///
- /// Maximum number of serving instances that this resource should have.
+ /// Maximum number of serving instances that this resource should have. Must not be less than minimum instance count. If absent, Cloud Run will calculate
+ /// a default value based on the project's available container instances quota in the region and specified instance size.
///
public readonly int MaxInstanceCount;
///
- /// Minimum number of serving instances that this resource should have.
+ /// Minimum number of serving instances that this resource should have. Defaults to 0. Must not be greater than maximum instance count.
///
public readonly int MinInstanceCount;
diff --git a/sdk/dotnet/CloudRunV2/Outputs/ServiceTemplateScaling.cs b/sdk/dotnet/CloudRunV2/Outputs/ServiceTemplateScaling.cs
index 4280c7fd92..8a286817ca 100644
--- a/sdk/dotnet/CloudRunV2/Outputs/ServiceTemplateScaling.cs
+++ b/sdk/dotnet/CloudRunV2/Outputs/ServiceTemplateScaling.cs
@@ -14,7 +14,8 @@ namespace Pulumi.Gcp.CloudRunV2.Outputs
public sealed class ServiceTemplateScaling
{
///
- /// Maximum number of serving instances that this resource should have.
+ /// Maximum number of serving instances that this resource should have. Must not be less than minimum instance count. If absent, Cloud Run will calculate
+ /// a default value based on the project's available container instances quota in the region and specified instance size.
///
public readonly int? MaxInstanceCount;
///
diff --git a/sdk/dotnet/Composer/Inputs/EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs.cs b/sdk/dotnet/Composer/Inputs/EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs.cs
new file mode 100644
index 0000000000..3ca1c65d8e
--- /dev/null
+++ b/sdk/dotnet/Composer/Inputs/EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs.cs
@@ -0,0 +1,32 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.Composer.Inputs
+{
+
+ public sealed class EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer.
+ ///
+ [Input("retentionDays")]
+ public Input? RetentionDays { get; set; }
+
+ ///
+ /// Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer.
+ ///
+ [Input("retentionMode")]
+ public Input? RetentionMode { get; set; }
+
+ public EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs()
+ {
+ }
+ public static new EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs Empty => new EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs();
+ }
+}
diff --git a/sdk/dotnet/Composer/Inputs/EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigGetArgs.cs b/sdk/dotnet/Composer/Inputs/EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigGetArgs.cs
new file mode 100644
index 0000000000..46c78332fe
--- /dev/null
+++ b/sdk/dotnet/Composer/Inputs/EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigGetArgs.cs
@@ -0,0 +1,32 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.Composer.Inputs
+{
+
+ public sealed class EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer.
+ ///
+ [Input("retentionDays")]
+ public Input? RetentionDays { get; set; }
+
+ ///
+ /// Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer.
+ ///
+ [Input("retentionMode")]
+ public Input? RetentionMode { get; set; }
+
+ public EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigGetArgs()
+ {
+ }
+ public static new EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigGetArgs Empty => new EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Composer/Inputs/EnvironmentConfigDataRetentionConfigArgs.cs b/sdk/dotnet/Composer/Inputs/EnvironmentConfigDataRetentionConfigArgs.cs
index c674d9f1a1..28f8707be4 100644
--- a/sdk/dotnet/Composer/Inputs/EnvironmentConfigDataRetentionConfigArgs.cs
+++ b/sdk/dotnet/Composer/Inputs/EnvironmentConfigDataRetentionConfigArgs.cs
@@ -12,7 +12,19 @@ namespace Pulumi.Gcp.Composer.Inputs
public sealed class EnvironmentConfigDataRetentionConfigArgs : global::Pulumi.ResourceArgs
{
- [Input("taskLogsRetentionConfigs", required: true)]
+ [Input("airflowMetadataRetentionConfigs")]
+ private InputList? _airflowMetadataRetentionConfigs;
+
+ ///
+ /// Optional. The configuration setting for database retention.
+ ///
+ public InputList AirflowMetadataRetentionConfigs
+ {
+ get => _airflowMetadataRetentionConfigs ?? (_airflowMetadataRetentionConfigs = new InputList());
+ set => _airflowMetadataRetentionConfigs = value;
+ }
+
+ [Input("taskLogsRetentionConfigs")]
private InputList? _taskLogsRetentionConfigs;
///
diff --git a/sdk/dotnet/Composer/Inputs/EnvironmentConfigDataRetentionConfigGetArgs.cs b/sdk/dotnet/Composer/Inputs/EnvironmentConfigDataRetentionConfigGetArgs.cs
index 2ff0a998f4..f75c2929ee 100644
--- a/sdk/dotnet/Composer/Inputs/EnvironmentConfigDataRetentionConfigGetArgs.cs
+++ b/sdk/dotnet/Composer/Inputs/EnvironmentConfigDataRetentionConfigGetArgs.cs
@@ -12,7 +12,19 @@ namespace Pulumi.Gcp.Composer.Inputs
public sealed class EnvironmentConfigDataRetentionConfigGetArgs : global::Pulumi.ResourceArgs
{
- [Input("taskLogsRetentionConfigs", required: true)]
+ [Input("airflowMetadataRetentionConfigs")]
+ private InputList? _airflowMetadataRetentionConfigs;
+
+ ///
+ /// Optional. The configuration setting for database retention.
+ ///
+ public InputList AirflowMetadataRetentionConfigs
+ {
+ get => _airflowMetadataRetentionConfigs ?? (_airflowMetadataRetentionConfigs = new InputList());
+ set => _airflowMetadataRetentionConfigs = value;
+ }
+
+ [Input("taskLogsRetentionConfigs")]
private InputList? _taskLogsRetentionConfigs;
///
diff --git a/sdk/dotnet/Composer/Outputs/EnvironmentConfigDataRetentionConfig.cs b/sdk/dotnet/Composer/Outputs/EnvironmentConfigDataRetentionConfig.cs
index d7c304696f..25e31f5f7d 100644
--- a/sdk/dotnet/Composer/Outputs/EnvironmentConfigDataRetentionConfig.cs
+++ b/sdk/dotnet/Composer/Outputs/EnvironmentConfigDataRetentionConfig.cs
@@ -13,14 +13,22 @@ namespace Pulumi.Gcp.Composer.Outputs
[OutputType]
public sealed class EnvironmentConfigDataRetentionConfig
{
+ ///
+ /// Optional. The configuration setting for database retention.
+ ///
+ public readonly ImmutableArray AirflowMetadataRetentionConfigs;
///
/// Optional. The configuration setting for Task Logs.
///
public readonly ImmutableArray TaskLogsRetentionConfigs;
[OutputConstructor]
- private EnvironmentConfigDataRetentionConfig(ImmutableArray taskLogsRetentionConfigs)
+ private EnvironmentConfigDataRetentionConfig(
+ ImmutableArray airflowMetadataRetentionConfigs,
+
+ ImmutableArray taskLogsRetentionConfigs)
{
+ AirflowMetadataRetentionConfigs = airflowMetadataRetentionConfigs;
TaskLogsRetentionConfigs = taskLogsRetentionConfigs;
}
}
diff --git a/sdk/dotnet/Composer/Outputs/EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig.cs b/sdk/dotnet/Composer/Outputs/EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig.cs
new file mode 100644
index 0000000000..3a8669a829
--- /dev/null
+++ b/sdk/dotnet/Composer/Outputs/EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig.cs
@@ -0,0 +1,35 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.Composer.Outputs
+{
+
+ [OutputType]
+ public sealed class EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig
+ {
+ ///
+ /// How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer.
+ ///
+ public readonly int? RetentionDays;
+ ///
+ /// Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer.
+ ///
+ public readonly string? RetentionMode;
+
+ [OutputConstructor]
+ private EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig(
+ int? retentionDays,
+
+ string? retentionMode)
+ {
+ RetentionDays = retentionDays;
+ RetentionMode = retentionMode;
+ }
+ }
+}
diff --git a/sdk/dotnet/Composer/Outputs/GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigResult.cs b/sdk/dotnet/Composer/Outputs/GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigResult.cs
new file mode 100644
index 0000000000..a70cf377b6
--- /dev/null
+++ b/sdk/dotnet/Composer/Outputs/GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigResult.cs
@@ -0,0 +1,35 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.Composer.Outputs
+{
+
+ [OutputType]
+ public sealed class GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigResult
+ {
+ ///
+ /// How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer.
+ ///
+ public readonly int RetentionDays;
+ ///
+ /// Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer.
+ ///
+ public readonly string RetentionMode;
+
+ [OutputConstructor]
+ private GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigResult(
+ int retentionDays,
+
+ string retentionMode)
+ {
+ RetentionDays = retentionDays;
+ RetentionMode = retentionMode;
+ }
+ }
+}
diff --git a/sdk/dotnet/Composer/Outputs/GetEnvironmentConfigDataRetentionConfigResult.cs b/sdk/dotnet/Composer/Outputs/GetEnvironmentConfigDataRetentionConfigResult.cs
index 8ab906c013..8edd61db6a 100644
--- a/sdk/dotnet/Composer/Outputs/GetEnvironmentConfigDataRetentionConfigResult.cs
+++ b/sdk/dotnet/Composer/Outputs/GetEnvironmentConfigDataRetentionConfigResult.cs
@@ -13,14 +13,22 @@ namespace Pulumi.Gcp.Composer.Outputs
[OutputType]
public sealed class GetEnvironmentConfigDataRetentionConfigResult
{
+ ///
+ /// Optional. The configuration setting for database retention.
+ ///
+ public readonly ImmutableArray AirflowMetadataRetentionConfigs;
///
/// Optional. The configuration setting for Task Logs.
///
public readonly ImmutableArray TaskLogsRetentionConfigs;
[OutputConstructor]
- private GetEnvironmentConfigDataRetentionConfigResult(ImmutableArray taskLogsRetentionConfigs)
+ private GetEnvironmentConfigDataRetentionConfigResult(
+ ImmutableArray airflowMetadataRetentionConfigs,
+
+ ImmutableArray taskLogsRetentionConfigs)
{
+ AirflowMetadataRetentionConfigs = airflowMetadataRetentionConfigs;
TaskLogsRetentionConfigs = taskLogsRetentionConfigs;
}
}
diff --git a/sdk/dotnet/Compute/FirewallPolicyAssociation.cs b/sdk/dotnet/Compute/FirewallPolicyAssociation.cs
index f513a7c3f7..89c5d7cbf7 100644
--- a/sdk/dotnet/Compute/FirewallPolicyAssociation.cs
+++ b/sdk/dotnet/Compute/FirewallPolicyAssociation.cs
@@ -11,11 +11,16 @@ namespace Pulumi.Gcp.Compute
{
///
/// Allows associating hierarchical firewall policies with the target where they are applied. This allows creating policies and rules in a different location than they are applied.
+ /// For more information on applying hierarchical firewall policies see the [official documentation](https://cloud.google.com/firewall/docs/firewall-policies#managing_hierarchical_firewall_policy_resources)
///
- /// For more information on applying hierarchical firewall policies see the [official documentation](https://cloud.google.com/vpc/docs/firewall-policies#managing_hierarchical_firewall_policy_resources)
+ /// To get more information about FirewallPolicyAssociation, see:
+ ///
+ /// * [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/firewallPolicies/addAssociation)
///
/// ## Example Usage
///
+ /// ### Firewall Policy Association
+ ///
/// ```csharp
/// using System.Collections.Generic;
/// using System.Linq;
@@ -24,16 +29,23 @@ namespace Pulumi.Gcp.Compute
///
/// return await Deployment.RunAsync(() =>
/// {
- /// var @default = new Gcp.Compute.FirewallPolicy("default", new()
+ /// var folder = new Gcp.Organizations.Folder("folder", new()
/// {
- /// Parent = "organizations/12345",
+ /// DisplayName = "my-folder",
+ /// Parent = "organizations/123456789",
+ /// DeletionProtection = false,
+ /// });
+ ///
+ /// var policy = new Gcp.Compute.FirewallPolicy("policy", new()
+ /// {
+ /// Parent = "organizations/123456789",
/// ShortName = "my-policy",
/// Description = "Example Resource",
/// });
///
- /// var defaultFirewallPolicyAssociation = new Gcp.Compute.FirewallPolicyAssociation("default", new()
+ /// var @default = new Gcp.Compute.FirewallPolicyAssociation("default", new()
/// {
- /// FirewallPolicy = @default.Id,
+ /// FirewallPolicy = policy.Id,
/// AttachmentTarget = folder.Name,
/// Name = "my-association",
/// });
@@ -69,17 +81,16 @@ public partial class FirewallPolicyAssociation : global::Pulumi.CustomResource
public Output AttachmentTarget { get; private set; } = null!;
///
- /// The firewall policy ID of the association.
+ /// The firewall policy of the resource.
+ ///
+ ///
+ /// - - -
///
[Output("firewallPolicy")]
public Output FirewallPolicy { get; private set; } = null!;
///
/// The name for an association.
- ///
- ///
- ///
- /// - - -
///
[Output("name")]
public Output Name { get; private set; } = null!;
@@ -143,17 +154,16 @@ public sealed class FirewallPolicyAssociationArgs : global::Pulumi.ResourceArgs
public Input AttachmentTarget { get; set; } = null!;
///
- /// The firewall policy ID of the association.
+ /// The firewall policy of the resource.
+ ///
+ ///
+ /// - - -
///
[Input("firewallPolicy", required: true)]
public Input FirewallPolicy { get; set; } = null!;
///
/// The name for an association.
- ///
- ///
- ///
- /// - - -
///
[Input("name")]
public Input? Name { get; set; }
@@ -173,17 +183,16 @@ public sealed class FirewallPolicyAssociationState : global::Pulumi.ResourceArgs
public Input? AttachmentTarget { get; set; }
///
- /// The firewall policy ID of the association.
+ /// The firewall policy of the resource.
+ ///
+ ///
+ /// - - -
///
[Input("firewallPolicy")]
public Input? FirewallPolicy { get; set; }
///
/// The name for an association.
- ///
- ///
- ///
- /// - - -
///
[Input("name")]
public Input? Name { get; set; }
diff --git a/sdk/dotnet/Compute/GetNetwork.cs b/sdk/dotnet/Compute/GetNetwork.cs
index 5520a0dac5..30a0f611e5 100644
--- a/sdk/dotnet/Compute/GetNetwork.cs
+++ b/sdk/dotnet/Compute/GetNetwork.cs
@@ -167,11 +167,15 @@ public sealed class GetNetworkResult
public readonly string InternalIpv6Range;
public readonly string Name;
///
+ /// The numeric unique identifier for the resource.
+ ///
+ public readonly int NetworkId;
+ ///
/// Beta A full or partial URL of the network profile to apply to this network.
///
public readonly string? NetworkProfile;
///
- /// The numeric unique identifier for the resource.
+ /// (Deprecated) The numeric unique identifier for the resource. `numeric_id` is deprecated and will be removed in a future major release. Use `network_id` instead.
///
public readonly string NumericId;
public readonly string? Project;
@@ -196,6 +200,8 @@ private GetNetworkResult(
string name,
+ int networkId,
+
string? networkProfile,
string numericId,
@@ -211,6 +217,7 @@ private GetNetworkResult(
Id = id;
InternalIpv6Range = internalIpv6Range;
Name = name;
+ NetworkId = networkId;
NetworkProfile = networkProfile;
NumericId = numericId;
Project = project;
diff --git a/sdk/dotnet/Compute/GetSubnetwork.cs b/sdk/dotnet/Compute/GetSubnetwork.cs
index c3796936de..1306448ec7 100644
--- a/sdk/dotnet/Compute/GetSubnetwork.cs
+++ b/sdk/dotnet/Compute/GetSubnetwork.cs
@@ -205,6 +205,10 @@ public sealed class GetSubnetworkResult
///
public readonly ImmutableArray SecondaryIpRanges;
public readonly string SelfLink;
+ ///
+ /// The numeric ID of the resource.
+ ///
+ public readonly int SubnetworkId;
[OutputConstructor]
private GetSubnetworkResult(
@@ -230,7 +234,9 @@ private GetSubnetworkResult(
ImmutableArray secondaryIpRanges,
- string selfLink)
+ string selfLink,
+
+ int subnetworkId)
{
Description = description;
GatewayAddress = gatewayAddress;
@@ -244,6 +250,7 @@ private GetSubnetworkResult(
Region = region;
SecondaryIpRanges = secondaryIpRanges;
SelfLink = selfLink;
+ SubnetworkId = subnetworkId;
}
}
}
diff --git a/sdk/dotnet/Compute/Inputs/InstanceBootDiskInitializeParamsArgs.cs b/sdk/dotnet/Compute/Inputs/InstanceBootDiskInitializeParamsArgs.cs
index 158ba96cc7..5a3dfc35b1 100644
--- a/sdk/dotnet/Compute/Inputs/InstanceBootDiskInitializeParamsArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/InstanceBootDiskInitializeParamsArgs.cs
@@ -83,7 +83,7 @@ public InputMap ResourceManagerTags
}
///
- /// A list of self_links of resource policies to attach to the instance's boot disk. Modifying this list will cause the instance to recreate. Currently a max of 1 resource policy is supported.
+ /// A list of self_links of resource policies to attach to the instance's boot disk. Modifying this list will cause the instance to recreate, so any external values are not set until the user specifies this field. Currently a max of 1 resource policy is supported.
///
[Input("resourcePolicies")]
public Input? ResourcePolicies { get; set; }
diff --git a/sdk/dotnet/Compute/Inputs/InstanceBootDiskInitializeParamsGetArgs.cs b/sdk/dotnet/Compute/Inputs/InstanceBootDiskInitializeParamsGetArgs.cs
index b2f37a1530..8bafa31f1e 100644
--- a/sdk/dotnet/Compute/Inputs/InstanceBootDiskInitializeParamsGetArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/InstanceBootDiskInitializeParamsGetArgs.cs
@@ -83,7 +83,7 @@ public InputMap ResourceManagerTags
}
///
- /// A list of self_links of resource policies to attach to the instance's boot disk. Modifying this list will cause the instance to recreate. Currently a max of 1 resource policy is supported.
+ /// A list of self_links of resource policies to attach to the instance's boot disk. Modifying this list will cause the instance to recreate, so any external values are not set until the user specifies this field. Currently a max of 1 resource policy is supported.
///
[Input("resourcePolicies")]
public Input? ResourcePolicies { get; set; }
diff --git a/sdk/dotnet/Compute/Inputs/InstanceFromMachineImageSchedulingArgs.cs b/sdk/dotnet/Compute/Inputs/InstanceFromMachineImageSchedulingArgs.cs
index 72a6fb3a46..20525848bc 100644
--- a/sdk/dotnet/Compute/Inputs/InstanceFromMachineImageSchedulingArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/InstanceFromMachineImageSchedulingArgs.cs
@@ -18,6 +18,12 @@ public sealed class InstanceFromMachineImageSchedulingArgs : global::Pulumi.Reso
[Input("automaticRestart")]
public Input? AutomaticRestart { get; set; }
+ ///
+ /// Specifies the availability domain, which this instance should be scheduled on.
+ ///
+ [Input("availabilityDomain")]
+ public Input? AvailabilityDomain { get; set; }
+
///
/// Specify the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
///
diff --git a/sdk/dotnet/Compute/Inputs/InstanceFromMachineImageSchedulingGetArgs.cs b/sdk/dotnet/Compute/Inputs/InstanceFromMachineImageSchedulingGetArgs.cs
index 2f257d4194..d312c128e1 100644
--- a/sdk/dotnet/Compute/Inputs/InstanceFromMachineImageSchedulingGetArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/InstanceFromMachineImageSchedulingGetArgs.cs
@@ -18,6 +18,12 @@ public sealed class InstanceFromMachineImageSchedulingGetArgs : global::Pulumi.R
[Input("automaticRestart")]
public Input? AutomaticRestart { get; set; }
+ ///
+ /// Specifies the availability domain, which this instance should be scheduled on.
+ ///
+ [Input("availabilityDomain")]
+ public Input? AvailabilityDomain { get; set; }
+
///
/// Specify the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
///
diff --git a/sdk/dotnet/Compute/Inputs/InstanceFromTemplateSchedulingArgs.cs b/sdk/dotnet/Compute/Inputs/InstanceFromTemplateSchedulingArgs.cs
index 13ee8f56e2..218b556e36 100644
--- a/sdk/dotnet/Compute/Inputs/InstanceFromTemplateSchedulingArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/InstanceFromTemplateSchedulingArgs.cs
@@ -18,6 +18,12 @@ public sealed class InstanceFromTemplateSchedulingArgs : global::Pulumi.Resource
[Input("automaticRestart")]
public Input? AutomaticRestart { get; set; }
+ ///
+ /// Specifies the availability domain, which this instance should be scheduled on.
+ ///
+ [Input("availabilityDomain")]
+ public Input? AvailabilityDomain { get; set; }
+
///
/// Specify the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
///
diff --git a/sdk/dotnet/Compute/Inputs/InstanceFromTemplateSchedulingGetArgs.cs b/sdk/dotnet/Compute/Inputs/InstanceFromTemplateSchedulingGetArgs.cs
index d52fde94fb..1e34e4db66 100644
--- a/sdk/dotnet/Compute/Inputs/InstanceFromTemplateSchedulingGetArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/InstanceFromTemplateSchedulingGetArgs.cs
@@ -18,6 +18,12 @@ public sealed class InstanceFromTemplateSchedulingGetArgs : global::Pulumi.Resou
[Input("automaticRestart")]
public Input? AutomaticRestart { get; set; }
+ ///
+ /// Specifies the availability domain, which this instance should be scheduled on.
+ ///
+ [Input("availabilityDomain")]
+ public Input? AvailabilityDomain { get; set; }
+
///
/// Specify the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
///
diff --git a/sdk/dotnet/Compute/Inputs/InstanceSchedulingArgs.cs b/sdk/dotnet/Compute/Inputs/InstanceSchedulingArgs.cs
index 73e89cedf0..6ad320c829 100644
--- a/sdk/dotnet/Compute/Inputs/InstanceSchedulingArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/InstanceSchedulingArgs.cs
@@ -20,6 +20,12 @@ public sealed class InstanceSchedulingArgs : global::Pulumi.ResourceArgs
[Input("automaticRestart")]
public Input? AutomaticRestart { get; set; }
+ ///
+ /// Specifies the availability domain to place the instance in. The value must be a number between 1 and the number of availability domains specified in the spread placement policy attached to the instance.
+ ///
+ [Input("availabilityDomain")]
+ public Input? AvailabilityDomain { get; set; }
+
///
/// Specifies the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
///
diff --git a/sdk/dotnet/Compute/Inputs/InstanceSchedulingGetArgs.cs b/sdk/dotnet/Compute/Inputs/InstanceSchedulingGetArgs.cs
index 34bcadb255..e3c95902b2 100644
--- a/sdk/dotnet/Compute/Inputs/InstanceSchedulingGetArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/InstanceSchedulingGetArgs.cs
@@ -20,6 +20,12 @@ public sealed class InstanceSchedulingGetArgs : global::Pulumi.ResourceArgs
[Input("automaticRestart")]
public Input? AutomaticRestart { get; set; }
+ ///
+ /// Specifies the availability domain to place the instance in. The value must be a number between 1 and the number of availability domains specified in the spread placement policy attached to the instance.
+ ///
+ [Input("availabilityDomain")]
+ public Input? AvailabilityDomain { get; set; }
+
///
/// Specifies the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
///
diff --git a/sdk/dotnet/Compute/Inputs/InstanceTemplateSchedulingArgs.cs b/sdk/dotnet/Compute/Inputs/InstanceTemplateSchedulingArgs.cs
index e542326aa4..2b7dc2aa6d 100644
--- a/sdk/dotnet/Compute/Inputs/InstanceTemplateSchedulingArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/InstanceTemplateSchedulingArgs.cs
@@ -20,6 +20,12 @@ public sealed class InstanceTemplateSchedulingArgs : global::Pulumi.ResourceArgs
[Input("automaticRestart")]
public Input? AutomaticRestart { get; set; }
+ ///
+ /// Specifies the availability domain to place the instance in. The value must be a number between 1 and the number of availability domains specified in the spread placement policy attached to the instance.
+ ///
+ [Input("availabilityDomain")]
+ public Input? AvailabilityDomain { get; set; }
+
///
/// Specifies the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
///
diff --git a/sdk/dotnet/Compute/Inputs/InstanceTemplateSchedulingGetArgs.cs b/sdk/dotnet/Compute/Inputs/InstanceTemplateSchedulingGetArgs.cs
index df444c2044..51b57fb4ae 100644
--- a/sdk/dotnet/Compute/Inputs/InstanceTemplateSchedulingGetArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/InstanceTemplateSchedulingGetArgs.cs
@@ -20,6 +20,12 @@ public sealed class InstanceTemplateSchedulingGetArgs : global::Pulumi.ResourceA
[Input("automaticRestart")]
public Input? AutomaticRestart { get; set; }
+ ///
+ /// Specifies the availability domain to place the instance in. The value must be a number between 1 and the number of availability domains specified in the spread placement policy attached to the instance.
+ ///
+ [Input("availabilityDomain")]
+ public Input? AvailabilityDomain { get; set; }
+
///
/// Specifies the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
///
diff --git a/sdk/dotnet/Compute/Inputs/RegionInstanceTemplateSchedulingArgs.cs b/sdk/dotnet/Compute/Inputs/RegionInstanceTemplateSchedulingArgs.cs
index d205cbc19b..d6484b3f72 100644
--- a/sdk/dotnet/Compute/Inputs/RegionInstanceTemplateSchedulingArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/RegionInstanceTemplateSchedulingArgs.cs
@@ -20,6 +20,12 @@ public sealed class RegionInstanceTemplateSchedulingArgs : global::Pulumi.Resour
[Input("automaticRestart")]
public Input? AutomaticRestart { get; set; }
+ ///
+ /// Specifies the availability domain to place the instance in. The value must be a number between 1 and the number of availability domains specified in the spread placement policy attached to the instance.
+ ///
+ [Input("availabilityDomain")]
+ public Input? AvailabilityDomain { get; set; }
+
///
/// Specifies the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
///
diff --git a/sdk/dotnet/Compute/Inputs/RegionInstanceTemplateSchedulingGetArgs.cs b/sdk/dotnet/Compute/Inputs/RegionInstanceTemplateSchedulingGetArgs.cs
index 7e522c0495..98b946fb34 100644
--- a/sdk/dotnet/Compute/Inputs/RegionInstanceTemplateSchedulingGetArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/RegionInstanceTemplateSchedulingGetArgs.cs
@@ -20,6 +20,12 @@ public sealed class RegionInstanceTemplateSchedulingGetArgs : global::Pulumi.Res
[Input("automaticRestart")]
public Input? AutomaticRestart { get; set; }
+ ///
+ /// Specifies the availability domain to place the instance in. The value must be a number between 1 and the number of availability domains specified in the spread placement policy attached to the instance.
+ ///
+ [Input("availabilityDomain")]
+ public Input? AvailabilityDomain { get; set; }
+
///
/// Specifies the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
///
diff --git a/sdk/dotnet/Compute/Inputs/ResizeRequestRequestedRunDurationArgs.cs b/sdk/dotnet/Compute/Inputs/ResizeRequestRequestedRunDurationArgs.cs
index 6dc33e12bc..25d70f5332 100644
--- a/sdk/dotnet/Compute/Inputs/ResizeRequestRequestedRunDurationArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/ResizeRequestRequestedRunDurationArgs.cs
@@ -19,7 +19,7 @@ public sealed class ResizeRequestRequestedRunDurationArgs : global::Pulumi.Resou
public Input? Nanos { get; set; }
///
- /// Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+ /// Span of time at a resolution of a second. Must be from 600 to 604800 inclusive. Note: minimum and maximum allowed range for requestedRunDuration is 10 minutes (600 seconds) and 7 days(604800 seconds) correspondingly.
///
[Input("seconds", required: true)]
public Input Seconds { get; set; } = null!;
diff --git a/sdk/dotnet/Compute/Inputs/ResizeRequestRequestedRunDurationGetArgs.cs b/sdk/dotnet/Compute/Inputs/ResizeRequestRequestedRunDurationGetArgs.cs
index 6a703321f9..07c8faaa10 100644
--- a/sdk/dotnet/Compute/Inputs/ResizeRequestRequestedRunDurationGetArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/ResizeRequestRequestedRunDurationGetArgs.cs
@@ -19,7 +19,7 @@ public sealed class ResizeRequestRequestedRunDurationGetArgs : global::Pulumi.Re
public Input? Nanos { get; set; }
///
- /// Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+ /// Span of time at a resolution of a second. Must be from 600 to 604800 inclusive. Note: minimum and maximum allowed range for requestedRunDuration is 10 minutes (600 seconds) and 7 days(604800 seconds) correspondingly.
///
[Input("seconds", required: true)]
public Input Seconds { get; set; } = null!;
diff --git a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusArgs.cs b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusArgs.cs
index bbd72966bb..7f32dbf201 100644
--- a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusArgs.cs
@@ -17,7 +17,7 @@ public sealed class ResizeRequestStatusArgs : global::Pulumi.ResourceArgs
///
/// (Output)
- /// [Output only] Fatal errors encountered during the queueing or provisioning phases of the ResizeRequest that caused the transition to the FAILED state. Contrary to the lastAttempt errors, this field is final and errors are never removed from here, as the ResizeRequest is not going to retry.
+ /// Fatal errors encountered during the queueing or provisioning phases of the ResizeRequest that caused the transition to the FAILED state. Contrary to the lastAttempt errors, this field is final and errors are never removed from here, as the ResizeRequest is not going to retry.
/// Structure is documented below.
///
public InputList Errors
@@ -31,7 +31,7 @@ public InputList Errors
///
/// (Output)
- /// [Output only] Information about the last attempt to fulfill the request. The value is temporary since the ResizeRequest can retry, as long as it's still active and the last attempt value can either be cleared or replaced with a different error. Since ResizeRequest retries infrequently, the value may be stale and no longer show an active problem. The value is cleared when ResizeRequest transitions to the final state (becomes inactive). If the final state is FAILED the error describing it will be storred in the "error" field only.
+ /// Information about the last attempt to fulfill the request. The value is temporary since the ResizeRequest can retry, as long as it's still active and the last attempt value can either be cleared or replaced with a different error. Since ResizeRequest retries infrequently, the value may be stale and no longer show an active problem. The value is cleared when ResizeRequest transitions to the final state (becomes inactive). If the final state is FAILED the error describing it will be storred in the "error" field only.
/// Structure is documented below.
///
public InputList LastAttempts
diff --git a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorArgs.cs b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorArgs.cs
index d40b9c74fd..b4c96c9b08 100644
--- a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorArgs.cs
@@ -17,7 +17,7 @@ public sealed class ResizeRequestStatusErrorArgs : global::Pulumi.ResourceArgs
///
/// (Output)
- /// [Output Only] The array of errors encountered while processing this operation.
+ /// The array of errors encountered while processing this operation.
/// Structure is documented below.
///
public InputList Errors
diff --git a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorArgs.cs b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorArgs.cs
index 83bd2b38b1..6bebb5bd60 100644
--- a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorArgs.cs
@@ -14,7 +14,7 @@ public sealed class ResizeRequestStatusErrorErrorArgs : global::Pulumi.ResourceA
{
///
/// (Output)
- /// [Output Only] The error type identifier for this error.
+ /// The error type identifier for this error.
///
[Input("code")]
public Input? Code { get; set; }
@@ -24,7 +24,7 @@ public sealed class ResizeRequestStatusErrorErrorArgs : global::Pulumi.ResourceA
///
/// (Output)
- /// [Output Only] An optional list of messages that contain the error details. There is a set of defined message types to use for providing details.The syntax depends on the error code. For example, QuotaExceededInfo will have details when the error code is QUOTA_EXCEEDED.
+ /// An array of messages that contain the error details. There is a set of defined message types to use for providing details.The syntax depends on the error code. For example, QuotaExceededInfo will have details when the error code is QUOTA_EXCEEDED.
/// Structure is documented below.
///
public InputList ErrorDetails
@@ -35,7 +35,7 @@ public InputList ErrorDetai
///
/// (Output)
- /// Output Only] Indicates the field in the request that caused the error. This property is optional.
+ /// Indicates the field in the request that caused the error. This property is optional.
///
[Input("location")]
public Input? Location { get; set; }
diff --git a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorErrorDetailArgs.cs b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorErrorDetailArgs.cs
index 3d5ba81d10..ce7fcb8f7f 100644
--- a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorErrorDetailArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorErrorDetailArgs.cs
@@ -17,7 +17,7 @@ public sealed class ResizeRequestStatusErrorErrorErrorDetailArgs : global::Pulum
///
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public InputList ErrorInfos
@@ -31,7 +31,7 @@ public InputList E
///
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public InputList Helps
@@ -45,7 +45,7 @@ public InputList Helps
///
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public InputList LocalizedMessages
@@ -59,7 +59,7 @@ public InputList
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public InputList QuotaInfos
diff --git a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorErrorDetailErrorInfoArgs.cs b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorErrorDetailErrorInfoArgs.cs
index 254893bbe9..b47a3b14e9 100644
--- a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorErrorDetailErrorInfoArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorErrorDetailErrorInfoArgs.cs
@@ -14,7 +14,7 @@ public sealed class ResizeRequestStatusErrorErrorErrorDetailErrorInfoArgs : glob
{
///
/// (Output)
- /// The logical grouping to which the "reason" belongs. The error domain is typically the registered service name of the tool or product that generates the error. Example: "pubsub.googleapis.com". If the error is generated by some common infrastructure, the error domain must be a globally unique value that identifies the infrastructure. For Google API infrastructure, the error domain is "googleapis.com".
+ /// The logical grouping to which the "reason" belongs. The error domain is typically the registered service name of the tool or product that generates the error. Example: "pubsub.googleapis.com".
///
[Input("domain")]
public Input? Domain { get; set; }
@@ -25,7 +25,6 @@ public sealed class ResizeRequestStatusErrorErrorErrorDetailErrorInfoArgs : glob
///
/// (Output)
/// Additional structured details about this error.
- /// Keys must match /[a-z][a-zA-Z0-9-_]+/ but should ideally be lowerCamelCase. Also they must be limited to 64 characters in length. When identifying the current value of an exceeded limit, the units should be contained in the key, not the value. For example, rather than {"instanceLimit": "100/request"}, should be returned as, {"instanceLimitPerRequest": "100"}, if the client exceeds the number of instances that can be created in a single (batch) request.
///
public InputMap Metadatas
{
@@ -35,7 +34,7 @@ public InputMap Metadatas
///
/// (Output)
- /// The reason of the error. This is a constant value that identifies the proximate cause of the error. Error reasons are unique within a particular domain of errors. This should be at most 63 characters and match a regular expression of [A-Z][A-Z0-9_]+[A-Z0-9], which represents UPPER_SNAKE_CASE.
+ /// The reason of the error. This is a constant value that identifies the proximate cause of the error. Error reasons are unique within a particular domain of errors.
///
[Input("reason")]
public Input? Reason { get; set; }
diff --git a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorErrorDetailErrorInfoGetArgs.cs b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorErrorDetailErrorInfoGetArgs.cs
index a41edc6e23..9e6c9314de 100644
--- a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorErrorDetailErrorInfoGetArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorErrorDetailErrorInfoGetArgs.cs
@@ -14,7 +14,7 @@ public sealed class ResizeRequestStatusErrorErrorErrorDetailErrorInfoGetArgs : g
{
///
/// (Output)
- /// The logical grouping to which the "reason" belongs. The error domain is typically the registered service name of the tool or product that generates the error. Example: "pubsub.googleapis.com". If the error is generated by some common infrastructure, the error domain must be a globally unique value that identifies the infrastructure. For Google API infrastructure, the error domain is "googleapis.com".
+ /// The logical grouping to which the "reason" belongs. The error domain is typically the registered service name of the tool or product that generates the error. Example: "pubsub.googleapis.com".
///
[Input("domain")]
public Input? Domain { get; set; }
@@ -25,7 +25,6 @@ public sealed class ResizeRequestStatusErrorErrorErrorDetailErrorInfoGetArgs : g
///
/// (Output)
/// Additional structured details about this error.
- /// Keys must match /[a-z][a-zA-Z0-9-_]+/ but should ideally be lowerCamelCase. Also they must be limited to 64 characters in length. When identifying the current value of an exceeded limit, the units should be contained in the key, not the value. For example, rather than {"instanceLimit": "100/request"}, should be returned as, {"instanceLimitPerRequest": "100"}, if the client exceeds the number of instances that can be created in a single (batch) request.
///
public InputMap Metadatas
{
@@ -35,7 +34,7 @@ public InputMap Metadatas
///
/// (Output)
- /// The reason of the error. This is a constant value that identifies the proximate cause of the error. Error reasons are unique within a particular domain of errors. This should be at most 63 characters and match a regular expression of [A-Z][A-Z0-9_]+[A-Z0-9], which represents UPPER_SNAKE_CASE.
+ /// The reason of the error. This is a constant value that identifies the proximate cause of the error. Error reasons are unique within a particular domain of errors.
///
[Input("reason")]
public Input? Reason { get; set; }
diff --git a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorErrorDetailGetArgs.cs b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorErrorDetailGetArgs.cs
index bea35276ab..3e5d600177 100644
--- a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorErrorDetailGetArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorErrorDetailGetArgs.cs
@@ -17,7 +17,7 @@ public sealed class ResizeRequestStatusErrorErrorErrorDetailGetArgs : global::Pu
///
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public InputList ErrorInfos
@@ -31,7 +31,7 @@ public InputList
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public InputList Helps
@@ -45,7 +45,7 @@ public InputList Hel
///
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public InputList LocalizedMessages
@@ -59,7 +59,7 @@ public InputList
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public InputList QuotaInfos
diff --git a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorErrorDetailHelpArgs.cs b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorErrorDetailHelpArgs.cs
index 2549f8bc66..817a683b94 100644
--- a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorErrorDetailHelpArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorErrorDetailHelpArgs.cs
@@ -17,7 +17,7 @@ public sealed class ResizeRequestStatusErrorErrorErrorDetailHelpArgs : global::P
///
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public InputList Links
diff --git a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorErrorDetailHelpGetArgs.cs b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorErrorDetailHelpGetArgs.cs
index 71fe071fb9..a463bf726a 100644
--- a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorErrorDetailHelpGetArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorErrorDetailHelpGetArgs.cs
@@ -17,7 +17,7 @@ public sealed class ResizeRequestStatusErrorErrorErrorDetailHelpGetArgs : global
///
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public InputList Links
diff --git a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorGetArgs.cs b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorGetArgs.cs
index cefffb65f6..b3d6deaedf 100644
--- a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorGetArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorErrorGetArgs.cs
@@ -14,7 +14,7 @@ public sealed class ResizeRequestStatusErrorErrorGetArgs : global::Pulumi.Resour
{
///
/// (Output)
- /// [Output Only] The error type identifier for this error.
+ /// The error type identifier for this error.
///
[Input("code")]
public Input? Code { get; set; }
@@ -24,7 +24,7 @@ public sealed class ResizeRequestStatusErrorErrorGetArgs : global::Pulumi.Resour
///
/// (Output)
- /// [Output Only] An optional list of messages that contain the error details. There is a set of defined message types to use for providing details.The syntax depends on the error code. For example, QuotaExceededInfo will have details when the error code is QUOTA_EXCEEDED.
+ /// An array of messages that contain the error details. There is a set of defined message types to use for providing details.The syntax depends on the error code. For example, QuotaExceededInfo will have details when the error code is QUOTA_EXCEEDED.
/// Structure is documented below.
///
public InputList ErrorDetails
@@ -35,7 +35,7 @@ public InputList ErrorDe
///
/// (Output)
- /// Output Only] Indicates the field in the request that caused the error. This property is optional.
+ /// Indicates the field in the request that caused the error. This property is optional.
///
[Input("location")]
public Input? Location { get; set; }
diff --git a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorGetArgs.cs b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorGetArgs.cs
index 2a1b118572..7c8f2b0272 100644
--- a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorGetArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusErrorGetArgs.cs
@@ -17,7 +17,7 @@ public sealed class ResizeRequestStatusErrorGetArgs : global::Pulumi.ResourceArg
///
/// (Output)
- /// [Output Only] The array of errors encountered while processing this operation.
+ /// The array of errors encountered while processing this operation.
/// Structure is documented below.
///
public InputList Errors
diff --git a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusGetArgs.cs b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusGetArgs.cs
index 71ca44cc3f..7cca08d40e 100644
--- a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusGetArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusGetArgs.cs
@@ -17,7 +17,7 @@ public sealed class ResizeRequestStatusGetArgs : global::Pulumi.ResourceArgs
///
/// (Output)
- /// [Output only] Fatal errors encountered during the queueing or provisioning phases of the ResizeRequest that caused the transition to the FAILED state. Contrary to the lastAttempt errors, this field is final and errors are never removed from here, as the ResizeRequest is not going to retry.
+ /// Fatal errors encountered during the queueing or provisioning phases of the ResizeRequest that caused the transition to the FAILED state. Contrary to the lastAttempt errors, this field is final and errors are never removed from here, as the ResizeRequest is not going to retry.
/// Structure is documented below.
///
public InputList Errors
@@ -31,7 +31,7 @@ public InputList Errors
///
/// (Output)
- /// [Output only] Information about the last attempt to fulfill the request. The value is temporary since the ResizeRequest can retry, as long as it's still active and the last attempt value can either be cleared or replaced with a different error. Since ResizeRequest retries infrequently, the value may be stale and no longer show an active problem. The value is cleared when ResizeRequest transitions to the final state (becomes inactive). If the final state is FAILED the error describing it will be storred in the "error" field only.
+ /// Information about the last attempt to fulfill the request. The value is temporary since the ResizeRequest can retry, as long as it's still active and the last attempt value can either be cleared or replaced with a different error. Since ResizeRequest retries infrequently, the value may be stale and no longer show an active problem. The value is cleared when ResizeRequest transitions to the final state (becomes inactive). If the final state is FAILED the error describing it will be storred in the "error" field only.
/// Structure is documented below.
///
public InputList LastAttempts
diff --git a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptArgs.cs b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptArgs.cs
index c7a57343f5..bb9daf168d 100644
--- a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptArgs.cs
@@ -17,7 +17,7 @@ public sealed class ResizeRequestStatusLastAttemptArgs : global::Pulumi.Resource
///
/// (Output)
- /// [Output only] Fatal errors encountered during the queueing or provisioning phases of the ResizeRequest that caused the transition to the FAILED state. Contrary to the lastAttempt errors, this field is final and errors are never removed from here, as the ResizeRequest is not going to retry.
+ /// Fatal errors encountered during the queueing or provisioning phases of the ResizeRequest that caused the transition to the FAILED state. Contrary to the lastAttempt errors, this field is final and errors are never removed from here, as the ResizeRequest is not going to retry.
/// Structure is documented below.
///
public InputList Errors
diff --git a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorArgs.cs b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorArgs.cs
index 4770316afe..e642572e47 100644
--- a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorArgs.cs
@@ -17,7 +17,7 @@ public sealed class ResizeRequestStatusLastAttemptErrorArgs : global::Pulumi.Res
///
/// (Output)
- /// [Output Only] The array of errors encountered while processing this operation.
+ /// The array of errors encountered while processing this operation.
/// Structure is documented below.
///
public InputList Errors
diff --git a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorArgs.cs b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorArgs.cs
index 8f2086534d..f9a7a54404 100644
--- a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorArgs.cs
@@ -14,7 +14,7 @@ public sealed class ResizeRequestStatusLastAttemptErrorErrorArgs : global::Pulum
{
///
/// (Output)
- /// [Output Only] The error type identifier for this error.
+ /// The error type identifier for this error.
///
[Input("code")]
public Input? Code { get; set; }
@@ -24,7 +24,7 @@ public sealed class ResizeRequestStatusLastAttemptErrorErrorArgs : global::Pulum
///
/// (Output)
- /// [Output Only] An optional list of messages that contain the error details. There is a set of defined message types to use for providing details.The syntax depends on the error code. For example, QuotaExceededInfo will have details when the error code is QUOTA_EXCEEDED.
+ /// An array of messages that contain the error details. There is a set of defined message types to use for providing details.The syntax depends on the error code. For example, QuotaExceededInfo will have details when the error code is QUOTA_EXCEEDED.
/// Structure is documented below.
///
public InputList ErrorDetails
@@ -35,7 +35,7 @@ public InputList
///
/// (Output)
- /// Output Only] Indicates the field in the request that caused the error. This property is optional.
+ /// Indicates the field in the request that caused the error. This property is optional.
///
[Input("location")]
public Input? Location { get; set; }
diff --git a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailArgs.cs b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailArgs.cs
index 114b510c22..451af3b976 100644
--- a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailArgs.cs
@@ -17,7 +17,7 @@ public sealed class ResizeRequestStatusLastAttemptErrorErrorErrorDetailArgs : gl
///
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public InputList ErrorInfos
@@ -31,7 +31,7 @@ public InputList
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public InputList Helps
@@ -45,7 +45,7 @@ public InputList
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public InputList LocalizedMessages
@@ -59,7 +59,7 @@ public InputList
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public InputList QuotaInfos
diff --git a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfoArgs.cs b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfoArgs.cs
index 384d5e21aa..dba0df8782 100644
--- a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfoArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfoArgs.cs
@@ -14,7 +14,7 @@ public sealed class ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo
{
///
/// (Output)
- /// The logical grouping to which the "reason" belongs. The error domain is typically the registered service name of the tool or product that generates the error. Example: "pubsub.googleapis.com". If the error is generated by some common infrastructure, the error domain must be a globally unique value that identifies the infrastructure. For Google API infrastructure, the error domain is "googleapis.com".
+ /// The logical grouping to which the "reason" belongs. The error domain is typically the registered service name of the tool or product that generates the error. Example: "pubsub.googleapis.com".
///
[Input("domain")]
public Input? Domain { get; set; }
@@ -25,7 +25,6 @@ public sealed class ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo
///
/// (Output)
/// Additional structured details about this error.
- /// Keys must match /[a-z][a-zA-Z0-9-_]+/ but should ideally be lowerCamelCase. Also they must be limited to 64 characters in length. When identifying the current value of an exceeded limit, the units should be contained in the key, not the value. For example, rather than {"instanceLimit": "100/request"}, should be returned as, {"instanceLimitPerRequest": "100"}, if the client exceeds the number of instances that can be created in a single (batch) request.
///
public InputMap Metadatas
{
@@ -35,7 +34,7 @@ public InputMap Metadatas
///
/// (Output)
- /// The reason of the error. This is a constant value that identifies the proximate cause of the error. Error reasons are unique within a particular domain of errors. This should be at most 63 characters and match a regular expression of [A-Z][A-Z0-9_]+[A-Z0-9], which represents UPPER_SNAKE_CASE.
+ /// The reason of the error. This is a constant value that identifies the proximate cause of the error. Error reasons are unique within a particular domain of errors.
///
[Input("reason")]
public Input? Reason { get; set; }
diff --git a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfoGetArgs.cs b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfoGetArgs.cs
index f10d2822c9..34f7e87550 100644
--- a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfoGetArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfoGetArgs.cs
@@ -14,7 +14,7 @@ public sealed class ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo
{
///
/// (Output)
- /// The logical grouping to which the "reason" belongs. The error domain is typically the registered service name of the tool or product that generates the error. Example: "pubsub.googleapis.com". If the error is generated by some common infrastructure, the error domain must be a globally unique value that identifies the infrastructure. For Google API infrastructure, the error domain is "googleapis.com".
+ /// The logical grouping to which the "reason" belongs. The error domain is typically the registered service name of the tool or product that generates the error. Example: "pubsub.googleapis.com".
///
[Input("domain")]
public Input? Domain { get; set; }
@@ -25,7 +25,6 @@ public sealed class ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo
///
/// (Output)
/// Additional structured details about this error.
- /// Keys must match /[a-z][a-zA-Z0-9-_]+/ but should ideally be lowerCamelCase. Also they must be limited to 64 characters in length. When identifying the current value of an exceeded limit, the units should be contained in the key, not the value. For example, rather than {"instanceLimit": "100/request"}, should be returned as, {"instanceLimitPerRequest": "100"}, if the client exceeds the number of instances that can be created in a single (batch) request.
///
public InputMap Metadatas
{
@@ -35,7 +34,7 @@ public InputMap Metadatas
///
/// (Output)
- /// The reason of the error. This is a constant value that identifies the proximate cause of the error. Error reasons are unique within a particular domain of errors. This should be at most 63 characters and match a regular expression of [A-Z][A-Z0-9_]+[A-Z0-9], which represents UPPER_SNAKE_CASE.
+ /// The reason of the error. This is a constant value that identifies the proximate cause of the error. Error reasons are unique within a particular domain of errors.
///
[Input("reason")]
public Input? Reason { get; set; }
diff --git a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailGetArgs.cs b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailGetArgs.cs
index bbc7052b16..a063077850 100644
--- a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailGetArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailGetArgs.cs
@@ -17,7 +17,7 @@ public sealed class ResizeRequestStatusLastAttemptErrorErrorErrorDetailGetArgs :
///
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public InputList ErrorInfos
@@ -31,7 +31,7 @@ public InputList
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public InputList Helps
@@ -45,7 +45,7 @@ public InputList
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public InputList LocalizedMessages
@@ -59,7 +59,7 @@ public InputList
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public InputList QuotaInfos
diff --git a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpArgs.cs b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpArgs.cs
index fa0bafe7fe..de30585d6f 100644
--- a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpArgs.cs
@@ -17,7 +17,7 @@ public sealed class ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpArgs
///
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public InputList Links
diff --git a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpGetArgs.cs b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpGetArgs.cs
index 09307e3c14..2dc85fb52b 100644
--- a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpGetArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpGetArgs.cs
@@ -17,7 +17,7 @@ public sealed class ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpGetAr
///
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public InputList Links
diff --git a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorGetArgs.cs b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorGetArgs.cs
index c61f8a6ce1..26dc943bce 100644
--- a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorGetArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorErrorGetArgs.cs
@@ -14,7 +14,7 @@ public sealed class ResizeRequestStatusLastAttemptErrorErrorGetArgs : global::Pu
{
///
/// (Output)
- /// [Output Only] The error type identifier for this error.
+ /// The error type identifier for this error.
///
[Input("code")]
public Input? Code { get; set; }
@@ -24,7 +24,7 @@ public sealed class ResizeRequestStatusLastAttemptErrorErrorGetArgs : global::Pu
///
/// (Output)
- /// [Output Only] An optional list of messages that contain the error details. There is a set of defined message types to use for providing details.The syntax depends on the error code. For example, QuotaExceededInfo will have details when the error code is QUOTA_EXCEEDED.
+ /// An array of messages that contain the error details. There is a set of defined message types to use for providing details.The syntax depends on the error code. For example, QuotaExceededInfo will have details when the error code is QUOTA_EXCEEDED.
/// Structure is documented below.
///
public InputList ErrorDetails
@@ -35,7 +35,7 @@ public InputList
/// (Output)
- /// Output Only] Indicates the field in the request that caused the error. This property is optional.
+ /// Indicates the field in the request that caused the error. This property is optional.
///
[Input("location")]
public Input? Location { get; set; }
diff --git a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorGetArgs.cs b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorGetArgs.cs
index 834f0ea5e3..8aba8e359c 100644
--- a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorGetArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptErrorGetArgs.cs
@@ -17,7 +17,7 @@ public sealed class ResizeRequestStatusLastAttemptErrorGetArgs : global::Pulumi.
///
/// (Output)
- /// [Output Only] The array of errors encountered while processing this operation.
+ /// The array of errors encountered while processing this operation.
/// Structure is documented below.
///
public InputList Errors
diff --git a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptGetArgs.cs b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptGetArgs.cs
index 200a7a4aa9..80142434a1 100644
--- a/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptGetArgs.cs
+++ b/sdk/dotnet/Compute/Inputs/ResizeRequestStatusLastAttemptGetArgs.cs
@@ -17,7 +17,7 @@ public sealed class ResizeRequestStatusLastAttemptGetArgs : global::Pulumi.Resou
///
/// (Output)
- /// [Output only] Fatal errors encountered during the queueing or provisioning phases of the ResizeRequest that caused the transition to the FAILED state. Contrary to the lastAttempt errors, this field is final and errors are never removed from here, as the ResizeRequest is not going to retry.
+ /// Fatal errors encountered during the queueing or provisioning phases of the ResizeRequest that caused the transition to the FAILED state. Contrary to the lastAttempt errors, this field is final and errors are never removed from here, as the ResizeRequest is not going to retry.
/// Structure is documented below.
///
public InputList Errors
diff --git a/sdk/dotnet/Compute/Network.cs b/sdk/dotnet/Compute/Network.cs
index 48473d6e53..b75f28727f 100644
--- a/sdk/dotnet/Compute/Network.cs
+++ b/sdk/dotnet/Compute/Network.cs
@@ -268,6 +268,12 @@ public partial class Network : global::Pulumi.CustomResource
[Output("networkFirewallPolicyEnforcementOrder")]
public Output NetworkFirewallPolicyEnforcementOrder { get; private set; } = null!;
+ ///
+ /// The unique identifier for the resource. This identifier is defined by the server.
+ ///
+ [Output("networkId")]
+ public Output NetworkId { get; private set; } = null!;
+
///
/// A full or partial URL of the network profile to apply to this network.
/// This field can be set only at resource creation time. For example, the
@@ -279,6 +285,7 @@ public partial class Network : global::Pulumi.CustomResource
public Output NetworkProfile { get; private set; } = null!;
///
+ /// (Deprecated)
/// The unique identifier for the resource. This identifier is defined by the server.
///
[Output("numericId")]
@@ -587,6 +594,12 @@ public sealed class NetworkState : global::Pulumi.ResourceArgs
[Input("networkFirewallPolicyEnforcementOrder")]
public Input? NetworkFirewallPolicyEnforcementOrder { get; set; }
+ ///
+ /// The unique identifier for the resource. This identifier is defined by the server.
+ ///
+ [Input("networkId")]
+ public Input? NetworkId { get; set; }
+
///
/// A full or partial URL of the network profile to apply to this network.
/// This field can be set only at resource creation time. For example, the
@@ -598,6 +611,7 @@ public sealed class NetworkState : global::Pulumi.ResourceArgs
public Input? NetworkProfile { get; set; }
///
+ /// (Deprecated)
/// The unique identifier for the resource. This identifier is defined by the server.
///
[Input("numericId")]
diff --git a/sdk/dotnet/Compute/Outputs/GetInstanceSchedulingResult.cs b/sdk/dotnet/Compute/Outputs/GetInstanceSchedulingResult.cs
index c71a5c6789..18098a4821 100644
--- a/sdk/dotnet/Compute/Outputs/GetInstanceSchedulingResult.cs
+++ b/sdk/dotnet/Compute/Outputs/GetInstanceSchedulingResult.cs
@@ -19,6 +19,10 @@ public sealed class GetInstanceSchedulingResult
///
public readonly bool AutomaticRestart;
///
+ /// Specifies the availability domain, which this instance should be scheduled on.
+ ///
+ public readonly int AvailabilityDomain;
+ ///
/// Beta Time in seconds for host error detection.
///
public readonly int HostErrorTimeoutSeconds;
@@ -69,6 +73,8 @@ public sealed class GetInstanceSchedulingResult
private GetInstanceSchedulingResult(
bool automaticRestart,
+ int availabilityDomain,
+
int hostErrorTimeoutSeconds,
string instanceTerminationAction,
@@ -92,6 +98,7 @@ private GetInstanceSchedulingResult(
string provisioningModel)
{
AutomaticRestart = automaticRestart;
+ AvailabilityDomain = availabilityDomain;
HostErrorTimeoutSeconds = hostErrorTimeoutSeconds;
InstanceTerminationAction = instanceTerminationAction;
LocalSsdRecoveryTimeouts = localSsdRecoveryTimeouts;
diff --git a/sdk/dotnet/Compute/Outputs/GetInstanceTemplateSchedulingResult.cs b/sdk/dotnet/Compute/Outputs/GetInstanceTemplateSchedulingResult.cs
index 372cbea6e0..3ba10195e8 100644
--- a/sdk/dotnet/Compute/Outputs/GetInstanceTemplateSchedulingResult.cs
+++ b/sdk/dotnet/Compute/Outputs/GetInstanceTemplateSchedulingResult.cs
@@ -20,6 +20,10 @@ public sealed class GetInstanceTemplateSchedulingResult
///
public readonly bool AutomaticRestart;
///
+ /// Specifies the availability domain, which this instance should be scheduled on.
+ ///
+ public readonly int AvailabilityDomain;
+ ///
/// Beta Time in seconds for host error detection.
///
public readonly int HostErrorTimeoutSeconds;
@@ -78,6 +82,8 @@ public sealed class GetInstanceTemplateSchedulingResult
private GetInstanceTemplateSchedulingResult(
bool automaticRestart,
+ int availabilityDomain,
+
int hostErrorTimeoutSeconds,
string instanceTerminationAction,
@@ -101,6 +107,7 @@ private GetInstanceTemplateSchedulingResult(
string provisioningModel)
{
AutomaticRestart = automaticRestart;
+ AvailabilityDomain = availabilityDomain;
HostErrorTimeoutSeconds = hostErrorTimeoutSeconds;
InstanceTerminationAction = instanceTerminationAction;
LocalSsdRecoveryTimeouts = localSsdRecoveryTimeouts;
diff --git a/sdk/dotnet/Compute/Outputs/GetRegionInstanceTemplateSchedulingResult.cs b/sdk/dotnet/Compute/Outputs/GetRegionInstanceTemplateSchedulingResult.cs
index 9427517f6d..17d837af8a 100644
--- a/sdk/dotnet/Compute/Outputs/GetRegionInstanceTemplateSchedulingResult.cs
+++ b/sdk/dotnet/Compute/Outputs/GetRegionInstanceTemplateSchedulingResult.cs
@@ -20,6 +20,10 @@ public sealed class GetRegionInstanceTemplateSchedulingResult
///
public readonly bool AutomaticRestart;
///
+ /// Specifies the availability domain, which this instance should be scheduled on.
+ ///
+ public readonly int AvailabilityDomain;
+ ///
/// Beta Time in seconds for host error detection.
///
public readonly int HostErrorTimeoutSeconds;
@@ -78,6 +82,8 @@ public sealed class GetRegionInstanceTemplateSchedulingResult
private GetRegionInstanceTemplateSchedulingResult(
bool automaticRestart,
+ int availabilityDomain,
+
int hostErrorTimeoutSeconds,
string instanceTerminationAction,
@@ -101,6 +107,7 @@ private GetRegionInstanceTemplateSchedulingResult(
string provisioningModel)
{
AutomaticRestart = automaticRestart;
+ AvailabilityDomain = availabilityDomain;
HostErrorTimeoutSeconds = hostErrorTimeoutSeconds;
InstanceTerminationAction = instanceTerminationAction;
LocalSsdRecoveryTimeouts = localSsdRecoveryTimeouts;
diff --git a/sdk/dotnet/Compute/Outputs/InstanceBootDiskInitializeParams.cs b/sdk/dotnet/Compute/Outputs/InstanceBootDiskInitializeParams.cs
index 4b04227036..ece057728a 100644
--- a/sdk/dotnet/Compute/Outputs/InstanceBootDiskInitializeParams.cs
+++ b/sdk/dotnet/Compute/Outputs/InstanceBootDiskInitializeParams.cs
@@ -60,7 +60,7 @@ public sealed class InstanceBootDiskInitializeParams
///
public readonly ImmutableDictionary? ResourceManagerTags;
///
- /// A list of self_links of resource policies to attach to the instance's boot disk. Modifying this list will cause the instance to recreate. Currently a max of 1 resource policy is supported.
+ /// A list of self_links of resource policies to attach to the instance's boot disk. Modifying this list will cause the instance to recreate, so any external values are not set until the user specifies this field. Currently a max of 1 resource policy is supported.
///
public readonly string? ResourcePolicies;
///
diff --git a/sdk/dotnet/Compute/Outputs/InstanceFromMachineImageScheduling.cs b/sdk/dotnet/Compute/Outputs/InstanceFromMachineImageScheduling.cs
index 73dd30a26a..db3565a27e 100644
--- a/sdk/dotnet/Compute/Outputs/InstanceFromMachineImageScheduling.cs
+++ b/sdk/dotnet/Compute/Outputs/InstanceFromMachineImageScheduling.cs
@@ -18,6 +18,10 @@ public sealed class InstanceFromMachineImageScheduling
///
public readonly bool? AutomaticRestart;
///
+ /// Specifies the availability domain, which this instance should be scheduled on.
+ ///
+ public readonly int? AvailabilityDomain;
+ ///
/// Specify the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
///
public readonly int? HostErrorTimeoutSeconds;
@@ -66,6 +70,8 @@ public sealed class InstanceFromMachineImageScheduling
private InstanceFromMachineImageScheduling(
bool? automaticRestart,
+ int? availabilityDomain,
+
int? hostErrorTimeoutSeconds,
string? instanceTerminationAction,
@@ -89,6 +95,7 @@ private InstanceFromMachineImageScheduling(
string? provisioningModel)
{
AutomaticRestart = automaticRestart;
+ AvailabilityDomain = availabilityDomain;
HostErrorTimeoutSeconds = hostErrorTimeoutSeconds;
InstanceTerminationAction = instanceTerminationAction;
LocalSsdRecoveryTimeout = localSsdRecoveryTimeout;
diff --git a/sdk/dotnet/Compute/Outputs/InstanceFromTemplateScheduling.cs b/sdk/dotnet/Compute/Outputs/InstanceFromTemplateScheduling.cs
index 64df1d04d4..35d4a8483a 100644
--- a/sdk/dotnet/Compute/Outputs/InstanceFromTemplateScheduling.cs
+++ b/sdk/dotnet/Compute/Outputs/InstanceFromTemplateScheduling.cs
@@ -18,6 +18,10 @@ public sealed class InstanceFromTemplateScheduling
///
public readonly bool? AutomaticRestart;
///
+ /// Specifies the availability domain, which this instance should be scheduled on.
+ ///
+ public readonly int? AvailabilityDomain;
+ ///
/// Specify the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
///
public readonly int? HostErrorTimeoutSeconds;
@@ -66,6 +70,8 @@ public sealed class InstanceFromTemplateScheduling
private InstanceFromTemplateScheduling(
bool? automaticRestart,
+ int? availabilityDomain,
+
int? hostErrorTimeoutSeconds,
string? instanceTerminationAction,
@@ -89,6 +95,7 @@ private InstanceFromTemplateScheduling(
string? provisioningModel)
{
AutomaticRestart = automaticRestart;
+ AvailabilityDomain = availabilityDomain;
HostErrorTimeoutSeconds = hostErrorTimeoutSeconds;
InstanceTerminationAction = instanceTerminationAction;
LocalSsdRecoveryTimeout = localSsdRecoveryTimeout;
diff --git a/sdk/dotnet/Compute/Outputs/InstanceScheduling.cs b/sdk/dotnet/Compute/Outputs/InstanceScheduling.cs
index db5f18b5f9..edb97c3fc6 100644
--- a/sdk/dotnet/Compute/Outputs/InstanceScheduling.cs
+++ b/sdk/dotnet/Compute/Outputs/InstanceScheduling.cs
@@ -20,6 +20,10 @@ public sealed class InstanceScheduling
///
public readonly bool? AutomaticRestart;
///
+ /// Specifies the availability domain to place the instance in. The value must be a number between 1 and the number of availability domains specified in the spread placement policy attached to the instance.
+ ///
+ public readonly int? AvailabilityDomain;
+ ///
/// Specifies the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
///
public readonly int? HostErrorTimeoutSeconds;
@@ -82,6 +86,8 @@ public sealed class InstanceScheduling
private InstanceScheduling(
bool? automaticRestart,
+ int? availabilityDomain,
+
int? hostErrorTimeoutSeconds,
string? instanceTerminationAction,
@@ -105,6 +111,7 @@ private InstanceScheduling(
string? provisioningModel)
{
AutomaticRestart = automaticRestart;
+ AvailabilityDomain = availabilityDomain;
HostErrorTimeoutSeconds = hostErrorTimeoutSeconds;
InstanceTerminationAction = instanceTerminationAction;
LocalSsdRecoveryTimeout = localSsdRecoveryTimeout;
diff --git a/sdk/dotnet/Compute/Outputs/InstanceTemplateScheduling.cs b/sdk/dotnet/Compute/Outputs/InstanceTemplateScheduling.cs
index f2dc31bed4..238babaa35 100644
--- a/sdk/dotnet/Compute/Outputs/InstanceTemplateScheduling.cs
+++ b/sdk/dotnet/Compute/Outputs/InstanceTemplateScheduling.cs
@@ -20,6 +20,10 @@ public sealed class InstanceTemplateScheduling
///
public readonly bool? AutomaticRestart;
///
+ /// Specifies the availability domain to place the instance in. The value must be a number between 1 and the number of availability domains specified in the spread placement policy attached to the instance.
+ ///
+ public readonly int? AvailabilityDomain;
+ ///
/// Specifies the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
///
public readonly int? HostErrorTimeoutSeconds;
@@ -81,6 +85,8 @@ public sealed class InstanceTemplateScheduling
private InstanceTemplateScheduling(
bool? automaticRestart,
+ int? availabilityDomain,
+
int? hostErrorTimeoutSeconds,
string? instanceTerminationAction,
@@ -104,6 +110,7 @@ private InstanceTemplateScheduling(
string? provisioningModel)
{
AutomaticRestart = automaticRestart;
+ AvailabilityDomain = availabilityDomain;
HostErrorTimeoutSeconds = hostErrorTimeoutSeconds;
InstanceTerminationAction = instanceTerminationAction;
LocalSsdRecoveryTimeouts = localSsdRecoveryTimeouts;
diff --git a/sdk/dotnet/Compute/Outputs/RegionInstanceTemplateScheduling.cs b/sdk/dotnet/Compute/Outputs/RegionInstanceTemplateScheduling.cs
index d2e82a668a..f6834f7271 100644
--- a/sdk/dotnet/Compute/Outputs/RegionInstanceTemplateScheduling.cs
+++ b/sdk/dotnet/Compute/Outputs/RegionInstanceTemplateScheduling.cs
@@ -20,6 +20,10 @@ public sealed class RegionInstanceTemplateScheduling
///
public readonly bool? AutomaticRestart;
///
+ /// Specifies the availability domain to place the instance in. The value must be a number between 1 and the number of availability domains specified in the spread placement policy attached to the instance.
+ ///
+ public readonly int? AvailabilityDomain;
+ ///
/// Specifies the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
///
public readonly int? HostErrorTimeoutSeconds;
@@ -81,6 +85,8 @@ public sealed class RegionInstanceTemplateScheduling
private RegionInstanceTemplateScheduling(
bool? automaticRestart,
+ int? availabilityDomain,
+
int? hostErrorTimeoutSeconds,
string? instanceTerminationAction,
@@ -104,6 +110,7 @@ private RegionInstanceTemplateScheduling(
string? provisioningModel)
{
AutomaticRestart = automaticRestart;
+ AvailabilityDomain = availabilityDomain;
HostErrorTimeoutSeconds = hostErrorTimeoutSeconds;
InstanceTerminationAction = instanceTerminationAction;
LocalSsdRecoveryTimeouts = localSsdRecoveryTimeouts;
diff --git a/sdk/dotnet/Compute/Outputs/ResizeRequestRequestedRunDuration.cs b/sdk/dotnet/Compute/Outputs/ResizeRequestRequestedRunDuration.cs
index 0d7204d2cf..9e3e39d3ab 100644
--- a/sdk/dotnet/Compute/Outputs/ResizeRequestRequestedRunDuration.cs
+++ b/sdk/dotnet/Compute/Outputs/ResizeRequestRequestedRunDuration.cs
@@ -18,7 +18,7 @@ public sealed class ResizeRequestRequestedRunDuration
///
public readonly int? Nanos;
///
- /// Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+ /// Span of time at a resolution of a second. Must be from 600 to 604800 inclusive. Note: minimum and maximum allowed range for requestedRunDuration is 10 minutes (600 seconds) and 7 days(604800 seconds) correspondingly.
///
public readonly string Seconds;
diff --git a/sdk/dotnet/Compute/Outputs/ResizeRequestStatus.cs b/sdk/dotnet/Compute/Outputs/ResizeRequestStatus.cs
index 7aab55d4f3..b21c6954c7 100644
--- a/sdk/dotnet/Compute/Outputs/ResizeRequestStatus.cs
+++ b/sdk/dotnet/Compute/Outputs/ResizeRequestStatus.cs
@@ -15,13 +15,13 @@ public sealed class ResizeRequestStatus
{
///
/// (Output)
- /// [Output only] Fatal errors encountered during the queueing or provisioning phases of the ResizeRequest that caused the transition to the FAILED state. Contrary to the lastAttempt errors, this field is final and errors are never removed from here, as the ResizeRequest is not going to retry.
+ /// Fatal errors encountered during the queueing or provisioning phases of the ResizeRequest that caused the transition to the FAILED state. Contrary to the lastAttempt errors, this field is final and errors are never removed from here, as the ResizeRequest is not going to retry.
/// Structure is documented below.
///
public readonly ImmutableArray Errors;
///
/// (Output)
- /// [Output only] Information about the last attempt to fulfill the request. The value is temporary since the ResizeRequest can retry, as long as it's still active and the last attempt value can either be cleared or replaced with a different error. Since ResizeRequest retries infrequently, the value may be stale and no longer show an active problem. The value is cleared when ResizeRequest transitions to the final state (becomes inactive). If the final state is FAILED the error describing it will be storred in the "error" field only.
+ /// Information about the last attempt to fulfill the request. The value is temporary since the ResizeRequest can retry, as long as it's still active and the last attempt value can either be cleared or replaced with a different error. Since ResizeRequest retries infrequently, the value may be stale and no longer show an active problem. The value is cleared when ResizeRequest transitions to the final state (becomes inactive). If the final state is FAILED the error describing it will be storred in the "error" field only.
/// Structure is documented below.
///
public readonly ImmutableArray LastAttempts;
diff --git a/sdk/dotnet/Compute/Outputs/ResizeRequestStatusError.cs b/sdk/dotnet/Compute/Outputs/ResizeRequestStatusError.cs
index f74e8f4276..22b308b2a1 100644
--- a/sdk/dotnet/Compute/Outputs/ResizeRequestStatusError.cs
+++ b/sdk/dotnet/Compute/Outputs/ResizeRequestStatusError.cs
@@ -15,7 +15,7 @@ public sealed class ResizeRequestStatusError
{
///
/// (Output)
- /// [Output Only] The array of errors encountered while processing this operation.
+ /// The array of errors encountered while processing this operation.
/// Structure is documented below.
///
public readonly ImmutableArray Errors;
diff --git a/sdk/dotnet/Compute/Outputs/ResizeRequestStatusErrorError.cs b/sdk/dotnet/Compute/Outputs/ResizeRequestStatusErrorError.cs
index 070cee4e4f..38368478ca 100644
--- a/sdk/dotnet/Compute/Outputs/ResizeRequestStatusErrorError.cs
+++ b/sdk/dotnet/Compute/Outputs/ResizeRequestStatusErrorError.cs
@@ -15,18 +15,18 @@ public sealed class ResizeRequestStatusErrorError
{
///
/// (Output)
- /// [Output Only] The error type identifier for this error.
+ /// The error type identifier for this error.
///
public readonly string? Code;
///
/// (Output)
- /// [Output Only] An optional list of messages that contain the error details. There is a set of defined message types to use for providing details.The syntax depends on the error code. For example, QuotaExceededInfo will have details when the error code is QUOTA_EXCEEDED.
+ /// An array of messages that contain the error details. There is a set of defined message types to use for providing details.The syntax depends on the error code. For example, QuotaExceededInfo will have details when the error code is QUOTA_EXCEEDED.
/// Structure is documented below.
///
public readonly ImmutableArray ErrorDetails;
///
/// (Output)
- /// Output Only] Indicates the field in the request that caused the error. This property is optional.
+ /// Indicates the field in the request that caused the error. This property is optional.
///
public readonly string? Location;
///
diff --git a/sdk/dotnet/Compute/Outputs/ResizeRequestStatusErrorErrorErrorDetail.cs b/sdk/dotnet/Compute/Outputs/ResizeRequestStatusErrorErrorErrorDetail.cs
index 7c447a8377..1d38845d26 100644
--- a/sdk/dotnet/Compute/Outputs/ResizeRequestStatusErrorErrorErrorDetail.cs
+++ b/sdk/dotnet/Compute/Outputs/ResizeRequestStatusErrorErrorErrorDetail.cs
@@ -15,25 +15,25 @@ public sealed class ResizeRequestStatusErrorErrorErrorDetail
{
///
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public readonly ImmutableArray ErrorInfos;
///
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public readonly ImmutableArray Helps;
///
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public readonly ImmutableArray LocalizedMessages;
///
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public readonly ImmutableArray QuotaInfos;
diff --git a/sdk/dotnet/Compute/Outputs/ResizeRequestStatusErrorErrorErrorDetailErrorInfo.cs b/sdk/dotnet/Compute/Outputs/ResizeRequestStatusErrorErrorErrorDetailErrorInfo.cs
index 1df42a4d4b..ca7b13d527 100644
--- a/sdk/dotnet/Compute/Outputs/ResizeRequestStatusErrorErrorErrorDetailErrorInfo.cs
+++ b/sdk/dotnet/Compute/Outputs/ResizeRequestStatusErrorErrorErrorDetailErrorInfo.cs
@@ -15,18 +15,17 @@ public sealed class ResizeRequestStatusErrorErrorErrorDetailErrorInfo
{
///
/// (Output)
- /// The logical grouping to which the "reason" belongs. The error domain is typically the registered service name of the tool or product that generates the error. Example: "pubsub.googleapis.com". If the error is generated by some common infrastructure, the error domain must be a globally unique value that identifies the infrastructure. For Google API infrastructure, the error domain is "googleapis.com".
+ /// The logical grouping to which the "reason" belongs. The error domain is typically the registered service name of the tool or product that generates the error. Example: "pubsub.googleapis.com".
///
public readonly string? Domain;
///
/// (Output)
/// Additional structured details about this error.
- /// Keys must match /[a-z][a-zA-Z0-9-_]+/ but should ideally be lowerCamelCase. Also they must be limited to 64 characters in length. When identifying the current value of an exceeded limit, the units should be contained in the key, not the value. For example, rather than {"instanceLimit": "100/request"}, should be returned as, {"instanceLimitPerRequest": "100"}, if the client exceeds the number of instances that can be created in a single (batch) request.
///
public readonly ImmutableDictionary? Metadatas;
///
/// (Output)
- /// The reason of the error. This is a constant value that identifies the proximate cause of the error. Error reasons are unique within a particular domain of errors. This should be at most 63 characters and match a regular expression of [A-Z][A-Z0-9_]+[A-Z0-9], which represents UPPER_SNAKE_CASE.
+ /// The reason of the error. This is a constant value that identifies the proximate cause of the error. Error reasons are unique within a particular domain of errors.
///
public readonly string? Reason;
diff --git a/sdk/dotnet/Compute/Outputs/ResizeRequestStatusErrorErrorErrorDetailHelp.cs b/sdk/dotnet/Compute/Outputs/ResizeRequestStatusErrorErrorErrorDetailHelp.cs
index abdd9b1449..58cd238253 100644
--- a/sdk/dotnet/Compute/Outputs/ResizeRequestStatusErrorErrorErrorDetailHelp.cs
+++ b/sdk/dotnet/Compute/Outputs/ResizeRequestStatusErrorErrorErrorDetailHelp.cs
@@ -15,7 +15,7 @@ public sealed class ResizeRequestStatusErrorErrorErrorDetailHelp
{
///
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public readonly ImmutableArray Links;
diff --git a/sdk/dotnet/Compute/Outputs/ResizeRequestStatusLastAttempt.cs b/sdk/dotnet/Compute/Outputs/ResizeRequestStatusLastAttempt.cs
index abef1a4df9..ee2259036b 100644
--- a/sdk/dotnet/Compute/Outputs/ResizeRequestStatusLastAttempt.cs
+++ b/sdk/dotnet/Compute/Outputs/ResizeRequestStatusLastAttempt.cs
@@ -15,7 +15,7 @@ public sealed class ResizeRequestStatusLastAttempt
{
///
/// (Output)
- /// [Output only] Fatal errors encountered during the queueing or provisioning phases of the ResizeRequest that caused the transition to the FAILED state. Contrary to the lastAttempt errors, this field is final and errors are never removed from here, as the ResizeRequest is not going to retry.
+ /// Fatal errors encountered during the queueing or provisioning phases of the ResizeRequest that caused the transition to the FAILED state. Contrary to the lastAttempt errors, this field is final and errors are never removed from here, as the ResizeRequest is not going to retry.
/// Structure is documented below.
///
public readonly ImmutableArray Errors;
diff --git a/sdk/dotnet/Compute/Outputs/ResizeRequestStatusLastAttemptError.cs b/sdk/dotnet/Compute/Outputs/ResizeRequestStatusLastAttemptError.cs
index 300448da4d..63db02f637 100644
--- a/sdk/dotnet/Compute/Outputs/ResizeRequestStatusLastAttemptError.cs
+++ b/sdk/dotnet/Compute/Outputs/ResizeRequestStatusLastAttemptError.cs
@@ -15,7 +15,7 @@ public sealed class ResizeRequestStatusLastAttemptError
{
///
/// (Output)
- /// [Output Only] The array of errors encountered while processing this operation.
+ /// The array of errors encountered while processing this operation.
/// Structure is documented below.
///
public readonly ImmutableArray Errors;
diff --git a/sdk/dotnet/Compute/Outputs/ResizeRequestStatusLastAttemptErrorError.cs b/sdk/dotnet/Compute/Outputs/ResizeRequestStatusLastAttemptErrorError.cs
index 21eaf41d16..0b4ff1e0be 100644
--- a/sdk/dotnet/Compute/Outputs/ResizeRequestStatusLastAttemptErrorError.cs
+++ b/sdk/dotnet/Compute/Outputs/ResizeRequestStatusLastAttemptErrorError.cs
@@ -15,18 +15,18 @@ public sealed class ResizeRequestStatusLastAttemptErrorError
{
///
/// (Output)
- /// [Output Only] The error type identifier for this error.
+ /// The error type identifier for this error.
///
public readonly string? Code;
///
/// (Output)
- /// [Output Only] An optional list of messages that contain the error details. There is a set of defined message types to use for providing details.The syntax depends on the error code. For example, QuotaExceededInfo will have details when the error code is QUOTA_EXCEEDED.
+ /// An array of messages that contain the error details. There is a set of defined message types to use for providing details.The syntax depends on the error code. For example, QuotaExceededInfo will have details when the error code is QUOTA_EXCEEDED.
/// Structure is documented below.
///
public readonly ImmutableArray ErrorDetails;
///
/// (Output)
- /// Output Only] Indicates the field in the request that caused the error. This property is optional.
+ /// Indicates the field in the request that caused the error. This property is optional.
///
public readonly string? Location;
///
diff --git a/sdk/dotnet/Compute/Outputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetail.cs b/sdk/dotnet/Compute/Outputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetail.cs
index 2af17ae5bc..e8c732ac19 100644
--- a/sdk/dotnet/Compute/Outputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetail.cs
+++ b/sdk/dotnet/Compute/Outputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetail.cs
@@ -15,25 +15,25 @@ public sealed class ResizeRequestStatusLastAttemptErrorErrorErrorDetail
{
///
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public readonly ImmutableArray ErrorInfos;
///
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public readonly ImmutableArray Helps;
///
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public readonly ImmutableArray LocalizedMessages;
///
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public readonly ImmutableArray QuotaInfos;
diff --git a/sdk/dotnet/Compute/Outputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo.cs b/sdk/dotnet/Compute/Outputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo.cs
index 4b7ae1e2ad..f93dad98c0 100644
--- a/sdk/dotnet/Compute/Outputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo.cs
+++ b/sdk/dotnet/Compute/Outputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo.cs
@@ -15,18 +15,17 @@ public sealed class ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo
{
///
/// (Output)
- /// The logical grouping to which the "reason" belongs. The error domain is typically the registered service name of the tool or product that generates the error. Example: "pubsub.googleapis.com". If the error is generated by some common infrastructure, the error domain must be a globally unique value that identifies the infrastructure. For Google API infrastructure, the error domain is "googleapis.com".
+ /// The logical grouping to which the "reason" belongs. The error domain is typically the registered service name of the tool or product that generates the error. Example: "pubsub.googleapis.com".
///
public readonly string? Domain;
///
/// (Output)
/// Additional structured details about this error.
- /// Keys must match /[a-z][a-zA-Z0-9-_]+/ but should ideally be lowerCamelCase. Also they must be limited to 64 characters in length. When identifying the current value of an exceeded limit, the units should be contained in the key, not the value. For example, rather than {"instanceLimit": "100/request"}, should be returned as, {"instanceLimitPerRequest": "100"}, if the client exceeds the number of instances that can be created in a single (batch) request.
///
public readonly ImmutableDictionary? Metadatas;
///
/// (Output)
- /// The reason of the error. This is a constant value that identifies the proximate cause of the error. Error reasons are unique within a particular domain of errors. This should be at most 63 characters and match a regular expression of [A-Z][A-Z0-9_]+[A-Z0-9], which represents UPPER_SNAKE_CASE.
+ /// The reason of the error. This is a constant value that identifies the proximate cause of the error. Error reasons are unique within a particular domain of errors.
///
public readonly string? Reason;
diff --git a/sdk/dotnet/Compute/Outputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp.cs b/sdk/dotnet/Compute/Outputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp.cs
index 02537a3dee..1310acee4b 100644
--- a/sdk/dotnet/Compute/Outputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp.cs
+++ b/sdk/dotnet/Compute/Outputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp.cs
@@ -15,7 +15,7 @@ public sealed class ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp
{
///
/// (Output)
- /// [Output Only]
+ /// A nested object resource.
/// Structure is documented below.
///
public readonly ImmutableArray Links;
diff --git a/sdk/dotnet/Compute/RegionNetworkEndpointGroup.cs b/sdk/dotnet/Compute/RegionNetworkEndpointGroup.cs
index 00576cccc1..904697ada7 100644
--- a/sdk/dotnet/Compute/RegionNetworkEndpointGroup.cs
+++ b/sdk/dotnet/Compute/RegionNetworkEndpointGroup.cs
@@ -552,7 +552,7 @@ public partial class RegionNetworkEndpointGroup : global::Pulumi.CustomResource
/// Structure is documented below.
///
[Output("pscData")]
- public Output PscData { get; private set; } = null!;
+ public Output PscData { get; private set; } = null!;
///
/// This field is only used for PSC and INTERNET NEGs.
diff --git a/sdk/dotnet/Compute/ResizeRequest.cs b/sdk/dotnet/Compute/ResizeRequest.cs
index 7c5c2606fb..b782cf9601 100644
--- a/sdk/dotnet/Compute/ResizeRequest.cs
+++ b/sdk/dotnet/Compute/ResizeRequest.cs
@@ -14,13 +14,13 @@ namespace Pulumi.Gcp.Compute
///
/// Resize Requests are the Managed Instance Group implementation of Dynamic Workload Scheduler Flex Start.
///
- /// With Dynamic Workload Scheduler in Flex Start mode, you submit a GPU capacity request for your AI/ML jobs by indicating how many you need, a duration, and your preferred region. Dynamic Workload Scheduler intelligently persists the request; once the capacity becomes available, it automatically provisions your VMs enabling your workloads to run continuously for the entire duration of the capacity allocation.
+ /// With Dynamic Workload Scheduler in Flex Start mode, you submit a GPU capacity request for your AI/ML jobs by indicating how many you need, a duration, and your preferred zone. Dynamic Workload Scheduler intelligently persists the request; once the capacity becomes available, it automatically provisions your VMs enabling your workloads to run continuously for the entire duration of the capacity allocation.
///
/// To get more information about ResizeRequest, see:
///
/// * [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagerResizeRequests)
/// * How-to Guides
- /// * [QUICKSTART_TITLE](https://cloud.google.com/compute/docs/instance-groups/create-resize-requests-mig)
+ /// * [About resize requests in a MIG](https://cloud.google.com/compute/docs/instance-groups/about-resize-requests-mig)
///
/// ## Example Usage
///
@@ -167,9 +167,7 @@ public partial class ResizeRequest : global::Pulumi.CustomResource
public Output Description { get; private set; } = null!;
///
- /// The name of the managed instance group. The name should conform to RFC1035 or be a resource ID.
- /// Authorization requires the following IAM permission on the specified resource instanceGroupManager:
- /// *compute.instanceGroupManagers.update
+ /// The reference of the instance group manager this ResizeRequest is a part of.
///
///
/// - - -
@@ -204,20 +202,20 @@ public partial class ResizeRequest : global::Pulumi.CustomResource
public Output ResizeBy { get; private set; } = null!;
///
- /// [Output only] Current state of the request.
+ /// Current state of the request.
///
[Output("state")]
public Output State { get; private set; } = null!;
///
- /// [Output only] Status of the request.
+ /// Status of the request.
/// Structure is documented below.
///
[Output("statuses")]
public Output> Statuses { get; private set; } = null!;
///
- /// Name of the compute zone scoping this request. Name should conform to RFC1035.
+ /// The reference of the compute zone scoping this request.
///
[Output("zone")]
public Output Zone { get; private set; } = null!;
@@ -275,9 +273,7 @@ public sealed class ResizeRequestArgs : global::Pulumi.ResourceArgs
public Input? Description { get; set; }
///
- /// The name of the managed instance group. The name should conform to RFC1035 or be a resource ID.
- /// Authorization requires the following IAM permission on the specified resource instanceGroupManager:
- /// *compute.instanceGroupManagers.update
+ /// The reference of the instance group manager this ResizeRequest is a part of.
///
///
/// - - -
@@ -312,7 +308,7 @@ public sealed class ResizeRequestArgs : global::Pulumi.ResourceArgs
public Input ResizeBy { get; set; } = null!;
///
- /// Name of the compute zone scoping this request. Name should conform to RFC1035.
+ /// The reference of the compute zone scoping this request.
///
[Input("zone", required: true)]
public Input Zone { get; set; } = null!;
@@ -338,9 +334,7 @@ public sealed class ResizeRequestState : global::Pulumi.ResourceArgs
public Input? Description { get; set; }
///
- /// The name of the managed instance group. The name should conform to RFC1035 or be a resource ID.
- /// Authorization requires the following IAM permission on the specified resource instanceGroupManager:
- /// *compute.instanceGroupManagers.update
+ /// The reference of the instance group manager this ResizeRequest is a part of.
///
///
/// - - -
@@ -375,7 +369,7 @@ public sealed class ResizeRequestState : global::Pulumi.ResourceArgs
public Input? ResizeBy { get; set; }
///
- /// [Output only] Current state of the request.
+ /// Current state of the request.
///
[Input("state")]
public Input? State { get; set; }
@@ -384,7 +378,7 @@ public sealed class ResizeRequestState : global::Pulumi.ResourceArgs
private InputList? _statuses;
///
- /// [Output only] Status of the request.
+ /// Status of the request.
/// Structure is documented below.
///
public InputList Statuses
@@ -394,7 +388,7 @@ public InputList Statuses
}
///
- /// Name of the compute zone scoping this request. Name should conform to RFC1035.
+ /// The reference of the compute zone scoping this request.
///
[Input("zone")]
public Input? Zone { get; set; }
diff --git a/sdk/dotnet/Config/Config.cs b/sdk/dotnet/Config/Config.cs
index d3251e6932..b3b1b84478 100644
--- a/sdk/dotnet/Config/Config.cs
+++ b/sdk/dotnet/Config/Config.cs
@@ -235,6 +235,13 @@ public static string? CertificateManagerCustomEndpoint
set => _certificateManagerCustomEndpoint.Set(value);
}
+ private static readonly __Value _chronicleCustomEndpoint = new __Value(() => __config.Get("chronicleCustomEndpoint"));
+ public static string? ChronicleCustomEndpoint
+ {
+ get => _chronicleCustomEndpoint.Get();
+ set => _chronicleCustomEndpoint.Set(value);
+ }
+
private static readonly __Value _cloudAssetCustomEndpoint = new __Value(() => __config.Get("cloudAssetCustomEndpoint"));
public static string? CloudAssetCustomEndpoint
{
diff --git a/sdk/dotnet/Dataproc/Batch.cs b/sdk/dotnet/Dataproc/Batch.cs
index eb9ca00561..4bf9423368 100644
--- a/sdk/dotnet/Dataproc/Batch.cs
+++ b/sdk/dotnet/Dataproc/Batch.cs
@@ -97,22 +97,9 @@ namespace Pulumi.Gcp.Dataproc
/// ForceDestroy = true,
/// });
///
- /// var keyRing = new Gcp.Kms.KeyRing("key_ring", new()
- /// {
- /// Name = "example-keyring",
- /// Location = "us-central1",
- /// });
- ///
- /// var cryptoKey = new Gcp.Kms.CryptoKey("crypto_key", new()
- /// {
- /// Name = "example-key",
- /// KeyRing = keyRing.Id,
- /// Purpose = "ENCRYPT_DECRYPT",
- /// });
- ///
/// var cryptoKeyMember1 = new Gcp.Kms.CryptoKeyIAMMember("crypto_key_member_1", new()
/// {
- /// CryptoKeyId = cryptoKey.Id,
+ /// CryptoKeyId = "example-key",
/// Role = "roles/cloudkms.cryptoKeyEncrypterDecrypter",
/// Member = $"serviceAccount:service-{project.Apply(getProjectResult => getProjectResult.Number)}@dataproc-accounts.iam.gserviceaccount.com",
/// });
@@ -194,7 +181,7 @@ namespace Pulumi.Gcp.Dataproc
/// {
/// "tag1",
/// },
- /// KmsKey = cryptoKey.Id,
+ /// KmsKey = "example-key",
/// NetworkUri = "default",
/// ServiceAccount = $"{project.Apply(getProjectResult => getProjectResult.Number)}-compute@developer.gserviceaccount.com",
/// StagingBucket = bucket.Name,
diff --git a/sdk/dotnet/Datastream/Inputs/StreamSourceConfigMysqlSourceConfigArgs.cs b/sdk/dotnet/Datastream/Inputs/StreamSourceConfigMysqlSourceConfigArgs.cs
index a1f19ff45d..d7a429a024 100644
--- a/sdk/dotnet/Datastream/Inputs/StreamSourceConfigMysqlSourceConfigArgs.cs
+++ b/sdk/dotnet/Datastream/Inputs/StreamSourceConfigMysqlSourceConfigArgs.cs
@@ -12,6 +12,12 @@ namespace Pulumi.Gcp.Datastream.Inputs
public sealed class StreamSourceConfigMysqlSourceConfigArgs : global::Pulumi.ResourceArgs
{
+ ///
+ /// CDC reader reads from binary logs replication cdc method.
+ ///
+ [Input("binaryLogPosition")]
+ public Input? BinaryLogPosition { get; set; }
+
///
/// MySQL objects to exclude from the stream.
/// Structure is documented below.
@@ -19,6 +25,12 @@ public sealed class StreamSourceConfigMysqlSourceConfigArgs : global::Pulumi.Res
[Input("excludeObjects")]
public Input? ExcludeObjects { get; set; }
+ ///
+ /// CDC reader reads from gtid based replication.
+ ///
+ [Input("gtid")]
+ public Input? Gtid { get; set; }
+
///
/// MySQL objects to retrieve from the source.
/// Structure is documented below.
diff --git a/sdk/dotnet/Datastream/Inputs/StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs.cs b/sdk/dotnet/Datastream/Inputs/StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs.cs
new file mode 100644
index 0000000000..7b4c7c5ec1
--- /dev/null
+++ b/sdk/dotnet/Datastream/Inputs/StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs.cs
@@ -0,0 +1,20 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.Datastream.Inputs
+{
+
+ public sealed class StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs : global::Pulumi.ResourceArgs
+ {
+ public StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs()
+ {
+ }
+ public static new StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs Empty => new StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs();
+ }
+}
diff --git a/sdk/dotnet/Datastream/Inputs/StreamSourceConfigMysqlSourceConfigBinaryLogPositionGetArgs.cs b/sdk/dotnet/Datastream/Inputs/StreamSourceConfigMysqlSourceConfigBinaryLogPositionGetArgs.cs
new file mode 100644
index 0000000000..b67668a74a
--- /dev/null
+++ b/sdk/dotnet/Datastream/Inputs/StreamSourceConfigMysqlSourceConfigBinaryLogPositionGetArgs.cs
@@ -0,0 +1,20 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.Datastream.Inputs
+{
+
+ public sealed class StreamSourceConfigMysqlSourceConfigBinaryLogPositionGetArgs : global::Pulumi.ResourceArgs
+ {
+ public StreamSourceConfigMysqlSourceConfigBinaryLogPositionGetArgs()
+ {
+ }
+ public static new StreamSourceConfigMysqlSourceConfigBinaryLogPositionGetArgs Empty => new StreamSourceConfigMysqlSourceConfigBinaryLogPositionGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Datastream/Inputs/StreamSourceConfigMysqlSourceConfigGetArgs.cs b/sdk/dotnet/Datastream/Inputs/StreamSourceConfigMysqlSourceConfigGetArgs.cs
index b0ca8d1b6f..48e199efe2 100644
--- a/sdk/dotnet/Datastream/Inputs/StreamSourceConfigMysqlSourceConfigGetArgs.cs
+++ b/sdk/dotnet/Datastream/Inputs/StreamSourceConfigMysqlSourceConfigGetArgs.cs
@@ -12,6 +12,12 @@ namespace Pulumi.Gcp.Datastream.Inputs
public sealed class StreamSourceConfigMysqlSourceConfigGetArgs : global::Pulumi.ResourceArgs
{
+ ///
+ /// CDC reader reads from binary logs replication cdc method.
+ ///
+ [Input("binaryLogPosition")]
+ public Input? BinaryLogPosition { get; set; }
+
///
/// MySQL objects to exclude from the stream.
/// Structure is documented below.
@@ -19,6 +25,12 @@ public sealed class StreamSourceConfigMysqlSourceConfigGetArgs : global::Pulumi.
[Input("excludeObjects")]
public Input? ExcludeObjects { get; set; }
+ ///
+ /// CDC reader reads from gtid based replication.
+ ///
+ [Input("gtid")]
+ public Input? Gtid { get; set; }
+
///
/// MySQL objects to retrieve from the source.
/// Structure is documented below.
diff --git a/sdk/dotnet/Datastream/Inputs/StreamSourceConfigMysqlSourceConfigGtidArgs.cs b/sdk/dotnet/Datastream/Inputs/StreamSourceConfigMysqlSourceConfigGtidArgs.cs
new file mode 100644
index 0000000000..000d85be71
--- /dev/null
+++ b/sdk/dotnet/Datastream/Inputs/StreamSourceConfigMysqlSourceConfigGtidArgs.cs
@@ -0,0 +1,20 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.Datastream.Inputs
+{
+
+ public sealed class StreamSourceConfigMysqlSourceConfigGtidArgs : global::Pulumi.ResourceArgs
+ {
+ public StreamSourceConfigMysqlSourceConfigGtidArgs()
+ {
+ }
+ public static new StreamSourceConfigMysqlSourceConfigGtidArgs Empty => new StreamSourceConfigMysqlSourceConfigGtidArgs();
+ }
+}
diff --git a/sdk/dotnet/Datastream/Inputs/StreamSourceConfigMysqlSourceConfigGtidGetArgs.cs b/sdk/dotnet/Datastream/Inputs/StreamSourceConfigMysqlSourceConfigGtidGetArgs.cs
new file mode 100644
index 0000000000..2134682f74
--- /dev/null
+++ b/sdk/dotnet/Datastream/Inputs/StreamSourceConfigMysqlSourceConfigGtidGetArgs.cs
@@ -0,0 +1,20 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.Datastream.Inputs
+{
+
+ public sealed class StreamSourceConfigMysqlSourceConfigGtidGetArgs : global::Pulumi.ResourceArgs
+ {
+ public StreamSourceConfigMysqlSourceConfigGtidGetArgs()
+ {
+ }
+ public static new StreamSourceConfigMysqlSourceConfigGtidGetArgs Empty => new StreamSourceConfigMysqlSourceConfigGtidGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Datastream/Outputs/StreamSourceConfigMysqlSourceConfig.cs b/sdk/dotnet/Datastream/Outputs/StreamSourceConfigMysqlSourceConfig.cs
index fa7408b667..921aa499e3 100644
--- a/sdk/dotnet/Datastream/Outputs/StreamSourceConfigMysqlSourceConfig.cs
+++ b/sdk/dotnet/Datastream/Outputs/StreamSourceConfigMysqlSourceConfig.cs
@@ -13,12 +13,20 @@ namespace Pulumi.Gcp.Datastream.Outputs
[OutputType]
public sealed class StreamSourceConfigMysqlSourceConfig
{
+ ///
+ /// CDC reader reads from binary logs replication cdc method.
+ ///
+ public readonly Outputs.StreamSourceConfigMysqlSourceConfigBinaryLogPosition? BinaryLogPosition;
///
/// MySQL objects to exclude from the stream.
/// Structure is documented below.
///
public readonly Outputs.StreamSourceConfigMysqlSourceConfigExcludeObjects? ExcludeObjects;
///
+ /// CDC reader reads from gtid based replication.
+ ///
+ public readonly Outputs.StreamSourceConfigMysqlSourceConfigGtid? Gtid;
+ ///
/// MySQL objects to retrieve from the source.
/// Structure is documented below.
///
@@ -36,15 +44,21 @@ public sealed class StreamSourceConfigMysqlSourceConfig
[OutputConstructor]
private StreamSourceConfigMysqlSourceConfig(
+ Outputs.StreamSourceConfigMysqlSourceConfigBinaryLogPosition? binaryLogPosition,
+
Outputs.StreamSourceConfigMysqlSourceConfigExcludeObjects? excludeObjects,
+ Outputs.StreamSourceConfigMysqlSourceConfigGtid? gtid,
+
Outputs.StreamSourceConfigMysqlSourceConfigIncludeObjects? includeObjects,
int? maxConcurrentBackfillTasks,
int? maxConcurrentCdcTasks)
{
+ BinaryLogPosition = binaryLogPosition;
ExcludeObjects = excludeObjects;
+ Gtid = gtid;
IncludeObjects = includeObjects;
MaxConcurrentBackfillTasks = maxConcurrentBackfillTasks;
MaxConcurrentCdcTasks = maxConcurrentCdcTasks;
diff --git a/sdk/dotnet/Datastream/Outputs/StreamSourceConfigMysqlSourceConfigBinaryLogPosition.cs b/sdk/dotnet/Datastream/Outputs/StreamSourceConfigMysqlSourceConfigBinaryLogPosition.cs
new file mode 100644
index 0000000000..6094e5cdd7
--- /dev/null
+++ b/sdk/dotnet/Datastream/Outputs/StreamSourceConfigMysqlSourceConfigBinaryLogPosition.cs
@@ -0,0 +1,21 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.Datastream.Outputs
+{
+
+ [OutputType]
+ public sealed class StreamSourceConfigMysqlSourceConfigBinaryLogPosition
+ {
+ [OutputConstructor]
+ private StreamSourceConfigMysqlSourceConfigBinaryLogPosition()
+ {
+ }
+ }
+}
diff --git a/sdk/dotnet/Datastream/Outputs/StreamSourceConfigMysqlSourceConfigGtid.cs b/sdk/dotnet/Datastream/Outputs/StreamSourceConfigMysqlSourceConfigGtid.cs
new file mode 100644
index 0000000000..6c9a85bc83
--- /dev/null
+++ b/sdk/dotnet/Datastream/Outputs/StreamSourceConfigMysqlSourceConfigGtid.cs
@@ -0,0 +1,21 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.Datastream.Outputs
+{
+
+ [OutputType]
+ public sealed class StreamSourceConfigMysqlSourceConfigGtid
+ {
+ [OutputConstructor]
+ private StreamSourceConfigMysqlSourceConfigGtid()
+ {
+ }
+ }
+}
diff --git a/sdk/dotnet/DeveloperConnect/Connection.cs b/sdk/dotnet/DeveloperConnect/Connection.cs
index 3630f17c46..ebbc0972cb 100644
--- a/sdk/dotnet/DeveloperConnect/Connection.cs
+++ b/sdk/dotnet/DeveloperConnect/Connection.cs
@@ -12,7 +12,7 @@ namespace Pulumi.Gcp.DeveloperConnect
///
/// ## Example Usage
///
- /// ### Developer Connect Connection Basic
+ /// ### Developer Connect Connection New
///
/// ```csharp
/// using System.Collections.Generic;
@@ -22,23 +22,72 @@ namespace Pulumi.Gcp.DeveloperConnect
///
/// return await Deployment.RunAsync(() =>
/// {
+ /// // Setup permissions. Only needed once per project
+ /// var devconnect_p4sa = new Gcp.Projects.ServiceIdentity("devconnect-p4sa", new()
+ /// {
+ /// Service = "developerconnect.googleapis.com",
+ /// });
+ ///
+ /// var devconnect_secret = new Gcp.Projects.IAMMember("devconnect-secret", new()
+ /// {
+ /// Project = "my-project-name",
+ /// Role = "roles/secretmanager.admin",
+ /// Member = devconnect_p4sa.Member,
+ /// });
+ ///
/// var my_connection = new Gcp.DeveloperConnect.Connection("my-connection", new()
/// {
/// Location = "us-central1",
- /// ConnectionId = "tf-test-connection",
+ /// ConnectionId = "tf-test-connection-new",
+ /// GithubConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigArgs
+ /// {
+ /// GithubApp = "FIREBASE",
+ /// },
+ /// }, new CustomResourceOptions
+ /// {
+ /// DependsOn =
+ /// {
+ /// devconnect_secret,
+ /// },
+ /// });
+ ///
+ /// return new Dictionary<string, object?>
+ /// {
+ /// ["nextSteps"] = my_connection.InstallationStates,
+ /// };
+ /// });
+ /// ```
+ /// ### Developer Connect Connection Existing Credentials
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Gcp = Pulumi.Gcp;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var my_connection = new Gcp.DeveloperConnect.Connection("my-connection", new()
+ /// {
+ /// Location = "us-central1",
+ /// ConnectionId = "tf-test-connection-cred",
/// GithubConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigArgs
/// {
/// GithubApp = "DEVELOPER_CONNECT",
/// AuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs
/// {
- /// OauthTokenSecretVersion = "projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1",
+ /// OauthTokenSecretVersion = "projects/your-project/secrets/your-secret-id/versions/latest",
/// },
/// },
/// });
///
+ /// return new Dictionary<string, object?>
+ /// {
+ /// ["nextSteps"] = my_connection.InstallationStates,
+ /// };
/// });
/// ```
- /// ### Developer Connect Connection Github Doc
+ /// ### Developer Connect Connection Existing Installation
///
/// ```csharp
/// using System.Collections.Generic;
@@ -67,6 +116,11 @@ namespace Pulumi.Gcp.DeveloperConnect
/// }).Apply(invoke => invoke.Result),
/// });
///
+ /// var devconnect_p4sa = new Gcp.Projects.ServiceIdentity("devconnect-p4sa", new()
+ /// {
+ /// Service = "developerconnect.googleapis.com",
+ /// });
+ ///
/// var p4sa_secretAccessor = Gcp.Organizations.GetIAMPolicy.Invoke(new()
/// {
/// Bindings = new[]
@@ -76,7 +130,7 @@ namespace Pulumi.Gcp.DeveloperConnect
/// Role = "roles/secretmanager.secretAccessor",
/// Members = new[]
/// {
- /// "serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com",
+ /// devconnect_p4sa.Member,
/// },
/// },
/// },
diff --git a/sdk/dotnet/Diagflow/Inputs/CxAgentAdvancedSettingsSpeechSettingsArgs.cs b/sdk/dotnet/Diagflow/Inputs/CxAgentAdvancedSettingsSpeechSettingsArgs.cs
index c9650eedad..0841bb2e60 100644
--- a/sdk/dotnet/Diagflow/Inputs/CxAgentAdvancedSettingsSpeechSettingsArgs.cs
+++ b/sdk/dotnet/Diagflow/Inputs/CxAgentAdvancedSettingsSpeechSettingsArgs.cs
@@ -39,7 +39,7 @@ public InputMap Models
public Input? NoSpeechTimeout { get; set; }
///
- /// Use timeout based endpointing, interpreting endpointer sensitivy as seconds of timeout value.
+ /// Use timeout based endpointing, interpreting endpointer sensitivity as seconds of timeout value.
///
[Input("useTimeoutBasedEndpointing")]
public Input? UseTimeoutBasedEndpointing { get; set; }
diff --git a/sdk/dotnet/Diagflow/Inputs/CxAgentAdvancedSettingsSpeechSettingsGetArgs.cs b/sdk/dotnet/Diagflow/Inputs/CxAgentAdvancedSettingsSpeechSettingsGetArgs.cs
index 2ffbbd91f2..ad23efb38f 100644
--- a/sdk/dotnet/Diagflow/Inputs/CxAgentAdvancedSettingsSpeechSettingsGetArgs.cs
+++ b/sdk/dotnet/Diagflow/Inputs/CxAgentAdvancedSettingsSpeechSettingsGetArgs.cs
@@ -39,7 +39,7 @@ public InputMap Models
public Input? NoSpeechTimeout { get; set; }
///
- /// Use timeout based endpointing, interpreting endpointer sensitivy as seconds of timeout value.
+ /// Use timeout based endpointing, interpreting endpointer sensitivity as seconds of timeout value.
///
[Input("useTimeoutBasedEndpointing")]
public Input? UseTimeoutBasedEndpointing { get; set; }
diff --git a/sdk/dotnet/Diagflow/Outputs/CxAgentAdvancedSettingsSpeechSettings.cs b/sdk/dotnet/Diagflow/Outputs/CxAgentAdvancedSettingsSpeechSettings.cs
index cc91003b5f..1641abbb12 100644
--- a/sdk/dotnet/Diagflow/Outputs/CxAgentAdvancedSettingsSpeechSettings.cs
+++ b/sdk/dotnet/Diagflow/Outputs/CxAgentAdvancedSettingsSpeechSettings.cs
@@ -28,7 +28,7 @@ public sealed class CxAgentAdvancedSettingsSpeechSettings
///
public readonly string? NoSpeechTimeout;
///
- /// Use timeout based endpointing, interpreting endpointer sensitivy as seconds of timeout value.
+ /// Use timeout based endpointing, interpreting endpointer sensitivity as seconds of timeout value.
///
public readonly bool? UseTimeoutBasedEndpointing;
diff --git a/sdk/dotnet/Filestore/Backup.cs b/sdk/dotnet/Filestore/Backup.cs
index 38a4fbc897..579879b77d 100644
--- a/sdk/dotnet/Filestore/Backup.cs
+++ b/sdk/dotnet/Filestore/Backup.cs
@@ -209,6 +209,15 @@ public partial class Backup : global::Pulumi.CustomResource
[Output("storageBytes")]
public Output StorageBytes { get; private set; } = null!;
+ ///
+ /// A map of resource manager tags.
+ /// Resource manager tag keys and values have the same definition as resource manager tags.
+ /// Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/{tag_value_id}.
+ /// The field is ignored (both PUT & PATCH) when empty.
+ ///
+ [Output("tags")]
+ public Output?> Tags { get; private set; } = null!;
+
///
/// Create a Backup resource with the given unique name, arguments, and options.
@@ -321,6 +330,21 @@ public InputMap Labels
[Input("sourceInstance", required: true)]
public Input SourceInstance { get; set; } = null!;
+ [Input("tags")]
+ private InputMap? _tags;
+
+ ///
+ /// A map of resource manager tags.
+ /// Resource manager tag keys and values have the same definition as resource manager tags.
+ /// Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/{tag_value_id}.
+ /// The field is ignored (both PUT & PATCH) when empty.
+ ///
+ public InputMap Tags
+ {
+ get => _tags ?? (_tags = new InputMap());
+ set => _tags = value;
+ }
+
public BackupArgs()
{
}
@@ -465,6 +489,21 @@ public InputMap PulumiLabels
[Input("storageBytes")]
public Input? StorageBytes { get; set; }
+ [Input("tags")]
+ private InputMap? _tags;
+
+ ///
+ /// A map of resource manager tags.
+ /// Resource manager tag keys and values have the same definition as resource manager tags.
+ /// Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/{tag_value_id}.
+ /// The field is ignored (both PUT & PATCH) when empty.
+ ///
+ public InputMap Tags
+ {
+ get => _tags ?? (_tags = new InputMap());
+ set => _tags = value;
+ }
+
public BackupState()
{
}
diff --git a/sdk/dotnet/Firebase/HostingCustomDomain.cs b/sdk/dotnet/Firebase/HostingCustomDomain.cs
index 382c128c4e..321dc172b5 100644
--- a/sdk/dotnet/Firebase/HostingCustomDomain.cs
+++ b/sdk/dotnet/Firebase/HostingCustomDomain.cs
@@ -306,7 +306,7 @@ public partial class HostingCustomDomain : global::Pulumi.CustomResource
public Output Project { get; private set; } = null!;
///
- /// if true, indicates that Hosting's systems are attmepting to
+ /// if true, indicates that Hosting's systems are attempting to
/// make the `CustomDomain`'s state match your preferred state. This is most
/// frequently `true` when initially provisioning a `CustomDomain` or when creating
/// a new SSL certificate to match an updated `cert_preference`
@@ -596,7 +596,7 @@ public InputList Issues
public Input? Project { get; set; }
///
- /// if true, indicates that Hosting's systems are attmepting to
+ /// if true, indicates that Hosting's systems are attempting to
/// make the `CustomDomain`'s state match your preferred state. This is most
/// frequently `true` when initially provisioning a `CustomDomain` or when creating
/// a new SSL certificate to match an updated `cert_preference`
diff --git a/sdk/dotnet/Firestore/Inputs/DatabaseCmekConfigArgs.cs b/sdk/dotnet/Firestore/Inputs/DatabaseCmekConfigArgs.cs
index 005e355df8..df1e1df892 100644
--- a/sdk/dotnet/Firestore/Inputs/DatabaseCmekConfigArgs.cs
+++ b/sdk/dotnet/Firestore/Inputs/DatabaseCmekConfigArgs.cs
@@ -39,7 +39,7 @@ public InputList ActiveKeyVersions
/// Cloud KMS multi-region europe. See https://cloud.google.com/kms/docs/locations.
/// This value should be the KMS key resource ID in the format of
/// `projects/{project_id}/locations/{kms_location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`.
- /// How to retrive this resource ID is listed at
+ /// How to retrieve this resource ID is listed at
/// https://cloud.google.com/kms/docs/getting-resource-ids#getting_the_id_for_a_key_and_version.
///
[Input("kmsKeyName", required: true)]
diff --git a/sdk/dotnet/Firestore/Inputs/DatabaseCmekConfigGetArgs.cs b/sdk/dotnet/Firestore/Inputs/DatabaseCmekConfigGetArgs.cs
index 6509493f28..3a5cb88bdd 100644
--- a/sdk/dotnet/Firestore/Inputs/DatabaseCmekConfigGetArgs.cs
+++ b/sdk/dotnet/Firestore/Inputs/DatabaseCmekConfigGetArgs.cs
@@ -39,7 +39,7 @@ public InputList ActiveKeyVersions
/// Cloud KMS multi-region europe. See https://cloud.google.com/kms/docs/locations.
/// This value should be the KMS key resource ID in the format of
/// `projects/{project_id}/locations/{kms_location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`.
- /// How to retrive this resource ID is listed at
+ /// How to retrieve this resource ID is listed at
/// https://cloud.google.com/kms/docs/getting-resource-ids#getting_the_id_for_a_key_and_version.
///
[Input("kmsKeyName", required: true)]
diff --git a/sdk/dotnet/Firestore/Outputs/DatabaseCmekConfig.cs b/sdk/dotnet/Firestore/Outputs/DatabaseCmekConfig.cs
index 29bc85562e..1f72a118ce 100644
--- a/sdk/dotnet/Firestore/Outputs/DatabaseCmekConfig.cs
+++ b/sdk/dotnet/Firestore/Outputs/DatabaseCmekConfig.cs
@@ -32,7 +32,7 @@ public sealed class DatabaseCmekConfig
/// Cloud KMS multi-region europe. See https://cloud.google.com/kms/docs/locations.
/// This value should be the KMS key resource ID in the format of
/// `projects/{project_id}/locations/{kms_location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`.
- /// How to retrive this resource ID is listed at
+ /// How to retrieve this resource ID is listed at
/// https://cloud.google.com/kms/docs/getting-resource-ids#getting_the_id_for_a_key_and_version.
///
public readonly string KmsKeyName;
diff --git a/sdk/dotnet/GkeHub/GetFeature.cs b/sdk/dotnet/GkeHub/GetFeature.cs
new file mode 100644
index 0000000000..da637e1199
--- /dev/null
+++ b/sdk/dotnet/GkeHub/GetFeature.cs
@@ -0,0 +1,127 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub
+{
+ public static class GetFeature
+ {
+ public static Task InvokeAsync(GetFeatureArgs args, InvokeOptions? options = null)
+ => global::Pulumi.Deployment.Instance.InvokeAsync("gcp:gkehub/getFeature:getFeature", args ?? new GetFeatureArgs(), options.WithDefaults());
+
+ public static Output Invoke(GetFeatureInvokeArgs args, InvokeOptions? options = null)
+ => global::Pulumi.Deployment.Instance.Invoke("gcp:gkehub/getFeature:getFeature", args ?? new GetFeatureInvokeArgs(), options.WithDefaults());
+
+ public static Output Invoke(GetFeatureInvokeArgs args, InvokeOutputOptions options)
+ => global::Pulumi.Deployment.Instance.Invoke("gcp:gkehub/getFeature:getFeature", args ?? new GetFeatureInvokeArgs(), options.WithDefaults());
+ }
+
+
+ public sealed class GetFeatureArgs : global::Pulumi.InvokeArgs
+ {
+ [Input("location", required: true)]
+ public string Location { get; set; } = null!;
+
+ [Input("name", required: true)]
+ public string Name { get; set; } = null!;
+
+ [Input("project")]
+ public string? Project { get; set; }
+
+ public GetFeatureArgs()
+ {
+ }
+ public static new GetFeatureArgs Empty => new GetFeatureArgs();
+ }
+
+ public sealed class GetFeatureInvokeArgs : global::Pulumi.InvokeArgs
+ {
+ [Input("location", required: true)]
+ public Input Location { get; set; } = null!;
+
+ [Input("name", required: true)]
+ public Input Name { get; set; } = null!;
+
+ [Input("project")]
+ public Input? Project { get; set; }
+
+ public GetFeatureInvokeArgs()
+ {
+ }
+ public static new GetFeatureInvokeArgs Empty => new GetFeatureInvokeArgs();
+ }
+
+
+ [OutputType]
+ public sealed class GetFeatureResult
+ {
+ public readonly string CreateTime;
+ public readonly string DeleteTime;
+ public readonly ImmutableDictionary EffectiveLabels;
+ public readonly ImmutableArray FleetDefaultMemberConfigs;
+ ///
+ /// The provider-assigned unique ID for this managed resource.
+ ///
+ public readonly string Id;
+ public readonly ImmutableDictionary Labels;
+ public readonly string Location;
+ public readonly string Name;
+ public readonly string? Project;
+ public readonly ImmutableDictionary PulumiLabels;
+ public readonly ImmutableArray ResourceStates;
+ public readonly ImmutableArray Specs;
+ public readonly ImmutableArray States;
+ public readonly string UpdateTime;
+
+ [OutputConstructor]
+ private GetFeatureResult(
+ string createTime,
+
+ string deleteTime,
+
+ ImmutableDictionary effectiveLabels,
+
+ ImmutableArray fleetDefaultMemberConfigs,
+
+ string id,
+
+ ImmutableDictionary labels,
+
+ string location,
+
+ string name,
+
+ string? project,
+
+ ImmutableDictionary pulumiLabels,
+
+ ImmutableArray resourceStates,
+
+ ImmutableArray specs,
+
+ ImmutableArray states,
+
+ string updateTime)
+ {
+ CreateTime = createTime;
+ DeleteTime = deleteTime;
+ EffectiveLabels = effectiveLabels;
+ FleetDefaultMemberConfigs = fleetDefaultMemberConfigs;
+ Id = id;
+ Labels = labels;
+ Location = location;
+ Name = name;
+ Project = project;
+ PulumiLabels = pulumiLabels;
+ ResourceStates = resourceStates;
+ Specs = specs;
+ States = states;
+ UpdateTime = updateTime;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitResult.cs
new file mode 100644
index 0000000000..f38914d609
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitResult.cs
@@ -0,0 +1,77 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitResult
+ {
+ ///
+ /// The Google Cloud Service Account Email used for auth when secretType is gcpServiceAccount
+ ///
+ public readonly string GcpServiceAccountEmail;
+ ///
+ /// URL for the HTTPS Proxy to be used when communicating with the Git repo
+ ///
+ public readonly string HttpsProxy;
+ ///
+ /// The path within the Git repository that represents the top level of the repo to sync
+ ///
+ public readonly string PolicyDir;
+ ///
+ /// Type of secret configured for access to the Git repo
+ ///
+ public readonly string SecretType;
+ ///
+ /// The branch of the repository to sync from. Default: master
+ ///
+ public readonly string SyncBranch;
+ ///
+ /// The URL of the Git repository to use as the source of truth
+ ///
+ public readonly string SyncRepo;
+ ///
+ /// Git revision (tag or hash) to check out. Default HEAD
+ ///
+ public readonly string SyncRev;
+ ///
+ /// Period in seconds between consecutive syncs. Default: 15
+ ///
+ public readonly string SyncWaitSecs;
+
+ [OutputConstructor]
+ private GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitResult(
+ string gcpServiceAccountEmail,
+
+ string httpsProxy,
+
+ string policyDir,
+
+ string secretType,
+
+ string syncBranch,
+
+ string syncRepo,
+
+ string syncRev,
+
+ string syncWaitSecs)
+ {
+ GcpServiceAccountEmail = gcpServiceAccountEmail;
+ HttpsProxy = httpsProxy;
+ PolicyDir = policyDir;
+ SecretType = secretType;
+ SyncBranch = syncBranch;
+ SyncRepo = syncRepo;
+ SyncRev = syncRev;
+ SyncWaitSecs = syncWaitSecs;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciResult.cs
new file mode 100644
index 0000000000..c7b68eabbf
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciResult.cs
@@ -0,0 +1,63 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciResult
+ {
+ ///
+ /// The Google Cloud Service Account Email used for auth when secretType is gcpServiceAccount
+ ///
+ public readonly string GcpServiceAccountEmail;
+ ///
+ /// The absolute path of the directory that contains the local resources. Default: the root directory of the image
+ ///
+ public readonly string PolicyDir;
+ ///
+ /// Type of secret configured for access to the Git repo
+ ///
+ public readonly string SecretType;
+ ///
+ /// The OCI image repository URL for the package to sync from
+ ///
+ public readonly string SyncRepo;
+ ///
+ /// Period in seconds between consecutive syncs. Default: 15
+ ///
+ public readonly string SyncWaitSecs;
+ ///
+ /// Version of Config Sync installed
+ ///
+ public readonly string Version;
+
+ [OutputConstructor]
+ private GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciResult(
+ string gcpServiceAccountEmail,
+
+ string policyDir,
+
+ string secretType,
+
+ string syncRepo,
+
+ string syncWaitSecs,
+
+ string version)
+ {
+ GcpServiceAccountEmail = gcpServiceAccountEmail;
+ PolicyDir = policyDir;
+ SecretType = secretType;
+ SyncRepo = syncRepo;
+ SyncWaitSecs = syncWaitSecs;
+ Version = version;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncResult.cs
new file mode 100644
index 0000000000..aed1c4e102
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncResult.cs
@@ -0,0 +1,56 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncResult
+ {
+ ///
+ /// Enables the installation of ConfigSync. If set to true, ConfigSync resources will be created and the other ConfigSync fields will be applied if exist. If set to false, all other ConfigSync fields will be ignored, ConfigSync resources will be deleted. If omitted, ConfigSync resources will be managed depends on the presence of the git or oci field.
+ ///
+ public readonly bool Enabled;
+ ///
+ /// Git repo configuration for the cluster
+ ///
+ public readonly ImmutableArray Gits;
+ ///
+ /// OCI repo configuration for the cluster
+ ///
+ public readonly ImmutableArray Ocis;
+ ///
+ /// Set to true to enable the Config Sync admission webhook to prevent drifts. If set to 'false', disables the Config Sync admission webhook and does not prevent drifts.
+ ///
+ public readonly bool PreventDrift;
+ ///
+ /// Specifies whether the Config Sync Repo is in hierarchical or unstructured mode
+ ///
+ public readonly string SourceFormat;
+
+ [OutputConstructor]
+ private GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncResult(
+ bool enabled,
+
+ ImmutableArray gits,
+
+ ImmutableArray ocis,
+
+ bool preventDrift,
+
+ string sourceFormat)
+ {
+ Enabled = enabled;
+ Gits = gits;
+ Ocis = ocis;
+ PreventDrift = preventDrift;
+ SourceFormat = sourceFormat;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigConfigmanagementResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigConfigmanagementResult.cs
new file mode 100644
index 0000000000..3f012ee883
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigConfigmanagementResult.cs
@@ -0,0 +1,42 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureFleetDefaultMemberConfigConfigmanagementResult
+ {
+ ///
+ /// ConfigSync configuration for the cluster
+ ///
+ public readonly ImmutableArray ConfigSyncs;
+ ///
+ /// Set this field to MANAGEMENT_AUTOMATIC to enable Config Sync auto-upgrades, and set this field to MANAGEMENT_MANUAL or MANAGEMENT_UNSPECIFIED to disable Config Sync auto-upgrades. Possible values: ["MANAGEMENT_UNSPECIFIED", "MANAGEMENT_AUTOMATIC", "MANAGEMENT_MANUAL"]
+ ///
+ public readonly string Management;
+ ///
+ /// Version of Config Sync installed
+ ///
+ public readonly string Version;
+
+ [OutputConstructor]
+ private GetFeatureFleetDefaultMemberConfigConfigmanagementResult(
+ ImmutableArray configSyncs,
+
+ string management,
+
+ string version)
+ {
+ ConfigSyncs = configSyncs;
+ Management = management;
+ Version = version;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigMeshResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigMeshResult.cs
new file mode 100644
index 0000000000..d5effdab87
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigMeshResult.cs
@@ -0,0 +1,27 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureFleetDefaultMemberConfigMeshResult
+ {
+ ///
+ /// Whether to automatically manage Service Mesh Possible values: ["MANAGEMENT_UNSPECIFIED", "MANAGEMENT_AUTOMATIC", "MANAGEMENT_MANUAL"]
+ ///
+ public readonly string Management;
+
+ [OutputConstructor]
+ private GetFeatureFleetDefaultMemberConfigMeshResult(string management)
+ {
+ Management = management;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitResult.cs
new file mode 100644
index 0000000000..878ec7854f
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitResult.cs
@@ -0,0 +1,35 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitResult
+ {
+ ///
+ /// CPU requirement expressed in Kubernetes resource units.
+ ///
+ public readonly string Cpu;
+ ///
+ /// Memory requirement expressed in Kubernetes resource units.
+ ///
+ public readonly string Memory;
+
+ [OutputConstructor]
+ private GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitResult(
+ string cpu,
+
+ string memory)
+ {
+ Cpu = cpu;
+ Memory = memory;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestResult.cs
new file mode 100644
index 0000000000..51e3598501
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestResult.cs
@@ -0,0 +1,35 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestResult
+ {
+ ///
+ /// CPU requirement expressed in Kubernetes resource units.
+ ///
+ public readonly string Cpu;
+ ///
+ /// Memory requirement expressed in Kubernetes resource units.
+ ///
+ public readonly string Memory;
+
+ [OutputConstructor]
+ private GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestResult(
+ string cpu,
+
+ string memory)
+ {
+ Cpu = cpu;
+ Memory = memory;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceResult.cs
new file mode 100644
index 0000000000..8d72bd3268
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceResult.cs
@@ -0,0 +1,35 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceResult
+ {
+ ///
+ /// Limits describes the maximum amount of compute resources allowed for use by the running container.
+ ///
+ public readonly ImmutableArray Limits;
+ ///
+ /// Requests describes the amount of compute resources reserved for the container by the kube-scheduler.
+ ///
+ public readonly ImmutableArray Requests;
+
+ [OutputConstructor]
+ private GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceResult(
+ ImmutableArray limits,
+
+ ImmutableArray requests)
+ {
+ Limits = limits;
+ Requests = requests;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationResult.cs
new file mode 100644
index 0000000000..84106639aa
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationResult.cs
@@ -0,0 +1,49 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationResult
+ {
+ ///
+ /// Matches a taint effect.
+ ///
+ public readonly string Effect;
+ ///
+ /// Matches a taint key (not necessarily unique).
+ ///
+ public readonly string Key;
+ ///
+ /// Matches a taint operator.
+ ///
+ public readonly string Operator;
+ ///
+ /// Matches a taint value.
+ ///
+ public readonly string Value;
+
+ [OutputConstructor]
+ private GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationResult(
+ string effect,
+
+ string key,
+
+ string @operator,
+
+ string value)
+ {
+ Effect = effect;
+ Key = key;
+ Operator = @operator;
+ Value = value;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigResult.cs
new file mode 100644
index 0000000000..959110b7fa
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigResult.cs
@@ -0,0 +1,53 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigResult
+ {
+ public readonly string Component;
+ ///
+ /// Container resource requirements.
+ ///
+ public readonly ImmutableArray ContainerResources;
+ ///
+ /// Pod affinity configuration. Possible values: ["AFFINITY_UNSPECIFIED", "NO_AFFINITY", "ANTI_AFFINITY"]
+ ///
+ public readonly string PodAffinity;
+ ///
+ /// Pod tolerations of node taints.
+ ///
+ public readonly ImmutableArray PodTolerations;
+ ///
+ /// Pod replica count.
+ ///
+ public readonly int ReplicaCount;
+
+ [OutputConstructor]
+ private GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigResult(
+ string component,
+
+ ImmutableArray containerResources,
+
+ string podAffinity,
+
+ ImmutableArray podTolerations,
+
+ int replicaCount)
+ {
+ Component = component;
+ ContainerResources = containerResources;
+ PodAffinity = podAffinity;
+ PodTolerations = podTolerations;
+ ReplicaCount = replicaCount;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringResult.cs
new file mode 100644
index 0000000000..623f08ab5c
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringResult.cs
@@ -0,0 +1,27 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringResult
+ {
+ ///
+ /// Specifies the list of backends Policy Controller will export to. An empty list would effectively disable metrics export. Possible values: ["MONITORING_BACKEND_UNSPECIFIED", "PROMETHEUS", "CLOUD_MONITORING"]
+ ///
+ public readonly ImmutableArray Backends;
+
+ [OutputConstructor]
+ private GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringResult(ImmutableArray backends)
+ {
+ Backends = backends;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleResult.cs
new file mode 100644
index 0000000000..f3be5f2009
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleResult.cs
@@ -0,0 +1,32 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleResult
+ {
+ public readonly string Bundle;
+ ///
+ /// The set of namespaces to be exempted from the bundle.
+ ///
+ public readonly ImmutableArray ExemptedNamespaces;
+
+ [OutputConstructor]
+ private GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleResult(
+ string bundle,
+
+ ImmutableArray exemptedNamespaces)
+ {
+ Bundle = bundle;
+ ExemptedNamespaces = exemptedNamespaces;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentResult.cs
new file mode 100644
index 0000000000..25aa9672fc
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentResult.cs
@@ -0,0 +1,35 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentResult
+ {
+ ///
+ /// Configures which bundles to install and their corresponding install specs.
+ ///
+ public readonly ImmutableArray Bundles;
+ ///
+ /// Configures the installation of the Template Library.
+ ///
+ public readonly ImmutableArray TemplateLibraries;
+
+ [OutputConstructor]
+ private GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentResult(
+ ImmutableArray bundles,
+
+ ImmutableArray templateLibraries)
+ {
+ Bundles = bundles;
+ TemplateLibraries = templateLibraries;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryResult.cs
new file mode 100644
index 0000000000..88ef5b504b
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryResult.cs
@@ -0,0 +1,27 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryResult
+ {
+ ///
+ /// Configures the manner in which the template library is installed on the cluster. Possible values: ["INSTALLATION_UNSPECIFIED", "NOT_INSTALLED", "ALL"]
+ ///
+ public readonly string Installation;
+
+ [OutputConstructor]
+ private GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryResult(string installation)
+ {
+ Installation = installation;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigResult.cs
new file mode 100644
index 0000000000..a39293aeb4
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigResult.cs
@@ -0,0 +1,91 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigResult
+ {
+ ///
+ /// Interval for Policy Controller Audit scans (in seconds). When set to 0, this disables audit functionality altogether.
+ ///
+ public readonly int AuditIntervalSeconds;
+ ///
+ /// The maximum number of audit violations to be stored in a constraint. If not set, the internal default of 20 will be used.
+ ///
+ public readonly int ConstraintViolationLimit;
+ ///
+ /// Map of deployment configs to deployments ("admission", "audit", "mutation").
+ ///
+ public readonly ImmutableArray DeploymentConfigs;
+ ///
+ /// The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster.
+ ///
+ public readonly ImmutableArray ExemptableNamespaces;
+ ///
+ /// Configures the mode of the Policy Controller installation Possible values: ["INSTALL_SPEC_UNSPECIFIED", "INSTALL_SPEC_NOT_INSTALLED", "INSTALL_SPEC_ENABLED", "INSTALL_SPEC_SUSPENDED", "INSTALL_SPEC_DETACHED"]
+ ///
+ public readonly string InstallSpec;
+ ///
+ /// Logs all denies and dry run failures.
+ ///
+ public readonly bool LogDeniesEnabled;
+ ///
+ /// Monitoring specifies the configuration of monitoring Policy Controller.
+ ///
+ public readonly ImmutableArray Monitorings;
+ ///
+ /// Enables the ability to mutate resources using Policy Controller.
+ ///
+ public readonly bool MutationEnabled;
+ ///
+ /// Specifies the desired policy content on the cluster.
+ ///
+ public readonly ImmutableArray PolicyContents;
+ ///
+ /// Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated.
+ ///
+ public readonly bool ReferentialRulesEnabled;
+
+ [OutputConstructor]
+ private GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigResult(
+ int auditIntervalSeconds,
+
+ int constraintViolationLimit,
+
+ ImmutableArray deploymentConfigs,
+
+ ImmutableArray exemptableNamespaces,
+
+ string installSpec,
+
+ bool logDeniesEnabled,
+
+ ImmutableArray monitorings,
+
+ bool mutationEnabled,
+
+ ImmutableArray policyContents,
+
+ bool referentialRulesEnabled)
+ {
+ AuditIntervalSeconds = auditIntervalSeconds;
+ ConstraintViolationLimit = constraintViolationLimit;
+ DeploymentConfigs = deploymentConfigs;
+ ExemptableNamespaces = exemptableNamespaces;
+ InstallSpec = installSpec;
+ LogDeniesEnabled = logDeniesEnabled;
+ Monitorings = monitorings;
+ MutationEnabled = mutationEnabled;
+ PolicyContents = policyContents;
+ ReferentialRulesEnabled = referentialRulesEnabled;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerResult.cs
new file mode 100644
index 0000000000..0836127ddc
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerResult.cs
@@ -0,0 +1,35 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureFleetDefaultMemberConfigPolicycontrollerResult
+ {
+ ///
+ /// Configuration of Policy Controller
+ ///
+ public readonly ImmutableArray PolicyControllerHubConfigs;
+ ///
+ /// Configures the version of Policy Controller
+ ///
+ public readonly string Version;
+
+ [OutputConstructor]
+ private GetFeatureFleetDefaultMemberConfigPolicycontrollerResult(
+ ImmutableArray policyControllerHubConfigs,
+
+ string version)
+ {
+ PolicyControllerHubConfigs = policyControllerHubConfigs;
+ Version = version;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigResult.cs
new file mode 100644
index 0000000000..41b60635f3
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureFleetDefaultMemberConfigResult.cs
@@ -0,0 +1,42 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureFleetDefaultMemberConfigResult
+ {
+ ///
+ /// Config Management spec
+ ///
+ public readonly ImmutableArray Configmanagements;
+ ///
+ /// Service Mesh spec
+ ///
+ public readonly ImmutableArray Meshes;
+ ///
+ /// Policy Controller spec
+ ///
+ public readonly ImmutableArray Policycontrollers;
+
+ [OutputConstructor]
+ private GetFeatureFleetDefaultMemberConfigResult(
+ ImmutableArray configmanagements,
+
+ ImmutableArray meshes,
+
+ ImmutableArray policycontrollers)
+ {
+ Configmanagements = configmanagements;
+ Meshes = meshes;
+ Policycontrollers = policycontrollers;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureResourceStateResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureResourceStateResult.cs
new file mode 100644
index 0000000000..2e1fc667ae
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureResourceStateResult.cs
@@ -0,0 +1,35 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureResourceStateResult
+ {
+ ///
+ /// Whether this Feature has outstanding resources that need to be cleaned up before it can be disabled.
+ ///
+ public readonly bool HasResources;
+ ///
+ /// The current state of the Feature resource in the Hub API.
+ ///
+ public readonly string State;
+
+ [OutputConstructor]
+ private GetFeatureResourceStateResult(
+ bool hasResources,
+
+ string state)
+ {
+ HasResources = hasResources;
+ State = state;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionResult.cs
new file mode 100644
index 0000000000..ed9bfa308d
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionResult.cs
@@ -0,0 +1,27 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionResult
+ {
+ ///
+ /// Amount of time to "soak" after a rollout has been finished before marking it COMPLETE. Cannot exceed 30 days.
+ ///
+ public readonly string Soaking;
+
+ [OutputConstructor]
+ private GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionResult(string soaking)
+ {
+ Soaking = soaking;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecClusterupgradeGkeUpgradeOverrideResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecClusterupgradeGkeUpgradeOverrideResult.cs
new file mode 100644
index 0000000000..6b4a1a10de
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecClusterupgradeGkeUpgradeOverrideResult.cs
@@ -0,0 +1,35 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureSpecClusterupgradeGkeUpgradeOverrideResult
+ {
+ ///
+ /// Post conditions to override for the specified upgrade.
+ ///
+ public readonly ImmutableArray PostConditions;
+ ///
+ /// Which upgrade to override.
+ ///
+ public readonly ImmutableArray Upgrades;
+
+ [OutputConstructor]
+ private GetFeatureSpecClusterupgradeGkeUpgradeOverrideResult(
+ ImmutableArray postConditions,
+
+ ImmutableArray upgrades)
+ {
+ PostConditions = postConditions;
+ Upgrades = upgrades;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeResult.cs
new file mode 100644
index 0000000000..c8d4ac0e20
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeResult.cs
@@ -0,0 +1,35 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeResult
+ {
+ ///
+ /// Name of the upgrade, e.g., "k8s_control_plane". It should be a valid upgrade name. It must not exceet 99 characters.
+ ///
+ public readonly string Name;
+ ///
+ /// Version of the upgrade, e.g., "1.22.1-gke.100". It should be a valid version. It must not exceet 99 characters.
+ ///
+ public readonly string Version;
+
+ [OutputConstructor]
+ private GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeResult(
+ string name,
+
+ string version)
+ {
+ Name = name;
+ Version = version;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecClusterupgradePostConditionResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecClusterupgradePostConditionResult.cs
new file mode 100644
index 0000000000..2cf7be56a7
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecClusterupgradePostConditionResult.cs
@@ -0,0 +1,27 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureSpecClusterupgradePostConditionResult
+ {
+ ///
+ /// Amount of time to "soak" after a rollout has been finished before marking it COMPLETE. Cannot exceed 30 days.
+ ///
+ public readonly string Soaking;
+
+ [OutputConstructor]
+ private GetFeatureSpecClusterupgradePostConditionResult(string soaking)
+ {
+ Soaking = soaking;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecClusterupgradeResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecClusterupgradeResult.cs
new file mode 100644
index 0000000000..50f05c9b18
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecClusterupgradeResult.cs
@@ -0,0 +1,42 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureSpecClusterupgradeResult
+ {
+ ///
+ /// Configuration overrides for individual upgrades.
+ ///
+ public readonly ImmutableArray GkeUpgradeOverrides;
+ ///
+ /// Post conditions to override for the specified upgrade.
+ ///
+ public readonly ImmutableArray PostConditions;
+ ///
+ /// Specified if other fleet should be considered as a source of upgrades. Currently, at most one upstream fleet is allowed. The fleet name should be either fleet project number or id.
+ ///
+ public readonly ImmutableArray UpstreamFleets;
+
+ [OutputConstructor]
+ private GetFeatureSpecClusterupgradeResult(
+ ImmutableArray gkeUpgradeOverrides,
+
+ ImmutableArray postConditions,
+
+ ImmutableArray upstreamFleets)
+ {
+ GkeUpgradeOverrides = gkeUpgradeOverrides;
+ PostConditions = postConditions;
+ UpstreamFleets = upstreamFleets;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigResult.cs
new file mode 100644
index 0000000000..3f62c93c34
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigResult.cs
@@ -0,0 +1,27 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigResult
+ {
+ ///
+ /// Specified if fleet logging feature is enabled. Possible values: ["MODE_UNSPECIFIED", "COPY", "MOVE"]
+ ///
+ public readonly string Mode;
+
+ [OutputConstructor]
+ private GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigResult(string mode)
+ {
+ Mode = mode;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigResult.cs
new file mode 100644
index 0000000000..73e74432c3
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigResult.cs
@@ -0,0 +1,27 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigResult
+ {
+ ///
+ /// Specified if fleet logging feature is enabled. Possible values: ["MODE_UNSPECIFIED", "COPY", "MOVE"]
+ ///
+ public readonly string Mode;
+
+ [OutputConstructor]
+ private GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigResult(string mode)
+ {
+ Mode = mode;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecFleetobservabilityLoggingConfigResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecFleetobservabilityLoggingConfigResult.cs
new file mode 100644
index 0000000000..ab70437379
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecFleetobservabilityLoggingConfigResult.cs
@@ -0,0 +1,35 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureSpecFleetobservabilityLoggingConfigResult
+ {
+ ///
+ /// Specified if applying the default routing config to logs not specified in other configs.
+ ///
+ public readonly ImmutableArray DefaultConfigs;
+ ///
+ /// Specified if applying the routing config to all logs for all fleet scopes.
+ ///
+ public readonly ImmutableArray FleetScopeLogsConfigs;
+
+ [OutputConstructor]
+ private GetFeatureSpecFleetobservabilityLoggingConfigResult(
+ ImmutableArray defaultConfigs,
+
+ ImmutableArray fleetScopeLogsConfigs)
+ {
+ DefaultConfigs = defaultConfigs;
+ FleetScopeLogsConfigs = fleetScopeLogsConfigs;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecFleetobservabilityResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecFleetobservabilityResult.cs
new file mode 100644
index 0000000000..e208f55cbb
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecFleetobservabilityResult.cs
@@ -0,0 +1,27 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureSpecFleetobservabilityResult
+ {
+ ///
+ /// Specified if fleet logging feature is enabled for the entire fleet. If UNSPECIFIED, fleet logging feature is disabled for the entire fleet.
+ ///
+ public readonly ImmutableArray LoggingConfigs;
+
+ [OutputConstructor]
+ private GetFeatureSpecFleetobservabilityResult(ImmutableArray loggingConfigs)
+ {
+ LoggingConfigs = loggingConfigs;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecMulticlusteringressResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecMulticlusteringressResult.cs
new file mode 100644
index 0000000000..0cc40b1bb2
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecMulticlusteringressResult.cs
@@ -0,0 +1,27 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureSpecMulticlusteringressResult
+ {
+ ///
+ /// Fully-qualified Membership name which hosts the MultiClusterIngress CRD. Example: 'projects/foo-proj/locations/global/memberships/bar'
+ ///
+ public readonly string ConfigMembership;
+
+ [OutputConstructor]
+ private GetFeatureSpecMulticlusteringressResult(string configMembership)
+ {
+ ConfigMembership = configMembership;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecResult.cs
new file mode 100644
index 0000000000..fdc592fc99
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureSpecResult.cs
@@ -0,0 +1,42 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureSpecResult
+ {
+ ///
+ /// Clusterupgrade feature spec.
+ ///
+ public readonly ImmutableArray Clusterupgrades;
+ ///
+ /// Fleet Observability feature spec.
+ ///
+ public readonly ImmutableArray Fleetobservabilities;
+ ///
+ /// Multicluster Ingress-specific spec.
+ ///
+ public readonly ImmutableArray Multiclusteringresses;
+
+ [OutputConstructor]
+ private GetFeatureSpecResult(
+ ImmutableArray clusterupgrades,
+
+ ImmutableArray fleetobservabilities,
+
+ ImmutableArray multiclusteringresses)
+ {
+ Clusterupgrades = clusterupgrades;
+ Fleetobservabilities = fleetobservabilities;
+ Multiclusteringresses = multiclusteringresses;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureStateResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureStateResult.cs
new file mode 100644
index 0000000000..78f4bcc757
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureStateResult.cs
@@ -0,0 +1,27 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureStateResult
+ {
+ ///
+ /// Output only. The "running state" of the Feature in this Hub.
+ ///
+ public readonly ImmutableArray States;
+
+ [OutputConstructor]
+ private GetFeatureStateResult(ImmutableArray states)
+ {
+ States = states;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeHub/Outputs/GetFeatureStateStateResult.cs b/sdk/dotnet/GkeHub/Outputs/GetFeatureStateStateResult.cs
new file mode 100644
index 0000000000..a741bdc1d1
--- /dev/null
+++ b/sdk/dotnet/GkeHub/Outputs/GetFeatureStateStateResult.cs
@@ -0,0 +1,42 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeHub.Outputs
+{
+
+ [OutputType]
+ public sealed class GetFeatureStateStateResult
+ {
+ ///
+ /// The high-level, machine-readable status of this Feature.
+ ///
+ public readonly string Code;
+ ///
+ /// A human-readable description of the current status.
+ ///
+ public readonly string Description;
+ ///
+ /// The time this status and any related Feature-specific details were updated. A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z"
+ ///
+ public readonly string UpdateTime;
+
+ [OutputConstructor]
+ private GetFeatureStateStateResult(
+ string code,
+
+ string description,
+
+ string updateTime)
+ {
+ Code = code;
+ Description = description;
+ UpdateTime = updateTime;
+ }
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAddonNodeArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAddonNodeArgs.cs
new file mode 100644
index 0000000000..343102102e
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAddonNodeArgs.cs
@@ -0,0 +1,27 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterAddonNodeArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Specifies auto resize config.
+ /// Structure is documented below.
+ ///
+ [Input("autoResizeConfig")]
+ public Input? AutoResizeConfig { get; set; }
+
+ public VmwareAdminClusterAddonNodeArgs()
+ {
+ }
+ public static new VmwareAdminClusterAddonNodeArgs Empty => new VmwareAdminClusterAddonNodeArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAddonNodeAutoResizeConfigArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAddonNodeAutoResizeConfigArgs.cs
new file mode 100644
index 0000000000..b6f305c559
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAddonNodeAutoResizeConfigArgs.cs
@@ -0,0 +1,26 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterAddonNodeAutoResizeConfigArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Whether to enable controle plane node auto resizing.
+ ///
+ [Input("enabled", required: true)]
+ public Input Enabled { get; set; } = null!;
+
+ public VmwareAdminClusterAddonNodeAutoResizeConfigArgs()
+ {
+ }
+ public static new VmwareAdminClusterAddonNodeAutoResizeConfigArgs Empty => new VmwareAdminClusterAddonNodeAutoResizeConfigArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAddonNodeAutoResizeConfigGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAddonNodeAutoResizeConfigGetArgs.cs
new file mode 100644
index 0000000000..b2a3e42689
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAddonNodeAutoResizeConfigGetArgs.cs
@@ -0,0 +1,26 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterAddonNodeAutoResizeConfigGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Whether to enable controle plane node auto resizing.
+ ///
+ [Input("enabled", required: true)]
+ public Input Enabled { get; set; } = null!;
+
+ public VmwareAdminClusterAddonNodeAutoResizeConfigGetArgs()
+ {
+ }
+ public static new VmwareAdminClusterAddonNodeAutoResizeConfigGetArgs Empty => new VmwareAdminClusterAddonNodeAutoResizeConfigGetArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAddonNodeGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAddonNodeGetArgs.cs
new file mode 100644
index 0000000000..07d9796a44
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAddonNodeGetArgs.cs
@@ -0,0 +1,27 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterAddonNodeGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Specifies auto resize config.
+ /// Structure is documented below.
+ ///
+ [Input("autoResizeConfig")]
+ public Input? AutoResizeConfig { get; set; }
+
+ public VmwareAdminClusterAddonNodeGetArgs()
+ {
+ }
+ public static new VmwareAdminClusterAddonNodeGetArgs Empty => new VmwareAdminClusterAddonNodeGetArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAntiAffinityGroupsArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAntiAffinityGroupsArgs.cs
new file mode 100644
index 0000000000..03b58838a4
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAntiAffinityGroupsArgs.cs
@@ -0,0 +1,28 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterAntiAffinityGroupsArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Spread nodes across at least three physical hosts (requires at least three
+ /// hosts).
+ /// Enabled by default.
+ ///
+ [Input("aagConfigDisabled", required: true)]
+ public Input AagConfigDisabled { get; set; } = null!;
+
+ public VmwareAdminClusterAntiAffinityGroupsArgs()
+ {
+ }
+ public static new VmwareAdminClusterAntiAffinityGroupsArgs Empty => new VmwareAdminClusterAntiAffinityGroupsArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAntiAffinityGroupsGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAntiAffinityGroupsGetArgs.cs
new file mode 100644
index 0000000000..e5b9423bb9
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAntiAffinityGroupsGetArgs.cs
@@ -0,0 +1,28 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterAntiAffinityGroupsGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Spread nodes across at least three physical hosts (requires at least three
+ /// hosts).
+ /// Enabled by default.
+ ///
+ [Input("aagConfigDisabled", required: true)]
+ public Input AagConfigDisabled { get; set; } = null!;
+
+ public VmwareAdminClusterAntiAffinityGroupsGetArgs()
+ {
+ }
+ public static new VmwareAdminClusterAntiAffinityGroupsGetArgs Empty => new VmwareAdminClusterAntiAffinityGroupsGetArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAuthorizationArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAuthorizationArgs.cs
new file mode 100644
index 0000000000..71abef62aa
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAuthorizationArgs.cs
@@ -0,0 +1,34 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterAuthorizationArgs : global::Pulumi.ResourceArgs
+ {
+ [Input("viewerUsers")]
+ private InputList? _viewerUsers;
+
+ ///
+ /// Users that will be granted the cluster-admin role on the cluster, providing
+ /// full access to the cluster.
+ /// Structure is documented below.
+ ///
+ public InputList ViewerUsers
+ {
+ get => _viewerUsers ?? (_viewerUsers = new InputList());
+ set => _viewerUsers = value;
+ }
+
+ public VmwareAdminClusterAuthorizationArgs()
+ {
+ }
+ public static new VmwareAdminClusterAuthorizationArgs Empty => new VmwareAdminClusterAuthorizationArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAuthorizationGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAuthorizationGetArgs.cs
new file mode 100644
index 0000000000..b2b15fcf1b
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAuthorizationGetArgs.cs
@@ -0,0 +1,34 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterAuthorizationGetArgs : global::Pulumi.ResourceArgs
+ {
+ [Input("viewerUsers")]
+ private InputList? _viewerUsers;
+
+ ///
+ /// Users that will be granted the cluster-admin role on the cluster, providing
+ /// full access to the cluster.
+ /// Structure is documented below.
+ ///
+ public InputList ViewerUsers
+ {
+ get => _viewerUsers ?? (_viewerUsers = new InputList());
+ set => _viewerUsers = value;
+ }
+
+ public VmwareAdminClusterAuthorizationGetArgs()
+ {
+ }
+ public static new VmwareAdminClusterAuthorizationGetArgs Empty => new VmwareAdminClusterAuthorizationGetArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAuthorizationViewerUserArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAuthorizationViewerUserArgs.cs
new file mode 100644
index 0000000000..9004e255d4
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAuthorizationViewerUserArgs.cs
@@ -0,0 +1,26 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterAuthorizationViewerUserArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The name of the user, e.g. `my-gcp-id@gmail.com`.
+ ///
+ [Input("username", required: true)]
+ public Input Username { get; set; } = null!;
+
+ public VmwareAdminClusterAuthorizationViewerUserArgs()
+ {
+ }
+ public static new VmwareAdminClusterAuthorizationViewerUserArgs Empty => new VmwareAdminClusterAuthorizationViewerUserArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAuthorizationViewerUserGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAuthorizationViewerUserGetArgs.cs
new file mode 100644
index 0000000000..1965d7f06f
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAuthorizationViewerUserGetArgs.cs
@@ -0,0 +1,26 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterAuthorizationViewerUserGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The name of the user, e.g. `my-gcp-id@gmail.com`.
+ ///
+ [Input("username", required: true)]
+ public Input Username { get; set; } = null!;
+
+ public VmwareAdminClusterAuthorizationViewerUserGetArgs()
+ {
+ }
+ public static new VmwareAdminClusterAuthorizationViewerUserGetArgs Empty => new VmwareAdminClusterAuthorizationViewerUserGetArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAutoRepairConfigArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAutoRepairConfigArgs.cs
new file mode 100644
index 0000000000..1c05dece3d
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAutoRepairConfigArgs.cs
@@ -0,0 +1,26 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterAutoRepairConfigArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Whether auto repair is enabled.
+ ///
+ [Input("enabled", required: true)]
+ public Input Enabled { get; set; } = null!;
+
+ public VmwareAdminClusterAutoRepairConfigArgs()
+ {
+ }
+ public static new VmwareAdminClusterAutoRepairConfigArgs Empty => new VmwareAdminClusterAutoRepairConfigArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAutoRepairConfigGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAutoRepairConfigGetArgs.cs
new file mode 100644
index 0000000000..f304863c2d
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterAutoRepairConfigGetArgs.cs
@@ -0,0 +1,26 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterAutoRepairConfigGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Whether auto repair is enabled.
+ ///
+ [Input("enabled", required: true)]
+ public Input Enabled { get; set; } = null!;
+
+ public VmwareAdminClusterAutoRepairConfigGetArgs()
+ {
+ }
+ public static new VmwareAdminClusterAutoRepairConfigGetArgs Empty => new VmwareAdminClusterAutoRepairConfigGetArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterControlPlaneNodeArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterControlPlaneNodeArgs.cs
new file mode 100644
index 0000000000..45ee5ea7a2
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterControlPlaneNodeArgs.cs
@@ -0,0 +1,38 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterControlPlaneNodeArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The number of vCPUs for the control-plane node of the admin cluster.
+ ///
+ [Input("cpus")]
+ public Input? Cpus { get; set; }
+
+ ///
+ /// The number of mebibytes of memory for the control-plane node of the admin cluster.
+ ///
+ [Input("memory")]
+ public Input? Memory { get; set; }
+
+ ///
+ /// The number of control plane nodes for this VMware admin cluster.
+ ///
+ [Input("replicas")]
+ public Input? Replicas { get; set; }
+
+ public VmwareAdminClusterControlPlaneNodeArgs()
+ {
+ }
+ public static new VmwareAdminClusterControlPlaneNodeArgs Empty => new VmwareAdminClusterControlPlaneNodeArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterControlPlaneNodeGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterControlPlaneNodeGetArgs.cs
new file mode 100644
index 0000000000..7e7fd393a1
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterControlPlaneNodeGetArgs.cs
@@ -0,0 +1,38 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterControlPlaneNodeGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The number of vCPUs for the control-plane node of the admin cluster.
+ ///
+ [Input("cpus")]
+ public Input? Cpus { get; set; }
+
+ ///
+ /// The number of mebibytes of memory for the control-plane node of the admin cluster.
+ ///
+ [Input("memory")]
+ public Input? Memory { get; set; }
+
+ ///
+ /// The number of control plane nodes for this VMware admin cluster.
+ ///
+ [Input("replicas")]
+ public Input? Replicas { get; set; }
+
+ public VmwareAdminClusterControlPlaneNodeGetArgs()
+ {
+ }
+ public static new VmwareAdminClusterControlPlaneNodeGetArgs Empty => new VmwareAdminClusterControlPlaneNodeGetArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterFleetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterFleetArgs.cs
new file mode 100644
index 0000000000..865a5d4472
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterFleetArgs.cs
@@ -0,0 +1,29 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterFleetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// (Output)
+ /// The name of the managed Fleet Membership resource associated to this cluster.
+ /// Membership names are formatted as
+ /// `projects/<project-number>/locations/<location>/memberships/<cluster-id>`.
+ ///
+ [Input("membership")]
+ public Input? Membership { get; set; }
+
+ public VmwareAdminClusterFleetArgs()
+ {
+ }
+ public static new VmwareAdminClusterFleetArgs Empty => new VmwareAdminClusterFleetArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterFleetGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterFleetGetArgs.cs
new file mode 100644
index 0000000000..24b7087ece
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterFleetGetArgs.cs
@@ -0,0 +1,29 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterFleetGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// (Output)
+ /// The name of the managed Fleet Membership resource associated to this cluster.
+ /// Membership names are formatted as
+ /// `projects/<project-number>/locations/<location>/memberships/<cluster-id>`.
+ ///
+ [Input("membership")]
+ public Input? Membership { get; set; }
+
+ public VmwareAdminClusterFleetGetArgs()
+ {
+ }
+ public static new VmwareAdminClusterFleetGetArgs Empty => new VmwareAdminClusterFleetGetArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerArgs.cs
new file mode 100644
index 0000000000..a458289a35
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerArgs.cs
@@ -0,0 +1,48 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterLoadBalancerArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Configuration for F5 Big IP typed load balancers.
+ /// Structure is documented below.
+ ///
+ [Input("f5Config")]
+ public Input? F5Config { get; set; }
+
+ ///
+ /// Manually configured load balancers.
+ /// Structure is documented below.
+ ///
+ [Input("manualLbConfig")]
+ public Input? ManualLbConfig { get; set; }
+
+ ///
+ /// Metal LB load balancers.
+ /// Structure is documented below.
+ ///
+ [Input("metalLbConfig")]
+ public Input? MetalLbConfig { get; set; }
+
+ ///
+ /// Specified the VMware Load Balancer Config
+ /// Structure is documented below.
+ ///
+ [Input("vipConfig", required: true)]
+ public Input VipConfig { get; set; } = null!;
+
+ public VmwareAdminClusterLoadBalancerArgs()
+ {
+ }
+ public static new VmwareAdminClusterLoadBalancerArgs Empty => new VmwareAdminClusterLoadBalancerArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerF5ConfigArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerF5ConfigArgs.cs
new file mode 100644
index 0000000000..8ab55042b2
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerF5ConfigArgs.cs
@@ -0,0 +1,40 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterLoadBalancerF5ConfigArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The load balancer's IP address.
+ ///
+ [Input("address")]
+ public Input? Address { get; set; }
+
+ ///
+ /// he preexisting partition to be used by the load balancer. T
+ /// his partition is usually created for the admin cluster for example:
+ /// 'my-f5-admin-partition'.
+ ///
+ [Input("partition")]
+ public Input? Partition { get; set; }
+
+ ///
+ /// The pool name. Only necessary, if using SNAT.
+ ///
+ [Input("snatPool")]
+ public Input? SnatPool { get; set; }
+
+ public VmwareAdminClusterLoadBalancerF5ConfigArgs()
+ {
+ }
+ public static new VmwareAdminClusterLoadBalancerF5ConfigArgs Empty => new VmwareAdminClusterLoadBalancerF5ConfigArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerF5ConfigGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerF5ConfigGetArgs.cs
new file mode 100644
index 0000000000..19be480d29
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerF5ConfigGetArgs.cs
@@ -0,0 +1,40 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterLoadBalancerF5ConfigGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The load balancer's IP address.
+ ///
+ [Input("address")]
+ public Input? Address { get; set; }
+
+ ///
+ /// he preexisting partition to be used by the load balancer. T
+ /// his partition is usually created for the admin cluster for example:
+ /// 'my-f5-admin-partition'.
+ ///
+ [Input("partition")]
+ public Input? Partition { get; set; }
+
+ ///
+ /// The pool name. Only necessary, if using SNAT.
+ ///
+ [Input("snatPool")]
+ public Input? SnatPool { get; set; }
+
+ public VmwareAdminClusterLoadBalancerF5ConfigGetArgs()
+ {
+ }
+ public static new VmwareAdminClusterLoadBalancerF5ConfigGetArgs Empty => new VmwareAdminClusterLoadBalancerF5ConfigGetArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerGetArgs.cs
new file mode 100644
index 0000000000..16f24e8eef
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerGetArgs.cs
@@ -0,0 +1,48 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterLoadBalancerGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Configuration for F5 Big IP typed load balancers.
+ /// Structure is documented below.
+ ///
+ [Input("f5Config")]
+ public Input? F5Config { get; set; }
+
+ ///
+ /// Manually configured load balancers.
+ /// Structure is documented below.
+ ///
+ [Input("manualLbConfig")]
+ public Input? ManualLbConfig { get; set; }
+
+ ///
+ /// Metal LB load balancers.
+ /// Structure is documented below.
+ ///
+ [Input("metalLbConfig")]
+ public Input? MetalLbConfig { get; set; }
+
+ ///
+ /// Specified the VMware Load Balancer Config
+ /// Structure is documented below.
+ ///
+ [Input("vipConfig", required: true)]
+ public Input VipConfig { get; set; } = null!;
+
+ public VmwareAdminClusterLoadBalancerGetArgs()
+ {
+ }
+ public static new VmwareAdminClusterLoadBalancerGetArgs Empty => new VmwareAdminClusterLoadBalancerGetArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerManualLbConfigArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerManualLbConfigArgs.cs
new file mode 100644
index 0000000000..97b27960c8
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerManualLbConfigArgs.cs
@@ -0,0 +1,54 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterLoadBalancerManualLbConfigArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// NodePort for add-ons server in the admin cluster.
+ ///
+ [Input("addonsNodePort")]
+ public Input? AddonsNodePort { get; set; }
+
+ ///
+ /// NodePort for control plane service. The Kubernetes API server in the admin
+ /// cluster is implemented as a Service of type NodePort (ex. 30968).
+ ///
+ [Input("controlPlaneNodePort")]
+ public Input? ControlPlaneNodePort { get; set; }
+
+ ///
+ /// NodePort for ingress service's http. The ingress service in the admin
+ /// cluster is implemented as a Service of type NodePort (ex. 32527).
+ ///
+ [Input("ingressHttpNodePort")]
+ public Input? IngressHttpNodePort { get; set; }
+
+ ///
+ /// NodePort for ingress service's https. The ingress service in the admin
+ /// cluster is implemented as a Service of type NodePort (ex. 30139).
+ ///
+ [Input("ingressHttpsNodePort")]
+ public Input? IngressHttpsNodePort { get; set; }
+
+ ///
+ /// NodePort for konnectivity server service running as a sidecar in each
+ /// kube-apiserver pod (ex. 30564).
+ ///
+ [Input("konnectivityServerNodePort")]
+ public Input? KonnectivityServerNodePort { get; set; }
+
+ public VmwareAdminClusterLoadBalancerManualLbConfigArgs()
+ {
+ }
+ public static new VmwareAdminClusterLoadBalancerManualLbConfigArgs Empty => new VmwareAdminClusterLoadBalancerManualLbConfigArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerManualLbConfigGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerManualLbConfigGetArgs.cs
new file mode 100644
index 0000000000..09a5167c48
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerManualLbConfigGetArgs.cs
@@ -0,0 +1,54 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterLoadBalancerManualLbConfigGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// NodePort for add-ons server in the admin cluster.
+ ///
+ [Input("addonsNodePort")]
+ public Input? AddonsNodePort { get; set; }
+
+ ///
+ /// NodePort for control plane service. The Kubernetes API server in the admin
+ /// cluster is implemented as a Service of type NodePort (ex. 30968).
+ ///
+ [Input("controlPlaneNodePort")]
+ public Input? ControlPlaneNodePort { get; set; }
+
+ ///
+ /// NodePort for ingress service's http. The ingress service in the admin
+ /// cluster is implemented as a Service of type NodePort (ex. 32527).
+ ///
+ [Input("ingressHttpNodePort")]
+ public Input? IngressHttpNodePort { get; set; }
+
+ ///
+ /// NodePort for ingress service's https. The ingress service in the admin
+ /// cluster is implemented as a Service of type NodePort (ex. 30139).
+ ///
+ [Input("ingressHttpsNodePort")]
+ public Input? IngressHttpsNodePort { get; set; }
+
+ ///
+ /// NodePort for konnectivity server service running as a sidecar in each
+ /// kube-apiserver pod (ex. 30564).
+ ///
+ [Input("konnectivityServerNodePort")]
+ public Input? KonnectivityServerNodePort { get; set; }
+
+ public VmwareAdminClusterLoadBalancerManualLbConfigGetArgs()
+ {
+ }
+ public static new VmwareAdminClusterLoadBalancerManualLbConfigGetArgs Empty => new VmwareAdminClusterLoadBalancerManualLbConfigGetArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerMetalLbConfigArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerMetalLbConfigArgs.cs
new file mode 100644
index 0000000000..d9ca3de380
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerMetalLbConfigArgs.cs
@@ -0,0 +1,26 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterLoadBalancerMetalLbConfigArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Metal LB is enabled.
+ ///
+ [Input("enabled")]
+ public Input? Enabled { get; set; }
+
+ public VmwareAdminClusterLoadBalancerMetalLbConfigArgs()
+ {
+ }
+ public static new VmwareAdminClusterLoadBalancerMetalLbConfigArgs Empty => new VmwareAdminClusterLoadBalancerMetalLbConfigArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerMetalLbConfigGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerMetalLbConfigGetArgs.cs
new file mode 100644
index 0000000000..7d37c3ffdb
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerMetalLbConfigGetArgs.cs
@@ -0,0 +1,26 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterLoadBalancerMetalLbConfigGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Metal LB is enabled.
+ ///
+ [Input("enabled")]
+ public Input? Enabled { get; set; }
+
+ public VmwareAdminClusterLoadBalancerMetalLbConfigGetArgs()
+ {
+ }
+ public static new VmwareAdminClusterLoadBalancerMetalLbConfigGetArgs Empty => new VmwareAdminClusterLoadBalancerMetalLbConfigGetArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerVipConfigArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerVipConfigArgs.cs
new file mode 100644
index 0000000000..719baba648
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerVipConfigArgs.cs
@@ -0,0 +1,35 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterLoadBalancerVipConfigArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The VIP to configure the load balancer for add-ons.
+ ///
+ /// <a name="nested_f5_config"></a>The `f5_config` block supports:
+ ///
+ [Input("addonsVip")]
+ public Input? AddonsVip { get; set; }
+
+ ///
+ /// The VIP which you previously set aside for the Kubernetes
+ /// API of this VMware Admin Cluster.
+ ///
+ [Input("controlPlaneVip", required: true)]
+ public Input ControlPlaneVip { get; set; } = null!;
+
+ public VmwareAdminClusterLoadBalancerVipConfigArgs()
+ {
+ }
+ public static new VmwareAdminClusterLoadBalancerVipConfigArgs Empty => new VmwareAdminClusterLoadBalancerVipConfigArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerVipConfigGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerVipConfigGetArgs.cs
new file mode 100644
index 0000000000..49d5a8e170
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerVipConfigGetArgs.cs
@@ -0,0 +1,35 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterLoadBalancerVipConfigGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The VIP to configure the load balancer for add-ons.
+ ///
+ /// <a name="nested_f5_config"></a>The `f5_config` block supports:
+ ///
+ [Input("addonsVip")]
+ public Input? AddonsVip { get; set; }
+
+ ///
+ /// The VIP which you previously set aside for the Kubernetes
+ /// API of this VMware Admin Cluster.
+ ///
+ [Input("controlPlaneVip", required: true)]
+ public Input ControlPlaneVip { get; set; } = null!;
+
+ public VmwareAdminClusterLoadBalancerVipConfigGetArgs()
+ {
+ }
+ public static new VmwareAdminClusterLoadBalancerVipConfigGetArgs Empty => new VmwareAdminClusterLoadBalancerVipConfigGetArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigArgs.cs
new file mode 100644
index 0000000000..b3bd3e08bc
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigArgs.cs
@@ -0,0 +1,81 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterNetworkConfigArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Configuration settings for a DHCP IP configuration.
+ /// Structure is documented below.
+ ///
+ [Input("dhcpIpConfig")]
+ public Input? DhcpIpConfig { get; set; }
+
+ ///
+ /// Configuration for HA admin cluster control plane.
+ /// Structure is documented below.
+ ///
+ [Input("haControlPlaneConfig")]
+ public Input? HaControlPlaneConfig { get; set; }
+
+ ///
+ /// Represents common network settings irrespective of the host's IP address.
+ /// Structure is documented below.
+ ///
+ [Input("hostConfig")]
+ public Input? HostConfig { get; set; }
+
+ [Input("podAddressCidrBlocks", required: true)]
+ private InputList? _podAddressCidrBlocks;
+
+ ///
+ /// All pods in the cluster are assigned an RFC1918 IPv4 address from these ranges.
+ /// Only a single range is supported. This field cannot be changed after creation.
+ ///
+ public InputList PodAddressCidrBlocks
+ {
+ get => _podAddressCidrBlocks ?? (_podAddressCidrBlocks = new InputList());
+ set => _podAddressCidrBlocks = value;
+ }
+
+ [Input("serviceAddressCidrBlocks", required: true)]
+ private InputList? _serviceAddressCidrBlocks;
+
+ ///
+ /// All services in the cluster are assigned an RFC1918 IPv4 address
+ /// from these ranges. Only a single range is supported.. This field
+ /// cannot be changed after creation.
+ ///
+ public InputList ServiceAddressCidrBlocks
+ {
+ get => _serviceAddressCidrBlocks ?? (_serviceAddressCidrBlocks = new InputList());
+ set => _serviceAddressCidrBlocks = value;
+ }
+
+ ///
+ /// Configuration settings for a static IP configuration.
+ /// Structure is documented below.
+ ///
+ [Input("staticIpConfig")]
+ public Input? StaticIpConfig { get; set; }
+
+ ///
+ /// vcenter_network specifies vCenter network name.
+ ///
+ [Input("vcenterNetwork")]
+ public Input? VcenterNetwork { get; set; }
+
+ public VmwareAdminClusterNetworkConfigArgs()
+ {
+ }
+ public static new VmwareAdminClusterNetworkConfigArgs Empty => new VmwareAdminClusterNetworkConfigArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigDhcpIpConfigArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigDhcpIpConfigArgs.cs
new file mode 100644
index 0000000000..59d53bf598
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigDhcpIpConfigArgs.cs
@@ -0,0 +1,27 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterNetworkConfigDhcpIpConfigArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// enabled is a flag to mark if DHCP IP allocation is
+ /// used for VMware admin clusters.
+ ///
+ [Input("enabled", required: true)]
+ public Input Enabled { get; set; } = null!;
+
+ public VmwareAdminClusterNetworkConfigDhcpIpConfigArgs()
+ {
+ }
+ public static new VmwareAdminClusterNetworkConfigDhcpIpConfigArgs Empty => new VmwareAdminClusterNetworkConfigDhcpIpConfigArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigDhcpIpConfigGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigDhcpIpConfigGetArgs.cs
new file mode 100644
index 0000000000..496696dc38
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigDhcpIpConfigGetArgs.cs
@@ -0,0 +1,27 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterNetworkConfigDhcpIpConfigGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// enabled is a flag to mark if DHCP IP allocation is
+ /// used for VMware admin clusters.
+ ///
+ [Input("enabled", required: true)]
+ public Input Enabled { get; set; } = null!;
+
+ public VmwareAdminClusterNetworkConfigDhcpIpConfigGetArgs()
+ {
+ }
+ public static new VmwareAdminClusterNetworkConfigDhcpIpConfigGetArgs Empty => new VmwareAdminClusterNetworkConfigDhcpIpConfigGetArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigGetArgs.cs
new file mode 100644
index 0000000000..f59a2566e6
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigGetArgs.cs
@@ -0,0 +1,81 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterNetworkConfigGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Configuration settings for a DHCP IP configuration.
+ /// Structure is documented below.
+ ///
+ [Input("dhcpIpConfig")]
+ public Input? DhcpIpConfig { get; set; }
+
+ ///
+ /// Configuration for HA admin cluster control plane.
+ /// Structure is documented below.
+ ///
+ [Input("haControlPlaneConfig")]
+ public Input? HaControlPlaneConfig { get; set; }
+
+ ///
+ /// Represents common network settings irrespective of the host's IP address.
+ /// Structure is documented below.
+ ///
+ [Input("hostConfig")]
+ public Input? HostConfig { get; set; }
+
+ [Input("podAddressCidrBlocks", required: true)]
+ private InputList? _podAddressCidrBlocks;
+
+ ///
+ /// All pods in the cluster are assigned an RFC1918 IPv4 address from these ranges.
+ /// Only a single range is supported. This field cannot be changed after creation.
+ ///
+ public InputList PodAddressCidrBlocks
+ {
+ get => _podAddressCidrBlocks ?? (_podAddressCidrBlocks = new InputList());
+ set => _podAddressCidrBlocks = value;
+ }
+
+ [Input("serviceAddressCidrBlocks", required: true)]
+ private InputList? _serviceAddressCidrBlocks;
+
+ ///
+ /// All services in the cluster are assigned an RFC1918 IPv4 address
+ /// from these ranges. Only a single range is supported.. This field
+ /// cannot be changed after creation.
+ ///
+ public InputList ServiceAddressCidrBlocks
+ {
+ get => _serviceAddressCidrBlocks ?? (_serviceAddressCidrBlocks = new InputList());
+ set => _serviceAddressCidrBlocks = value;
+ }
+
+ ///
+ /// Configuration settings for a static IP configuration.
+ /// Structure is documented below.
+ ///
+ [Input("staticIpConfig")]
+ public Input? StaticIpConfig { get; set; }
+
+ ///
+ /// vcenter_network specifies vCenter network name.
+ ///
+ [Input("vcenterNetwork")]
+ public Input? VcenterNetwork { get; set; }
+
+ public VmwareAdminClusterNetworkConfigGetArgs()
+ {
+ }
+ public static new VmwareAdminClusterNetworkConfigGetArgs Empty => new VmwareAdminClusterNetworkConfigGetArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs.cs
new file mode 100644
index 0000000000..4b126dfe98
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs.cs
@@ -0,0 +1,27 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Static IP addresses for the control plane nodes.
+ /// Structure is documented below.
+ ///
+ [Input("controlPlaneIpBlock")]
+ public Input? ControlPlaneIpBlock { get; set; }
+
+ public VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs()
+ {
+ }
+ public static new VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs Empty => new VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs.cs
new file mode 100644
index 0000000000..e9ddb80a52
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs.cs
@@ -0,0 +1,45 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The network gateway used by the VMware Admin Cluster.
+ ///
+ [Input("gateway", required: true)]
+ public Input Gateway { get; set; } = null!;
+
+ [Input("ips", required: true)]
+ private InputList? _ips;
+
+ ///
+ /// The node's network configurations used by the VMware Admin Cluster.
+ /// Structure is documented below.
+ ///
+ public InputList Ips
+ {
+ get => _ips ?? (_ips = new InputList());
+ set => _ips = value;
+ }
+
+ ///
+ /// The netmask used by the VMware Admin Cluster.
+ ///
+ [Input("netmask", required: true)]
+ public Input Netmask { get; set; } = null!;
+
+ public VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs()
+ {
+ }
+ public static new VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs Empty => new VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockGetArgs.cs
new file mode 100644
index 0000000000..e7ed7816d4
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockGetArgs.cs
@@ -0,0 +1,45 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The network gateway used by the VMware Admin Cluster.
+ ///
+ [Input("gateway", required: true)]
+ public Input Gateway { get; set; } = null!;
+
+ [Input("ips", required: true)]
+ private InputList? _ips;
+
+ ///
+ /// The node's network configurations used by the VMware Admin Cluster.
+ /// Structure is documented below.
+ ///
+ public InputList Ips
+ {
+ get => _ips ?? (_ips = new InputList());
+ set => _ips = value;
+ }
+
+ ///
+ /// The netmask used by the VMware Admin Cluster.
+ ///
+ [Input("netmask", required: true)]
+ public Input Netmask { get; set; } = null!;
+
+ public VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockGetArgs()
+ {
+ }
+ public static new VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockGetArgs Empty => new VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockGetArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs.cs
new file mode 100644
index 0000000000..9990294a4e
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs.cs
@@ -0,0 +1,34 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Hostname of the machine. VM's name will be used if this field is empty.
+ ///
+ /// - - -
+ ///
+ [Input("hostname")]
+ public Input? Hostname { get; set; }
+
+ ///
+ /// IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24).
+ ///
+ [Input("ip", required: true)]
+ public Input Ip { get; set; } = null!;
+
+ public VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs()
+ {
+ }
+ public static new VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs Empty => new VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpGetArgs.cs
new file mode 100644
index 0000000000..bc8dc0d1b6
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpGetArgs.cs
@@ -0,0 +1,34 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Hostname of the machine. VM's name will be used if this field is empty.
+ ///
+ /// - - -
+ ///
+ [Input("hostname")]
+ public Input? Hostname { get; set; }
+
+ ///
+ /// IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24).
+ ///
+ [Input("ip", required: true)]
+ public Input Ip { get; set; } = null!;
+
+ public VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpGetArgs()
+ {
+ }
+ public static new VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpGetArgs Empty => new VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpGetArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigGetArgs.cs
new file mode 100644
index 0000000000..70da37dd8d
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigGetArgs.cs
@@ -0,0 +1,27 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterNetworkConfigHaControlPlaneConfigGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Static IP addresses for the control plane nodes.
+ /// Structure is documented below.
+ ///
+ [Input("controlPlaneIpBlock")]
+ public Input? ControlPlaneIpBlock { get; set; }
+
+ public VmwareAdminClusterNetworkConfigHaControlPlaneConfigGetArgs()
+ {
+ }
+ public static new VmwareAdminClusterNetworkConfigHaControlPlaneConfigGetArgs Empty => new VmwareAdminClusterNetworkConfigHaControlPlaneConfigGetArgs();
+ }
+}
diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigHostConfigArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigHostConfigArgs.cs
new file mode 100644
index 0000000000..819a4adbce
--- /dev/null
+++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigHostConfigArgs.cs
@@ -0,0 +1,56 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Gcp.GkeOnPrem.Inputs
+{
+
+ public sealed class VmwareAdminClusterNetworkConfigHostConfigArgs : global::Pulumi.ResourceArgs
+ {
+ [Input("dnsSearchDomains")]
+ private InputList? _dnsSearchDomains;
+
+ ///
+ /// DNS search domains.
+ ///
+ public InputList DnsSearchDomains
+ {
+ get => _dnsSearchDomains ?? (_dnsSearchDomains = new InputList());
+ set => _dnsSearchDomains = value;
+ }
+
+ [Input("dnsServers")]
+ private InputList? _dnsServers;
+
+ ///
+ /// DNS servers.
+ ///
+ public InputList DnsServers
+ {
+ get => _dnsServers ?? (_dnsServers = new InputList());
+ set => _dnsServers = value;
+ }
+
+ [Input("ntpServers")]
+ private InputList