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? _ntpServers; + + /// + /// NTP servers. + /// + public InputList NtpServers + { + get => _ntpServers ?? (_ntpServers = new InputList()); + set => _ntpServers = value; + } + + public VmwareAdminClusterNetworkConfigHostConfigArgs() + { + } + public static new VmwareAdminClusterNetworkConfigHostConfigArgs Empty => new VmwareAdminClusterNetworkConfigHostConfigArgs(); + } +} diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigHostConfigGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigHostConfigGetArgs.cs new file mode 100644 index 0000000000..6fa6550b89 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigHostConfigGetArgs.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 VmwareAdminClusterNetworkConfigHostConfigGetArgs : 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? _ntpServers; + + /// + /// NTP servers. + /// + public InputList NtpServers + { + get => _ntpServers ?? (_ntpServers = new InputList()); + set => _ntpServers = value; + } + + public VmwareAdminClusterNetworkConfigHostConfigGetArgs() + { + } + public static new VmwareAdminClusterNetworkConfigHostConfigGetArgs Empty => new VmwareAdminClusterNetworkConfigHostConfigGetArgs(); + } +} diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigStaticIpConfigArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigStaticIpConfigArgs.cs new file mode 100644 index 0000000000..6f315f4a16 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigStaticIpConfigArgs.cs @@ -0,0 +1,33 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.GkeOnPrem.Inputs +{ + + public sealed class VmwareAdminClusterNetworkConfigStaticIpConfigArgs : global::Pulumi.ResourceArgs + { + [Input("ipBlocks")] + private InputList? _ipBlocks; + + /// + /// Represents the configuration values for static IP allocation to nodes. + /// Structure is documented below. + /// + public InputList IpBlocks + { + get => _ipBlocks ?? (_ipBlocks = new InputList()); + set => _ipBlocks = value; + } + + public VmwareAdminClusterNetworkConfigStaticIpConfigArgs() + { + } + public static new VmwareAdminClusterNetworkConfigStaticIpConfigArgs Empty => new VmwareAdminClusterNetworkConfigStaticIpConfigArgs(); + } +} diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigStaticIpConfigGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigStaticIpConfigGetArgs.cs new file mode 100644 index 0000000000..2071a1c22a --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigStaticIpConfigGetArgs.cs @@ -0,0 +1,33 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.GkeOnPrem.Inputs +{ + + public sealed class VmwareAdminClusterNetworkConfigStaticIpConfigGetArgs : global::Pulumi.ResourceArgs + { + [Input("ipBlocks")] + private InputList? _ipBlocks; + + /// + /// Represents the configuration values for static IP allocation to nodes. + /// Structure is documented below. + /// + public InputList IpBlocks + { + get => _ipBlocks ?? (_ipBlocks = new InputList()); + set => _ipBlocks = value; + } + + public VmwareAdminClusterNetworkConfigStaticIpConfigGetArgs() + { + } + public static new VmwareAdminClusterNetworkConfigStaticIpConfigGetArgs Empty => new VmwareAdminClusterNetworkConfigStaticIpConfigGetArgs(); + } +} diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs.cs new file mode 100644 index 0000000000..19bef38b24 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs.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 VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs : 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 VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs() + { + } + public static new VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs Empty => new VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs(); + } +} diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockGetArgs.cs new file mode 100644 index 0000000000..96d062e897 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockGetArgs.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 VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockGetArgs : 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 VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockGetArgs() + { + } + public static new VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockGetArgs Empty => new VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockGetArgs(); + } +} diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs.cs new file mode 100644 index 0000000000..f1b5d2c712 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs.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 VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs : 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 VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs() + { + } + public static new VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs Empty => new VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs(); + } +} diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpGetArgs.cs new file mode 100644 index 0000000000..c12c84573c --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpGetArgs.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 VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpGetArgs : 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 VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpGetArgs() + { + } + public static new VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpGetArgs Empty => new VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpGetArgs(); + } +} diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigArgs.cs new file mode 100644 index 0000000000..c3125c6da3 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigArgs.cs @@ -0,0 +1,68 @@ +// *** 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 VmwareAdminClusterPlatformConfigArgs : global::Pulumi.ResourceArgs + { + [Input("bundles")] + private InputList? _bundles; + + /// + /// (Output) + /// The list of bundles installed in the admin cluster. + /// Structure is documented below. + /// + public InputList Bundles + { + get => _bundles ?? (_bundles = new InputList()); + set => _bundles = value; + } + + /// + /// (Output) + /// The platform version e.g. 1.13.2. + /// + [Input("platformVersion")] + public Input? PlatformVersion { get; set; } + + /// + /// The required platform version e.g. 1.13.1. + /// If the current platform version is lower than the target version, + /// the platform version will be updated to the target version. + /// If the target version is not installed in the platform + /// (bundle versions), download the target version bundle. + /// + [Input("requiredPlatformVersion")] + public Input? RequiredPlatformVersion { get; set; } + + [Input("statuses")] + private InputList? _statuses; + + /// + /// (Output) + /// ResourceStatus representing detailed cluster state. + /// Structure is documented below. + /// + /// + /// <a name="nested_status"></a>The `status` block contains: + /// + public InputList Statuses + { + get => _statuses ?? (_statuses = new InputList()); + set => _statuses = value; + } + + public VmwareAdminClusterPlatformConfigArgs() + { + } + public static new VmwareAdminClusterPlatformConfigArgs Empty => new VmwareAdminClusterPlatformConfigArgs(); + } +} diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigBundleArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigBundleArgs.cs new file mode 100644 index 0000000000..4e04103410 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigBundleArgs.cs @@ -0,0 +1,39 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.GkeOnPrem.Inputs +{ + + public sealed class VmwareAdminClusterPlatformConfigBundleArgs : global::Pulumi.ResourceArgs + { + [Input("statuses")] + private InputList? _statuses; + + /// + /// ResourceStatus representing detailed cluster state. + /// Structure is documented below. + /// + public InputList Statuses + { + get => _statuses ?? (_statuses = new InputList()); + set => _statuses = value; + } + + /// + /// The version of the bundle. + /// + [Input("version")] + public Input? Version { get; set; } + + public VmwareAdminClusterPlatformConfigBundleArgs() + { + } + public static new VmwareAdminClusterPlatformConfigBundleArgs Empty => new VmwareAdminClusterPlatformConfigBundleArgs(); + } +} diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigBundleGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigBundleGetArgs.cs new file mode 100644 index 0000000000..4707f83f74 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigBundleGetArgs.cs @@ -0,0 +1,39 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.GkeOnPrem.Inputs +{ + + public sealed class VmwareAdminClusterPlatformConfigBundleGetArgs : global::Pulumi.ResourceArgs + { + [Input("statuses")] + private InputList? _statuses; + + /// + /// ResourceStatus representing detailed cluster state. + /// Structure is documented below. + /// + public InputList Statuses + { + get => _statuses ?? (_statuses = new InputList()); + set => _statuses = value; + } + + /// + /// The version of the bundle. + /// + [Input("version")] + public Input? Version { get; set; } + + public VmwareAdminClusterPlatformConfigBundleGetArgs() + { + } + public static new VmwareAdminClusterPlatformConfigBundleGetArgs Empty => new VmwareAdminClusterPlatformConfigBundleGetArgs(); + } +} diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigBundleStatusArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigBundleStatusArgs.cs new file mode 100644 index 0000000000..045624cdba --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigBundleStatusArgs.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 VmwareAdminClusterPlatformConfigBundleStatusArgs : global::Pulumi.ResourceArgs + { + [Input("conditions")] + private InputList? _conditions; + + /// + /// (Output) + /// ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + /// Structure is documented below. + /// + public InputList Conditions + { + get => _conditions ?? (_conditions = new InputList()); + set => _conditions = value; + } + + /// + /// (Output) + /// Human-friendly representation of the error message from the admin cluster + /// controller. The error message can be temporary as the admin cluster + /// controller creates a cluster or node pool. If the error message persists + /// for a longer period of time, it can be used to surface error message to + /// indicate real problems requiring user intervention. + /// + [Input("errorMessage")] + public Input? ErrorMessage { get; set; } + + public VmwareAdminClusterPlatformConfigBundleStatusArgs() + { + } + public static new VmwareAdminClusterPlatformConfigBundleStatusArgs Empty => new VmwareAdminClusterPlatformConfigBundleStatusArgs(); + } +} diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigBundleStatusConditionArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigBundleStatusConditionArgs.cs new file mode 100644 index 0000000000..3b6bd51ae5 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigBundleStatusConditionArgs.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 VmwareAdminClusterPlatformConfigBundleStatusConditionArgs : global::Pulumi.ResourceArgs + { + /// + /// (Output) + /// Last time the condition transit from one status to another. + /// + [Input("lastTransitionTime")] + public Input? LastTransitionTime { get; set; } + + /// + /// (Output) + /// Human-readable message indicating details about last transition. + /// + [Input("message")] + public Input? Message { get; set; } + + /// + /// (Output) + /// Machine-readable message indicating details about last transition. + /// + [Input("reason")] + public Input? Reason { get; set; } + + /// + /// (Output) + /// The lifecycle state of the condition. + /// + [Input("state")] + public Input? State { get; set; } + + /// + /// (Output) + /// Type of the condition. + /// (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + /// + [Input("type")] + public Input? Type { get; set; } + + public VmwareAdminClusterPlatformConfigBundleStatusConditionArgs() + { + } + public static new VmwareAdminClusterPlatformConfigBundleStatusConditionArgs Empty => new VmwareAdminClusterPlatformConfigBundleStatusConditionArgs(); + } +} diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigBundleStatusConditionGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigBundleStatusConditionGetArgs.cs new file mode 100644 index 0000000000..4625154591 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigBundleStatusConditionGetArgs.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 VmwareAdminClusterPlatformConfigBundleStatusConditionGetArgs : global::Pulumi.ResourceArgs + { + /// + /// (Output) + /// Last time the condition transit from one status to another. + /// + [Input("lastTransitionTime")] + public Input? LastTransitionTime { get; set; } + + /// + /// (Output) + /// Human-readable message indicating details about last transition. + /// + [Input("message")] + public Input? Message { get; set; } + + /// + /// (Output) + /// Machine-readable message indicating details about last transition. + /// + [Input("reason")] + public Input? Reason { get; set; } + + /// + /// (Output) + /// The lifecycle state of the condition. + /// + [Input("state")] + public Input? State { get; set; } + + /// + /// (Output) + /// Type of the condition. + /// (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + /// + [Input("type")] + public Input? Type { get; set; } + + public VmwareAdminClusterPlatformConfigBundleStatusConditionGetArgs() + { + } + public static new VmwareAdminClusterPlatformConfigBundleStatusConditionGetArgs Empty => new VmwareAdminClusterPlatformConfigBundleStatusConditionGetArgs(); + } +} diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigBundleStatusGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigBundleStatusGetArgs.cs new file mode 100644 index 0000000000..112550184e --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigBundleStatusGetArgs.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 VmwareAdminClusterPlatformConfigBundleStatusGetArgs : global::Pulumi.ResourceArgs + { + [Input("conditions")] + private InputList? _conditions; + + /// + /// (Output) + /// ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + /// Structure is documented below. + /// + public InputList Conditions + { + get => _conditions ?? (_conditions = new InputList()); + set => _conditions = value; + } + + /// + /// (Output) + /// Human-friendly representation of the error message from the admin cluster + /// controller. The error message can be temporary as the admin cluster + /// controller creates a cluster or node pool. If the error message persists + /// for a longer period of time, it can be used to surface error message to + /// indicate real problems requiring user intervention. + /// + [Input("errorMessage")] + public Input? ErrorMessage { get; set; } + + public VmwareAdminClusterPlatformConfigBundleStatusGetArgs() + { + } + public static new VmwareAdminClusterPlatformConfigBundleStatusGetArgs Empty => new VmwareAdminClusterPlatformConfigBundleStatusGetArgs(); + } +} diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigGetArgs.cs new file mode 100644 index 0000000000..d11f2e20ad --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigGetArgs.cs @@ -0,0 +1,68 @@ +// *** 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 VmwareAdminClusterPlatformConfigGetArgs : global::Pulumi.ResourceArgs + { + [Input("bundles")] + private InputList? _bundles; + + /// + /// (Output) + /// The list of bundles installed in the admin cluster. + /// Structure is documented below. + /// + public InputList Bundles + { + get => _bundles ?? (_bundles = new InputList()); + set => _bundles = value; + } + + /// + /// (Output) + /// The platform version e.g. 1.13.2. + /// + [Input("platformVersion")] + public Input? PlatformVersion { get; set; } + + /// + /// The required platform version e.g. 1.13.1. + /// If the current platform version is lower than the target version, + /// the platform version will be updated to the target version. + /// If the target version is not installed in the platform + /// (bundle versions), download the target version bundle. + /// + [Input("requiredPlatformVersion")] + public Input? RequiredPlatformVersion { get; set; } + + [Input("statuses")] + private InputList? _statuses; + + /// + /// (Output) + /// ResourceStatus representing detailed cluster state. + /// Structure is documented below. + /// + /// + /// <a name="nested_status"></a>The `status` block contains: + /// + public InputList Statuses + { + get => _statuses ?? (_statuses = new InputList()); + set => _statuses = value; + } + + public VmwareAdminClusterPlatformConfigGetArgs() + { + } + public static new VmwareAdminClusterPlatformConfigGetArgs Empty => new VmwareAdminClusterPlatformConfigGetArgs(); + } +} diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigStatusArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigStatusArgs.cs new file mode 100644 index 0000000000..1123ad6744 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigStatusArgs.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 VmwareAdminClusterPlatformConfigStatusArgs : global::Pulumi.ResourceArgs + { + [Input("conditions")] + private InputList? _conditions; + + /// + /// (Output) + /// ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + /// Structure is documented below. + /// + public InputList Conditions + { + get => _conditions ?? (_conditions = new InputList()); + set => _conditions = value; + } + + /// + /// (Output) + /// Human-friendly representation of the error message from the admin cluster + /// controller. The error message can be temporary as the admin cluster + /// controller creates a cluster or node pool. If the error message persists + /// for a longer period of time, it can be used to surface error message to + /// indicate real problems requiring user intervention. + /// + [Input("errorMessage")] + public Input? ErrorMessage { get; set; } + + public VmwareAdminClusterPlatformConfigStatusArgs() + { + } + public static new VmwareAdminClusterPlatformConfigStatusArgs Empty => new VmwareAdminClusterPlatformConfigStatusArgs(); + } +} diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigStatusConditionArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigStatusConditionArgs.cs new file mode 100644 index 0000000000..b137e892e5 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigStatusConditionArgs.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 VmwareAdminClusterPlatformConfigStatusConditionArgs : global::Pulumi.ResourceArgs + { + /// + /// (Output) + /// Last time the condition transit from one status to another. + /// + [Input("lastTransitionTime")] + public Input? LastTransitionTime { get; set; } + + /// + /// (Output) + /// Human-readable message indicating details about last transition. + /// + [Input("message")] + public Input? Message { get; set; } + + /// + /// (Output) + /// Machine-readable message indicating details about last transition. + /// + [Input("reason")] + public Input? Reason { get; set; } + + /// + /// (Output) + /// The lifecycle state of the condition. + /// + [Input("state")] + public Input? State { get; set; } + + /// + /// (Output) + /// Type of the condition. + /// (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + /// + [Input("type")] + public Input? Type { get; set; } + + public VmwareAdminClusterPlatformConfigStatusConditionArgs() + { + } + public static new VmwareAdminClusterPlatformConfigStatusConditionArgs Empty => new VmwareAdminClusterPlatformConfigStatusConditionArgs(); + } +} diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigStatusConditionGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigStatusConditionGetArgs.cs new file mode 100644 index 0000000000..5f07d06fe3 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigStatusConditionGetArgs.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 VmwareAdminClusterPlatformConfigStatusConditionGetArgs : global::Pulumi.ResourceArgs + { + /// + /// (Output) + /// Last time the condition transit from one status to another. + /// + [Input("lastTransitionTime")] + public Input? LastTransitionTime { get; set; } + + /// + /// (Output) + /// Human-readable message indicating details about last transition. + /// + [Input("message")] + public Input? Message { get; set; } + + /// + /// (Output) + /// Machine-readable message indicating details about last transition. + /// + [Input("reason")] + public Input? Reason { get; set; } + + /// + /// (Output) + /// The lifecycle state of the condition. + /// + [Input("state")] + public Input? State { get; set; } + + /// + /// (Output) + /// Type of the condition. + /// (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + /// + [Input("type")] + public Input? Type { get; set; } + + public VmwareAdminClusterPlatformConfigStatusConditionGetArgs() + { + } + public static new VmwareAdminClusterPlatformConfigStatusConditionGetArgs Empty => new VmwareAdminClusterPlatformConfigStatusConditionGetArgs(); + } +} diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigStatusGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigStatusGetArgs.cs new file mode 100644 index 0000000000..c9a4b570d5 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigStatusGetArgs.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 VmwareAdminClusterPlatformConfigStatusGetArgs : global::Pulumi.ResourceArgs + { + [Input("conditions")] + private InputList? _conditions; + + /// + /// (Output) + /// ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + /// Structure is documented below. + /// + public InputList Conditions + { + get => _conditions ?? (_conditions = new InputList()); + set => _conditions = value; + } + + /// + /// (Output) + /// Human-friendly representation of the error message from the admin cluster + /// controller. The error message can be temporary as the admin cluster + /// controller creates a cluster or node pool. If the error message persists + /// for a longer period of time, it can be used to surface error message to + /// indicate real problems requiring user intervention. + /// + [Input("errorMessage")] + public Input? ErrorMessage { get; set; } + + public VmwareAdminClusterPlatformConfigStatusGetArgs() + { + } + public static new VmwareAdminClusterPlatformConfigStatusGetArgs Empty => new VmwareAdminClusterPlatformConfigStatusGetArgs(); + } +} diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterStatusArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterStatusArgs.cs new file mode 100644 index 0000000000..f3f5b9fdbf --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterStatusArgs.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 VmwareAdminClusterStatusArgs : global::Pulumi.ResourceArgs + { + [Input("conditions")] + private InputList? _conditions; + + /// + /// (Output) + /// ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + /// Structure is documented below. + /// + public InputList Conditions + { + get => _conditions ?? (_conditions = new InputList()); + set => _conditions = value; + } + + /// + /// (Output) + /// Human-friendly representation of the error message from the admin cluster + /// controller. The error message can be temporary as the admin cluster + /// controller creates a cluster or node pool. If the error message persists + /// for a longer period of time, it can be used to surface error message to + /// indicate real problems requiring user intervention. + /// + [Input("errorMessage")] + public Input? ErrorMessage { get; set; } + + public VmwareAdminClusterStatusArgs() + { + } + public static new VmwareAdminClusterStatusArgs Empty => new VmwareAdminClusterStatusArgs(); + } +} diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterStatusConditionArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterStatusConditionArgs.cs new file mode 100644 index 0000000000..b82e8f5800 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterStatusConditionArgs.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 VmwareAdminClusterStatusConditionArgs : global::Pulumi.ResourceArgs + { + /// + /// (Output) + /// Last time the condition transit from one status to another. + /// + [Input("lastTransitionTime")] + public Input? LastTransitionTime { get; set; } + + /// + /// (Output) + /// Human-readable message indicating details about last transition. + /// + [Input("message")] + public Input? Message { get; set; } + + /// + /// (Output) + /// Machine-readable message indicating details about last transition. + /// + [Input("reason")] + public Input? Reason { get; set; } + + /// + /// (Output) + /// The lifecycle state of the condition. + /// + [Input("state")] + public Input? State { get; set; } + + /// + /// (Output) + /// Type of the condition. + /// (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + /// + [Input("type")] + public Input? Type { get; set; } + + public VmwareAdminClusterStatusConditionArgs() + { + } + public static new VmwareAdminClusterStatusConditionArgs Empty => new VmwareAdminClusterStatusConditionArgs(); + } +} diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterStatusConditionGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterStatusConditionGetArgs.cs new file mode 100644 index 0000000000..c22b9d973d --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterStatusConditionGetArgs.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 VmwareAdminClusterStatusConditionGetArgs : global::Pulumi.ResourceArgs + { + /// + /// (Output) + /// Last time the condition transit from one status to another. + /// + [Input("lastTransitionTime")] + public Input? LastTransitionTime { get; set; } + + /// + /// (Output) + /// Human-readable message indicating details about last transition. + /// + [Input("message")] + public Input? Message { get; set; } + + /// + /// (Output) + /// Machine-readable message indicating details about last transition. + /// + [Input("reason")] + public Input? Reason { get; set; } + + /// + /// (Output) + /// The lifecycle state of the condition. + /// + [Input("state")] + public Input? State { get; set; } + + /// + /// (Output) + /// Type of the condition. + /// (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + /// + [Input("type")] + public Input? Type { get; set; } + + public VmwareAdminClusterStatusConditionGetArgs() + { + } + public static new VmwareAdminClusterStatusConditionGetArgs Empty => new VmwareAdminClusterStatusConditionGetArgs(); + } +} diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterStatusGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterStatusGetArgs.cs new file mode 100644 index 0000000000..1c1e8a87d3 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterStatusGetArgs.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 VmwareAdminClusterStatusGetArgs : global::Pulumi.ResourceArgs + { + [Input("conditions")] + private InputList? _conditions; + + /// + /// (Output) + /// ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + /// Structure is documented below. + /// + public InputList Conditions + { + get => _conditions ?? (_conditions = new InputList()); + set => _conditions = value; + } + + /// + /// (Output) + /// Human-friendly representation of the error message from the admin cluster + /// controller. The error message can be temporary as the admin cluster + /// controller creates a cluster or node pool. If the error message persists + /// for a longer period of time, it can be used to surface error message to + /// indicate real problems requiring user intervention. + /// + [Input("errorMessage")] + public Input? ErrorMessage { get; set; } + + public VmwareAdminClusterStatusGetArgs() + { + } + public static new VmwareAdminClusterStatusGetArgs Empty => new VmwareAdminClusterStatusGetArgs(); + } +} diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterVcenterArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterVcenterArgs.cs new file mode 100644 index 0000000000..24948b565a --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterVcenterArgs.cs @@ -0,0 +1,74 @@ +// *** 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 VmwareAdminClusterVcenterArgs : global::Pulumi.ResourceArgs + { + /// + /// The vCenter IP address. + /// + [Input("address")] + public Input? Address { get; set; } + + /// + /// Contains the vCenter CA certificate public key for SSL verification. + /// + [Input("caCertData")] + public Input? CaCertData { get; set; } + + /// + /// The name of the vCenter cluster for the admin cluster. + /// + [Input("cluster")] + public Input? Cluster { get; set; } + + /// + /// The name of the virtual machine disk (VMDK) for the admin cluster. + /// + [Input("dataDisk")] + public Input? DataDisk { get; set; } + + /// + /// The name of the vCenter datacenter for the admin cluster. + /// + [Input("datacenter")] + public Input? Datacenter { get; set; } + + /// + /// The name of the vCenter datastore for the admin cluster. + /// + [Input("datastore")] + public Input? Datastore { get; set; } + + /// + /// The name of the vCenter folder for the admin cluster. + /// + [Input("folder")] + public Input? Folder { get; set; } + + /// + /// The name of the vCenter resource pool for the admin cluster. + /// + [Input("resourcePool")] + public Input? ResourcePool { get; set; } + + /// + /// The name of the vCenter storage policy for the user cluster. + /// + [Input("storagePolicyName")] + public Input? StoragePolicyName { get; set; } + + public VmwareAdminClusterVcenterArgs() + { + } + public static new VmwareAdminClusterVcenterArgs Empty => new VmwareAdminClusterVcenterArgs(); + } +} diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterVcenterGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterVcenterGetArgs.cs new file mode 100644 index 0000000000..1cb28c125f --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterVcenterGetArgs.cs @@ -0,0 +1,74 @@ +// *** 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 VmwareAdminClusterVcenterGetArgs : global::Pulumi.ResourceArgs + { + /// + /// The vCenter IP address. + /// + [Input("address")] + public Input? Address { get; set; } + + /// + /// Contains the vCenter CA certificate public key for SSL verification. + /// + [Input("caCertData")] + public Input? CaCertData { get; set; } + + /// + /// The name of the vCenter cluster for the admin cluster. + /// + [Input("cluster")] + public Input? Cluster { get; set; } + + /// + /// The name of the virtual machine disk (VMDK) for the admin cluster. + /// + [Input("dataDisk")] + public Input? DataDisk { get; set; } + + /// + /// The name of the vCenter datacenter for the admin cluster. + /// + [Input("datacenter")] + public Input? Datacenter { get; set; } + + /// + /// The name of the vCenter datastore for the admin cluster. + /// + [Input("datastore")] + public Input? Datastore { get; set; } + + /// + /// The name of the vCenter folder for the admin cluster. + /// + [Input("folder")] + public Input? Folder { get; set; } + + /// + /// The name of the vCenter resource pool for the admin cluster. + /// + [Input("resourcePool")] + public Input? ResourcePool { get; set; } + + /// + /// The name of the vCenter storage policy for the user cluster. + /// + [Input("storagePolicyName")] + public Input? StoragePolicyName { get; set; } + + public VmwareAdminClusterVcenterGetArgs() + { + } + public static new VmwareAdminClusterVcenterGetArgs Empty => new VmwareAdminClusterVcenterGetArgs(); + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterAddonNode.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterAddonNode.cs new file mode 100644 index 0000000000..19b765e9a5 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterAddonNode.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.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterAddonNode + { + /// + /// Specifies auto resize config. + /// Structure is documented below. + /// + public readonly Outputs.VmwareAdminClusterAddonNodeAutoResizeConfig? AutoResizeConfig; + + [OutputConstructor] + private VmwareAdminClusterAddonNode(Outputs.VmwareAdminClusterAddonNodeAutoResizeConfig? autoResizeConfig) + { + AutoResizeConfig = autoResizeConfig; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterAddonNodeAutoResizeConfig.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterAddonNodeAutoResizeConfig.cs new file mode 100644 index 0000000000..eddba7b7e4 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterAddonNodeAutoResizeConfig.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.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterAddonNodeAutoResizeConfig + { + /// + /// Whether to enable controle plane node auto resizing. + /// + public readonly bool Enabled; + + [OutputConstructor] + private VmwareAdminClusterAddonNodeAutoResizeConfig(bool enabled) + { + Enabled = enabled; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterAntiAffinityGroups.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterAntiAffinityGroups.cs new file mode 100644 index 0000000000..11f90df896 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterAntiAffinityGroups.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.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterAntiAffinityGroups + { + /// + /// Spread nodes across at least three physical hosts (requires at least three + /// hosts). + /// Enabled by default. + /// + public readonly bool AagConfigDisabled; + + [OutputConstructor] + private VmwareAdminClusterAntiAffinityGroups(bool aagConfigDisabled) + { + AagConfigDisabled = aagConfigDisabled; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterAuthorization.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterAuthorization.cs new file mode 100644 index 0000000000..c04f37664f --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterAuthorization.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.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterAuthorization + { + /// + /// Users that will be granted the cluster-admin role on the cluster, providing + /// full access to the cluster. + /// Structure is documented below. + /// + public readonly ImmutableArray ViewerUsers; + + [OutputConstructor] + private VmwareAdminClusterAuthorization(ImmutableArray viewerUsers) + { + ViewerUsers = viewerUsers; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterAuthorizationViewerUser.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterAuthorizationViewerUser.cs new file mode 100644 index 0000000000..b7b12743c4 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterAuthorizationViewerUser.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.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterAuthorizationViewerUser + { + /// + /// The name of the user, e.g. `my-gcp-id@gmail.com`. + /// + public readonly string Username; + + [OutputConstructor] + private VmwareAdminClusterAuthorizationViewerUser(string username) + { + Username = username; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterAutoRepairConfig.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterAutoRepairConfig.cs new file mode 100644 index 0000000000..1b6bee9fc9 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterAutoRepairConfig.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.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterAutoRepairConfig + { + /// + /// Whether auto repair is enabled. + /// + public readonly bool Enabled; + + [OutputConstructor] + private VmwareAdminClusterAutoRepairConfig(bool enabled) + { + Enabled = enabled; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterControlPlaneNode.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterControlPlaneNode.cs new file mode 100644 index 0000000000..d06e5938b1 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterControlPlaneNode.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.GkeOnPrem.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterControlPlaneNode + { + /// + /// The number of vCPUs for the control-plane node of the admin cluster. + /// + public readonly int? Cpus; + /// + /// The number of mebibytes of memory for the control-plane node of the admin cluster. + /// + public readonly int? Memory; + /// + /// The number of control plane nodes for this VMware admin cluster. + /// + public readonly int? Replicas; + + [OutputConstructor] + private VmwareAdminClusterControlPlaneNode( + int? cpus, + + int? memory, + + int? replicas) + { + Cpus = cpus; + Memory = memory; + Replicas = replicas; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterFleet.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterFleet.cs new file mode 100644 index 0000000000..d6b764e3d0 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterFleet.cs @@ -0,0 +1,30 @@ +// *** 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.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterFleet + { + /// + /// (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>`. + /// + public readonly string? Membership; + + [OutputConstructor] + private VmwareAdminClusterFleet(string? membership) + { + Membership = membership; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterLoadBalancer.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterLoadBalancer.cs new file mode 100644 index 0000000000..15e991aba8 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterLoadBalancer.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.GkeOnPrem.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterLoadBalancer + { + /// + /// Configuration for F5 Big IP typed load balancers. + /// Structure is documented below. + /// + public readonly Outputs.VmwareAdminClusterLoadBalancerF5Config? F5Config; + /// + /// Manually configured load balancers. + /// Structure is documented below. + /// + public readonly Outputs.VmwareAdminClusterLoadBalancerManualLbConfig? ManualLbConfig; + /// + /// Metal LB load balancers. + /// Structure is documented below. + /// + public readonly Outputs.VmwareAdminClusterLoadBalancerMetalLbConfig? MetalLbConfig; + /// + /// Specified the VMware Load Balancer Config + /// Structure is documented below. + /// + public readonly Outputs.VmwareAdminClusterLoadBalancerVipConfig VipConfig; + + [OutputConstructor] + private VmwareAdminClusterLoadBalancer( + Outputs.VmwareAdminClusterLoadBalancerF5Config? f5Config, + + Outputs.VmwareAdminClusterLoadBalancerManualLbConfig? manualLbConfig, + + Outputs.VmwareAdminClusterLoadBalancerMetalLbConfig? metalLbConfig, + + Outputs.VmwareAdminClusterLoadBalancerVipConfig vipConfig) + { + F5Config = f5Config; + ManualLbConfig = manualLbConfig; + MetalLbConfig = metalLbConfig; + VipConfig = vipConfig; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterLoadBalancerF5Config.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterLoadBalancerF5Config.cs new file mode 100644 index 0000000000..fe06655725 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterLoadBalancerF5Config.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.GkeOnPrem.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterLoadBalancerF5Config + { + /// + /// The load balancer's IP address. + /// + public readonly string? Address; + /// + /// 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'. + /// + public readonly string? Partition; + /// + /// The pool name. Only necessary, if using SNAT. + /// + public readonly string? SnatPool; + + [OutputConstructor] + private VmwareAdminClusterLoadBalancerF5Config( + string? address, + + string? partition, + + string? snatPool) + { + Address = address; + Partition = partition; + SnatPool = snatPool; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterLoadBalancerManualLbConfig.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterLoadBalancerManualLbConfig.cs new file mode 100644 index 0000000000..a78d53b543 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterLoadBalancerManualLbConfig.cs @@ -0,0 +1,60 @@ +// *** 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.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterLoadBalancerManualLbConfig + { + /// + /// NodePort for add-ons server in the admin cluster. + /// + public readonly int? AddonsNodePort; + /// + /// NodePort for control plane service. The Kubernetes API server in the admin + /// cluster is implemented as a Service of type NodePort (ex. 30968). + /// + public readonly int? ControlPlaneNodePort; + /// + /// NodePort for ingress service's http. The ingress service in the admin + /// cluster is implemented as a Service of type NodePort (ex. 32527). + /// + public readonly int? IngressHttpNodePort; + /// + /// NodePort for ingress service's https. The ingress service in the admin + /// cluster is implemented as a Service of type NodePort (ex. 30139). + /// + public readonly int? IngressHttpsNodePort; + /// + /// NodePort for konnectivity server service running as a sidecar in each + /// kube-apiserver pod (ex. 30564). + /// + public readonly int? KonnectivityServerNodePort; + + [OutputConstructor] + private VmwareAdminClusterLoadBalancerManualLbConfig( + int? addonsNodePort, + + int? controlPlaneNodePort, + + int? ingressHttpNodePort, + + int? ingressHttpsNodePort, + + int? konnectivityServerNodePort) + { + AddonsNodePort = addonsNodePort; + ControlPlaneNodePort = controlPlaneNodePort; + IngressHttpNodePort = ingressHttpNodePort; + IngressHttpsNodePort = ingressHttpsNodePort; + KonnectivityServerNodePort = konnectivityServerNodePort; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterLoadBalancerMetalLbConfig.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterLoadBalancerMetalLbConfig.cs new file mode 100644 index 0000000000..551344cdd9 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterLoadBalancerMetalLbConfig.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.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterLoadBalancerMetalLbConfig + { + /// + /// Metal LB is enabled. + /// + public readonly bool? Enabled; + + [OutputConstructor] + private VmwareAdminClusterLoadBalancerMetalLbConfig(bool? enabled) + { + Enabled = enabled; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterLoadBalancerVipConfig.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterLoadBalancerVipConfig.cs new file mode 100644 index 0000000000..e4a811a151 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterLoadBalancerVipConfig.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.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterLoadBalancerVipConfig + { + /// + /// The VIP to configure the load balancer for add-ons. + /// + /// <a name="nested_f5_config"></a>The `f5_config` block supports: + /// + public readonly string? AddonsVip; + /// + /// The VIP which you previously set aside for the Kubernetes + /// API of this VMware Admin Cluster. + /// + public readonly string ControlPlaneVip; + + [OutputConstructor] + private VmwareAdminClusterLoadBalancerVipConfig( + string? addonsVip, + + string controlPlaneVip) + { + AddonsVip = addonsVip; + ControlPlaneVip = controlPlaneVip; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterNetworkConfig.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterNetworkConfig.cs new file mode 100644 index 0000000000..1782ec2b68 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterNetworkConfig.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.GkeOnPrem.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterNetworkConfig + { + /// + /// Configuration settings for a DHCP IP configuration. + /// Structure is documented below. + /// + public readonly Outputs.VmwareAdminClusterNetworkConfigDhcpIpConfig? DhcpIpConfig; + /// + /// Configuration for HA admin cluster control plane. + /// Structure is documented below. + /// + public readonly Outputs.VmwareAdminClusterNetworkConfigHaControlPlaneConfig? HaControlPlaneConfig; + /// + /// Represents common network settings irrespective of the host's IP address. + /// Structure is documented below. + /// + public readonly Outputs.VmwareAdminClusterNetworkConfigHostConfig? HostConfig; + /// + /// 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 readonly ImmutableArray PodAddressCidrBlocks; + /// + /// 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 readonly ImmutableArray ServiceAddressCidrBlocks; + /// + /// Configuration settings for a static IP configuration. + /// Structure is documented below. + /// + public readonly Outputs.VmwareAdminClusterNetworkConfigStaticIpConfig? StaticIpConfig; + /// + /// vcenter_network specifies vCenter network name. + /// + public readonly string? VcenterNetwork; + + [OutputConstructor] + private VmwareAdminClusterNetworkConfig( + Outputs.VmwareAdminClusterNetworkConfigDhcpIpConfig? dhcpIpConfig, + + Outputs.VmwareAdminClusterNetworkConfigHaControlPlaneConfig? haControlPlaneConfig, + + Outputs.VmwareAdminClusterNetworkConfigHostConfig? hostConfig, + + ImmutableArray podAddressCidrBlocks, + + ImmutableArray serviceAddressCidrBlocks, + + Outputs.VmwareAdminClusterNetworkConfigStaticIpConfig? staticIpConfig, + + string? vcenterNetwork) + { + DhcpIpConfig = dhcpIpConfig; + HaControlPlaneConfig = haControlPlaneConfig; + HostConfig = hostConfig; + PodAddressCidrBlocks = podAddressCidrBlocks; + ServiceAddressCidrBlocks = serviceAddressCidrBlocks; + StaticIpConfig = staticIpConfig; + VcenterNetwork = vcenterNetwork; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterNetworkConfigDhcpIpConfig.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterNetworkConfigDhcpIpConfig.cs new file mode 100644 index 0000000000..ab96f27dd1 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterNetworkConfigDhcpIpConfig.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.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterNetworkConfigDhcpIpConfig + { + /// + /// enabled is a flag to mark if DHCP IP allocation is + /// used for VMware admin clusters. + /// + public readonly bool Enabled; + + [OutputConstructor] + private VmwareAdminClusterNetworkConfigDhcpIpConfig(bool enabled) + { + Enabled = enabled; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfig.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfig.cs new file mode 100644 index 0000000000..95336cbc70 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfig.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.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterNetworkConfigHaControlPlaneConfig + { + /// + /// Static IP addresses for the control plane nodes. + /// Structure is documented below. + /// + public readonly Outputs.VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock? ControlPlaneIpBlock; + + [OutputConstructor] + private VmwareAdminClusterNetworkConfigHaControlPlaneConfig(Outputs.VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock? controlPlaneIpBlock) + { + ControlPlaneIpBlock = controlPlaneIpBlock; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock.cs new file mode 100644 index 0000000000..a6772ccc78 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock.cs @@ -0,0 +1,43 @@ +// *** 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.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock + { + /// + /// The network gateway used by the VMware Admin Cluster. + /// + public readonly string Gateway; + /// + /// The node's network configurations used by the VMware Admin Cluster. + /// Structure is documented below. + /// + public readonly ImmutableArray Ips; + /// + /// The netmask used by the VMware Admin Cluster. + /// + public readonly string Netmask; + + [OutputConstructor] + private VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock( + string gateway, + + ImmutableArray ips, + + string netmask) + { + Gateway = gateway; + Ips = ips; + Netmask = netmask; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp.cs new file mode 100644 index 0000000000..f5534d9524 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp.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.GkeOnPrem.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp + { + /// + /// Hostname of the machine. VM's name will be used if this field is empty. + /// + /// - - - + /// + public readonly string? Hostname; + /// + /// IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + /// + public readonly string Ip; + + [OutputConstructor] + private VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp( + string? hostname, + + string ip) + { + Hostname = hostname; + Ip = ip; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterNetworkConfigHostConfig.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterNetworkConfigHostConfig.cs new file mode 100644 index 0000000000..4e1f8c41e3 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterNetworkConfigHostConfig.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.GkeOnPrem.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterNetworkConfigHostConfig + { + /// + /// DNS search domains. + /// + public readonly ImmutableArray DnsSearchDomains; + /// + /// DNS servers. + /// + public readonly ImmutableArray DnsServers; + /// + /// NTP servers. + /// + public readonly ImmutableArray NtpServers; + + [OutputConstructor] + private VmwareAdminClusterNetworkConfigHostConfig( + ImmutableArray dnsSearchDomains, + + ImmutableArray dnsServers, + + ImmutableArray ntpServers) + { + DnsSearchDomains = dnsSearchDomains; + DnsServers = dnsServers; + NtpServers = ntpServers; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterNetworkConfigStaticIpConfig.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterNetworkConfigStaticIpConfig.cs new file mode 100644 index 0000000000..067ea5d577 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterNetworkConfigStaticIpConfig.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.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterNetworkConfigStaticIpConfig + { + /// + /// Represents the configuration values for static IP allocation to nodes. + /// Structure is documented below. + /// + public readonly ImmutableArray IpBlocks; + + [OutputConstructor] + private VmwareAdminClusterNetworkConfigStaticIpConfig(ImmutableArray ipBlocks) + { + IpBlocks = ipBlocks; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock.cs new file mode 100644 index 0000000000..9c27cf6f40 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock.cs @@ -0,0 +1,43 @@ +// *** 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.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock + { + /// + /// The network gateway used by the VMware Admin Cluster. + /// + public readonly string Gateway; + /// + /// The node's network configurations used by the VMware Admin Cluster. + /// Structure is documented below. + /// + public readonly ImmutableArray Ips; + /// + /// The netmask used by the VMware Admin Cluster. + /// + public readonly string Netmask; + + [OutputConstructor] + private VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock( + string gateway, + + ImmutableArray ips, + + string netmask) + { + Gateway = gateway; + Ips = ips; + Netmask = netmask; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp.cs new file mode 100644 index 0000000000..36d5ec217b --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp.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.GkeOnPrem.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp + { + /// + /// Hostname of the machine. VM's name will be used if this field is empty. + /// + /// - - - + /// + public readonly string? Hostname; + /// + /// IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + /// + public readonly string Ip; + + [OutputConstructor] + private VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp( + string? hostname, + + string ip) + { + Hostname = hostname; + Ip = ip; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterPlatformConfig.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterPlatformConfig.cs new file mode 100644 index 0000000000..f4a542cff0 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterPlatformConfig.cs @@ -0,0 +1,61 @@ +// *** 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.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterPlatformConfig + { + /// + /// (Output) + /// The list of bundles installed in the admin cluster. + /// Structure is documented below. + /// + public readonly ImmutableArray Bundles; + /// + /// (Output) + /// The platform version e.g. 1.13.2. + /// + public readonly string? PlatformVersion; + /// + /// The required platform version e.g. 1.13.1. + /// If the current platform version is lower than the target version, + /// the platform version will be updated to the target version. + /// If the target version is not installed in the platform + /// (bundle versions), download the target version bundle. + /// + public readonly string? RequiredPlatformVersion; + /// + /// (Output) + /// ResourceStatus representing detailed cluster state. + /// Structure is documented below. + /// + /// + /// <a name="nested_status"></a>The `status` block contains: + /// + public readonly ImmutableArray Statuses; + + [OutputConstructor] + private VmwareAdminClusterPlatformConfig( + ImmutableArray bundles, + + string? platformVersion, + + string? requiredPlatformVersion, + + ImmutableArray statuses) + { + Bundles = bundles; + PlatformVersion = platformVersion; + RequiredPlatformVersion = requiredPlatformVersion; + Statuses = statuses; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterPlatformConfigBundle.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterPlatformConfigBundle.cs new file mode 100644 index 0000000000..87fc1a44ba --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterPlatformConfigBundle.cs @@ -0,0 +1,36 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.GkeOnPrem.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterPlatformConfigBundle + { + /// + /// ResourceStatus representing detailed cluster state. + /// Structure is documented below. + /// + public readonly ImmutableArray Statuses; + /// + /// The version of the bundle. + /// + public readonly string? Version; + + [OutputConstructor] + private VmwareAdminClusterPlatformConfigBundle( + ImmutableArray statuses, + + string? version) + { + Statuses = statuses; + Version = version; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterPlatformConfigBundleStatus.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterPlatformConfigBundleStatus.cs new file mode 100644 index 0000000000..86022f1180 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterPlatformConfigBundleStatus.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.GkeOnPrem.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterPlatformConfigBundleStatus + { + /// + /// (Output) + /// ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + /// Structure is documented below. + /// + public readonly ImmutableArray Conditions; + /// + /// (Output) + /// Human-friendly representation of the error message from the admin cluster + /// controller. The error message can be temporary as the admin cluster + /// controller creates a cluster or node pool. If the error message persists + /// for a longer period of time, it can be used to surface error message to + /// indicate real problems requiring user intervention. + /// + public readonly string? ErrorMessage; + + [OutputConstructor] + private VmwareAdminClusterPlatformConfigBundleStatus( + ImmutableArray conditions, + + string? errorMessage) + { + Conditions = conditions; + ErrorMessage = errorMessage; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterPlatformConfigBundleStatusCondition.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterPlatformConfigBundleStatusCondition.cs new file mode 100644 index 0000000000..7f8647fe8b --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterPlatformConfigBundleStatusCondition.cs @@ -0,0 +1,62 @@ +// *** 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.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterPlatformConfigBundleStatusCondition + { + /// + /// (Output) + /// Last time the condition transit from one status to another. + /// + public readonly string? LastTransitionTime; + /// + /// (Output) + /// Human-readable message indicating details about last transition. + /// + public readonly string? Message; + /// + /// (Output) + /// Machine-readable message indicating details about last transition. + /// + public readonly string? Reason; + /// + /// (Output) + /// The lifecycle state of the condition. + /// + public readonly string? State; + /// + /// (Output) + /// Type of the condition. + /// (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + /// + public readonly string? Type; + + [OutputConstructor] + private VmwareAdminClusterPlatformConfigBundleStatusCondition( + string? lastTransitionTime, + + string? message, + + string? reason, + + string? state, + + string? type) + { + LastTransitionTime = lastTransitionTime; + Message = message; + Reason = reason; + State = state; + Type = type; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterPlatformConfigStatus.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterPlatformConfigStatus.cs new file mode 100644 index 0000000000..45defacc53 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterPlatformConfigStatus.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.GkeOnPrem.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterPlatformConfigStatus + { + /// + /// (Output) + /// ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + /// Structure is documented below. + /// + public readonly ImmutableArray Conditions; + /// + /// (Output) + /// Human-friendly representation of the error message from the admin cluster + /// controller. The error message can be temporary as the admin cluster + /// controller creates a cluster or node pool. If the error message persists + /// for a longer period of time, it can be used to surface error message to + /// indicate real problems requiring user intervention. + /// + public readonly string? ErrorMessage; + + [OutputConstructor] + private VmwareAdminClusterPlatformConfigStatus( + ImmutableArray conditions, + + string? errorMessage) + { + Conditions = conditions; + ErrorMessage = errorMessage; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterPlatformConfigStatusCondition.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterPlatformConfigStatusCondition.cs new file mode 100644 index 0000000000..9a7d52ea9a --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterPlatformConfigStatusCondition.cs @@ -0,0 +1,62 @@ +// *** 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.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterPlatformConfigStatusCondition + { + /// + /// (Output) + /// Last time the condition transit from one status to another. + /// + public readonly string? LastTransitionTime; + /// + /// (Output) + /// Human-readable message indicating details about last transition. + /// + public readonly string? Message; + /// + /// (Output) + /// Machine-readable message indicating details about last transition. + /// + public readonly string? Reason; + /// + /// (Output) + /// The lifecycle state of the condition. + /// + public readonly string? State; + /// + /// (Output) + /// Type of the condition. + /// (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + /// + public readonly string? Type; + + [OutputConstructor] + private VmwareAdminClusterPlatformConfigStatusCondition( + string? lastTransitionTime, + + string? message, + + string? reason, + + string? state, + + string? type) + { + LastTransitionTime = lastTransitionTime; + Message = message; + Reason = reason; + State = state; + Type = type; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterStatus.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterStatus.cs new file mode 100644 index 0000000000..70955cd492 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterStatus.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.GkeOnPrem.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterStatus + { + /// + /// (Output) + /// ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + /// Structure is documented below. + /// + public readonly ImmutableArray Conditions; + /// + /// (Output) + /// Human-friendly representation of the error message from the admin cluster + /// controller. The error message can be temporary as the admin cluster + /// controller creates a cluster or node pool. If the error message persists + /// for a longer period of time, it can be used to surface error message to + /// indicate real problems requiring user intervention. + /// + public readonly string? ErrorMessage; + + [OutputConstructor] + private VmwareAdminClusterStatus( + ImmutableArray conditions, + + string? errorMessage) + { + Conditions = conditions; + ErrorMessage = errorMessage; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterStatusCondition.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterStatusCondition.cs new file mode 100644 index 0000000000..698b82ef23 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterStatusCondition.cs @@ -0,0 +1,62 @@ +// *** 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.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterStatusCondition + { + /// + /// (Output) + /// Last time the condition transit from one status to another. + /// + public readonly string? LastTransitionTime; + /// + /// (Output) + /// Human-readable message indicating details about last transition. + /// + public readonly string? Message; + /// + /// (Output) + /// Machine-readable message indicating details about last transition. + /// + public readonly string? Reason; + /// + /// (Output) + /// The lifecycle state of the condition. + /// + public readonly string? State; + /// + /// (Output) + /// Type of the condition. + /// (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + /// + public readonly string? Type; + + [OutputConstructor] + private VmwareAdminClusterStatusCondition( + string? lastTransitionTime, + + string? message, + + string? reason, + + string? state, + + string? type) + { + LastTransitionTime = lastTransitionTime; + Message = message; + Reason = reason; + State = state; + Type = type; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterVcenter.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterVcenter.cs new file mode 100644 index 0000000000..8d4fcb1091 --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterVcenter.cs @@ -0,0 +1,84 @@ +// *** 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.Outputs +{ + + [OutputType] + public sealed class VmwareAdminClusterVcenter + { + /// + /// The vCenter IP address. + /// + public readonly string? Address; + /// + /// Contains the vCenter CA certificate public key for SSL verification. + /// + public readonly string? CaCertData; + /// + /// The name of the vCenter cluster for the admin cluster. + /// + public readonly string? Cluster; + /// + /// The name of the virtual machine disk (VMDK) for the admin cluster. + /// + public readonly string? DataDisk; + /// + /// The name of the vCenter datacenter for the admin cluster. + /// + public readonly string? Datacenter; + /// + /// The name of the vCenter datastore for the admin cluster. + /// + public readonly string? Datastore; + /// + /// The name of the vCenter folder for the admin cluster. + /// + public readonly string? Folder; + /// + /// The name of the vCenter resource pool for the admin cluster. + /// + public readonly string? ResourcePool; + /// + /// The name of the vCenter storage policy for the user cluster. + /// + public readonly string? StoragePolicyName; + + [OutputConstructor] + private VmwareAdminClusterVcenter( + string? address, + + string? caCertData, + + string? cluster, + + string? dataDisk, + + string? datacenter, + + string? datastore, + + string? folder, + + string? resourcePool, + + string? storagePolicyName) + { + Address = address; + CaCertData = caCertData; + Cluster = cluster; + DataDisk = dataDisk; + Datacenter = datacenter; + Datastore = datastore; + Folder = folder; + ResourcePool = resourcePool; + StoragePolicyName = storagePolicyName; + } + } +} diff --git a/sdk/dotnet/GkeOnPrem/VmwareAdminCluster.cs b/sdk/dotnet/GkeOnPrem/VmwareAdminCluster.cs new file mode 100644 index 0000000000..0bf00289bf --- /dev/null +++ b/sdk/dotnet/GkeOnPrem/VmwareAdminCluster.cs @@ -0,0 +1,884 @@ +// *** 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 +{ + /// + /// ## Example Usage + /// + /// ### Gkeonprem Vmware Admin Cluster Basic + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var admin_cluster_basic = new Gcp.GkeOnPrem.VmwareAdminCluster("admin-cluster-basic", new() + /// { + /// Name = "basic", + /// Location = "us-west1", + /// Description = "test admin cluster", + /// BootstrapClusterMembership = "projects/870316890899/locations/global/memberships/gkeonprem-terraform-test", + /// OnPremVersion = "1.31.0-gke.35", + /// ImageType = "ubuntu_containerd", + /// Vcenter = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterVcenterArgs + /// { + /// ResourcePool = "test resource pool", + /// Datastore = "test data store", + /// Datacenter = "test data center", + /// Cluster = "test cluster", + /// Folder = "test folder", + /// CaCertData = "test ca cert data", + /// Address = "10.0.0.1", + /// DataDisk = "test data disk", + /// }, + /// NetworkConfig = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterNetworkConfigArgs + /// { + /// ServiceAddressCidrBlocks = new[] + /// { + /// "10.96.0.0/12", + /// }, + /// PodAddressCidrBlocks = new[] + /// { + /// "192.168.0.0/16", + /// }, + /// DhcpIpConfig = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterNetworkConfigDhcpIpConfigArgs + /// { + /// Enabled = true, + /// }, + /// }, + /// ControlPlaneNode = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterControlPlaneNodeArgs + /// { + /// Cpus = 4, + /// Memory = 8192, + /// }, + /// LoadBalancer = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterLoadBalancerArgs + /// { + /// VipConfig = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterLoadBalancerVipConfigArgs + /// { + /// ControlPlaneVip = "10.251.133.5", + /// AddonsVip = "10.251.135.19", + /// }, + /// F5Config = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterLoadBalancerF5ConfigArgs + /// { + /// Address = "10.251.135.22", + /// Partition = "test-parition", + /// SnatPool = "test-snat-pool", + /// }, + /// }, + /// }); + /// + /// }); + /// ``` + /// ### Gkeonprem Vmware Admin Cluster Full + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var admin_cluster_full = new Gcp.GkeOnPrem.VmwareAdminCluster("admin-cluster-full", new() + /// { + /// Name = "full", + /// Location = "us-west1", + /// Description = "test admin cluster", + /// BootstrapClusterMembership = "projects/870316890899/locations/global/memberships/gkeonprem-terraform-test", + /// OnPremVersion = "1.31.0-gke.35", + /// ImageType = "ubuntu_containerd", + /// Annotations = null, + /// Vcenter = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterVcenterArgs + /// { + /// ResourcePool = "test resource pool", + /// Datastore = "test data store", + /// Datacenter = "test data center", + /// Cluster = "test cluster", + /// Folder = "test folder", + /// CaCertData = "test ca cert data", + /// Address = "10.0.0.1", + /// DataDisk = "test data disk", + /// StoragePolicyName = "storage_policy_name", + /// }, + /// NetworkConfig = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterNetworkConfigArgs + /// { + /// ServiceAddressCidrBlocks = new[] + /// { + /// "10.96.0.0/12", + /// }, + /// PodAddressCidrBlocks = new[] + /// { + /// "192.168.0.0/16", + /// }, + /// HaControlPlaneConfig = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs + /// { + /// ControlPlaneIpBlock = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs + /// { + /// Gateway = "10.0.0.3", + /// Ips = new[] + /// { + /// new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs + /// { + /// Hostname = "hostname", + /// Ip = "10.0.0.4", + /// }, + /// }, + /// Netmask = "10.0.0.3/32", + /// }, + /// }, + /// HostConfig = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterNetworkConfigHostConfigArgs + /// { + /// DnsServers = new[] + /// { + /// "10.254.41.1", + /// }, + /// NtpServers = new[] + /// { + /// "216.239.35.8", + /// }, + /// DnsSearchDomains = new[] + /// { + /// "test-domain", + /// }, + /// }, + /// StaticIpConfig = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterNetworkConfigStaticIpConfigArgs + /// { + /// IpBlocks = new[] + /// { + /// new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs + /// { + /// Gateway = "10.0.0.1", + /// Ips = new[] + /// { + /// new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs + /// { + /// Hostname = "hostname", + /// Ip = "10.0.0.2", + /// }, + /// }, + /// Netmask = "10.0.0.3/32", + /// }, + /// }, + /// }, + /// VcenterNetwork = "test-vcenter-network", + /// }, + /// ControlPlaneNode = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterControlPlaneNodeArgs + /// { + /// Cpus = 4, + /// Memory = 8192, + /// Replicas = 3, + /// }, + /// LoadBalancer = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterLoadBalancerArgs + /// { + /// VipConfig = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterLoadBalancerVipConfigArgs + /// { + /// ControlPlaneVip = "10.251.133.5", + /// AddonsVip = "10.251.135.19", + /// }, + /// ManualLbConfig = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterLoadBalancerManualLbConfigArgs + /// { + /// AddonsNodePort = 30005, + /// ControlPlaneNodePort = 30006, + /// IngressHttpNodePort = 30007, + /// IngressHttpsNodePort = 30008, + /// KonnectivityServerNodePort = 30009, + /// }, + /// }, + /// AddonNode = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterAddonNodeArgs + /// { + /// AutoResizeConfig = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterAddonNodeAutoResizeConfigArgs + /// { + /// Enabled = true, + /// }, + /// }, + /// AntiAffinityGroups = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterAntiAffinityGroupsArgs + /// { + /// AagConfigDisabled = true, + /// }, + /// Authorization = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterAuthorizationArgs + /// { + /// ViewerUsers = new[] + /// { + /// new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterAuthorizationViewerUserArgs + /// { + /// Username = "user1@gmail.com", + /// }, + /// }, + /// }, + /// AutoRepairConfig = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterAutoRepairConfigArgs + /// { + /// Enabled = true, + /// }, + /// PlatformConfig = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterPlatformConfigArgs + /// { + /// RequiredPlatformVersion = "1.31.0", + /// }, + /// }); + /// + /// }); + /// ``` + /// ### Gkeonprem Vmware Admin Cluster Metallb + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var admin_cluster_metallb = new Gcp.GkeOnPrem.VmwareAdminCluster("admin-cluster-metallb", new() + /// { + /// Name = "metallb", + /// Location = "us-west1", + /// Description = "test admin cluster", + /// BootstrapClusterMembership = "projects/870316890899/locations/global/memberships/gkeonprem-terraform-test", + /// OnPremVersion = "1.31.0-gke.35", + /// ImageType = "ubuntu_containerd", + /// Vcenter = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterVcenterArgs + /// { + /// ResourcePool = "test resource pool", + /// Datastore = "test data store", + /// Datacenter = "test data center", + /// Cluster = "test cluster", + /// Folder = "test folder", + /// CaCertData = "test ca cert data", + /// Address = "10.0.0.1", + /// DataDisk = "test data disk", + /// }, + /// NetworkConfig = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterNetworkConfigArgs + /// { + /// ServiceAddressCidrBlocks = new[] + /// { + /// "10.96.0.0/12", + /// }, + /// PodAddressCidrBlocks = new[] + /// { + /// "192.168.0.0/16", + /// }, + /// DhcpIpConfig = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterNetworkConfigDhcpIpConfigArgs + /// { + /// Enabled = true, + /// }, + /// }, + /// ControlPlaneNode = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterControlPlaneNodeArgs + /// { + /// Cpus = 4, + /// Memory = 8192, + /// }, + /// LoadBalancer = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterLoadBalancerArgs + /// { + /// VipConfig = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterLoadBalancerVipConfigArgs + /// { + /// ControlPlaneVip = "10.251.133.5", + /// AddonsVip = "10.251.135.19", + /// }, + /// MetalLbConfig = new Gcp.GkeOnPrem.Inputs.VmwareAdminClusterLoadBalancerMetalLbConfigArgs + /// { + /// Enabled = true, + /// }, + /// }, + /// }); + /// + /// }); + /// ``` + /// + /// ## Import + /// + /// VmwareAdminCluster can be imported using any of these accepted formats: + /// + /// * `projects/{{project}}/locations/{{location}}/vmwareAdminClusters/{{name}}` + /// + /// * `{{project}}/{{location}}/{{name}}` + /// + /// * `{{location}}/{{name}}` + /// + /// When using the `pulumi import` command, VmwareAdminCluster can be imported using one of the formats above. For example: + /// + /// ```sh + /// $ pulumi import gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster default projects/{{project}}/locations/{{location}}/vmwareAdminClusters/{{name}} + /// ``` + /// + /// ```sh + /// $ pulumi import gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster default {{project}}/{{location}}/{{name}} + /// ``` + /// + /// ```sh + /// $ pulumi import gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster default {{location}}/{{name}} + /// ``` + /// + [GcpResourceType("gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster")] + public partial class VmwareAdminCluster : global::Pulumi.CustomResource + { + /// + /// The VMware admin cluster addon node configuration. + /// + [Output("addonNode")] + public Output AddonNode { get; private set; } = null!; + + /// + /// Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size + /// of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), + /// separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with + /// alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is + /// non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field + /// 'effective_annotations' for all of the annotations present on the resource. + /// + [Output("annotations")] + public Output> Annotations { get; private set; } = null!; + + /// + /// AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter. + /// + [Output("antiAffinityGroups")] + public Output AntiAffinityGroups { get; private set; } = null!; + + /// + /// The VMware admin cluster authorization configuration. + /// + [Output("authorization")] + public Output Authorization { get; private set; } = null!; + + /// + /// Configuration for auto repairing. + /// + [Output("autoRepairConfig")] + public Output AutoRepairConfig { get; private set; } = null!; + + /// + /// The bootstrap cluster this VMware admin cluster belongs to. + /// + [Output("bootstrapClusterMembership")] + public Output BootstrapClusterMembership { get; private set; } = null!; + + /// + /// The VMware admin cluster control plane node configuration. + /// + [Output("controlPlaneNode")] + public Output ControlPlaneNode { get; private set; } = null!; + + /// + /// The time the cluster was created, in RFC3339 text format. + /// + [Output("createTime")] + public Output CreateTime { get; private set; } = null!; + + /// + /// A human readable description of this VMware admin cluster. + /// + [Output("description")] + public Output Description { get; private set; } = null!; + + [Output("effectiveAnnotations")] + public Output> EffectiveAnnotations { get; private set; } = null!; + + /// + /// The DNS name of VMware admin cluster's API server. + /// + [Output("endpoint")] + public Output Endpoint { get; private set; } = null!; + + /// + /// This checksum is computed by the server based on the value of other + /// fields, and may be sent on update and delete requests to ensure the + /// client has an up-to-date value before proceeding. + /// Allows clients to perform consistent read-modify-writes + /// through optimistic concurrency control. + /// + [Output("etag")] + public Output Etag { get; private set; } = null!; + + /// + /// Fleet configuration for the cluster. + /// Structure is documented below. + /// + [Output("fleets")] + public Output> Fleets { get; private set; } = null!; + + /// + /// The OS image type for the VMware admin cluster. + /// + [Output("imageType")] + public Output ImageType { get; private set; } = null!; + + /// + /// Specifies the load balancer configuration for VMware admin cluster. + /// + [Output("loadBalancer")] + public Output LoadBalancer { get; private set; } = null!; + + /// + /// The object name of the VMwareAdminCluster custom resource on the + /// associated admin cluster. This field is used to support conflicting + /// names when enrolling existing clusters to the API. When used as a part of + /// cluster enrollment, this field will differ from the ID in the resource + /// name. For new clusters, this field will match the user provided cluster ID + /// and be visible in the last component of the resource name. It is not + /// modifiable. + /// All users should use this name to access their cluster using gkectl or + /// kubectl and should expect to see the local name when viewing admin + /// cluster controller logs. + /// + [Output("localName")] + public Output LocalName { get; private set; } = null!; + + /// + /// The location of the resource. + /// + [Output("location")] + public Output Location { get; private set; } = null!; + + /// + /// The VMware admin cluster resource name. + /// + [Output("name")] + public Output Name { get; private set; } = null!; + + /// + /// The VMware admin cluster network configuration. + /// Structure is documented below. + /// + [Output("networkConfig")] + public Output NetworkConfig { get; private set; } = null!; + + /// + /// The Anthos clusters on the VMware version for the admin cluster. + /// + [Output("onPremVersion")] + public Output OnPremVersion { get; private set; } = null!; + + /// + /// The VMware platform configuration. + /// + [Output("platformConfig")] + public Output PlatformConfig { get; private set; } = null!; + + [Output("project")] + public Output Project { get; private set; } = null!; + + /// + /// If set, there are currently changes in flight to the VMware admin cluster. + /// + [Output("reconciling")] + public Output Reconciling { get; private set; } = null!; + + /// + /// (Output) + /// The lifecycle state of the condition. + /// + [Output("state")] + public Output State { get; private set; } = null!; + + /// + /// ResourceStatus representing detailed cluster state. + /// Structure is documented below. + /// + [Output("statuses")] + public Output> Statuses { get; private set; } = null!; + + /// + /// The unique identifier of the VMware Admin Cluster. + /// + [Output("uid")] + public Output Uid { get; private set; } = null!; + + /// + /// The time the cluster was last updated, in RFC3339 text format. + /// + [Output("updateTime")] + public Output UpdateTime { get; private set; } = null!; + + /// + /// Specifies vCenter config for the admin cluster. + /// + [Output("vcenter")] + public Output Vcenter { get; private set; } = null!; + + + /// + /// Create a VmwareAdminCluster 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 VmwareAdminCluster(string name, VmwareAdminClusterArgs args, CustomResourceOptions? options = null) + : base("gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster", name, args ?? new VmwareAdminClusterArgs(), MakeResourceOptions(options, "")) + { + } + + private VmwareAdminCluster(string name, Input id, VmwareAdminClusterState? state = null, CustomResourceOptions? options = null) + : base("gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster", 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 VmwareAdminCluster 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 VmwareAdminCluster Get(string name, Input id, VmwareAdminClusterState? state = null, CustomResourceOptions? options = null) + { + return new VmwareAdminCluster(name, id, state, options); + } + } + + public sealed class VmwareAdminClusterArgs : global::Pulumi.ResourceArgs + { + /// + /// The VMware admin cluster addon node configuration. + /// + [Input("addonNode")] + public Input? AddonNode { get; set; } + + [Input("annotations")] + private InputMap? _annotations; + + /// + /// Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size + /// of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), + /// separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with + /// alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is + /// non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field + /// 'effective_annotations' for all of the annotations present on the resource. + /// + public InputMap Annotations + { + get => _annotations ?? (_annotations = new InputMap()); + set => _annotations = value; + } + + /// + /// AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter. + /// + [Input("antiAffinityGroups")] + public Input? AntiAffinityGroups { get; set; } + + /// + /// The VMware admin cluster authorization configuration. + /// + [Input("authorization")] + public Input? Authorization { get; set; } + + /// + /// Configuration for auto repairing. + /// + [Input("autoRepairConfig")] + public Input? AutoRepairConfig { get; set; } + + /// + /// The bootstrap cluster this VMware admin cluster belongs to. + /// + [Input("bootstrapClusterMembership")] + public Input? BootstrapClusterMembership { get; set; } + + /// + /// The VMware admin cluster control plane node configuration. + /// + [Input("controlPlaneNode")] + public Input? ControlPlaneNode { get; set; } + + /// + /// A human readable description of this VMware admin cluster. + /// + [Input("description")] + public Input? Description { get; set; } + + /// + /// The OS image type for the VMware admin cluster. + /// + [Input("imageType")] + public Input? ImageType { get; set; } + + /// + /// Specifies the load balancer configuration for VMware admin cluster. + /// + [Input("loadBalancer")] + public Input? LoadBalancer { get; set; } + + /// + /// The location of the resource. + /// + [Input("location", required: true)] + public Input Location { get; set; } = null!; + + /// + /// The VMware admin cluster resource name. + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// The VMware admin cluster network configuration. + /// Structure is documented below. + /// + [Input("networkConfig", required: true)] + public Input NetworkConfig { get; set; } = null!; + + /// + /// The Anthos clusters on the VMware version for the admin cluster. + /// + [Input("onPremVersion")] + public Input? OnPremVersion { get; set; } + + /// + /// The VMware platform configuration. + /// + [Input("platformConfig")] + public Input? PlatformConfig { get; set; } + + [Input("project")] + public Input? Project { get; set; } + + /// + /// Specifies vCenter config for the admin cluster. + /// + [Input("vcenter")] + public Input? Vcenter { get; set; } + + public VmwareAdminClusterArgs() + { + } + public static new VmwareAdminClusterArgs Empty => new VmwareAdminClusterArgs(); + } + + public sealed class VmwareAdminClusterState : global::Pulumi.ResourceArgs + { + /// + /// The VMware admin cluster addon node configuration. + /// + [Input("addonNode")] + public Input? AddonNode { get; set; } + + [Input("annotations")] + private InputMap? _annotations; + + /// + /// Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size + /// of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), + /// separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with + /// alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is + /// non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field + /// 'effective_annotations' for all of the annotations present on the resource. + /// + public InputMap Annotations + { + get => _annotations ?? (_annotations = new InputMap()); + set => _annotations = value; + } + + /// + /// AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter. + /// + [Input("antiAffinityGroups")] + public Input? AntiAffinityGroups { get; set; } + + /// + /// The VMware admin cluster authorization configuration. + /// + [Input("authorization")] + public Input? Authorization { get; set; } + + /// + /// Configuration for auto repairing. + /// + [Input("autoRepairConfig")] + public Input? AutoRepairConfig { get; set; } + + /// + /// The bootstrap cluster this VMware admin cluster belongs to. + /// + [Input("bootstrapClusterMembership")] + public Input? BootstrapClusterMembership { get; set; } + + /// + /// The VMware admin cluster control plane node configuration. + /// + [Input("controlPlaneNode")] + public Input? ControlPlaneNode { get; set; } + + /// + /// The time the cluster was created, in RFC3339 text format. + /// + [Input("createTime")] + public Input? CreateTime { get; set; } + + /// + /// A human readable description of this VMware admin cluster. + /// + [Input("description")] + public Input? Description { get; set; } + + [Input("effectiveAnnotations")] + private InputMap? _effectiveAnnotations; + public InputMap EffectiveAnnotations + { + get => _effectiveAnnotations ?? (_effectiveAnnotations = new InputMap()); + set => _effectiveAnnotations = value; + } + + /// + /// The DNS name of VMware admin cluster's API server. + /// + [Input("endpoint")] + public Input? Endpoint { get; set; } + + /// + /// This checksum is computed by the server based on the value of other + /// fields, and may be sent on update and delete requests to ensure the + /// client has an up-to-date value before proceeding. + /// Allows clients to perform consistent read-modify-writes + /// through optimistic concurrency control. + /// + [Input("etag")] + public Input? Etag { get; set; } + + [Input("fleets")] + private InputList? _fleets; + + /// + /// Fleet configuration for the cluster. + /// Structure is documented below. + /// + public InputList Fleets + { + get => _fleets ?? (_fleets = new InputList()); + set => _fleets = value; + } + + /// + /// The OS image type for the VMware admin cluster. + /// + [Input("imageType")] + public Input? ImageType { get; set; } + + /// + /// Specifies the load balancer configuration for VMware admin cluster. + /// + [Input("loadBalancer")] + public Input? LoadBalancer { get; set; } + + /// + /// The object name of the VMwareAdminCluster custom resource on the + /// associated admin cluster. This field is used to support conflicting + /// names when enrolling existing clusters to the API. When used as a part of + /// cluster enrollment, this field will differ from the ID in the resource + /// name. For new clusters, this field will match the user provided cluster ID + /// and be visible in the last component of the resource name. It is not + /// modifiable. + /// All users should use this name to access their cluster using gkectl or + /// kubectl and should expect to see the local name when viewing admin + /// cluster controller logs. + /// + [Input("localName")] + public Input? LocalName { get; set; } + + /// + /// The location of the resource. + /// + [Input("location")] + public Input? Location { get; set; } + + /// + /// The VMware admin cluster resource name. + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// The VMware admin cluster network configuration. + /// Structure is documented below. + /// + [Input("networkConfig")] + public Input? NetworkConfig { get; set; } + + /// + /// The Anthos clusters on the VMware version for the admin cluster. + /// + [Input("onPremVersion")] + public Input? OnPremVersion { get; set; } + + /// + /// The VMware platform configuration. + /// + [Input("platformConfig")] + public Input? PlatformConfig { get; set; } + + [Input("project")] + public Input? Project { get; set; } + + /// + /// If set, there are currently changes in flight to the VMware admin cluster. + /// + [Input("reconciling")] + public Input? Reconciling { get; set; } + + /// + /// (Output) + /// The lifecycle state of the condition. + /// + [Input("state")] + public Input? State { get; set; } + + [Input("statuses")] + private InputList? _statuses; + + /// + /// ResourceStatus representing detailed cluster state. + /// Structure is documented below. + /// + public InputList Statuses + { + get => _statuses ?? (_statuses = new InputList()); + set => _statuses = value; + } + + /// + /// The unique identifier of the VMware Admin Cluster. + /// + [Input("uid")] + public Input? Uid { get; set; } + + /// + /// The time the cluster was last updated, in RFC3339 text format. + /// + [Input("updateTime")] + public Input? UpdateTime { get; set; } + + /// + /// Specifies vCenter config for the admin cluster. + /// + [Input("vcenter")] + public Input? Vcenter { get; set; } + + public VmwareAdminClusterState() + { + } + public static new VmwareAdminClusterState Empty => new VmwareAdminClusterState(); + } +} diff --git a/sdk/dotnet/IntegrationConnectors/Connection.cs b/sdk/dotnet/IntegrationConnectors/Connection.cs index 6140f83acf..3b15018784 100644 --- a/sdk/dotnet/IntegrationConnectors/Connection.cs +++ b/sdk/dotnet/IntegrationConnectors/Connection.cs @@ -460,7 +460,7 @@ public partial class Connection : global::Pulumi.CustomResource public Output CreateTime { get; private set; } = null!; /// - /// An arbitrary description for the Conection. + /// An arbitrary description for the Connection. /// [Output("description")] public Output Description { get; private set; } = null!; @@ -682,7 +682,7 @@ public InputList ConfigVariables public Input ConnectorVersion { get; set; } = null!; /// - /// An arbitrary description for the Conection. + /// An arbitrary description for the Connection. /// [Input("description")] public Input? Description { get; set; } @@ -857,7 +857,7 @@ public InputList ConnectorV public Input? CreateTime { get; set; } /// - /// An arbitrary description for the Conection. + /// An arbitrary description for the Connection. /// [Input("description")] public Input? Description { get; set; } diff --git a/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionEventingRuntimeDataStatusArgs.cs b/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionEventingRuntimeDataStatusArgs.cs index 960f2d3355..0fd6bad316 100644 --- a/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionEventingRuntimeDataStatusArgs.cs +++ b/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionEventingRuntimeDataStatusArgs.cs @@ -13,7 +13,7 @@ namespace Pulumi.Gcp.IntegrationConnectors.Inputs public sealed class ConnectionEventingRuntimeDataStatusArgs : global::Pulumi.ResourceArgs { /// - /// An arbitrary description for the Conection. + /// An arbitrary description for the Connection. /// [Input("description")] public Input? Description { get; set; } diff --git a/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionEventingRuntimeDataStatusGetArgs.cs b/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionEventingRuntimeDataStatusGetArgs.cs index 7b60934126..0e5f8455b3 100644 --- a/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionEventingRuntimeDataStatusGetArgs.cs +++ b/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionEventingRuntimeDataStatusGetArgs.cs @@ -13,7 +13,7 @@ namespace Pulumi.Gcp.IntegrationConnectors.Inputs public sealed class ConnectionEventingRuntimeDataStatusGetArgs : global::Pulumi.ResourceArgs { /// - /// An arbitrary description for the Conection. + /// An arbitrary description for the Connection. /// [Input("description")] public Input? Description { get; set; } diff --git a/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionStatusArgs.cs b/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionStatusArgs.cs index ea1f805825..1352158f05 100644 --- a/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionStatusArgs.cs +++ b/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionStatusArgs.cs @@ -13,7 +13,7 @@ namespace Pulumi.Gcp.IntegrationConnectors.Inputs public sealed class ConnectionStatusArgs : global::Pulumi.ResourceArgs { /// - /// An arbitrary description for the Conection. + /// An arbitrary description for the Connection. /// [Input("description")] public Input? Description { get; set; } diff --git a/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionStatusGetArgs.cs b/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionStatusGetArgs.cs index 674a25cf34..5b380e90cf 100644 --- a/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionStatusGetArgs.cs +++ b/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionStatusGetArgs.cs @@ -13,7 +13,7 @@ namespace Pulumi.Gcp.IntegrationConnectors.Inputs public sealed class ConnectionStatusGetArgs : global::Pulumi.ResourceArgs { /// - /// An arbitrary description for the Conection. + /// An arbitrary description for the Connection. /// [Input("description")] public Input? Description { get; set; } diff --git a/sdk/dotnet/IntegrationConnectors/Outputs/ConnectionEventingRuntimeDataStatus.cs b/sdk/dotnet/IntegrationConnectors/Outputs/ConnectionEventingRuntimeDataStatus.cs index 98efb5e14d..f6cf7194a7 100644 --- a/sdk/dotnet/IntegrationConnectors/Outputs/ConnectionEventingRuntimeDataStatus.cs +++ b/sdk/dotnet/IntegrationConnectors/Outputs/ConnectionEventingRuntimeDataStatus.cs @@ -14,7 +14,7 @@ namespace Pulumi.Gcp.IntegrationConnectors.Outputs public sealed class ConnectionEventingRuntimeDataStatus { /// - /// An arbitrary description for the Conection. + /// An arbitrary description for the Connection. /// public readonly string? Description; /// diff --git a/sdk/dotnet/IntegrationConnectors/Outputs/ConnectionStatus.cs b/sdk/dotnet/IntegrationConnectors/Outputs/ConnectionStatus.cs index f0c5c760e5..f2c39741ac 100644 --- a/sdk/dotnet/IntegrationConnectors/Outputs/ConnectionStatus.cs +++ b/sdk/dotnet/IntegrationConnectors/Outputs/ConnectionStatus.cs @@ -14,7 +14,7 @@ namespace Pulumi.Gcp.IntegrationConnectors.Outputs public sealed class ConnectionStatus { /// - /// An arbitrary description for the Conection. + /// An arbitrary description for the Connection. /// public readonly string? Description; /// diff --git a/sdk/dotnet/Kms/GetAutokeyConfig.cs b/sdk/dotnet/Kms/GetAutokeyConfig.cs new file mode 100644 index 0000000000..5d3ed3c95e --- /dev/null +++ b/sdk/dotnet/Kms/GetAutokeyConfig.cs @@ -0,0 +1,139 @@ +// *** 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.Kms +{ + public static class GetAutokeyConfig + { + /// + /// ## Example Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var myAutokeyConfig = Gcp.Kms.GetAutokeyConfig.Invoke(new() + /// { + /// Folder = "folders/123", + /// }); + /// + /// }); + /// ``` + /// + public static Task InvokeAsync(GetAutokeyConfigArgs args, InvokeOptions? options = null) + => global::Pulumi.Deployment.Instance.InvokeAsync("gcp:kms/getAutokeyConfig:getAutokeyConfig", args ?? new GetAutokeyConfigArgs(), options.WithDefaults()); + + /// + /// ## Example Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var myAutokeyConfig = Gcp.Kms.GetAutokeyConfig.Invoke(new() + /// { + /// Folder = "folders/123", + /// }); + /// + /// }); + /// ``` + /// + public static Output Invoke(GetAutokeyConfigInvokeArgs args, InvokeOptions? options = null) + => global::Pulumi.Deployment.Instance.Invoke("gcp:kms/getAutokeyConfig:getAutokeyConfig", args ?? new GetAutokeyConfigInvokeArgs(), options.WithDefaults()); + + /// + /// ## Example Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var myAutokeyConfig = Gcp.Kms.GetAutokeyConfig.Invoke(new() + /// { + /// Folder = "folders/123", + /// }); + /// + /// }); + /// ``` + /// + public static Output Invoke(GetAutokeyConfigInvokeArgs args, InvokeOutputOptions options) + => global::Pulumi.Deployment.Instance.Invoke("gcp:kms/getAutokeyConfig:getAutokeyConfig", args ?? new GetAutokeyConfigInvokeArgs(), options.WithDefaults()); + } + + + public sealed class GetAutokeyConfigArgs : global::Pulumi.InvokeArgs + { + /// + /// The folder in which the AutokeyConfig is configured. If it + /// is not provided, the provider folder is used. + /// + [Input("folder", required: true)] + public string Folder { get; set; } = null!; + + public GetAutokeyConfigArgs() + { + } + public static new GetAutokeyConfigArgs Empty => new GetAutokeyConfigArgs(); + } + + public sealed class GetAutokeyConfigInvokeArgs : global::Pulumi.InvokeArgs + { + /// + /// The folder in which the AutokeyConfig is configured. If it + /// is not provided, the provider folder is used. + /// + [Input("folder", required: true)] + public Input Folder { get; set; } = null!; + + public GetAutokeyConfigInvokeArgs() + { + } + public static new GetAutokeyConfigInvokeArgs Empty => new GetAutokeyConfigInvokeArgs(); + } + + + [OutputType] + public sealed class GetAutokeyConfigResult + { + public readonly string Folder; + /// + /// The provider-assigned unique ID for this managed resource. + /// + public readonly string Id; + /// + /// The identifier of the project hosting KMS KeyRings and Keys generated by Autokey. Its format is `projects/{projectId}`. + /// + public readonly string KeyProject; + + [OutputConstructor] + private GetAutokeyConfigResult( + string folder, + + string id, + + string keyProject) + { + Folder = folder; + Id = id; + KeyProject = keyProject; + } + } +} diff --git a/sdk/dotnet/Kms/GetKeyHandle.cs b/sdk/dotnet/Kms/GetKeyHandle.cs new file mode 100644 index 0000000000..d8cc0db6d6 --- /dev/null +++ b/sdk/dotnet/Kms/GetKeyHandle.cs @@ -0,0 +1,195 @@ +// *** 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.Kms +{ + public static class GetKeyHandle + { + /// + /// ## Example Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var myKeyHandle = Gcp.Kms.GetKeyHandle.Invoke(new() + /// { + /// Name = "eed58b7b-20ad-4da8-ad85-ba78a0d5ab87", + /// Location = "us-central1", + /// }); + /// + /// }); + /// ``` + /// + public static Task InvokeAsync(GetKeyHandleArgs args, InvokeOptions? options = null) + => global::Pulumi.Deployment.Instance.InvokeAsync("gcp:kms/getKeyHandle:getKeyHandle", args ?? new GetKeyHandleArgs(), options.WithDefaults()); + + /// + /// ## Example Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var myKeyHandle = Gcp.Kms.GetKeyHandle.Invoke(new() + /// { + /// Name = "eed58b7b-20ad-4da8-ad85-ba78a0d5ab87", + /// Location = "us-central1", + /// }); + /// + /// }); + /// ``` + /// + public static Output Invoke(GetKeyHandleInvokeArgs args, InvokeOptions? options = null) + => global::Pulumi.Deployment.Instance.Invoke("gcp:kms/getKeyHandle:getKeyHandle", args ?? new GetKeyHandleInvokeArgs(), options.WithDefaults()); + + /// + /// ## Example Usage + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var myKeyHandle = Gcp.Kms.GetKeyHandle.Invoke(new() + /// { + /// Name = "eed58b7b-20ad-4da8-ad85-ba78a0d5ab87", + /// Location = "us-central1", + /// }); + /// + /// }); + /// ``` + /// + public static Output Invoke(GetKeyHandleInvokeArgs args, InvokeOutputOptions options) + => global::Pulumi.Deployment.Instance.Invoke("gcp:kms/getKeyHandle:getKeyHandle", args ?? new GetKeyHandleInvokeArgs(), options.WithDefaults()); + } + + + public sealed class GetKeyHandleArgs : global::Pulumi.InvokeArgs + { + /// + /// The Google Cloud Platform location for the KeyHandle. + /// A full list of valid locations can be found by running `gcloud kms locations list`. + /// + /// - - - + /// + [Input("location", required: true)] + public string Location { get; set; } = null!; + + /// + /// The KeyHandle's name. + /// A KeyHandle name must exist within the provided location and must be valid UUID. + /// + [Input("name", required: true)] + public string Name { get; set; } = null!; + + /// + /// The project in which the resource belongs. If it + /// is not provided, the provider project is used. + /// + [Input("project")] + public string? Project { get; set; } + + public GetKeyHandleArgs() + { + } + public static new GetKeyHandleArgs Empty => new GetKeyHandleArgs(); + } + + public sealed class GetKeyHandleInvokeArgs : global::Pulumi.InvokeArgs + { + /// + /// The Google Cloud Platform location for the KeyHandle. + /// A full list of valid locations can be found by running `gcloud kms locations list`. + /// + /// - - - + /// + [Input("location", required: true)] + public Input Location { get; set; } = null!; + + /// + /// The KeyHandle's name. + /// A KeyHandle name must exist within the provided location and must be valid UUID. + /// + [Input("name", required: true)] + public Input Name { get; set; } = null!; + + /// + /// The project in which the resource belongs. If it + /// is not provided, the provider project is used. + /// + [Input("project")] + public Input? Project { get; set; } + + public GetKeyHandleInvokeArgs() + { + } + public static new GetKeyHandleInvokeArgs Empty => new GetKeyHandleInvokeArgs(); + } + + + [OutputType] + public sealed class GetKeyHandleResult + { + /// + /// The provider-assigned unique ID for this managed resource. + /// + public readonly string Id; + /// + /// The identifier of the KMS Key created for the KeyHandle. Its format is `projects/{projectId}/locations/{location}/keyRings/{keyRingName}/cryptoKeys/{cryptoKeyName}`. + /// + public readonly string KmsKey; + /// + /// The location of the KMS Key and KeyHandle. + /// + public readonly string Location; + public readonly string Name; + /// + /// The identifier of the project where KMS KeyHandle is created. + /// + public readonly string? Project; + /// + /// Indicates the resource type that the resulting CryptoKey is meant to protect, e.g. {SERVICE}.googleapis.com/{TYPE}. See documentation for supported resource types. + /// + public readonly string ResourceTypeSelector; + + [OutputConstructor] + private GetKeyHandleResult( + string id, + + string kmsKey, + + string location, + + string name, + + string? project, + + string resourceTypeSelector) + { + Id = id; + KmsKey = kmsKey; + Location = location; + Name = name; + Project = project; + ResourceTypeSelector = resourceTypeSelector; + } + } +} diff --git a/sdk/dotnet/Netapp/Kmsconfig.cs b/sdk/dotnet/Netapp/Kmsconfig.cs index 729769b7b0..e8fc774d3e 100644 --- a/sdk/dotnet/Netapp/Kmsconfig.cs +++ b/sdk/dotnet/Netapp/Kmsconfig.cs @@ -32,23 +32,11 @@ namespace Pulumi.Gcp.Netapp /// /// return await Deployment.RunAsync(() => /// { - /// var keyring = new Gcp.Kms.KeyRing("keyring", new() - /// { - /// Name = "key-ring", - /// Location = "us-central1", - /// }); - /// - /// var cryptoKey = new Gcp.Kms.CryptoKey("crypto_key", new() - /// { - /// Name = "crypto-name", - /// KeyRing = keyring.Id, - /// }); - /// /// var kmsConfig = new Gcp.Netapp.Kmsconfig("kmsConfig", new() /// { /// Name = "kms-test", /// Description = "this is a test description", - /// CryptoKeyName = cryptoKey.Id, + /// CryptoKeyName = "crypto-name", /// Location = "us-central1", /// }); /// diff --git a/sdk/dotnet/NetworkConnectivity/Hub.cs b/sdk/dotnet/NetworkConnectivity/Hub.cs index 07f6386260..f58983ba55 100644 --- a/sdk/dotnet/NetworkConnectivity/Hub.cs +++ b/sdk/dotnet/NetworkConnectivity/Hub.cs @@ -61,6 +61,51 @@ namespace Pulumi.Gcp.NetworkConnectivity /// /// }); /// ``` + /// ### Network Connectivity Hub Mesh Topology + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var primary = new Gcp.NetworkConnectivity.Hub("primary", new() + /// { + /// Name = "mesh", + /// Description = "A sample mesh hub", + /// Labels = + /// { + /// { "label-one", "value-one" }, + /// }, + /// }); + /// + /// }); + /// ``` + /// ### Network Connectivity Hub Star Topology + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var primary = new Gcp.NetworkConnectivity.Hub("primary", new() + /// { + /// Name = "star", + /// Description = "A sample star hub", + /// Labels = + /// { + /// { "label-one", "value-one" }, + /// }, + /// PresetTopology = "STAR", + /// }); + /// + /// }); + /// ``` /// /// ## Import /// @@ -130,6 +175,13 @@ public partial class Hub : global::Pulumi.CustomResource [Output("name")] public Output Name { get; private set; } = null!; + /// + /// 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. + /// Possible values are: `MESH`, `STAR`. + /// + [Output("presetTopology")] + public Output PresetTopology { get; private set; } = null!; + /// /// The ID of the project in which the resource belongs. /// If it is not provided, the provider project is used. @@ -255,6 +307,13 @@ public InputMap Labels [Input("name")] public Input? Name { get; set; } + /// + /// 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. + /// Possible values are: `MESH`, `STAR`. + /// + [Input("presetTopology")] + public Input? PresetTopology { get; set; } + /// /// The ID of the project in which the resource belongs. /// If it is not provided, the provider project is used. @@ -327,6 +386,13 @@ public InputMap Labels [Input("name")] public Input? Name { get; set; } + /// + /// 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. + /// Possible values are: `MESH`, `STAR`. + /// + [Input("presetTopology")] + public Input? PresetTopology { get; set; } + /// /// The ID of the project in which the resource belongs. /// If it is not provided, the provider project is used. diff --git a/sdk/dotnet/NetworkConnectivity/Spoke.cs b/sdk/dotnet/NetworkConnectivity/Spoke.cs index f2846b03fe..c871ec84f6 100644 --- a/sdk/dotnet/NetworkConnectivity/Spoke.cs +++ b/sdk/dotnet/NetworkConnectivity/Spoke.cs @@ -74,6 +74,68 @@ namespace Pulumi.Gcp.NetworkConnectivity /// /// }); /// ``` + /// ### Network Connectivity Spoke Linked Vpc Network Group + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var network = new Gcp.Compute.Network("network", new() + /// { + /// Name = "net-spoke", + /// AutoCreateSubnetworks = false, + /// }); + /// + /// var basicHub = new Gcp.NetworkConnectivity.Hub("basic_hub", new() + /// { + /// Name = "hub1-spoke", + /// Description = "A sample hub", + /// Labels = + /// { + /// { "label-two", "value-one" }, + /// }, + /// }); + /// + /// var defaultGroup = new Gcp.NetworkConnectivity.Group("default_group", new() + /// { + /// Hub = basicHub.Id, + /// Name = "default", + /// Description = "A sample hub group", + /// }); + /// + /// var primary = new Gcp.NetworkConnectivity.Spoke("primary", new() + /// { + /// Name = "group-spoke1", + /// Location = "global", + /// Description = "A sample spoke with a linked VPC", + /// Labels = + /// { + /// { "label-one", "value-one" }, + /// }, + /// Hub = basicHub.Id, + /// LinkedVpcNetwork = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedVpcNetworkArgs + /// { + /// ExcludeExportRanges = new[] + /// { + /// "198.51.100.0/24", + /// "10.10.0.0/16", + /// }, + /// IncludeExportRanges = new[] + /// { + /// "198.51.100.0/23", + /// "10.0.0.0/8", + /// }, + /// Uri = network.SelfLink, + /// }, + /// Group = defaultGroup.Id, + /// }); + /// + /// }); + /// ``` /// ### Network Connectivity Spoke Router Appliance Basic /// /// ```csharp @@ -502,6 +564,61 @@ namespace Pulumi.Gcp.NetworkConnectivity /// /// }); /// ``` + /// ### Network Connectivity Spoke Center Group + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var network = new Gcp.Compute.Network("network", new() + /// { + /// Name = "tf-net", + /// AutoCreateSubnetworks = false, + /// }); + /// + /// var starHub = new Gcp.NetworkConnectivity.Hub("star_hub", new() + /// { + /// Name = "hub-basic", + /// PresetTopology = "STAR", + /// }); + /// + /// var centerGroup = new Gcp.NetworkConnectivity.Group("center_group", new() + /// { + /// Name = "center", + /// Hub = starHub.Id, + /// AutoAccept = new Gcp.NetworkConnectivity.Inputs.GroupAutoAcceptArgs + /// { + /// AutoAcceptProjects = new[] + /// { + /// "foo_13293", + /// "bar_40289", + /// }, + /// }, + /// }); + /// + /// var primary = new Gcp.NetworkConnectivity.Spoke("primary", new() + /// { + /// Name = "vpc-spoke", + /// Location = "global", + /// Description = "A sample spoke", + /// Labels = + /// { + /// { "label-one", "value-one" }, + /// }, + /// Hub = starHub.Id, + /// Group = centerGroup.Id, + /// LinkedVpcNetwork = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedVpcNetworkArgs + /// { + /// Uri = network.SelfLink, + /// }, + /// }); + /// + /// }); + /// ``` /// /// ## Import /// @@ -548,6 +665,12 @@ public partial class Spoke : global::Pulumi.CustomResource [Output("effectiveLabels")] public Output> EffectiveLabels { get; private set; } = null!; + /// + /// The name of the group that this spoke is associated with. + /// + [Output("group")] + public Output Group { get; private set; } = null!; + /// /// Immutable. The URI of the hub that this spoke is attached to. /// @@ -701,6 +824,12 @@ public sealed class SpokeArgs : global::Pulumi.ResourceArgs [Input("description")] public Input? Description { get; set; } + /// + /// The name of the group that this spoke is associated with. + /// + [Input("group")] + public Input? Group { get; set; } + /// /// Immutable. The URI of the hub that this spoke is attached to. /// @@ -814,6 +943,12 @@ public InputMap EffectiveLabels } } + /// + /// The name of the group that this spoke is associated with. + /// + [Input("group")] + public Input? Group { get; set; } + /// /// Immutable. The URI of the hub that this spoke is attached to. /// diff --git a/sdk/dotnet/NetworkManagement/VpcFlowLogsConfig.cs b/sdk/dotnet/NetworkManagement/VpcFlowLogsConfig.cs index 876b6dc895..d150f87557 100644 --- a/sdk/dotnet/NetworkManagement/VpcFlowLogsConfig.cs +++ b/sdk/dotnet/NetworkManagement/VpcFlowLogsConfig.cs @@ -10,6 +10,8 @@ namespace Pulumi.Gcp.NetworkManagement { /// + /// VPC Flow Logs Config is a resource that lets you configure Flow Logs for VPC, Interconnect attachments or VPN Tunnels. + /// /// ## Example Usage /// /// ### Network Management Vpc Flow Logs Config Interconnect Full diff --git a/sdk/dotnet/NetworkSecurity/Inputs/InterceptEndpointGroupAssociationLocationsDetailArgs.cs b/sdk/dotnet/NetworkSecurity/Inputs/InterceptEndpointGroupAssociationLocationsDetailArgs.cs new file mode 100644 index 0000000000..0cc1393c9b --- /dev/null +++ b/sdk/dotnet/NetworkSecurity/Inputs/InterceptEndpointGroupAssociationLocationsDetailArgs.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.NetworkSecurity.Inputs +{ + + public sealed class InterceptEndpointGroupAssociationLocationsDetailArgs : global::Pulumi.ResourceArgs + { + /// + /// The location of the Intercept Endpoint Group Association, currently restricted to `global`. + /// + /// + /// - - - + /// + [Input("location")] + public Input? Location { get; set; } + + /// + /// (Output) + /// The association state in this location. + /// Possible values: + /// STATE_UNSPECIFIED + /// ACTIVE + /// OUT_OF_SYNC + /// + [Input("state")] + public Input? State { get; set; } + + public InterceptEndpointGroupAssociationLocationsDetailArgs() + { + } + public static new InterceptEndpointGroupAssociationLocationsDetailArgs Empty => new InterceptEndpointGroupAssociationLocationsDetailArgs(); + } +} diff --git a/sdk/dotnet/NetworkSecurity/Inputs/InterceptEndpointGroupAssociationLocationsDetailGetArgs.cs b/sdk/dotnet/NetworkSecurity/Inputs/InterceptEndpointGroupAssociationLocationsDetailGetArgs.cs new file mode 100644 index 0000000000..cdd853794b --- /dev/null +++ b/sdk/dotnet/NetworkSecurity/Inputs/InterceptEndpointGroupAssociationLocationsDetailGetArgs.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.NetworkSecurity.Inputs +{ + + public sealed class InterceptEndpointGroupAssociationLocationsDetailGetArgs : global::Pulumi.ResourceArgs + { + /// + /// The location of the Intercept Endpoint Group Association, currently restricted to `global`. + /// + /// + /// - - - + /// + [Input("location")] + public Input? Location { get; set; } + + /// + /// (Output) + /// The association state in this location. + /// Possible values: + /// STATE_UNSPECIFIED + /// ACTIVE + /// OUT_OF_SYNC + /// + [Input("state")] + public Input? State { get; set; } + + public InterceptEndpointGroupAssociationLocationsDetailGetArgs() + { + } + public static new InterceptEndpointGroupAssociationLocationsDetailGetArgs Empty => new InterceptEndpointGroupAssociationLocationsDetailGetArgs(); + } +} diff --git a/sdk/dotnet/NetworkSecurity/InterceptEndpointGroup.cs b/sdk/dotnet/NetworkSecurity/InterceptEndpointGroup.cs new file mode 100644 index 0000000000..7f5bb7a539 --- /dev/null +++ b/sdk/dotnet/NetworkSecurity/InterceptEndpointGroup.cs @@ -0,0 +1,391 @@ +// *** 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.NetworkSecurity +{ + /// + /// ## Example Usage + /// + /// ### Network Security Intercept Endpoint Group Basic + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var network = new Gcp.Compute.Network("network", new() + /// { + /// Name = "example-network", + /// AutoCreateSubnetworks = false, + /// }); + /// + /// var deploymentGroup = new Gcp.NetworkSecurity.InterceptDeploymentGroup("deployment_group", new() + /// { + /// InterceptDeploymentGroupId = "example-dg", + /// Location = "global", + /// Network = network.Id, + /// }); + /// + /// var @default = new Gcp.NetworkSecurity.InterceptEndpointGroup("default", new() + /// { + /// InterceptEndpointGroupId = "example-eg", + /// Location = "global", + /// InterceptDeploymentGroup = deploymentGroup.Id, + /// Labels = + /// { + /// { "foo", "bar" }, + /// }, + /// }); + /// + /// }); + /// ``` + /// + /// ## Import + /// + /// InterceptEndpointGroup can be imported using any of these accepted formats: + /// + /// * `projects/{{project}}/locations/{{location}}/interceptEndpointGroups/{{intercept_endpoint_group_id}}` + /// + /// * `{{project}}/{{location}}/{{intercept_endpoint_group_id}}` + /// + /// * `{{location}}/{{intercept_endpoint_group_id}}` + /// + /// When using the `pulumi import` command, InterceptEndpointGroup can be imported using one of the formats above. For example: + /// + /// ```sh + /// $ pulumi import gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup default projects/{{project}}/locations/{{location}}/interceptEndpointGroups/{{intercept_endpoint_group_id}} + /// ``` + /// + /// ```sh + /// $ pulumi import gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup default {{project}}/{{location}}/{{intercept_endpoint_group_id}} + /// ``` + /// + /// ```sh + /// $ pulumi import gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup default {{location}}/{{intercept_endpoint_group_id}} + /// ``` + /// + [GcpResourceType("gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup")] + public partial class InterceptEndpointGroup : global::Pulumi.CustomResource + { + /// + /// Create time stamp. + /// + [Output("createTime")] + public Output CreateTime { get; private set; } = null!; + + /// + /// All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + /// + [Output("effectiveLabels")] + public Output> EffectiveLabels { get; private set; } = null!; + + /// + /// Immutable. The Intercept Deployment Group that this resource is connected to. Format + /// is: + /// `projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}` + /// + [Output("interceptDeploymentGroup")] + public Output InterceptDeploymentGroup { get; private set; } = null!; + + /// + /// ID of the Intercept Endpoint Group. + /// + /// + /// - - - + /// + [Output("interceptEndpointGroupId")] + public Output InterceptEndpointGroupId { get; private set; } = null!; + + /// + /// Optional. Labels as key value pairs + /// **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + /// Please refer to the field `effective_labels` for all of the labels present on the resource. + /// + [Output("labels")] + public Output?> Labels { get; private set; } = null!; + + /// + /// The location of the Intercept Endpoint Group, currently restricted to `global`. + /// + [Output("location")] + public Output Location { get; private set; } = null!; + + /// + /// Identifier. The name of the Intercept Endpoint Group. + /// + [Output("name")] + public Output Name { get; private set; } = null!; + + /// + /// The ID of the project in which the resource belongs. + /// If it is not provided, the provider project is used. + /// + [Output("project")] + public Output Project { get; private set; } = null!; + + /// + /// The combination of labels configured directly on the resource + /// and default labels configured on the provider. + /// + [Output("pulumiLabels")] + public Output> PulumiLabels { get; private set; } = null!; + + /// + /// Whether reconciling is in progress, recommended per + /// https://google.aip.dev/128. + /// + [Output("reconciling")] + public Output Reconciling { get; private set; } = null!; + + /// + /// Current state of the endpoint group. + /// Possible values: + /// STATE_UNSPECIFIED + /// ACTIVE + /// CLOSED + /// CREATING + /// DELETING + /// OUT_OF_SYNC + /// + [Output("state")] + public Output State { get; private set; } = null!; + + /// + /// Update time stamp. + /// + [Output("updateTime")] + public Output UpdateTime { get; private set; } = null!; + + + /// + /// Create a InterceptEndpointGroup 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 InterceptEndpointGroup(string name, InterceptEndpointGroupArgs args, CustomResourceOptions? options = null) + : base("gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup", name, args ?? new InterceptEndpointGroupArgs(), MakeResourceOptions(options, "")) + { + } + + private InterceptEndpointGroup(string name, Input id, InterceptEndpointGroupState? state = null, CustomResourceOptions? options = null) + : base("gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + AdditionalSecretOutputs = + { + "effectiveLabels", + "pulumiLabels", + }, + }; + 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 InterceptEndpointGroup 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 InterceptEndpointGroup Get(string name, Input id, InterceptEndpointGroupState? state = null, CustomResourceOptions? options = null) + { + return new InterceptEndpointGroup(name, id, state, options); + } + } + + public sealed class InterceptEndpointGroupArgs : global::Pulumi.ResourceArgs + { + /// + /// Immutable. The Intercept Deployment Group that this resource is connected to. Format + /// is: + /// `projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}` + /// + [Input("interceptDeploymentGroup", required: true)] + public Input InterceptDeploymentGroup { get; set; } = null!; + + /// + /// ID of the Intercept Endpoint Group. + /// + /// + /// - - - + /// + [Input("interceptEndpointGroupId", required: true)] + public Input InterceptEndpointGroupId { get; set; } = null!; + + [Input("labels")] + private InputMap? _labels; + + /// + /// Optional. Labels as key value pairs + /// **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + /// Please refer to the field `effective_labels` for all of the labels present on the resource. + /// + public InputMap Labels + { + get => _labels ?? (_labels = new InputMap()); + set => _labels = value; + } + + /// + /// The location of the Intercept Endpoint Group, currently restricted to `global`. + /// + [Input("location", required: true)] + public Input Location { get; set; } = null!; + + /// + /// The ID of the project in which the resource belongs. + /// If it is not provided, the provider project is used. + /// + [Input("project")] + public Input? Project { get; set; } + + public InterceptEndpointGroupArgs() + { + } + public static new InterceptEndpointGroupArgs Empty => new InterceptEndpointGroupArgs(); + } + + public sealed class InterceptEndpointGroupState : global::Pulumi.ResourceArgs + { + /// + /// Create time stamp. + /// + [Input("createTime")] + public Input? CreateTime { get; set; } + + [Input("effectiveLabels")] + private InputMap? _effectiveLabels; + + /// + /// All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + /// + public InputMap EffectiveLabels + { + get => _effectiveLabels ?? (_effectiveLabels = new InputMap()); + set + { + var emptySecret = Output.CreateSecret(ImmutableDictionary.Create()); + _effectiveLabels = Output.All(value, emptySecret).Apply(v => v[0]); + } + } + + /// + /// Immutable. The Intercept Deployment Group that this resource is connected to. Format + /// is: + /// `projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}` + /// + [Input("interceptDeploymentGroup")] + public Input? InterceptDeploymentGroup { get; set; } + + /// + /// ID of the Intercept Endpoint Group. + /// + /// + /// - - - + /// + [Input("interceptEndpointGroupId")] + public Input? InterceptEndpointGroupId { get; set; } + + [Input("labels")] + private InputMap? _labels; + + /// + /// Optional. Labels as key value pairs + /// **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + /// Please refer to the field `effective_labels` for all of the labels present on the resource. + /// + public InputMap Labels + { + get => _labels ?? (_labels = new InputMap()); + set => _labels = value; + } + + /// + /// The location of the Intercept Endpoint Group, currently restricted to `global`. + /// + [Input("location")] + public Input? Location { get; set; } + + /// + /// Identifier. The name of the Intercept Endpoint Group. + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// The ID of the project in which the resource belongs. + /// If it is not provided, the provider project is used. + /// + [Input("project")] + public Input? Project { get; set; } + + [Input("pulumiLabels")] + private InputMap? _pulumiLabels; + + /// + /// The combination of labels configured directly on the resource + /// and default labels configured on the provider. + /// + public InputMap PulumiLabels + { + get => _pulumiLabels ?? (_pulumiLabels = new InputMap()); + set + { + var emptySecret = Output.CreateSecret(ImmutableDictionary.Create()); + _pulumiLabels = Output.All(value, emptySecret).Apply(v => v[0]); + } + } + + /// + /// Whether reconciling is in progress, recommended per + /// https://google.aip.dev/128. + /// + [Input("reconciling")] + public Input? Reconciling { get; set; } + + /// + /// Current state of the endpoint group. + /// Possible values: + /// STATE_UNSPECIFIED + /// ACTIVE + /// CLOSED + /// CREATING + /// DELETING + /// OUT_OF_SYNC + /// + [Input("state")] + public Input? State { get; set; } + + /// + /// Update time stamp. + /// + [Input("updateTime")] + public Input? UpdateTime { get; set; } + + public InterceptEndpointGroupState() + { + } + public static new InterceptEndpointGroupState Empty => new InterceptEndpointGroupState(); + } +} diff --git a/sdk/dotnet/NetworkSecurity/InterceptEndpointGroupAssociation.cs b/sdk/dotnet/NetworkSecurity/InterceptEndpointGroupAssociation.cs new file mode 100644 index 0000000000..d75a812a6f --- /dev/null +++ b/sdk/dotnet/NetworkSecurity/InterceptEndpointGroupAssociation.cs @@ -0,0 +1,440 @@ +// *** 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.NetworkSecurity +{ + /// + /// ## Example Usage + /// + /// ### Network Security Intercept Endpoint Group Association Basic + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var producerNetwork = new Gcp.Compute.Network("producer_network", new() + /// { + /// Name = "example-prod-network", + /// AutoCreateSubnetworks = false, + /// }); + /// + /// var consumerNetwork = new Gcp.Compute.Network("consumer_network", new() + /// { + /// Name = "example-cons-network", + /// AutoCreateSubnetworks = false, + /// }); + /// + /// var deploymentGroup = new Gcp.NetworkSecurity.InterceptDeploymentGroup("deployment_group", new() + /// { + /// InterceptDeploymentGroupId = "example-dg", + /// Location = "global", + /// Network = producerNetwork.Id, + /// }); + /// + /// var endpointGroup = new Gcp.NetworkSecurity.InterceptEndpointGroup("endpoint_group", new() + /// { + /// InterceptEndpointGroupId = "example-eg", + /// Location = "global", + /// InterceptDeploymentGroup = deploymentGroup.Id, + /// }); + /// + /// var @default = new Gcp.NetworkSecurity.InterceptEndpointGroupAssociation("default", new() + /// { + /// InterceptEndpointGroupAssociationId = "example-ega", + /// Location = "global", + /// Network = consumerNetwork.Id, + /// InterceptEndpointGroup = endpointGroup.Id, + /// Labels = + /// { + /// { "foo", "bar" }, + /// }, + /// }); + /// + /// }); + /// ``` + /// + /// ## Import + /// + /// InterceptEndpointGroupAssociation can be imported using any of these accepted formats: + /// + /// * `projects/{{project}}/locations/{{location}}/interceptEndpointGroupAssociations/{{intercept_endpoint_group_association_id}}` + /// + /// * `{{project}}/{{location}}/{{intercept_endpoint_group_association_id}}` + /// + /// * `{{location}}/{{intercept_endpoint_group_association_id}}` + /// + /// When using the `pulumi import` command, InterceptEndpointGroupAssociation can be imported using one of the formats above. For example: + /// + /// ```sh + /// $ pulumi import gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation default projects/{{project}}/locations/{{location}}/interceptEndpointGroupAssociations/{{intercept_endpoint_group_association_id}} + /// ``` + /// + /// ```sh + /// $ pulumi import gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation default {{project}}/{{location}}/{{intercept_endpoint_group_association_id}} + /// ``` + /// + /// ```sh + /// $ pulumi import gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation default {{location}}/{{intercept_endpoint_group_association_id}} + /// ``` + /// + [GcpResourceType("gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation")] + public partial class InterceptEndpointGroupAssociation : global::Pulumi.CustomResource + { + /// + /// Create time stamp. + /// + [Output("createTime")] + public Output CreateTime { get; private set; } = null!; + + /// + /// All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + /// + [Output("effectiveLabels")] + public Output> EffectiveLabels { get; private set; } = null!; + + /// + /// Immutable. The Intercept Endpoint Group that this resource is connected to. Format + /// is: + /// `projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`. + /// + [Output("interceptEndpointGroup")] + public Output InterceptEndpointGroup { get; private set; } = null!; + + /// + /// ID of the Intercept Endpoint Group Association. + /// + [Output("interceptEndpointGroupAssociationId")] + public Output InterceptEndpointGroupAssociationId { get; private set; } = null!; + + /// + /// Optional. Labels as key value pairs. + /// **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + /// Please refer to the field `effective_labels` for all of the labels present on the resource. + /// + [Output("labels")] + public Output?> Labels { get; private set; } = null!; + + /// + /// The location of the Intercept Endpoint Group Association, currently restricted to `global`. + /// + /// + /// - - - + /// + [Output("location")] + public Output Location { get; private set; } = null!; + + /// + /// The list of locations that are currently supported by the associated Intercept Deployment Group and their state. + /// Structure is documented below. + /// + [Output("locationsDetails")] + public Output> LocationsDetails { get; private set; } = null!; + + /// + /// Identifier. The name of the Intercept Endpoint Group Association. + /// + [Output("name")] + public Output Name { get; private set; } = null!; + + /// + /// Immutable. The VPC network associated. Format: + /// `projects/{project}/global/networks/{network}`. + /// + [Output("network")] + public Output Network { get; private set; } = null!; + + /// + /// The ID of the project in which the resource belongs. + /// If it is not provided, the provider project is used. + /// + [Output("project")] + public Output Project { get; private set; } = null!; + + /// + /// The combination of labels configured directly on the resource + /// and default labels configured on the provider. + /// + [Output("pulumiLabels")] + public Output> PulumiLabels { get; private set; } = null!; + + /// + /// Whether reconciling is in progress. + /// + [Output("reconciling")] + public Output Reconciling { get; private set; } = null!; + + /// + /// (Output) + /// The association state in this location. + /// Possible values: + /// STATE_UNSPECIFIED + /// ACTIVE + /// OUT_OF_SYNC + /// + [Output("state")] + public Output State { get; private set; } = null!; + + /// + /// Update time stamp. + /// + [Output("updateTime")] + public Output UpdateTime { get; private set; } = null!; + + + /// + /// Create a InterceptEndpointGroupAssociation 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 InterceptEndpointGroupAssociation(string name, InterceptEndpointGroupAssociationArgs args, CustomResourceOptions? options = null) + : base("gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation", name, args ?? new InterceptEndpointGroupAssociationArgs(), MakeResourceOptions(options, "")) + { + } + + private InterceptEndpointGroupAssociation(string name, Input id, InterceptEndpointGroupAssociationState? state = null, CustomResourceOptions? options = null) + : base("gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + AdditionalSecretOutputs = + { + "effectiveLabels", + "pulumiLabels", + }, + }; + 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 InterceptEndpointGroupAssociation 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 InterceptEndpointGroupAssociation Get(string name, Input id, InterceptEndpointGroupAssociationState? state = null, CustomResourceOptions? options = null) + { + return new InterceptEndpointGroupAssociation(name, id, state, options); + } + } + + public sealed class InterceptEndpointGroupAssociationArgs : global::Pulumi.ResourceArgs + { + /// + /// Immutable. The Intercept Endpoint Group that this resource is connected to. Format + /// is: + /// `projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`. + /// + [Input("interceptEndpointGroup", required: true)] + public Input InterceptEndpointGroup { get; set; } = null!; + + /// + /// ID of the Intercept Endpoint Group Association. + /// + [Input("interceptEndpointGroupAssociationId")] + public Input? InterceptEndpointGroupAssociationId { get; set; } + + [Input("labels")] + private InputMap? _labels; + + /// + /// Optional. Labels as key value pairs. + /// **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + /// Please refer to the field `effective_labels` for all of the labels present on the resource. + /// + public InputMap Labels + { + get => _labels ?? (_labels = new InputMap()); + set => _labels = value; + } + + /// + /// The location of the Intercept Endpoint Group Association, currently restricted to `global`. + /// + /// + /// - - - + /// + [Input("location", required: true)] + public Input Location { get; set; } = null!; + + /// + /// Immutable. The VPC network associated. Format: + /// `projects/{project}/global/networks/{network}`. + /// + [Input("network", required: true)] + public Input Network { get; set; } = null!; + + /// + /// The ID of the project in which the resource belongs. + /// If it is not provided, the provider project is used. + /// + [Input("project")] + public Input? Project { get; set; } + + public InterceptEndpointGroupAssociationArgs() + { + } + public static new InterceptEndpointGroupAssociationArgs Empty => new InterceptEndpointGroupAssociationArgs(); + } + + public sealed class InterceptEndpointGroupAssociationState : global::Pulumi.ResourceArgs + { + /// + /// Create time stamp. + /// + [Input("createTime")] + public Input? CreateTime { get; set; } + + [Input("effectiveLabels")] + private InputMap? _effectiveLabels; + + /// + /// All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + /// + public InputMap EffectiveLabels + { + get => _effectiveLabels ?? (_effectiveLabels = new InputMap()); + set + { + var emptySecret = Output.CreateSecret(ImmutableDictionary.Create()); + _effectiveLabels = Output.All(value, emptySecret).Apply(v => v[0]); + } + } + + /// + /// Immutable. The Intercept Endpoint Group that this resource is connected to. Format + /// is: + /// `projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`. + /// + [Input("interceptEndpointGroup")] + public Input? InterceptEndpointGroup { get; set; } + + /// + /// ID of the Intercept Endpoint Group Association. + /// + [Input("interceptEndpointGroupAssociationId")] + public Input? InterceptEndpointGroupAssociationId { get; set; } + + [Input("labels")] + private InputMap? _labels; + + /// + /// Optional. Labels as key value pairs. + /// **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + /// Please refer to the field `effective_labels` for all of the labels present on the resource. + /// + public InputMap Labels + { + get => _labels ?? (_labels = new InputMap()); + set => _labels = value; + } + + /// + /// The location of the Intercept Endpoint Group Association, currently restricted to `global`. + /// + /// + /// - - - + /// + [Input("location")] + public Input? Location { get; set; } + + [Input("locationsDetails")] + private InputList? _locationsDetails; + + /// + /// The list of locations that are currently supported by the associated Intercept Deployment Group and their state. + /// Structure is documented below. + /// + public InputList LocationsDetails + { + get => _locationsDetails ?? (_locationsDetails = new InputList()); + set => _locationsDetails = value; + } + + /// + /// Identifier. The name of the Intercept Endpoint Group Association. + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// Immutable. The VPC network associated. Format: + /// `projects/{project}/global/networks/{network}`. + /// + [Input("network")] + public Input? Network { get; set; } + + /// + /// The ID of the project in which the resource belongs. + /// If it is not provided, the provider project is used. + /// + [Input("project")] + public Input? Project { get; set; } + + [Input("pulumiLabels")] + private InputMap? _pulumiLabels; + + /// + /// The combination of labels configured directly on the resource + /// and default labels configured on the provider. + /// + public InputMap PulumiLabels + { + get => _pulumiLabels ?? (_pulumiLabels = new InputMap()); + set + { + var emptySecret = Output.CreateSecret(ImmutableDictionary.Create()); + _pulumiLabels = Output.All(value, emptySecret).Apply(v => v[0]); + } + } + + /// + /// Whether reconciling is in progress. + /// + [Input("reconciling")] + public Input? Reconciling { get; set; } + + /// + /// (Output) + /// The association state in this location. + /// Possible values: + /// STATE_UNSPECIFIED + /// ACTIVE + /// OUT_OF_SYNC + /// + [Input("state")] + public Input? State { get; set; } + + /// + /// Update time stamp. + /// + [Input("updateTime")] + public Input? UpdateTime { get; set; } + + public InterceptEndpointGroupAssociationState() + { + } + public static new InterceptEndpointGroupAssociationState Empty => new InterceptEndpointGroupAssociationState(); + } +} diff --git a/sdk/dotnet/NetworkSecurity/Outputs/InterceptEndpointGroupAssociationLocationsDetail.cs b/sdk/dotnet/NetworkSecurity/Outputs/InterceptEndpointGroupAssociationLocationsDetail.cs new file mode 100644 index 0000000000..032b116fa2 --- /dev/null +++ b/sdk/dotnet/NetworkSecurity/Outputs/InterceptEndpointGroupAssociationLocationsDetail.cs @@ -0,0 +1,43 @@ +// *** 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.NetworkSecurity.Outputs +{ + + [OutputType] + public sealed class InterceptEndpointGroupAssociationLocationsDetail + { + /// + /// The location of the Intercept Endpoint Group Association, currently restricted to `global`. + /// + /// + /// - - - + /// + public readonly string? Location; + /// + /// (Output) + /// The association state in this location. + /// Possible values: + /// STATE_UNSPECIFIED + /// ACTIVE + /// OUT_OF_SYNC + /// + public readonly string? State; + + [OutputConstructor] + private InterceptEndpointGroupAssociationLocationsDetail( + string? location, + + string? state) + { + Location = location; + State = state; + } + } +} diff --git a/sdk/dotnet/OracleDatabase/AutonomousDatabase.cs b/sdk/dotnet/OracleDatabase/AutonomousDatabase.cs index 343e807dbd..278c95624e 100644 --- a/sdk/dotnet/OracleDatabase/AutonomousDatabase.cs +++ b/sdk/dotnet/OracleDatabase/AutonomousDatabase.cs @@ -112,7 +112,7 @@ namespace Pulumi.Gcp.OracleDatabase /// }, /// }, /// PrivateEndpointIp = "10.5.0.11", - /// PrivateEndpointLabel = "testhost", + /// PrivateEndpointLabel = "myendpoint", /// }, /// DeletionProtection = true, /// }); diff --git a/sdk/dotnet/OrgPolicy/Policy.cs b/sdk/dotnet/OrgPolicy/Policy.cs index c4389040de..4261893cef 100644 --- a/sdk/dotnet/OrgPolicy/Policy.cs +++ b/sdk/dotnet/OrgPolicy/Policy.cs @@ -184,7 +184,7 @@ namespace Pulumi.Gcp.OrgPolicy /// { /// var constraint = new Gcp.OrgPolicy.CustomConstraint("constraint", new() /// { - /// Name = "custom.disableGkeAutoUpgrade_40289", + /// Name = "custom.disableGkeAutoUpgrade_76044", /// Parent = "organizations/123456789", /// DisplayName = "Disable GKE auto upgrade", /// Description = "Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.", diff --git a/sdk/dotnet/ParallelStore/Instance.cs b/sdk/dotnet/ParallelStore/Instance.cs index 0952dea899..294c191f50 100644 --- a/sdk/dotnet/ParallelStore/Instance.cs +++ b/sdk/dotnet/ParallelStore/Instance.cs @@ -14,6 +14,68 @@ namespace Pulumi.Gcp.ParallelStore /// /// ## Example Usage /// + /// ### Parallelstore Instance Basic Beta + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var network = new Gcp.Compute.Network("network", new() + /// { + /// Name = "network", + /// AutoCreateSubnetworks = true, + /// Mtu = 8896, + /// }); + /// + /// // Create an IP address + /// var privateIpAlloc = new Gcp.Compute.GlobalAddress("private_ip_alloc", new() + /// { + /// Name = "address", + /// Purpose = "VPC_PEERING", + /// AddressType = "INTERNAL", + /// PrefixLength = 24, + /// Network = network.Id, + /// }); + /// + /// // Create a private connection + /// var @default = new Gcp.ServiceNetworking.Connection("default", new() + /// { + /// Network = network.Id, + /// Service = "servicenetworking.googleapis.com", + /// ReservedPeeringRanges = new[] + /// { + /// privateIpAlloc.Name, + /// }, + /// }); + /// + /// var instance = new Gcp.ParallelStore.Instance("instance", new() + /// { + /// InstanceId = "instance", + /// Location = "us-central1-a", + /// Description = "test instance", + /// CapacityGib = "12000", + /// Network = network.Name, + /// FileStripeLevel = "FILE_STRIPE_LEVEL_MIN", + /// DirectoryStripeLevel = "DIRECTORY_STRIPE_LEVEL_MIN", + /// DeploymentType = "SCRATCH", + /// Labels = + /// { + /// { "test", "value" }, + /// }, + /// }, new CustomResourceOptions + /// { + /// DependsOn = + /// { + /// @default, + /// }, + /// }); + /// + /// }); + /// ``` /// ### Parallelstore Instance Basic /// /// ```csharp @@ -61,6 +123,7 @@ namespace Pulumi.Gcp.ParallelStore /// Network = network.Name, /// FileStripeLevel = "FILE_STRIPE_LEVEL_MIN", /// DirectoryStripeLevel = "DIRECTORY_STRIPE_LEVEL_MIN", + /// DeploymentType = "SCRATCH", /// Labels = /// { /// { "test", "value" }, @@ -128,6 +191,16 @@ public partial class Instance : global::Pulumi.CustomResource [Output("daosVersion")] public Output DaosVersion { get; private set; } = null!; + /// + /// Parallelstore Instance deployment type. + /// Possible values: + /// DEPLOYMENT_TYPE_UNSPECIFIED + /// SCRATCH + /// PERSISTENT + /// + [Output("deploymentType")] + public Output DeploymentType { get; private set; } = null!; + /// /// The description of the instance. 2048 characters or less. /// @@ -334,6 +407,16 @@ public sealed class InstanceArgs : global::Pulumi.ResourceArgs [Input("capacityGib", required: true)] public Input CapacityGib { get; set; } = null!; + /// + /// Parallelstore Instance deployment type. + /// Possible values: + /// DEPLOYMENT_TYPE_UNSPECIFIED + /// SCRATCH + /// PERSISTENT + /// + [Input("deploymentType")] + public Input? DeploymentType { get; set; } + /// /// The description of the instance. 2048 characters or less. /// @@ -480,6 +563,16 @@ public InputList AccessPoints [Input("daosVersion")] public Input? DaosVersion { get; set; } + /// + /// Parallelstore Instance deployment type. + /// Possible values: + /// DEPLOYMENT_TYPE_UNSPECIFIED + /// SCRATCH + /// PERSISTENT + /// + [Input("deploymentType")] + public Input? DeploymentType { get; set; } + /// /// The description of the instance. 2048 characters or less. /// diff --git a/sdk/dotnet/Projects/UsageExportBucket.cs b/sdk/dotnet/Projects/UsageExportBucket.cs index 0f763d9c7d..afdc564756 100644 --- a/sdk/dotnet/Projects/UsageExportBucket.cs +++ b/sdk/dotnet/Projects/UsageExportBucket.cs @@ -10,27 +10,17 @@ namespace Pulumi.Gcp.Projects { /// - /// Allows creation and management of a Google Cloud Platform project. + /// Sets up a usage export bucket for a particular project. A usage export bucket + /// is a pre-configured GCS bucket which is set up to receive daily and monthly + /// reports of the GCE resources used. /// - /// Projects created with this resource must be associated with an Organization. - /// See the [Organization documentation](https://cloud.google.com/resource-manager/docs/quickstarts) for more details. + /// For more information see the [Docs](https://cloud.google.com/compute/docs/usage-export) + /// and for further details, the + /// [API Documentation](https://cloud.google.com/compute/docs/reference/rest/beta/projects/setUsageExportBucket). /// - /// The user or service account that is running this provider when creating a `gcp.organizations.Project` - /// resource must have `roles/resourcemanager.projectCreator` on the specified organization. See the - /// [Access Control for Organizations Using IAM](https://cloud.google.com/resource-manager/docs/access-control-org) - /// doc for more information. - /// - /// > This resource reads the specified billing account on every pulumi up and plan operation so you must have permissions on the specified billing account. - /// - /// > 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. - /// - /// > It may take a while for the attached tag bindings to be deleted after the project is scheduled to be deleted. - /// - /// To get more information about projects, see: - /// - /// * [API documentation](https://cloud.google.com/resource-manager/reference/rest/v1/projects) - /// * How-to Guides - /// * [Creating and managing projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects) + /// > **Note:** You should specify only one of these per project. If there are two or more + /// they will fight over which bucket the reports should be stored in. It is + /// safe to have multiple resources with the same backing bucket. /// /// ## Example Usage /// @@ -42,61 +32,10 @@ namespace Pulumi.Gcp.Projects /// /// return await Deployment.RunAsync(() => /// { - /// var myProject = new Gcp.Organizations.Project("my_project", new() - /// { - /// Name = "My Project", - /// ProjectId = "your-project-id", - /// OrgId = "1234567", - /// }); - /// - /// }); - /// ``` - /// - /// To create a project under a specific folder - /// - /// ```csharp - /// using System.Collections.Generic; - /// using System.Linq; - /// using Pulumi; - /// using Gcp = Pulumi.Gcp; - /// - /// return await Deployment.RunAsync(() => - /// { - /// var department1 = new Gcp.Organizations.Folder("department1", new() - /// { - /// DisplayName = "Department 1", - /// Parent = "organizations/1234567", - /// }); - /// - /// var myProject_in_a_folder = new Gcp.Organizations.Project("my_project-in-a-folder", new() - /// { - /// Name = "My Project", - /// ProjectId = "your-project-id", - /// FolderId = department1.Name, - /// }); - /// - /// }); - /// ``` - /// - /// To create a project with a tag - /// - /// ```csharp - /// using System.Collections.Generic; - /// using System.Linq; - /// using Pulumi; - /// using Gcp = Pulumi.Gcp; - /// - /// return await Deployment.RunAsync(() => - /// { - /// var myProject = new Gcp.Organizations.Project("my_project", new() + /// var usageExport = new Gcp.Projects.UsageExportBucket("usage_export", new() /// { - /// Name = "My Project", - /// ProjectId = "your-project-id", - /// OrgId = "1234567", - /// Tags = - /// { - /// { "1234567/env", "staging" }, - /// }, + /// Project = "development-project", + /// BucketName = "usage-tracking-bucket", /// }); /// /// }); @@ -104,11 +43,11 @@ namespace Pulumi.Gcp.Projects /// /// ## Import /// - /// Projects can be imported using the `project_id`, e.g. + /// A project's Usage Export Bucket can be imported using this format: /// /// * `{{project_id}}` /// - /// When using the `pulumi import` command, Projects can be imported using one of the formats above. For example: + /// When using the `pulumi import` command, NAME_HERE can be imported using one of the formats above. For example: /// /// ```sh /// $ pulumi import gcp:projects/usageExportBucket:UsageExportBucket default {{project_id}} @@ -119,6 +58,8 @@ public partial class UsageExportBucket : global::Pulumi.CustomResource { /// /// The bucket to store reports in. + /// + /// - - - /// [Output("bucketName")] public Output BucketName { get; private set; } = null!; @@ -183,6 +124,8 @@ public sealed class UsageExportBucketArgs : global::Pulumi.ResourceArgs { /// /// The bucket to store reports in. + /// + /// - - - /// [Input("bucketName", required: true)] public Input BucketName { get; set; } = null!; @@ -209,6 +152,8 @@ public sealed class UsageExportBucketState : global::Pulumi.ResourceArgs { /// /// The bucket to store reports in. + /// + /// - - - /// [Input("bucketName")] public Input? BucketName { get; set; } diff --git a/sdk/dotnet/Provider.cs b/sdk/dotnet/Provider.cs index 6c12c69290..b378bca7d8 100644 --- a/sdk/dotnet/Provider.cs +++ b/sdk/dotnet/Provider.cs @@ -99,6 +99,9 @@ public partial class Provider : global::Pulumi.ProviderResource [Output("certificateManagerCustomEndpoint")] public Output CertificateManagerCustomEndpoint { get; private set; } = null!; + [Output("chronicleCustomEndpoint")] + public Output ChronicleCustomEndpoint { get; private set; } = null!; + [Output("cloudAssetCustomEndpoint")] public Output CloudAssetCustomEndpoint { get; private set; } = null!; @@ -665,6 +668,9 @@ public Input? AccessToken [Input("certificateManagerCustomEndpoint")] public Input? CertificateManagerCustomEndpoint { get; set; } + [Input("chronicleCustomEndpoint")] + public Input? ChronicleCustomEndpoint { get; set; } + [Input("cloudAssetCustomEndpoint")] public Input? CloudAssetCustomEndpoint { get; set; } diff --git a/sdk/dotnet/PubSub/Subscription.cs b/sdk/dotnet/PubSub/Subscription.cs index 29f75cd76f..b9f4c85eab 100644 --- a/sdk/dotnet/PubSub/Subscription.cs +++ b/sdk/dotnet/PubSub/Subscription.cs @@ -400,7 +400,7 @@ namespace Pulumi.Gcp.PubSub /// { /// Bucket = example.Name, /// FilenamePrefix = "pre-", - /// FilenameSuffix = "-_33395", + /// FilenameSuffix = "-_69391", /// FilenameDatetimeFormat = "YYYY-MM-DD/hh_mm_ssZ", /// MaxBytes = 1000, /// MaxDuration = "300s", @@ -456,7 +456,7 @@ namespace Pulumi.Gcp.PubSub /// { /// Bucket = example.Name, /// FilenamePrefix = "pre-", - /// FilenameSuffix = "-_76044", + /// FilenameSuffix = "-_8270", /// FilenameDatetimeFormat = "YYYY-MM-DD/hh_mm_ssZ", /// MaxBytes = 1000, /// MaxDuration = "300s", @@ -521,7 +521,7 @@ namespace Pulumi.Gcp.PubSub /// { /// Bucket = example.Name, /// FilenamePrefix = "pre-", - /// FilenameSuffix = "-_69391", + /// FilenameSuffix = "-_41150", /// FilenameDatetimeFormat = "YYYY-MM-DD/hh_mm_ssZ", /// MaxBytes = 1000, /// MaxDuration = "300s", diff --git a/sdk/dotnet/SecureSourceManager/Instance.cs b/sdk/dotnet/SecureSourceManager/Instance.cs index 966c14b2cb..a4383f2c5e 100644 --- a/sdk/dotnet/SecureSourceManager/Instance.cs +++ b/sdk/dotnet/SecureSourceManager/Instance.cs @@ -52,23 +52,11 @@ namespace Pulumi.Gcp.SecureSourceManager /// /// return await Deployment.RunAsync(() => /// { - /// var keyRing = new Gcp.Kms.KeyRing("key_ring", new() - /// { - /// Name = "my-keyring", - /// Location = "us-central1", - /// }); - /// - /// var cryptoKey = new Gcp.Kms.CryptoKey("crypto_key", new() - /// { - /// Name = "my-key", - /// KeyRing = keyRing.Id, - /// }); - /// /// var project = Gcp.Organizations.GetProject.Invoke(); /// /// var cryptoKeyBinding = new Gcp.Kms.CryptoKeyIAMMember("crypto_key_binding", new() /// { - /// CryptoKeyId = cryptoKey.Id, + /// CryptoKeyId = "my-key", /// Role = "roles/cloudkms.cryptoKeyEncrypterDecrypter", /// Member = $"serviceAccount:service-{project.Apply(getProjectResult => getProjectResult.Number)}@gcp-sa-sourcemanager.iam.gserviceaccount.com", /// }); @@ -77,7 +65,7 @@ namespace Pulumi.Gcp.SecureSourceManager /// { /// Location = "us-central1", /// InstanceId = "my-instance", - /// KmsKey = cryptoKey.Id, + /// KmsKey = "my-key", /// }, new CustomResourceOptions /// { /// DependsOn = diff --git a/sdk/dotnet/Spanner/InstanceIAMBinding.cs b/sdk/dotnet/Spanner/InstanceIAMBinding.cs index 7395269ee8..6e3f5d64bf 100644 --- a/sdk/dotnet/Spanner/InstanceIAMBinding.cs +++ b/sdk/dotnet/Spanner/InstanceIAMBinding.cs @@ -194,6 +194,8 @@ public partial class InstanceIAMBinding : global::Pulumi.CustomResource /// * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. /// * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. /// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + /// * **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 + /// * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE /// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. /// * **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. /// @@ -280,6 +282,8 @@ public sealed class InstanceIAMBindingArgs : global::Pulumi.ResourceArgs /// * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. /// * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. /// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + /// * **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 + /// * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE /// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. /// * **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. /// @@ -337,6 +341,8 @@ public sealed class InstanceIAMBindingState : global::Pulumi.ResourceArgs /// * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. /// * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. /// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + /// * **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 + /// * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE /// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. /// * **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. /// diff --git a/sdk/dotnet/Spanner/InstanceIAMMember.cs b/sdk/dotnet/Spanner/InstanceIAMMember.cs index 64e021f1a6..c7e8872d76 100644 --- a/sdk/dotnet/Spanner/InstanceIAMMember.cs +++ b/sdk/dotnet/Spanner/InstanceIAMMember.cs @@ -194,6 +194,8 @@ public partial class InstanceIAMMember : global::Pulumi.CustomResource /// * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. /// * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. /// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + /// * **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 + /// * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE /// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. /// * **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. /// @@ -277,6 +279,8 @@ public sealed class InstanceIAMMemberArgs : global::Pulumi.ResourceArgs /// * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. /// * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. /// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + /// * **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 + /// * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE /// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. /// * **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. /// @@ -328,6 +332,8 @@ public sealed class InstanceIAMMemberState : global::Pulumi.ResourceArgs /// * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. /// * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. /// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + /// * **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 + /// * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE /// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. /// * **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. /// diff --git a/sdk/dotnet/Sql/DatabaseInstance.cs b/sdk/dotnet/Sql/DatabaseInstance.cs index ff75bcd196..0aeae5ba5a 100644 --- a/sdk/dotnet/Sql/DatabaseInstance.cs +++ b/sdk/dotnet/Sql/DatabaseInstance.cs @@ -329,7 +329,7 @@ public partial class DatabaseInstance : global::Pulumi.CustomResource /// /// The MySQL, PostgreSQL or /// SQL Server version to use. Supported values include `MYSQL_5_6`, - /// `MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, + /// `MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, /// `POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`, /// `SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`. /// `SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`, @@ -552,7 +552,7 @@ public sealed class DatabaseInstanceArgs : global::Pulumi.ResourceArgs /// /// The MySQL, PostgreSQL or /// SQL Server version to use. Supported values include `MYSQL_5_6`, - /// `MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, + /// `MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, /// `POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`, /// `SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`. /// `SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`, @@ -727,7 +727,7 @@ public InputList AvailableMaintenanceVersions /// /// The MySQL, PostgreSQL or /// SQL Server version to use. Supported values include `MYSQL_5_6`, - /// `MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, + /// `MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, /// `POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`, /// `SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`. /// `SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`, diff --git a/sdk/dotnet/Storage/Folder.cs b/sdk/dotnet/Storage/Folder.cs new file mode 100644 index 0000000000..858aef5c3d --- /dev/null +++ b/sdk/dotnet/Storage/Folder.cs @@ -0,0 +1,255 @@ +// *** 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.Storage +{ + /// + /// A Google Cloud Storage Folder. + /// + /// The Folder resource represents a folder in a Cloud Storage bucket with hierarchical namespace enabled + /// + /// To get more information about Folder, see: + /// + /// * [API documentation](https://cloud.google.com/storage/docs/json_api/v1/folders) + /// * How-to Guides + /// * [Official Documentation](https://cloud.google.com/storage/docs/folders-overview) + /// + /// ## Example Usage + /// + /// ### Storage Folder Basic + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var bucket = new Gcp.Storage.Bucket("bucket", new() + /// { + /// Name = "my-bucket", + /// Location = "EU", + /// UniformBucketLevelAccess = true, + /// HierarchicalNamespace = new Gcp.Storage.Inputs.BucketHierarchicalNamespaceArgs + /// { + /// Enabled = true, + /// }, + /// }); + /// + /// var folder = new Gcp.Storage.Folder("folder", new() + /// { + /// Bucket = bucket.Name, + /// Name = "parent-folder/", + /// }); + /// + /// var subfolder = new Gcp.Storage.Folder("subfolder", new() + /// { + /// Bucket = bucket.Name, + /// Name = folder.Name.Apply(name => $"{name}subfolder/"), + /// }); + /// + /// }); + /// ``` + /// + /// ## Import + /// + /// Folder can be imported using any of these accepted formats: + /// + /// * `{{bucket}}/folders/{{name}}` + /// + /// * `{{bucket}}/{{name}}` + /// + /// When using the `pulumi import` command, Folder can be imported using one of the formats above. For example: + /// + /// ```sh + /// $ pulumi import gcp:storage/folder:Folder default {{bucket}}/folders/{{name}} + /// ``` + /// + /// ```sh + /// $ pulumi import gcp:storage/folder:Folder default {{bucket}}/{{name}} + /// ``` + /// + [GcpResourceType("gcp:storage/folder:Folder")] + public partial class Folder : global::Pulumi.CustomResource + { + /// + /// The name of the bucket that contains the folder. + /// + [Output("bucket")] + public Output Bucket { get; private set; } = null!; + + /// + /// The timestamp at which this folder was created. + /// + [Output("createTime")] + public Output CreateTime { get; private set; } = null!; + + /// + /// If set to true, items within folder if any will be force destroyed. + /// + [Output("forceDestroy")] + public Output ForceDestroy { get; private set; } = null!; + + /// + /// The metadata generation of the folder. + /// + [Output("metageneration")] + public Output Metageneration { get; private set; } = null!; + + /// + /// The name of the folder expressed as a path. Must include + /// trailing '/'. For example, `example_dir/example_dir2/`, `example@#/`, `a-b/d-f/`. + /// + /// + /// - - - + /// + [Output("name")] + public Output Name { get; private set; } = null!; + + /// + /// The URI of the created resource. + /// + [Output("selfLink")] + public Output SelfLink { get; private set; } = null!; + + /// + /// The timestamp at which this folder was most recently updated. + /// + [Output("updateTime")] + public Output UpdateTime { get; private set; } = null!; + + + /// + /// Create a Folder 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 Folder(string name, FolderArgs args, CustomResourceOptions? options = null) + : base("gcp:storage/folder:Folder", name, args ?? new FolderArgs(), MakeResourceOptions(options, "")) + { + } + + private Folder(string name, Input id, FolderState? state = null, CustomResourceOptions? options = null) + : base("gcp:storage/folder:Folder", 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 Folder 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 Folder Get(string name, Input id, FolderState? state = null, CustomResourceOptions? options = null) + { + return new Folder(name, id, state, options); + } + } + + public sealed class FolderArgs : global::Pulumi.ResourceArgs + { + /// + /// The name of the bucket that contains the folder. + /// + [Input("bucket", required: true)] + public Input Bucket { get; set; } = null!; + + /// + /// If set to true, items within folder if any will be force destroyed. + /// + [Input("forceDestroy")] + public Input? ForceDestroy { get; set; } + + /// + /// The name of the folder expressed as a path. Must include + /// trailing '/'. For example, `example_dir/example_dir2/`, `example@#/`, `a-b/d-f/`. + /// + /// + /// - - - + /// + [Input("name")] + public Input? Name { get; set; } + + public FolderArgs() + { + } + public static new FolderArgs Empty => new FolderArgs(); + } + + public sealed class FolderState : global::Pulumi.ResourceArgs + { + /// + /// The name of the bucket that contains the folder. + /// + [Input("bucket")] + public Input? Bucket { get; set; } + + /// + /// The timestamp at which this folder was created. + /// + [Input("createTime")] + public Input? CreateTime { get; set; } + + /// + /// If set to true, items within folder if any will be force destroyed. + /// + [Input("forceDestroy")] + public Input? ForceDestroy { get; set; } + + /// + /// The metadata generation of the folder. + /// + [Input("metageneration")] + public Input? Metageneration { get; set; } + + /// + /// The name of the folder expressed as a path. Must include + /// trailing '/'. For example, `example_dir/example_dir2/`, `example@#/`, `a-b/d-f/`. + /// + /// + /// - - - + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// The URI of the created resource. + /// + [Input("selfLink")] + public Input? SelfLink { get; set; } + + /// + /// The timestamp at which this folder was most recently updated. + /// + [Input("updateTime")] + public Input? UpdateTime { get; set; } + + public FolderState() + { + } + public static new FolderState Empty => new FolderState(); + } +} diff --git a/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecArgs.cs b/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecArgs.cs new file mode 100644 index 0000000000..f7a7b8cd73 --- /dev/null +++ b/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecArgs.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.Storage.Inputs +{ + + public sealed class TransferJobReplicationSpecArgs : global::Pulumi.ResourceArgs + { + /// + /// A Google Cloud Storage data sink. Structure documented below. + /// + [Input("gcsDataSink")] + public Input? GcsDataSink { get; set; } + + /// + /// A Google Cloud Storage data source. Structure documented below. + /// + [Input("gcsDataSource")] + public Input? GcsDataSource { get; set; } + + /// + /// 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. + /// + [Input("objectConditions")] + public Input? ObjectConditions { get; set; } + + /// + /// 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. + /// + [Input("transferOptions")] + public Input? TransferOptions { get; set; } + + public TransferJobReplicationSpecArgs() + { + } + public static new TransferJobReplicationSpecArgs Empty => new TransferJobReplicationSpecArgs(); + } +} diff --git a/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecGcsDataSinkArgs.cs b/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecGcsDataSinkArgs.cs new file mode 100644 index 0000000000..7c96de39fe --- /dev/null +++ b/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecGcsDataSinkArgs.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.Storage.Inputs +{ + + public sealed class TransferJobReplicationSpecGcsDataSinkArgs : global::Pulumi.ResourceArgs + { + /// + /// Google Cloud Storage bucket name. + /// + [Input("bucketName", required: true)] + public Input BucketName { get; set; } = null!; + + /// + /// 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 '/'. + /// + [Input("path")] + public Input? Path { get; set; } + + public TransferJobReplicationSpecGcsDataSinkArgs() + { + } + public static new TransferJobReplicationSpecGcsDataSinkArgs Empty => new TransferJobReplicationSpecGcsDataSinkArgs(); + } +} diff --git a/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecGcsDataSinkGetArgs.cs b/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecGcsDataSinkGetArgs.cs new file mode 100644 index 0000000000..8aa55606cd --- /dev/null +++ b/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecGcsDataSinkGetArgs.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.Storage.Inputs +{ + + public sealed class TransferJobReplicationSpecGcsDataSinkGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Google Cloud Storage bucket name. + /// + [Input("bucketName", required: true)] + public Input BucketName { get; set; } = null!; + + /// + /// 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 '/'. + /// + [Input("path")] + public Input? Path { get; set; } + + public TransferJobReplicationSpecGcsDataSinkGetArgs() + { + } + public static new TransferJobReplicationSpecGcsDataSinkGetArgs Empty => new TransferJobReplicationSpecGcsDataSinkGetArgs(); + } +} diff --git a/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecGcsDataSourceArgs.cs b/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecGcsDataSourceArgs.cs new file mode 100644 index 0000000000..1047b489f5 --- /dev/null +++ b/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecGcsDataSourceArgs.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.Storage.Inputs +{ + + public sealed class TransferJobReplicationSpecGcsDataSourceArgs : global::Pulumi.ResourceArgs + { + /// + /// Google Cloud Storage bucket name. + /// + [Input("bucketName", required: true)] + public Input BucketName { get; set; } = null!; + + /// + /// 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 '/'. + /// + [Input("path")] + public Input? Path { get; set; } + + public TransferJobReplicationSpecGcsDataSourceArgs() + { + } + public static new TransferJobReplicationSpecGcsDataSourceArgs Empty => new TransferJobReplicationSpecGcsDataSourceArgs(); + } +} diff --git a/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecGcsDataSourceGetArgs.cs b/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecGcsDataSourceGetArgs.cs new file mode 100644 index 0000000000..2f144b6c67 --- /dev/null +++ b/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecGcsDataSourceGetArgs.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.Storage.Inputs +{ + + public sealed class TransferJobReplicationSpecGcsDataSourceGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Google Cloud Storage bucket name. + /// + [Input("bucketName", required: true)] + public Input BucketName { get; set; } = null!; + + /// + /// 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 '/'. + /// + [Input("path")] + public Input? Path { get; set; } + + public TransferJobReplicationSpecGcsDataSourceGetArgs() + { + } + public static new TransferJobReplicationSpecGcsDataSourceGetArgs Empty => new TransferJobReplicationSpecGcsDataSourceGetArgs(); + } +} diff --git a/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecGetArgs.cs b/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecGetArgs.cs new file mode 100644 index 0000000000..47df9e9c6b --- /dev/null +++ b/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecGetArgs.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.Storage.Inputs +{ + + public sealed class TransferJobReplicationSpecGetArgs : global::Pulumi.ResourceArgs + { + /// + /// A Google Cloud Storage data sink. Structure documented below. + /// + [Input("gcsDataSink")] + public Input? GcsDataSink { get; set; } + + /// + /// A Google Cloud Storage data source. Structure documented below. + /// + [Input("gcsDataSource")] + public Input? GcsDataSource { get; set; } + + /// + /// 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. + /// + [Input("objectConditions")] + public Input? ObjectConditions { get; set; } + + /// + /// 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. + /// + [Input("transferOptions")] + public Input? TransferOptions { get; set; } + + public TransferJobReplicationSpecGetArgs() + { + } + public static new TransferJobReplicationSpecGetArgs Empty => new TransferJobReplicationSpecGetArgs(); + } +} diff --git a/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecObjectConditionsArgs.cs b/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecObjectConditionsArgs.cs new file mode 100644 index 0000000000..682fcb7064 --- /dev/null +++ b/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecObjectConditionsArgs.cs @@ -0,0 +1,68 @@ +// *** 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.Storage.Inputs +{ + + public sealed class TransferJobReplicationSpecObjectConditionsArgs : global::Pulumi.ResourceArgs + { + [Input("excludePrefixes")] + private InputList? _excludePrefixes; + + /// + /// `exclude_prefixes` must follow the requirements described for `include_prefixes`. See [Requirements](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#ObjectConditions). + /// + public InputList ExcludePrefixes + { + get => _excludePrefixes ?? (_excludePrefixes = new InputList()); + set => _excludePrefixes = value; + } + + [Input("includePrefixes")] + private InputList? _includePrefixes; + + /// + /// 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). + /// + public InputList IncludePrefixes + { + get => _includePrefixes ?? (_includePrefixes = new InputList()); + set => _includePrefixes = value; + } + + /// + /// 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". + /// + [Input("lastModifiedBefore")] + public Input? LastModifiedBefore { get; set; } + + /// + /// 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". + /// + [Input("lastModifiedSince")] + public Input? LastModifiedSince { get; set; } + + /// + /// A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + /// + [Input("maxTimeElapsedSinceLastModification")] + public Input? MaxTimeElapsedSinceLastModification { get; set; } + + /// + /// A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + /// + [Input("minTimeElapsedSinceLastModification")] + public Input? MinTimeElapsedSinceLastModification { get; set; } + + public TransferJobReplicationSpecObjectConditionsArgs() + { + } + public static new TransferJobReplicationSpecObjectConditionsArgs Empty => new TransferJobReplicationSpecObjectConditionsArgs(); + } +} diff --git a/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecObjectConditionsGetArgs.cs b/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecObjectConditionsGetArgs.cs new file mode 100644 index 0000000000..8c4647b2eb --- /dev/null +++ b/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecObjectConditionsGetArgs.cs @@ -0,0 +1,68 @@ +// *** 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.Storage.Inputs +{ + + public sealed class TransferJobReplicationSpecObjectConditionsGetArgs : global::Pulumi.ResourceArgs + { + [Input("excludePrefixes")] + private InputList? _excludePrefixes; + + /// + /// `exclude_prefixes` must follow the requirements described for `include_prefixes`. See [Requirements](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#ObjectConditions). + /// + public InputList ExcludePrefixes + { + get => _excludePrefixes ?? (_excludePrefixes = new InputList()); + set => _excludePrefixes = value; + } + + [Input("includePrefixes")] + private InputList? _includePrefixes; + + /// + /// 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). + /// + public InputList IncludePrefixes + { + get => _includePrefixes ?? (_includePrefixes = new InputList()); + set => _includePrefixes = value; + } + + /// + /// 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". + /// + [Input("lastModifiedBefore")] + public Input? LastModifiedBefore { get; set; } + + /// + /// 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". + /// + [Input("lastModifiedSince")] + public Input? LastModifiedSince { get; set; } + + /// + /// A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + /// + [Input("maxTimeElapsedSinceLastModification")] + public Input? MaxTimeElapsedSinceLastModification { get; set; } + + /// + /// A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + /// + [Input("minTimeElapsedSinceLastModification")] + public Input? MinTimeElapsedSinceLastModification { get; set; } + + public TransferJobReplicationSpecObjectConditionsGetArgs() + { + } + public static new TransferJobReplicationSpecObjectConditionsGetArgs Empty => new TransferJobReplicationSpecObjectConditionsGetArgs(); + } +} diff --git a/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecTransferOptionsArgs.cs b/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecTransferOptionsArgs.cs new file mode 100644 index 0000000000..e2a2c70b4f --- /dev/null +++ b/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecTransferOptionsArgs.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.Storage.Inputs +{ + + public sealed class TransferJobReplicationSpecTransferOptionsArgs : global::Pulumi.ResourceArgs + { + /// + /// 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. + /// + [Input("deleteObjectsFromSourceAfterTransfer")] + public Input? DeleteObjectsFromSourceAfterTransfer { get; set; } + + /// + /// Whether objects that exist only in the sink should be deleted. Note that this option and + /// `delete_objects_from_source_after_transfer` are mutually exclusive. + /// + [Input("deleteObjectsUniqueInSink")] + public Input? DeleteObjectsUniqueInSink { get; set; } + + /// + /// Whether overwriting objects that already exist in the sink is allowed. + /// + [Input("overwriteObjectsAlreadyExistingInSink")] + public Input? OverwriteObjectsAlreadyExistingInSink { get; set; } + + /// + /// 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. + /// + [Input("overwriteWhen")] + public Input? OverwriteWhen { get; set; } + + public TransferJobReplicationSpecTransferOptionsArgs() + { + } + public static new TransferJobReplicationSpecTransferOptionsArgs Empty => new TransferJobReplicationSpecTransferOptionsArgs(); + } +} diff --git a/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecTransferOptionsGetArgs.cs b/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecTransferOptionsGetArgs.cs new file mode 100644 index 0000000000..70fef1332b --- /dev/null +++ b/sdk/dotnet/Storage/Inputs/TransferJobReplicationSpecTransferOptionsGetArgs.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.Storage.Inputs +{ + + public sealed class TransferJobReplicationSpecTransferOptionsGetArgs : global::Pulumi.ResourceArgs + { + /// + /// 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. + /// + [Input("deleteObjectsFromSourceAfterTransfer")] + public Input? DeleteObjectsFromSourceAfterTransfer { get; set; } + + /// + /// Whether objects that exist only in the sink should be deleted. Note that this option and + /// `delete_objects_from_source_after_transfer` are mutually exclusive. + /// + [Input("deleteObjectsUniqueInSink")] + public Input? DeleteObjectsUniqueInSink { get; set; } + + /// + /// Whether overwriting objects that already exist in the sink is allowed. + /// + [Input("overwriteObjectsAlreadyExistingInSink")] + public Input? OverwriteObjectsAlreadyExistingInSink { get; set; } + + /// + /// 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. + /// + [Input("overwriteWhen")] + public Input? OverwriteWhen { get; set; } + + public TransferJobReplicationSpecTransferOptionsGetArgs() + { + } + public static new TransferJobReplicationSpecTransferOptionsGetArgs Empty => new TransferJobReplicationSpecTransferOptionsGetArgs(); + } +} diff --git a/sdk/dotnet/Storage/Outputs/TransferJobReplicationSpec.cs b/sdk/dotnet/Storage/Outputs/TransferJobReplicationSpec.cs new file mode 100644 index 0000000000..15d0ff422c --- /dev/null +++ b/sdk/dotnet/Storage/Outputs/TransferJobReplicationSpec.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.Storage.Outputs +{ + + [OutputType] + public sealed class TransferJobReplicationSpec + { + /// + /// A Google Cloud Storage data sink. Structure documented below. + /// + public readonly Outputs.TransferJobReplicationSpecGcsDataSink? GcsDataSink; + /// + /// A Google Cloud Storage data source. Structure documented below. + /// + public readonly Outputs.TransferJobReplicationSpecGcsDataSource? GcsDataSource; + /// + /// 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. + /// + public readonly Outputs.TransferJobReplicationSpecObjectConditions? ObjectConditions; + /// + /// 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. + /// + public readonly Outputs.TransferJobReplicationSpecTransferOptions? TransferOptions; + + [OutputConstructor] + private TransferJobReplicationSpec( + Outputs.TransferJobReplicationSpecGcsDataSink? gcsDataSink, + + Outputs.TransferJobReplicationSpecGcsDataSource? gcsDataSource, + + Outputs.TransferJobReplicationSpecObjectConditions? objectConditions, + + Outputs.TransferJobReplicationSpecTransferOptions? transferOptions) + { + GcsDataSink = gcsDataSink; + GcsDataSource = gcsDataSource; + ObjectConditions = objectConditions; + TransferOptions = transferOptions; + } + } +} diff --git a/sdk/dotnet/Storage/Outputs/TransferJobReplicationSpecGcsDataSink.cs b/sdk/dotnet/Storage/Outputs/TransferJobReplicationSpecGcsDataSink.cs new file mode 100644 index 0000000000..709ea81c25 --- /dev/null +++ b/sdk/dotnet/Storage/Outputs/TransferJobReplicationSpecGcsDataSink.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.Storage.Outputs +{ + + [OutputType] + public sealed class TransferJobReplicationSpecGcsDataSink + { + /// + /// Google Cloud Storage bucket name. + /// + public readonly string BucketName; + /// + /// 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 '/'. + /// + public readonly string? Path; + + [OutputConstructor] + private TransferJobReplicationSpecGcsDataSink( + string bucketName, + + string? path) + { + BucketName = bucketName; + Path = path; + } + } +} diff --git a/sdk/dotnet/Storage/Outputs/TransferJobReplicationSpecGcsDataSource.cs b/sdk/dotnet/Storage/Outputs/TransferJobReplicationSpecGcsDataSource.cs new file mode 100644 index 0000000000..5aaab87678 --- /dev/null +++ b/sdk/dotnet/Storage/Outputs/TransferJobReplicationSpecGcsDataSource.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.Storage.Outputs +{ + + [OutputType] + public sealed class TransferJobReplicationSpecGcsDataSource + { + /// + /// Google Cloud Storage bucket name. + /// + public readonly string BucketName; + /// + /// 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 '/'. + /// + public readonly string? Path; + + [OutputConstructor] + private TransferJobReplicationSpecGcsDataSource( + string bucketName, + + string? path) + { + BucketName = bucketName; + Path = path; + } + } +} diff --git a/sdk/dotnet/Storage/Outputs/TransferJobReplicationSpecObjectConditions.cs b/sdk/dotnet/Storage/Outputs/TransferJobReplicationSpecObjectConditions.cs new file mode 100644 index 0000000000..5fce4418c1 --- /dev/null +++ b/sdk/dotnet/Storage/Outputs/TransferJobReplicationSpecObjectConditions.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.Storage.Outputs +{ + + [OutputType] + public sealed class TransferJobReplicationSpecObjectConditions + { + /// + /// `exclude_prefixes` must follow the requirements described for `include_prefixes`. See [Requirements](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#ObjectConditions). + /// + public readonly ImmutableArray ExcludePrefixes; + /// + /// 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). + /// + public readonly ImmutableArray IncludePrefixes; + /// + /// 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". + /// + public readonly string? LastModifiedBefore; + /// + /// 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". + /// + public readonly string? LastModifiedSince; + /// + /// A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + /// + public readonly string? MaxTimeElapsedSinceLastModification; + /// + /// A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + /// + public readonly string? MinTimeElapsedSinceLastModification; + + [OutputConstructor] + private TransferJobReplicationSpecObjectConditions( + ImmutableArray excludePrefixes, + + ImmutableArray includePrefixes, + + string? lastModifiedBefore, + + string? lastModifiedSince, + + string? maxTimeElapsedSinceLastModification, + + string? minTimeElapsedSinceLastModification) + { + ExcludePrefixes = excludePrefixes; + IncludePrefixes = includePrefixes; + LastModifiedBefore = lastModifiedBefore; + LastModifiedSince = lastModifiedSince; + MaxTimeElapsedSinceLastModification = maxTimeElapsedSinceLastModification; + MinTimeElapsedSinceLastModification = minTimeElapsedSinceLastModification; + } + } +} diff --git a/sdk/dotnet/Storage/Outputs/TransferJobReplicationSpecTransferOptions.cs b/sdk/dotnet/Storage/Outputs/TransferJobReplicationSpecTransferOptions.cs new file mode 100644 index 0000000000..e6353d5d6a --- /dev/null +++ b/sdk/dotnet/Storage/Outputs/TransferJobReplicationSpecTransferOptions.cs @@ -0,0 +1,50 @@ +// *** 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.Storage.Outputs +{ + + [OutputType] + public sealed class TransferJobReplicationSpecTransferOptions + { + /// + /// 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. + /// + public readonly bool? DeleteObjectsFromSourceAfterTransfer; + /// + /// Whether objects that exist only in the sink should be deleted. Note that this option and + /// `delete_objects_from_source_after_transfer` are mutually exclusive. + /// + public readonly bool? DeleteObjectsUniqueInSink; + /// + /// Whether overwriting objects that already exist in the sink is allowed. + /// + public readonly bool? OverwriteObjectsAlreadyExistingInSink; + /// + /// 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. + /// + public readonly string? OverwriteWhen; + + [OutputConstructor] + private TransferJobReplicationSpecTransferOptions( + bool? deleteObjectsFromSourceAfterTransfer, + + bool? deleteObjectsUniqueInSink, + + bool? overwriteObjectsAlreadyExistingInSink, + + string? overwriteWhen) + { + DeleteObjectsFromSourceAfterTransfer = deleteObjectsFromSourceAfterTransfer; + DeleteObjectsUniqueInSink = deleteObjectsUniqueInSink; + OverwriteObjectsAlreadyExistingInSink = overwriteObjectsAlreadyExistingInSink; + OverwriteWhen = overwriteWhen; + } + } +} diff --git a/sdk/dotnet/Storage/TransferJob.cs b/sdk/dotnet/Storage/TransferJob.cs index 18ed16126f..074478da27 100644 --- a/sdk/dotnet/Storage/TransferJob.cs +++ b/sdk/dotnet/Storage/TransferJob.cs @@ -211,6 +211,14 @@ public partial class TransferJob : global::Pulumi.CustomResource [Output("project")] public Output Project { get; private set; } = null!; + /// + /// 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. + /// + /// - - - + /// + [Output("replicationSpec")] + public Output ReplicationSpec { get; private set; } = null!; + /// /// 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. /// @@ -224,12 +232,10 @@ public partial class TransferJob : global::Pulumi.CustomResource public Output Status { get; private set; } = null!; /// - /// Transfer specification. Structure documented below. - /// - /// - - - + /// Transfer specification. Structure documented below. One of `transfer_spec`, or `replication_spec` can be specified. /// [Output("transferSpec")] - public Output TransferSpec { get; private set; } = null!; + public Output TransferSpec { get; private set; } = null!; /// @@ -308,6 +314,14 @@ public sealed class TransferJobArgs : global::Pulumi.ResourceArgs [Input("project")] public Input? Project { get; set; } + /// + /// 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. + /// + /// - - - + /// + [Input("replicationSpec")] + public Input? ReplicationSpec { get; set; } + /// /// 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. /// @@ -321,12 +335,10 @@ public sealed class TransferJobArgs : global::Pulumi.ResourceArgs public Input? Status { get; set; } /// - /// Transfer specification. Structure documented below. - /// - /// - - - + /// Transfer specification. Structure documented below. One of `transfer_spec`, or `replication_spec` can be specified. /// - [Input("transferSpec", required: true)] - public Input TransferSpec { get; set; } = null!; + [Input("transferSpec")] + public Input? TransferSpec { get; set; } public TransferJobArgs() { @@ -385,6 +397,14 @@ public sealed class TransferJobState : global::Pulumi.ResourceArgs [Input("project")] public Input? Project { get; set; } + /// + /// 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. + /// + /// - - - + /// + [Input("replicationSpec")] + public Input? ReplicationSpec { get; set; } + /// /// 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. /// @@ -398,9 +418,7 @@ public sealed class TransferJobState : global::Pulumi.ResourceArgs public Input? Status { get; set; } /// - /// Transfer specification. Structure documented below. - /// - /// - - - + /// Transfer specification. Structure documented below. One of `transfer_spec`, or `replication_spec` can be specified. /// [Input("transferSpec")] public Input? TransferSpec { get; set; } diff --git a/sdk/dotnet/Vertex/AiEndpoint.cs b/sdk/dotnet/Vertex/AiEndpoint.cs index 96d2279dd6..0703aea154 100644 --- a/sdk/dotnet/Vertex/AiEndpoint.cs +++ b/sdk/dotnet/Vertex/AiEndpoint.cs @@ -136,7 +136,7 @@ namespace Pulumi.Gcp.Vertex /// /// var endpoint = new Gcp.Vertex.AiEndpoint("endpoint", new() /// { - /// Name = "endpoint-name_8270", + /// Name = "endpoint-name_89313", /// DisplayName = "sample-endpoint", /// Description = "A sample vertex endpoint", /// Location = "us-central1", @@ -170,7 +170,7 @@ namespace Pulumi.Gcp.Vertex /// { /// var endpoint = new Gcp.Vertex.AiEndpoint("endpoint", new() /// { - /// Name = "endpoint-name_41150", + /// Name = "endpoint-name_60646", /// DisplayName = "sample-endpoint", /// Description = "A sample vertex endpoint", /// Location = "us-central1", diff --git a/sdk/dotnet/Vertex/AiFeatureOnlineStoreFeatureview.cs b/sdk/dotnet/Vertex/AiFeatureOnlineStoreFeatureview.cs index 781d80697d..d6606a01bc 100644 --- a/sdk/dotnet/Vertex/AiFeatureOnlineStoreFeatureview.cs +++ b/sdk/dotnet/Vertex/AiFeatureOnlineStoreFeatureview.cs @@ -258,8 +258,8 @@ namespace Pulumi.Gcp.Vertex /// /// var project = new Gcp.Organizations.Project("project", new() /// { - /// ProjectId = "tf-test_89313", - /// Name = "tf-test_60646", + /// ProjectId = "tf-test_9394", + /// Name = "tf-test_11380", /// OrgId = "123456789", /// BillingAccount = "000000-0000000-0000000-000000", /// DeletionPolicy = "DELETE", diff --git a/sdk/dotnet/Vertex/Inputs/AiIndexMetadataArgs.cs b/sdk/dotnet/Vertex/Inputs/AiIndexMetadataArgs.cs index 9c6a516a8a..a8655fe435 100644 --- a/sdk/dotnet/Vertex/Inputs/AiIndexMetadataArgs.cs +++ b/sdk/dotnet/Vertex/Inputs/AiIndexMetadataArgs.cs @@ -27,8 +27,8 @@ public sealed class AiIndexMetadataArgs : global::Pulumi.ResourceArgs /// The expected structure and format of the files this URI points to is /// described at https://cloud.google.com/vertex-ai/docs/matching-engine/using-matching-engine#input-data-format /// - [Input("contentsDeltaUri", required: true)] - public Input ContentsDeltaUri { get; set; } = null!; + [Input("contentsDeltaUri")] + public Input? ContentsDeltaUri { get; set; } /// /// If this field is set together with contentsDeltaUri when calling IndexService.UpdateIndex, diff --git a/sdk/dotnet/Vertex/Inputs/AiIndexMetadataGetArgs.cs b/sdk/dotnet/Vertex/Inputs/AiIndexMetadataGetArgs.cs index e9d92c0201..669b4c37a3 100644 --- a/sdk/dotnet/Vertex/Inputs/AiIndexMetadataGetArgs.cs +++ b/sdk/dotnet/Vertex/Inputs/AiIndexMetadataGetArgs.cs @@ -27,8 +27,8 @@ public sealed class AiIndexMetadataGetArgs : global::Pulumi.ResourceArgs /// The expected structure and format of the files this URI points to is /// described at https://cloud.google.com/vertex-ai/docs/matching-engine/using-matching-engine#input-data-format /// - [Input("contentsDeltaUri", required: true)] - public Input ContentsDeltaUri { get; set; } = null!; + [Input("contentsDeltaUri")] + public Input? ContentsDeltaUri { get; set; } /// /// If this field is set together with contentsDeltaUri when calling IndexService.UpdateIndex, diff --git a/sdk/dotnet/Vertex/Outputs/AiIndexMetadata.cs b/sdk/dotnet/Vertex/Outputs/AiIndexMetadata.cs index fc15728c0f..235a5794d4 100644 --- a/sdk/dotnet/Vertex/Outputs/AiIndexMetadata.cs +++ b/sdk/dotnet/Vertex/Outputs/AiIndexMetadata.cs @@ -26,7 +26,7 @@ public sealed class AiIndexMetadata /// The expected structure and format of the files this URI points to is /// described at https://cloud.google.com/vertex-ai/docs/matching-engine/using-matching-engine#input-data-format /// - public readonly string ContentsDeltaUri; + public readonly string? ContentsDeltaUri; /// /// If this field is set together with contentsDeltaUri when calling IndexService.UpdateIndex, /// then existing content of the Index will be replaced by the data from the contentsDeltaUri. @@ -37,7 +37,7 @@ public sealed class AiIndexMetadata private AiIndexMetadata( Outputs.AiIndexMetadataConfig? config, - string contentsDeltaUri, + string? contentsDeltaUri, bool? isCompleteOverwrite) { diff --git a/sdk/dotnet/Workstations/Workstation.cs b/sdk/dotnet/Workstations/Workstation.cs index 23ea9ed32c..6d713d2053 100644 --- a/sdk/dotnet/Workstations/Workstation.cs +++ b/sdk/dotnet/Workstations/Workstation.cs @@ -198,6 +198,13 @@ public partial class Workstation : global::Pulumi.CustomResource [Output("pulumiLabels")] public Output> PulumiLabels { get; private set; } = null!; + /// + /// Full resource name of the source workstation from which the workstation's persistent + /// directories will be cloned from during creation. + /// + [Output("sourceWorkstation")] + public Output SourceWorkstation { get; private set; } = null!; + /// /// Current state of the workstation. /// @@ -341,6 +348,13 @@ public InputMap Labels [Input("project")] public Input? Project { get; set; } + /// + /// Full resource name of the source workstation from which the workstation's persistent + /// directories will be cloned from during creation. + /// + [Input("sourceWorkstation")] + public Input? SourceWorkstation { get; set; } + /// /// The ID of the parent workstation cluster. /// @@ -490,6 +504,13 @@ public InputMap PulumiLabels } } + /// + /// Full resource name of the source workstation from which the workstation's persistent + /// directories will be cloned from during creation. + /// + [Input("sourceWorkstation")] + public Input? SourceWorkstation { get; set; } + /// /// Current state of the workstation. /// diff --git a/sdk/go/gcp/accesscontextmanager/pulumiTypes.go b/sdk/go/gcp/accesscontextmanager/pulumiTypes.go index 026266e9ce..d36ce6253d 100644 --- a/sdk/go/gcp/accesscontextmanager/pulumiTypes.go +++ b/sdk/go/gcp/accesscontextmanager/pulumiTypes.go @@ -922,7 +922,7 @@ func (o AccessLevelBasicConditionVpcNetworkSourceArrayOutput) Index(i pulumi.Int type AccessLevelBasicConditionVpcNetworkSourceVpcSubnetwork struct { // Required. Network name to be allowed by this Access Level. Networks of foreign organizations requires `compute.network.get` permission to be granted to caller. Network string `pulumi:"network"` - // CIDR block IP subnetwork specification. Must be IPv4. + // A list of CIDR block IP subnetwork specification. Must be IPv4. VpcIpSubnetworks []string `pulumi:"vpcIpSubnetworks"` } @@ -940,7 +940,7 @@ type AccessLevelBasicConditionVpcNetworkSourceVpcSubnetworkInput interface { type AccessLevelBasicConditionVpcNetworkSourceVpcSubnetworkArgs struct { // Required. Network name to be allowed by this Access Level. Networks of foreign organizations requires `compute.network.get` permission to be granted to caller. Network pulumi.StringInput `pulumi:"network"` - // CIDR block IP subnetwork specification. Must be IPv4. + // A list of CIDR block IP subnetwork specification. Must be IPv4. VpcIpSubnetworks pulumi.StringArrayInput `pulumi:"vpcIpSubnetworks"` } @@ -1026,7 +1026,7 @@ func (o AccessLevelBasicConditionVpcNetworkSourceVpcSubnetworkOutput) Network() return o.ApplyT(func(v AccessLevelBasicConditionVpcNetworkSourceVpcSubnetwork) string { return v.Network }).(pulumi.StringOutput) } -// CIDR block IP subnetwork specification. Must be IPv4. +// A list of CIDR block IP subnetwork specification. Must be IPv4. func (o AccessLevelBasicConditionVpcNetworkSourceVpcSubnetworkOutput) VpcIpSubnetworks() pulumi.StringArrayOutput { return o.ApplyT(func(v AccessLevelBasicConditionVpcNetworkSourceVpcSubnetwork) []string { return v.VpcIpSubnetworks }).(pulumi.StringArrayOutput) } @@ -1065,7 +1065,7 @@ func (o AccessLevelBasicConditionVpcNetworkSourceVpcSubnetworkPtrOutput) Network }).(pulumi.StringPtrOutput) } -// CIDR block IP subnetwork specification. Must be IPv4. +// A list of CIDR block IP subnetwork specification. Must be IPv4. func (o AccessLevelBasicConditionVpcNetworkSourceVpcSubnetworkPtrOutput) VpcIpSubnetworks() pulumi.StringArrayOutput { return o.ApplyT(func(v *AccessLevelBasicConditionVpcNetworkSourceVpcSubnetwork) []string { if v == nil { diff --git a/sdk/go/gcp/artifactregistry/getRepository.go b/sdk/go/gcp/artifactregistry/getRepository.go index 935e342b80..d4dd5c2647 100644 --- a/sdk/go/gcp/artifactregistry/getRepository.go +++ b/sdk/go/gcp/artifactregistry/getRepository.go @@ -74,19 +74,20 @@ type LookupRepositoryResult struct { EffectiveLabels map[string]string `pulumi:"effectiveLabels"` Format string `pulumi:"format"` // The provider-assigned unique ID for this managed resource. - Id string `pulumi:"id"` - KmsKeyName string `pulumi:"kmsKeyName"` - Labels map[string]string `pulumi:"labels"` - Location string `pulumi:"location"` - MavenConfigs []GetRepositoryMavenConfig `pulumi:"mavenConfigs"` - Mode string `pulumi:"mode"` - Name string `pulumi:"name"` - Project *string `pulumi:"project"` - PulumiLabels map[string]string `pulumi:"pulumiLabels"` - RemoteRepositoryConfigs []GetRepositoryRemoteRepositoryConfig `pulumi:"remoteRepositoryConfigs"` - RepositoryId string `pulumi:"repositoryId"` - UpdateTime string `pulumi:"updateTime"` - VirtualRepositoryConfigs []GetRepositoryVirtualRepositoryConfig `pulumi:"virtualRepositoryConfigs"` + Id string `pulumi:"id"` + KmsKeyName string `pulumi:"kmsKeyName"` + Labels map[string]string `pulumi:"labels"` + Location string `pulumi:"location"` + MavenConfigs []GetRepositoryMavenConfig `pulumi:"mavenConfigs"` + Mode string `pulumi:"mode"` + Name string `pulumi:"name"` + Project *string `pulumi:"project"` + PulumiLabels map[string]string `pulumi:"pulumiLabels"` + RemoteRepositoryConfigs []GetRepositoryRemoteRepositoryConfig `pulumi:"remoteRepositoryConfigs"` + RepositoryId string `pulumi:"repositoryId"` + UpdateTime string `pulumi:"updateTime"` + VirtualRepositoryConfigs []GetRepositoryVirtualRepositoryConfig `pulumi:"virtualRepositoryConfigs"` + VulnerabilityScanningConfigs []GetRepositoryVulnerabilityScanningConfig `pulumi:"vulnerabilityScanningConfigs"` } func LookupRepositoryOutput(ctx *pulumi.Context, args LookupRepositoryOutputArgs, opts ...pulumi.InvokeOption) LookupRepositoryResultOutput { @@ -213,6 +214,12 @@ func (o LookupRepositoryResultOutput) VirtualRepositoryConfigs() GetRepositoryVi }).(GetRepositoryVirtualRepositoryConfigArrayOutput) } +func (o LookupRepositoryResultOutput) VulnerabilityScanningConfigs() GetRepositoryVulnerabilityScanningConfigArrayOutput { + return o.ApplyT(func(v LookupRepositoryResult) []GetRepositoryVulnerabilityScanningConfig { + return v.VulnerabilityScanningConfigs + }).(GetRepositoryVulnerabilityScanningConfigArrayOutput) +} + func init() { pulumi.RegisterOutputType(LookupRepositoryResultOutput{}) } diff --git a/sdk/go/gcp/artifactregistry/pulumiTypes.go b/sdk/go/gcp/artifactregistry/pulumiTypes.go index 07acb365c5..12051ea945 100644 --- a/sdk/go/gcp/artifactregistry/pulumiTypes.go +++ b/sdk/go/gcp/artifactregistry/pulumiTypes.go @@ -4097,6 +4097,193 @@ func (o RepositoryVirtualRepositoryConfigUpstreamPolicyArrayOutput) Index(i pulu }).(RepositoryVirtualRepositoryConfigUpstreamPolicyOutput) } +type RepositoryVulnerabilityScanningConfig struct { + // This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository. + // Possible values are: `INHERITED`, `DISABLED`. + EnablementConfig *string `pulumi:"enablementConfig"` + // (Output) + // This field returns whether scanning is active for this repository. + EnablementState *string `pulumi:"enablementState"` + // (Output) + // This provides an explanation for the state of scanning on this repository. + EnablementStateReason *string `pulumi:"enablementStateReason"` +} + +// RepositoryVulnerabilityScanningConfigInput is an input type that accepts RepositoryVulnerabilityScanningConfigArgs and RepositoryVulnerabilityScanningConfigOutput values. +// You can construct a concrete instance of `RepositoryVulnerabilityScanningConfigInput` via: +// +// RepositoryVulnerabilityScanningConfigArgs{...} +type RepositoryVulnerabilityScanningConfigInput interface { + pulumi.Input + + ToRepositoryVulnerabilityScanningConfigOutput() RepositoryVulnerabilityScanningConfigOutput + ToRepositoryVulnerabilityScanningConfigOutputWithContext(context.Context) RepositoryVulnerabilityScanningConfigOutput +} + +type RepositoryVulnerabilityScanningConfigArgs struct { + // This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository. + // Possible values are: `INHERITED`, `DISABLED`. + EnablementConfig pulumi.StringPtrInput `pulumi:"enablementConfig"` + // (Output) + // This field returns whether scanning is active for this repository. + EnablementState pulumi.StringPtrInput `pulumi:"enablementState"` + // (Output) + // This provides an explanation for the state of scanning on this repository. + EnablementStateReason pulumi.StringPtrInput `pulumi:"enablementStateReason"` +} + +func (RepositoryVulnerabilityScanningConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*RepositoryVulnerabilityScanningConfig)(nil)).Elem() +} + +func (i RepositoryVulnerabilityScanningConfigArgs) ToRepositoryVulnerabilityScanningConfigOutput() RepositoryVulnerabilityScanningConfigOutput { + return i.ToRepositoryVulnerabilityScanningConfigOutputWithContext(context.Background()) +} + +func (i RepositoryVulnerabilityScanningConfigArgs) ToRepositoryVulnerabilityScanningConfigOutputWithContext(ctx context.Context) RepositoryVulnerabilityScanningConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(RepositoryVulnerabilityScanningConfigOutput) +} + +func (i RepositoryVulnerabilityScanningConfigArgs) ToRepositoryVulnerabilityScanningConfigPtrOutput() RepositoryVulnerabilityScanningConfigPtrOutput { + return i.ToRepositoryVulnerabilityScanningConfigPtrOutputWithContext(context.Background()) +} + +func (i RepositoryVulnerabilityScanningConfigArgs) ToRepositoryVulnerabilityScanningConfigPtrOutputWithContext(ctx context.Context) RepositoryVulnerabilityScanningConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(RepositoryVulnerabilityScanningConfigOutput).ToRepositoryVulnerabilityScanningConfigPtrOutputWithContext(ctx) +} + +// RepositoryVulnerabilityScanningConfigPtrInput is an input type that accepts RepositoryVulnerabilityScanningConfigArgs, RepositoryVulnerabilityScanningConfigPtr and RepositoryVulnerabilityScanningConfigPtrOutput values. +// You can construct a concrete instance of `RepositoryVulnerabilityScanningConfigPtrInput` via: +// +// RepositoryVulnerabilityScanningConfigArgs{...} +// +// or: +// +// nil +type RepositoryVulnerabilityScanningConfigPtrInput interface { + pulumi.Input + + ToRepositoryVulnerabilityScanningConfigPtrOutput() RepositoryVulnerabilityScanningConfigPtrOutput + ToRepositoryVulnerabilityScanningConfigPtrOutputWithContext(context.Context) RepositoryVulnerabilityScanningConfigPtrOutput +} + +type repositoryVulnerabilityScanningConfigPtrType RepositoryVulnerabilityScanningConfigArgs + +func RepositoryVulnerabilityScanningConfigPtr(v *RepositoryVulnerabilityScanningConfigArgs) RepositoryVulnerabilityScanningConfigPtrInput { + return (*repositoryVulnerabilityScanningConfigPtrType)(v) +} + +func (*repositoryVulnerabilityScanningConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**RepositoryVulnerabilityScanningConfig)(nil)).Elem() +} + +func (i *repositoryVulnerabilityScanningConfigPtrType) ToRepositoryVulnerabilityScanningConfigPtrOutput() RepositoryVulnerabilityScanningConfigPtrOutput { + return i.ToRepositoryVulnerabilityScanningConfigPtrOutputWithContext(context.Background()) +} + +func (i *repositoryVulnerabilityScanningConfigPtrType) ToRepositoryVulnerabilityScanningConfigPtrOutputWithContext(ctx context.Context) RepositoryVulnerabilityScanningConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(RepositoryVulnerabilityScanningConfigPtrOutput) +} + +type RepositoryVulnerabilityScanningConfigOutput struct{ *pulumi.OutputState } + +func (RepositoryVulnerabilityScanningConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*RepositoryVulnerabilityScanningConfig)(nil)).Elem() +} + +func (o RepositoryVulnerabilityScanningConfigOutput) ToRepositoryVulnerabilityScanningConfigOutput() RepositoryVulnerabilityScanningConfigOutput { + return o +} + +func (o RepositoryVulnerabilityScanningConfigOutput) ToRepositoryVulnerabilityScanningConfigOutputWithContext(ctx context.Context) RepositoryVulnerabilityScanningConfigOutput { + return o +} + +func (o RepositoryVulnerabilityScanningConfigOutput) ToRepositoryVulnerabilityScanningConfigPtrOutput() RepositoryVulnerabilityScanningConfigPtrOutput { + return o.ToRepositoryVulnerabilityScanningConfigPtrOutputWithContext(context.Background()) +} + +func (o RepositoryVulnerabilityScanningConfigOutput) ToRepositoryVulnerabilityScanningConfigPtrOutputWithContext(ctx context.Context) RepositoryVulnerabilityScanningConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v RepositoryVulnerabilityScanningConfig) *RepositoryVulnerabilityScanningConfig { + return &v + }).(RepositoryVulnerabilityScanningConfigPtrOutput) +} + +// This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository. +// Possible values are: `INHERITED`, `DISABLED`. +func (o RepositoryVulnerabilityScanningConfigOutput) EnablementConfig() pulumi.StringPtrOutput { + return o.ApplyT(func(v RepositoryVulnerabilityScanningConfig) *string { return v.EnablementConfig }).(pulumi.StringPtrOutput) +} + +// (Output) +// This field returns whether scanning is active for this repository. +func (o RepositoryVulnerabilityScanningConfigOutput) EnablementState() pulumi.StringPtrOutput { + return o.ApplyT(func(v RepositoryVulnerabilityScanningConfig) *string { return v.EnablementState }).(pulumi.StringPtrOutput) +} + +// (Output) +// This provides an explanation for the state of scanning on this repository. +func (o RepositoryVulnerabilityScanningConfigOutput) EnablementStateReason() pulumi.StringPtrOutput { + return o.ApplyT(func(v RepositoryVulnerabilityScanningConfig) *string { return v.EnablementStateReason }).(pulumi.StringPtrOutput) +} + +type RepositoryVulnerabilityScanningConfigPtrOutput struct{ *pulumi.OutputState } + +func (RepositoryVulnerabilityScanningConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**RepositoryVulnerabilityScanningConfig)(nil)).Elem() +} + +func (o RepositoryVulnerabilityScanningConfigPtrOutput) ToRepositoryVulnerabilityScanningConfigPtrOutput() RepositoryVulnerabilityScanningConfigPtrOutput { + return o +} + +func (o RepositoryVulnerabilityScanningConfigPtrOutput) ToRepositoryVulnerabilityScanningConfigPtrOutputWithContext(ctx context.Context) RepositoryVulnerabilityScanningConfigPtrOutput { + return o +} + +func (o RepositoryVulnerabilityScanningConfigPtrOutput) Elem() RepositoryVulnerabilityScanningConfigOutput { + return o.ApplyT(func(v *RepositoryVulnerabilityScanningConfig) RepositoryVulnerabilityScanningConfig { + if v != nil { + return *v + } + var ret RepositoryVulnerabilityScanningConfig + return ret + }).(RepositoryVulnerabilityScanningConfigOutput) +} + +// This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository. +// Possible values are: `INHERITED`, `DISABLED`. +func (o RepositoryVulnerabilityScanningConfigPtrOutput) EnablementConfig() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RepositoryVulnerabilityScanningConfig) *string { + if v == nil { + return nil + } + return v.EnablementConfig + }).(pulumi.StringPtrOutput) +} + +// (Output) +// This field returns whether scanning is active for this repository. +func (o RepositoryVulnerabilityScanningConfigPtrOutput) EnablementState() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RepositoryVulnerabilityScanningConfig) *string { + if v == nil { + return nil + } + return v.EnablementState + }).(pulumi.StringPtrOutput) +} + +// (Output) +// This provides an explanation for the state of scanning on this repository. +func (o RepositoryVulnerabilityScanningConfigPtrOutput) EnablementStateReason() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RepositoryVulnerabilityScanningConfig) *string { + if v == nil { + return nil + } + return v.EnablementStateReason + }).(pulumi.StringPtrOutput) +} + type GetRepositoryCleanupPolicy struct { // Policy action. Possible values: ["DELETE", "KEEP"] Action string `pulumi:"action"` @@ -6653,6 +6840,121 @@ func (o GetRepositoryVirtualRepositoryConfigUpstreamPolicyArrayOutput) Index(i p }).(GetRepositoryVirtualRepositoryConfigUpstreamPolicyOutput) } +type GetRepositoryVulnerabilityScanningConfig struct { + // This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository. Possible values: ["INHERITED", "DISABLED"] + EnablementConfig string `pulumi:"enablementConfig"` + // This field returns whether scanning is active for this repository. + EnablementState string `pulumi:"enablementState"` + // This provides an explanation for the state of scanning on this repository. + EnablementStateReason string `pulumi:"enablementStateReason"` +} + +// GetRepositoryVulnerabilityScanningConfigInput is an input type that accepts GetRepositoryVulnerabilityScanningConfigArgs and GetRepositoryVulnerabilityScanningConfigOutput values. +// You can construct a concrete instance of `GetRepositoryVulnerabilityScanningConfigInput` via: +// +// GetRepositoryVulnerabilityScanningConfigArgs{...} +type GetRepositoryVulnerabilityScanningConfigInput interface { + pulumi.Input + + ToGetRepositoryVulnerabilityScanningConfigOutput() GetRepositoryVulnerabilityScanningConfigOutput + ToGetRepositoryVulnerabilityScanningConfigOutputWithContext(context.Context) GetRepositoryVulnerabilityScanningConfigOutput +} + +type GetRepositoryVulnerabilityScanningConfigArgs struct { + // This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository. Possible values: ["INHERITED", "DISABLED"] + EnablementConfig pulumi.StringInput `pulumi:"enablementConfig"` + // This field returns whether scanning is active for this repository. + EnablementState pulumi.StringInput `pulumi:"enablementState"` + // This provides an explanation for the state of scanning on this repository. + EnablementStateReason pulumi.StringInput `pulumi:"enablementStateReason"` +} + +func (GetRepositoryVulnerabilityScanningConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetRepositoryVulnerabilityScanningConfig)(nil)).Elem() +} + +func (i GetRepositoryVulnerabilityScanningConfigArgs) ToGetRepositoryVulnerabilityScanningConfigOutput() GetRepositoryVulnerabilityScanningConfigOutput { + return i.ToGetRepositoryVulnerabilityScanningConfigOutputWithContext(context.Background()) +} + +func (i GetRepositoryVulnerabilityScanningConfigArgs) ToGetRepositoryVulnerabilityScanningConfigOutputWithContext(ctx context.Context) GetRepositoryVulnerabilityScanningConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetRepositoryVulnerabilityScanningConfigOutput) +} + +// GetRepositoryVulnerabilityScanningConfigArrayInput is an input type that accepts GetRepositoryVulnerabilityScanningConfigArray and GetRepositoryVulnerabilityScanningConfigArrayOutput values. +// You can construct a concrete instance of `GetRepositoryVulnerabilityScanningConfigArrayInput` via: +// +// GetRepositoryVulnerabilityScanningConfigArray{ GetRepositoryVulnerabilityScanningConfigArgs{...} } +type GetRepositoryVulnerabilityScanningConfigArrayInput interface { + pulumi.Input + + ToGetRepositoryVulnerabilityScanningConfigArrayOutput() GetRepositoryVulnerabilityScanningConfigArrayOutput + ToGetRepositoryVulnerabilityScanningConfigArrayOutputWithContext(context.Context) GetRepositoryVulnerabilityScanningConfigArrayOutput +} + +type GetRepositoryVulnerabilityScanningConfigArray []GetRepositoryVulnerabilityScanningConfigInput + +func (GetRepositoryVulnerabilityScanningConfigArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetRepositoryVulnerabilityScanningConfig)(nil)).Elem() +} + +func (i GetRepositoryVulnerabilityScanningConfigArray) ToGetRepositoryVulnerabilityScanningConfigArrayOutput() GetRepositoryVulnerabilityScanningConfigArrayOutput { + return i.ToGetRepositoryVulnerabilityScanningConfigArrayOutputWithContext(context.Background()) +} + +func (i GetRepositoryVulnerabilityScanningConfigArray) ToGetRepositoryVulnerabilityScanningConfigArrayOutputWithContext(ctx context.Context) GetRepositoryVulnerabilityScanningConfigArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetRepositoryVulnerabilityScanningConfigArrayOutput) +} + +type GetRepositoryVulnerabilityScanningConfigOutput struct{ *pulumi.OutputState } + +func (GetRepositoryVulnerabilityScanningConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetRepositoryVulnerabilityScanningConfig)(nil)).Elem() +} + +func (o GetRepositoryVulnerabilityScanningConfigOutput) ToGetRepositoryVulnerabilityScanningConfigOutput() GetRepositoryVulnerabilityScanningConfigOutput { + return o +} + +func (o GetRepositoryVulnerabilityScanningConfigOutput) ToGetRepositoryVulnerabilityScanningConfigOutputWithContext(ctx context.Context) GetRepositoryVulnerabilityScanningConfigOutput { + return o +} + +// This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository. Possible values: ["INHERITED", "DISABLED"] +func (o GetRepositoryVulnerabilityScanningConfigOutput) EnablementConfig() pulumi.StringOutput { + return o.ApplyT(func(v GetRepositoryVulnerabilityScanningConfig) string { return v.EnablementConfig }).(pulumi.StringOutput) +} + +// This field returns whether scanning is active for this repository. +func (o GetRepositoryVulnerabilityScanningConfigOutput) EnablementState() pulumi.StringOutput { + return o.ApplyT(func(v GetRepositoryVulnerabilityScanningConfig) string { return v.EnablementState }).(pulumi.StringOutput) +} + +// This provides an explanation for the state of scanning on this repository. +func (o GetRepositoryVulnerabilityScanningConfigOutput) EnablementStateReason() pulumi.StringOutput { + return o.ApplyT(func(v GetRepositoryVulnerabilityScanningConfig) string { return v.EnablementStateReason }).(pulumi.StringOutput) +} + +type GetRepositoryVulnerabilityScanningConfigArrayOutput struct{ *pulumi.OutputState } + +func (GetRepositoryVulnerabilityScanningConfigArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetRepositoryVulnerabilityScanningConfig)(nil)).Elem() +} + +func (o GetRepositoryVulnerabilityScanningConfigArrayOutput) ToGetRepositoryVulnerabilityScanningConfigArrayOutput() GetRepositoryVulnerabilityScanningConfigArrayOutput { + return o +} + +func (o GetRepositoryVulnerabilityScanningConfigArrayOutput) ToGetRepositoryVulnerabilityScanningConfigArrayOutputWithContext(ctx context.Context) GetRepositoryVulnerabilityScanningConfigArrayOutput { + return o +} + +func (o GetRepositoryVulnerabilityScanningConfigArrayOutput) Index(i pulumi.IntInput) GetRepositoryVulnerabilityScanningConfigOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetRepositoryVulnerabilityScanningConfig { + return vs[0].([]GetRepositoryVulnerabilityScanningConfig)[vs[1].(int)] + }).(GetRepositoryVulnerabilityScanningConfigOutput) +} + func init() { pulumi.RegisterInputType(reflect.TypeOf((*RepositoryCleanupPolicyInput)(nil)).Elem(), RepositoryCleanupPolicyArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*RepositoryCleanupPolicyArrayInput)(nil)).Elem(), RepositoryCleanupPolicyArray{}) @@ -6704,6 +7006,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*RepositoryVirtualRepositoryConfigPtrInput)(nil)).Elem(), RepositoryVirtualRepositoryConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*RepositoryVirtualRepositoryConfigUpstreamPolicyInput)(nil)).Elem(), RepositoryVirtualRepositoryConfigUpstreamPolicyArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*RepositoryVirtualRepositoryConfigUpstreamPolicyArrayInput)(nil)).Elem(), RepositoryVirtualRepositoryConfigUpstreamPolicyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*RepositoryVulnerabilityScanningConfigInput)(nil)).Elem(), RepositoryVulnerabilityScanningConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RepositoryVulnerabilityScanningConfigPtrInput)(nil)).Elem(), RepositoryVulnerabilityScanningConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryCleanupPolicyInput)(nil)).Elem(), GetRepositoryCleanupPolicyArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryCleanupPolicyArrayInput)(nil)).Elem(), GetRepositoryCleanupPolicyArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryCleanupPolicyConditionInput)(nil)).Elem(), GetRepositoryCleanupPolicyConditionArgs{}) @@ -6750,6 +7054,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryVirtualRepositoryConfigArrayInput)(nil)).Elem(), GetRepositoryVirtualRepositoryConfigArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryVirtualRepositoryConfigUpstreamPolicyInput)(nil)).Elem(), GetRepositoryVirtualRepositoryConfigUpstreamPolicyArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryVirtualRepositoryConfigUpstreamPolicyArrayInput)(nil)).Elem(), GetRepositoryVirtualRepositoryConfigUpstreamPolicyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryVulnerabilityScanningConfigInput)(nil)).Elem(), GetRepositoryVulnerabilityScanningConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetRepositoryVulnerabilityScanningConfigArrayInput)(nil)).Elem(), GetRepositoryVulnerabilityScanningConfigArray{}) pulumi.RegisterOutputType(RepositoryCleanupPolicyOutput{}) pulumi.RegisterOutputType(RepositoryCleanupPolicyArrayOutput{}) pulumi.RegisterOutputType(RepositoryCleanupPolicyConditionOutput{}) @@ -6800,6 +7106,8 @@ func init() { pulumi.RegisterOutputType(RepositoryVirtualRepositoryConfigPtrOutput{}) pulumi.RegisterOutputType(RepositoryVirtualRepositoryConfigUpstreamPolicyOutput{}) pulumi.RegisterOutputType(RepositoryVirtualRepositoryConfigUpstreamPolicyArrayOutput{}) + pulumi.RegisterOutputType(RepositoryVulnerabilityScanningConfigOutput{}) + pulumi.RegisterOutputType(RepositoryVulnerabilityScanningConfigPtrOutput{}) pulumi.RegisterOutputType(GetRepositoryCleanupPolicyOutput{}) pulumi.RegisterOutputType(GetRepositoryCleanupPolicyArrayOutput{}) pulumi.RegisterOutputType(GetRepositoryCleanupPolicyConditionOutput{}) @@ -6846,4 +7154,6 @@ func init() { pulumi.RegisterOutputType(GetRepositoryVirtualRepositoryConfigArrayOutput{}) pulumi.RegisterOutputType(GetRepositoryVirtualRepositoryConfigUpstreamPolicyOutput{}) pulumi.RegisterOutputType(GetRepositoryVirtualRepositoryConfigUpstreamPolicyArrayOutput{}) + pulumi.RegisterOutputType(GetRepositoryVulnerabilityScanningConfigOutput{}) + pulumi.RegisterOutputType(GetRepositoryVulnerabilityScanningConfigArrayOutput{}) } diff --git a/sdk/go/gcp/artifactregistry/repository.go b/sdk/go/gcp/artifactregistry/repository.go index ed52efe410..5629fb445c 100644 --- a/sdk/go/gcp/artifactregistry/repository.go +++ b/sdk/go/gcp/artifactregistry/repository.go @@ -826,6 +826,8 @@ import ( // // import ( // +// "fmt" +// // "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry" // "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" @@ -834,11 +836,11 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } -// _, err = artifactregistry.NewRepository(ctx, "upstream_repo", &artifactregistry.RepositoryArgs{ +// upstreamRepo, err := artifactregistry.NewRepository(ctx, "upstream_repo", &artifactregistry.RepositoryArgs{ // Location: pulumi.String("us-central1"), // RepositoryId: pulumi.String("example-upstream-repo"), // Description: pulumi.String("example upstream repository"), @@ -856,10 +858,12 @@ import ( // RemoteRepositoryConfig: &artifactregistry.RepositoryRemoteRepositoryConfigArgs{ // Description: pulumi.String("pull-through cache of another Artifact Registry repository by URL"), // CommonRepository: &artifactregistry.RepositoryRemoteRepositoryConfigCommonRepositoryArgs{ -// Uri: pulumi.String("https://us-central1-docker.pkg.dev//example-upstream-repo"), +// Uri: pulumi.Sprintf("https://us-central1-docker.pkg.dev/%v/example-upstream-repo", project.ProjectId), // }, // }, -// }) +// }, pulumi.DependsOn([]pulumi.Resource{ +// upstreamRepo, +// })) // if err != nil { // return err // } @@ -942,6 +946,37 @@ import ( // } // // ``` +// ### Artifact Registry Repository Vulnerability Scanning +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := artifactregistry.NewRepository(ctx, "my-repo", &artifactregistry.RepositoryArgs{ +// Location: pulumi.String("us-central1"), +// RepositoryId: pulumi.String("my-repository"), +// Description: pulumi.String("example docker repository with vulnerability scanning config"), +// Format: pulumi.String("DOCKER"), +// VulnerabilityScanningConfig: &artifactregistry.RepositoryVulnerabilityScanningConfigArgs{ +// EnablementConfig: pulumi.String("INHERITED"), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` // // ## Import // @@ -1044,6 +1079,9 @@ type Repository struct { // Configuration specific for a Virtual Repository. // Structure is documented below. VirtualRepositoryConfig RepositoryVirtualRepositoryConfigPtrOutput `pulumi:"virtualRepositoryConfig"` + // Configuration for vulnerability scanning of artifacts stored in this repository. + // Structure is documented below. + VulnerabilityScanningConfig RepositoryVulnerabilityScanningConfigOutput `pulumi:"vulnerabilityScanningConfig"` } // NewRepository registers a new resource with the given unique name, arguments, and options. @@ -1162,6 +1200,9 @@ type repositoryState struct { // Configuration specific for a Virtual Repository. // Structure is documented below. VirtualRepositoryConfig *RepositoryVirtualRepositoryConfig `pulumi:"virtualRepositoryConfig"` + // Configuration for vulnerability scanning of artifacts stored in this repository. + // Structure is documented below. + VulnerabilityScanningConfig *RepositoryVulnerabilityScanningConfig `pulumi:"vulnerabilityScanningConfig"` } type RepositoryState struct { @@ -1240,6 +1281,9 @@ type RepositoryState struct { // Configuration specific for a Virtual Repository. // Structure is documented below. VirtualRepositoryConfig RepositoryVirtualRepositoryConfigPtrInput + // Configuration for vulnerability scanning of artifacts stored in this repository. + // Structure is documented below. + VulnerabilityScanningConfig RepositoryVulnerabilityScanningConfigPtrInput } func (RepositoryState) ElementType() reflect.Type { @@ -1310,6 +1354,9 @@ type repositoryArgs struct { // Configuration specific for a Virtual Repository. // Structure is documented below. VirtualRepositoryConfig *RepositoryVirtualRepositoryConfig `pulumi:"virtualRepositoryConfig"` + // Configuration for vulnerability scanning of artifacts stored in this repository. + // Structure is documented below. + VulnerabilityScanningConfig *RepositoryVulnerabilityScanningConfig `pulumi:"vulnerabilityScanningConfig"` } // The set of arguments for constructing a Repository resource. @@ -1377,6 +1424,9 @@ type RepositoryArgs struct { // Configuration specific for a Virtual Repository. // Structure is documented below. VirtualRepositoryConfig RepositoryVirtualRepositoryConfigPtrInput + // Configuration for vulnerability scanning of artifacts stored in this repository. + // Structure is documented below. + VulnerabilityScanningConfig RepositoryVulnerabilityScanningConfigPtrInput } func (RepositoryArgs) ElementType() reflect.Type { @@ -1598,6 +1648,12 @@ func (o RepositoryOutput) VirtualRepositoryConfig() RepositoryVirtualRepositoryC return o.ApplyT(func(v *Repository) RepositoryVirtualRepositoryConfigPtrOutput { return v.VirtualRepositoryConfig }).(RepositoryVirtualRepositoryConfigPtrOutput) } +// Configuration for vulnerability scanning of artifacts stored in this repository. +// Structure is documented below. +func (o RepositoryOutput) VulnerabilityScanningConfig() RepositoryVulnerabilityScanningConfigOutput { + return o.ApplyT(func(v *Repository) RepositoryVulnerabilityScanningConfigOutput { return v.VulnerabilityScanningConfig }).(RepositoryVulnerabilityScanningConfigOutput) +} + type RepositoryArrayOutput struct{ *pulumi.OutputState } func (RepositoryArrayOutput) ElementType() reflect.Type { diff --git a/sdk/go/gcp/backupdisasterrecovery/getBackup.go b/sdk/go/gcp/backupdisasterrecovery/getBackup.go index bf1f6c0550..74cf1eaba0 100644 --- a/sdk/go/gcp/backupdisasterrecovery/getBackup.go +++ b/sdk/go/gcp/backupdisasterrecovery/getBackup.go @@ -11,6 +11,36 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) +// A Backup and DR Backup. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/backupdisasterrecovery" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := backupdisasterrecovery.GetBackup(ctx, &backupdisasterrecovery.GetBackupArgs{ +// Location: "us-central1", +// Project: "project-test", +// DataSourceId: "ds-test", +// BackupVaultId: "bv-test", +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` func GetBackup(ctx *pulumi.Context, args *GetBackupArgs, opts ...pulumi.InvokeOption) (*GetBackupResult, error) { opts = internal.PkgInvokeDefaultOpts(opts) var rv GetBackupResult @@ -23,10 +53,14 @@ func GetBackup(ctx *pulumi.Context, args *GetBackupArgs, opts ...pulumi.InvokeOp // A collection of arguments for invoking getBackup. type GetBackupArgs struct { + // The ID of the Backup Vault of the Data Source in which the Backup belongs. BackupVaultId string `pulumi:"backupVaultId"` - DataSourceId string `pulumi:"dataSourceId"` - Location string `pulumi:"location"` - Project string `pulumi:"project"` + // The ID of the Data Source in which the Backup belongs. + DataSourceId string `pulumi:"dataSourceId"` + // The location in which the Backup belongs. + Location string `pulumi:"location"` + // The Google Cloud Project in which the Backup belongs. + Project string `pulumi:"project"` } // A collection of values returned by getBackup. @@ -52,10 +86,14 @@ func GetBackupOutput(ctx *pulumi.Context, args GetBackupOutputArgs, opts ...pulu // A collection of arguments for invoking getBackup. type GetBackupOutputArgs struct { + // The ID of the Backup Vault of the Data Source in which the Backup belongs. BackupVaultId pulumi.StringInput `pulumi:"backupVaultId"` - DataSourceId pulumi.StringInput `pulumi:"dataSourceId"` - Location pulumi.StringInput `pulumi:"location"` - Project pulumi.StringInput `pulumi:"project"` + // The ID of the Data Source in which the Backup belongs. + DataSourceId pulumi.StringInput `pulumi:"dataSourceId"` + // The location in which the Backup belongs. + Location pulumi.StringInput `pulumi:"location"` + // The Google Cloud Project in which the Backup belongs. + Project pulumi.StringInput `pulumi:"project"` } func (GetBackupOutputArgs) ElementType() reflect.Type { diff --git a/sdk/go/gcp/backupdisasterrecovery/getDataSource.go b/sdk/go/gcp/backupdisasterrecovery/getDataSource.go index 9b01a7898c..15a8bc8d47 100644 --- a/sdk/go/gcp/backupdisasterrecovery/getDataSource.go +++ b/sdk/go/gcp/backupdisasterrecovery/getDataSource.go @@ -11,6 +11,36 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) +// A Backup and DR Data Source. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/backupdisasterrecovery" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := backupdisasterrecovery.GetDataSource(ctx, &backupdisasterrecovery.GetDataSourceArgs{ +// Location: "us-central1", +// Project: "project-test", +// DataSourceId: "ds-test", +// BackupVaultId: "bv-test", +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` func GetDataSource(ctx *pulumi.Context, args *GetDataSourceArgs, opts ...pulumi.InvokeOption) (*GetDataSourceResult, error) { opts = internal.PkgInvokeDefaultOpts(opts) var rv GetDataSourceResult @@ -23,10 +53,14 @@ func GetDataSource(ctx *pulumi.Context, args *GetDataSourceArgs, opts ...pulumi. // A collection of arguments for invoking getDataSource. type GetDataSourceArgs struct { + // The ID of the Backup Vault in which the Data Source belongs. BackupVaultId string `pulumi:"backupVaultId"` - DataSourceId string `pulumi:"dataSourceId"` - Location string `pulumi:"location"` - Project string `pulumi:"project"` + // The ID of the Data Source. + DataSourceId string `pulumi:"dataSourceId"` + // The location in which the Data Source belongs. + Location string `pulumi:"location"` + // The Google Cloud Project in which the Data Source belongs. + Project string `pulumi:"project"` } // A collection of values returned by getDataSource. @@ -62,10 +96,14 @@ func GetDataSourceOutput(ctx *pulumi.Context, args GetDataSourceOutputArgs, opts // A collection of arguments for invoking getDataSource. type GetDataSourceOutputArgs struct { + // The ID of the Backup Vault in which the Data Source belongs. BackupVaultId pulumi.StringInput `pulumi:"backupVaultId"` - DataSourceId pulumi.StringInput `pulumi:"dataSourceId"` - Location pulumi.StringInput `pulumi:"location"` - Project pulumi.StringInput `pulumi:"project"` + // The ID of the Data Source. + DataSourceId pulumi.StringInput `pulumi:"dataSourceId"` + // The location in which the Data Source belongs. + Location pulumi.StringInput `pulumi:"location"` + // The Google Cloud Project in which the Data Source belongs. + Project pulumi.StringInput `pulumi:"project"` } func (GetDataSourceOutputArgs) ElementType() reflect.Type { diff --git a/sdk/go/gcp/backupdisasterrecovery/pulumiTypes.go b/sdk/go/gcp/backupdisasterrecovery/pulumiTypes.go index 1376d88c6d..97cc990839 100644 --- a/sdk/go/gcp/backupdisasterrecovery/pulumiTypes.go +++ b/sdk/go/gcp/backupdisasterrecovery/pulumiTypes.go @@ -1071,11 +1071,11 @@ func (o ManagementServerNetworkArrayOutput) Index(i pulumi.IntInput) ManagementS type GetBackupBackup struct { // Id of the requesting object, Backup. BackupId string `pulumi:"backupId"` - // Name of the Backup Vault associated with Backup. + // The ID of the Backup Vault of the Data Source in which the Backup belongs. BackupVaultId string `pulumi:"backupVaultId"` - // Name of the Data Source associated with Backup. + // The ID of the Data Source in which the Backup belongs. DataSourceId string `pulumi:"dataSourceId"` - // Location of the resource. + // The location in which the Backup belongs. Location string `pulumi:"location"` // Name of the resource. Name string `pulumi:"name"` @@ -1095,11 +1095,11 @@ type GetBackupBackupInput interface { type GetBackupBackupArgs struct { // Id of the requesting object, Backup. BackupId pulumi.StringInput `pulumi:"backupId"` - // Name of the Backup Vault associated with Backup. + // The ID of the Backup Vault of the Data Source in which the Backup belongs. BackupVaultId pulumi.StringInput `pulumi:"backupVaultId"` - // Name of the Data Source associated with Backup. + // The ID of the Data Source in which the Backup belongs. DataSourceId pulumi.StringInput `pulumi:"dataSourceId"` - // Location of the resource. + // The location in which the Backup belongs. Location pulumi.StringInput `pulumi:"location"` // Name of the resource. Name pulumi.StringInput `pulumi:"name"` @@ -1161,17 +1161,17 @@ func (o GetBackupBackupOutput) BackupId() pulumi.StringOutput { return o.ApplyT(func(v GetBackupBackup) string { return v.BackupId }).(pulumi.StringOutput) } -// Name of the Backup Vault associated with Backup. +// The ID of the Backup Vault of the Data Source in which the Backup belongs. func (o GetBackupBackupOutput) BackupVaultId() pulumi.StringOutput { return o.ApplyT(func(v GetBackupBackup) string { return v.BackupVaultId }).(pulumi.StringOutput) } -// Name of the Data Source associated with Backup. +// The ID of the Data Source in which the Backup belongs. func (o GetBackupBackupOutput) DataSourceId() pulumi.StringOutput { return o.ApplyT(func(v GetBackupBackup) string { return v.DataSourceId }).(pulumi.StringOutput) } -// Location of the resource. +// The location in which the Backup belongs. func (o GetBackupBackupOutput) Location() pulumi.StringOutput { return o.ApplyT(func(v GetBackupBackup) string { return v.Location }).(pulumi.StringOutput) } @@ -2492,7 +2492,7 @@ type GetDataSourceDataSourceGcpResource struct { ComputeInstanceDataSourceProperties []GetDataSourceDataSourceGcpResourceComputeInstanceDataSourceProperty `pulumi:"computeInstanceDataSourceProperties"` // Full resource pathname URL of the source Google Cloud resource. GcpResourcename string `pulumi:"gcpResourcename"` - // Location of the resource: //"global"/"unspecified". + // The location in which the Data Source belongs. Location string `pulumi:"location"` // The type of the Google Cloud resource. Use the Unified Resource Type, // eg. compute.googleapis.com/Instance. @@ -2515,7 +2515,7 @@ type GetDataSourceDataSourceGcpResourceArgs struct { ComputeInstanceDataSourceProperties GetDataSourceDataSourceGcpResourceComputeInstanceDataSourcePropertyArrayInput `pulumi:"computeInstanceDataSourceProperties"` // Full resource pathname URL of the source Google Cloud resource. GcpResourcename pulumi.StringInput `pulumi:"gcpResourcename"` - // Location of the resource: //"global"/"unspecified". + // The location in which the Data Source belongs. Location pulumi.StringInput `pulumi:"location"` // The type of the Google Cloud resource. Use the Unified Resource Type, // eg. compute.googleapis.com/Instance. @@ -2585,7 +2585,7 @@ func (o GetDataSourceDataSourceGcpResourceOutput) GcpResourcename() pulumi.Strin return o.ApplyT(func(v GetDataSourceDataSourceGcpResource) string { return v.GcpResourcename }).(pulumi.StringOutput) } -// Location of the resource: //"global"/"unspecified". +// The location in which the Data Source belongs. func (o GetDataSourceDataSourceGcpResourceOutput) Location() pulumi.StringOutput { return o.ApplyT(func(v GetDataSourceDataSourceGcpResource) string { return v.Location }).(pulumi.StringOutput) } diff --git a/sdk/go/gcp/bigquery/datasetAccess.go b/sdk/go/gcp/bigquery/datasetAccess.go index b066b52b10..2eb10a17eb 100644 --- a/sdk/go/gcp/bigquery/datasetAccess.go +++ b/sdk/go/gcp/bigquery/datasetAccess.go @@ -252,6 +252,10 @@ type DatasetAccess struct { // Grants all resources of particular types in a particular dataset read access to the current dataset. // Structure is documented below. AuthorizedDataset DatasetAccessAuthorizedDatasetPtrOutput `pulumi:"authorizedDataset"` + // Condition for the binding. If CEL expression in this field is true, this + // access binding will be considered. + // Structure is documented below. + Condition DatasetAccessConditionPtrOutput `pulumi:"condition"` // A unique ID for this dataset, without the project name. The ID // must contain only letters (a-z, A-Z), numbers (0-9), or // underscores (_). The maximum length is 1,024 characters. @@ -340,6 +344,10 @@ type datasetAccessState struct { // Grants all resources of particular types in a particular dataset read access to the current dataset. // Structure is documented below. AuthorizedDataset *DatasetAccessAuthorizedDataset `pulumi:"authorizedDataset"` + // Condition for the binding. If CEL expression in this field is true, this + // access binding will be considered. + // Structure is documented below. + Condition *DatasetAccessCondition `pulumi:"condition"` // A unique ID for this dataset, without the project name. The ID // must contain only letters (a-z, A-Z), numbers (0-9), or // underscores (_). The maximum length is 1,024 characters. @@ -396,6 +404,10 @@ type DatasetAccessState struct { // Grants all resources of particular types in a particular dataset read access to the current dataset. // Structure is documented below. AuthorizedDataset DatasetAccessAuthorizedDatasetPtrInput + // Condition for the binding. If CEL expression in this field is true, this + // access binding will be considered. + // Structure is documented below. + Condition DatasetAccessConditionPtrInput // A unique ID for this dataset, without the project name. The ID // must contain only letters (a-z, A-Z), numbers (0-9), or // underscores (_). The maximum length is 1,024 characters. @@ -453,6 +465,10 @@ type datasetAccessArgs struct { // Grants all resources of particular types in a particular dataset read access to the current dataset. // Structure is documented below. AuthorizedDataset *DatasetAccessAuthorizedDataset `pulumi:"authorizedDataset"` + // Condition for the binding. If CEL expression in this field is true, this + // access binding will be considered. + // Structure is documented below. + Condition *DatasetAccessCondition `pulumi:"condition"` // A unique ID for this dataset, without the project name. The ID // must contain only letters (a-z, A-Z), numbers (0-9), or // underscores (_). The maximum length is 1,024 characters. @@ -507,6 +523,10 @@ type DatasetAccessArgs struct { // Grants all resources of particular types in a particular dataset read access to the current dataset. // Structure is documented below. AuthorizedDataset DatasetAccessAuthorizedDatasetPtrInput + // Condition for the binding. If CEL expression in this field is true, this + // access binding will be considered. + // Structure is documented below. + Condition DatasetAccessConditionPtrInput // A unique ID for this dataset, without the project name. The ID // must contain only letters (a-z, A-Z), numbers (0-9), or // underscores (_). The maximum length is 1,024 characters. @@ -655,6 +675,13 @@ func (o DatasetAccessOutput) AuthorizedDataset() DatasetAccessAuthorizedDatasetP return o.ApplyT(func(v *DatasetAccess) DatasetAccessAuthorizedDatasetPtrOutput { return v.AuthorizedDataset }).(DatasetAccessAuthorizedDatasetPtrOutput) } +// Condition for the binding. If CEL expression in this field is true, this +// access binding will be considered. +// Structure is documented below. +func (o DatasetAccessOutput) Condition() DatasetAccessConditionPtrOutput { + return o.ApplyT(func(v *DatasetAccess) DatasetAccessConditionPtrOutput { return v.Condition }).(DatasetAccessConditionPtrOutput) +} + // A unique ID for this dataset, without the project name. The ID // must contain only letters (a-z, A-Z), numbers (0-9), or // underscores (_). The maximum length is 1,024 characters. diff --git a/sdk/go/gcp/bigquery/job.go b/sdk/go/gcp/bigquery/job.go index bf13388a18..b0c9aeb085 100644 --- a/sdk/go/gcp/bigquery/job.go +++ b/sdk/go/gcp/bigquery/job.go @@ -453,20 +453,6 @@ import ( // if err != nil { // return err // } -// keyRing, err := kms.NewKeyRing(ctx, "key_ring", &kms.KeyRingArgs{ -// Name: pulumi.String("example-keyring"), -// Location: pulumi.String("global"), -// }) -// if err != nil { -// return err -// } -// cryptoKey, err := kms.NewCryptoKey(ctx, "crypto_key", &kms.CryptoKeyArgs{ -// Name: pulumi.String("example-key"), -// KeyRing: keyRing.ID(), -// }) -// if err != nil { -// return err -// } // project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{ // ProjectId: pulumi.StringRef("my-project-name"), // }, nil) @@ -474,7 +460,7 @@ import ( // return err // } // encryptRole, err := kms.NewCryptoKeyIAMMember(ctx, "encrypt_role", &kms.CryptoKeyIAMMemberArgs{ -// CryptoKeyId: cryptoKey.ID(), +// CryptoKeyId: pulumi.String("example-key"), // Role: pulumi.String("roles/cloudkms.cryptoKeyEncrypterDecrypter"), // Member: pulumi.Sprintf("serviceAccount:bq-%v@bigquery-encryption.iam.gserviceaccount.com", project.Number), // }) @@ -506,7 +492,7 @@ import ( // `), // // EncryptionConfiguration: &bigquery.TableEncryptionConfigurationArgs{ -// KmsKeyName: cryptoKey.ID(), +// KmsKeyName: pulumi.String("example-key"), // }, // }, pulumi.DependsOn([]pulumi.Resource{ // encryptRole, @@ -535,7 +521,7 @@ import ( // TableId: dest.TableId, // }, // DestinationEncryptionConfiguration: &bigquery.JobCopyDestinationEncryptionConfigurationArgs{ -// KmsKeyName: cryptoKey.ID(), +// KmsKeyName: pulumi.String("example-key"), // }, // }, // }, pulumi.DependsOn([]pulumi.Resource{ diff --git a/sdk/go/gcp/bigquery/pulumiTypes.go b/sdk/go/gcp/bigquery/pulumiTypes.go index c885374202..2ac768fb37 100644 --- a/sdk/go/gcp/bigquery/pulumiTypes.go +++ b/sdk/go/gcp/bigquery/pulumiTypes.go @@ -3342,6 +3342,10 @@ func (o DataTransferConfigSensitiveParamsPtrOutput) SecretAccessKey() pulumi.Str } type DatasetAccessType struct { + // Condition for the binding. If CEL expression in this field is true, this + // access binding will be considered. + // Structure is documented below. + Condition *DatasetAccessCondition `pulumi:"condition"` // Grants all resources of particular types in a particular dataset read access to the current dataset. // Structure is documented below. Dataset *DatasetAccessDataset `pulumi:"dataset"` @@ -3396,6 +3400,10 @@ type DatasetAccessTypeInput interface { } type DatasetAccessTypeArgs struct { + // Condition for the binding. If CEL expression in this field is true, this + // access binding will be considered. + // Structure is documented below. + Condition DatasetAccessConditionPtrInput `pulumi:"condition"` // Grants all resources of particular types in a particular dataset read access to the current dataset. // Structure is documented below. Dataset DatasetAccessDatasetPtrInput `pulumi:"dataset"` @@ -3489,6 +3497,13 @@ func (o DatasetAccessTypeOutput) ToDatasetAccessTypeOutputWithContext(ctx contex return o } +// Condition for the binding. If CEL expression in this field is true, this +// access binding will be considered. +// Structure is documented below. +func (o DatasetAccessTypeOutput) Condition() DatasetAccessConditionPtrOutput { + return o.ApplyT(func(v DatasetAccessType) *DatasetAccessCondition { return v.Condition }).(DatasetAccessConditionPtrOutput) +} + // Grants all resources of particular types in a particular dataset read access to the current dataset. // Structure is documented below. func (o DatasetAccessTypeOutput) Dataset() DatasetAccessDatasetPtrOutput { @@ -3896,6 +3911,212 @@ func (o DatasetAccessAuthorizedDatasetDatasetPtrOutput) ProjectId() pulumi.Strin }).(pulumi.StringPtrOutput) } +type DatasetAccessCondition struct { + // Description of the expression. This is a longer text which describes the expression, + // e.g. when hovered over it in a UI. + Description *string `pulumi:"description"` + // Textual representation of an expression in Common Expression Language syntax. + Expression string `pulumi:"expression"` + // String indicating the location of the expression for error reporting, e.g. a file + // name and a position in the file. + Location *string `pulumi:"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. + Title *string `pulumi:"title"` +} + +// DatasetAccessConditionInput is an input type that accepts DatasetAccessConditionArgs and DatasetAccessConditionOutput values. +// You can construct a concrete instance of `DatasetAccessConditionInput` via: +// +// DatasetAccessConditionArgs{...} +type DatasetAccessConditionInput interface { + pulumi.Input + + ToDatasetAccessConditionOutput() DatasetAccessConditionOutput + ToDatasetAccessConditionOutputWithContext(context.Context) DatasetAccessConditionOutput +} + +type DatasetAccessConditionArgs struct { + // Description of the expression. This is a longer text which describes the expression, + // e.g. when hovered over it in a UI. + Description pulumi.StringPtrInput `pulumi:"description"` + // Textual representation of an expression in Common Expression Language syntax. + Expression pulumi.StringInput `pulumi:"expression"` + // String indicating the location of the expression for error reporting, e.g. a file + // name and a position in the file. + Location pulumi.StringPtrInput `pulumi:"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. + Title pulumi.StringPtrInput `pulumi:"title"` +} + +func (DatasetAccessConditionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*DatasetAccessCondition)(nil)).Elem() +} + +func (i DatasetAccessConditionArgs) ToDatasetAccessConditionOutput() DatasetAccessConditionOutput { + return i.ToDatasetAccessConditionOutputWithContext(context.Background()) +} + +func (i DatasetAccessConditionArgs) ToDatasetAccessConditionOutputWithContext(ctx context.Context) DatasetAccessConditionOutput { + return pulumi.ToOutputWithContext(ctx, i).(DatasetAccessConditionOutput) +} + +func (i DatasetAccessConditionArgs) ToDatasetAccessConditionPtrOutput() DatasetAccessConditionPtrOutput { + return i.ToDatasetAccessConditionPtrOutputWithContext(context.Background()) +} + +func (i DatasetAccessConditionArgs) ToDatasetAccessConditionPtrOutputWithContext(ctx context.Context) DatasetAccessConditionPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(DatasetAccessConditionOutput).ToDatasetAccessConditionPtrOutputWithContext(ctx) +} + +// DatasetAccessConditionPtrInput is an input type that accepts DatasetAccessConditionArgs, DatasetAccessConditionPtr and DatasetAccessConditionPtrOutput values. +// You can construct a concrete instance of `DatasetAccessConditionPtrInput` via: +// +// DatasetAccessConditionArgs{...} +// +// or: +// +// nil +type DatasetAccessConditionPtrInput interface { + pulumi.Input + + ToDatasetAccessConditionPtrOutput() DatasetAccessConditionPtrOutput + ToDatasetAccessConditionPtrOutputWithContext(context.Context) DatasetAccessConditionPtrOutput +} + +type datasetAccessConditionPtrType DatasetAccessConditionArgs + +func DatasetAccessConditionPtr(v *DatasetAccessConditionArgs) DatasetAccessConditionPtrInput { + return (*datasetAccessConditionPtrType)(v) +} + +func (*datasetAccessConditionPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**DatasetAccessCondition)(nil)).Elem() +} + +func (i *datasetAccessConditionPtrType) ToDatasetAccessConditionPtrOutput() DatasetAccessConditionPtrOutput { + return i.ToDatasetAccessConditionPtrOutputWithContext(context.Background()) +} + +func (i *datasetAccessConditionPtrType) ToDatasetAccessConditionPtrOutputWithContext(ctx context.Context) DatasetAccessConditionPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(DatasetAccessConditionPtrOutput) +} + +type DatasetAccessConditionOutput struct{ *pulumi.OutputState } + +func (DatasetAccessConditionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*DatasetAccessCondition)(nil)).Elem() +} + +func (o DatasetAccessConditionOutput) ToDatasetAccessConditionOutput() DatasetAccessConditionOutput { + return o +} + +func (o DatasetAccessConditionOutput) ToDatasetAccessConditionOutputWithContext(ctx context.Context) DatasetAccessConditionOutput { + return o +} + +func (o DatasetAccessConditionOutput) ToDatasetAccessConditionPtrOutput() DatasetAccessConditionPtrOutput { + return o.ToDatasetAccessConditionPtrOutputWithContext(context.Background()) +} + +func (o DatasetAccessConditionOutput) ToDatasetAccessConditionPtrOutputWithContext(ctx context.Context) DatasetAccessConditionPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v DatasetAccessCondition) *DatasetAccessCondition { + return &v + }).(DatasetAccessConditionPtrOutput) +} + +// Description of the expression. This is a longer text which describes the expression, +// e.g. when hovered over it in a UI. +func (o DatasetAccessConditionOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v DatasetAccessCondition) *string { return v.Description }).(pulumi.StringPtrOutput) +} + +// Textual representation of an expression in Common Expression Language syntax. +func (o DatasetAccessConditionOutput) Expression() pulumi.StringOutput { + return o.ApplyT(func(v DatasetAccessCondition) string { return v.Expression }).(pulumi.StringOutput) +} + +// String indicating the location of the expression for error reporting, e.g. a file +// name and a position in the file. +func (o DatasetAccessConditionOutput) Location() pulumi.StringPtrOutput { + return o.ApplyT(func(v DatasetAccessCondition) *string { return v.Location }).(pulumi.StringPtrOutput) +} + +// 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. +func (o DatasetAccessConditionOutput) Title() pulumi.StringPtrOutput { + return o.ApplyT(func(v DatasetAccessCondition) *string { return v.Title }).(pulumi.StringPtrOutput) +} + +type DatasetAccessConditionPtrOutput struct{ *pulumi.OutputState } + +func (DatasetAccessConditionPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**DatasetAccessCondition)(nil)).Elem() +} + +func (o DatasetAccessConditionPtrOutput) ToDatasetAccessConditionPtrOutput() DatasetAccessConditionPtrOutput { + return o +} + +func (o DatasetAccessConditionPtrOutput) ToDatasetAccessConditionPtrOutputWithContext(ctx context.Context) DatasetAccessConditionPtrOutput { + return o +} + +func (o DatasetAccessConditionPtrOutput) Elem() DatasetAccessConditionOutput { + return o.ApplyT(func(v *DatasetAccessCondition) DatasetAccessCondition { + if v != nil { + return *v + } + var ret DatasetAccessCondition + return ret + }).(DatasetAccessConditionOutput) +} + +// Description of the expression. This is a longer text which describes the expression, +// e.g. when hovered over it in a UI. +func (o DatasetAccessConditionPtrOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v *DatasetAccessCondition) *string { + if v == nil { + return nil + } + return v.Description + }).(pulumi.StringPtrOutput) +} + +// Textual representation of an expression in Common Expression Language syntax. +func (o DatasetAccessConditionPtrOutput) Expression() pulumi.StringPtrOutput { + return o.ApplyT(func(v *DatasetAccessCondition) *string { + if v == nil { + return nil + } + return &v.Expression + }).(pulumi.StringPtrOutput) +} + +// String indicating the location of the expression for error reporting, e.g. a file +// name and a position in the file. +func (o DatasetAccessConditionPtrOutput) Location() pulumi.StringPtrOutput { + return o.ApplyT(func(v *DatasetAccessCondition) *string { + if v == nil { + return nil + } + return v.Location + }).(pulumi.StringPtrOutput) +} + +// 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. +func (o DatasetAccessConditionPtrOutput) Title() pulumi.StringPtrOutput { + return o.ApplyT(func(v *DatasetAccessCondition) *string { + if v == nil { + return nil + } + return v.Title + }).(pulumi.StringPtrOutput) +} + type DatasetAccessDataset struct { // The dataset this entry applies to // Structure is documented below. @@ -11547,6 +11768,558 @@ func (o TableEncryptionConfigurationPtrOutput) KmsKeyVersion() pulumi.StringPtrO }).(pulumi.StringPtrOutput) } +type TableExternalCatalogTableOptions struct { + // 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 connectionId can have the form .. or projects//locations//connections/. + ConnectionId *string `pulumi:"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. + Parameters map[string]string `pulumi:"parameters"` + // A storage descriptor containing information about the physical storage of this table. + StorageDescriptor *TableExternalCatalogTableOptionsStorageDescriptor `pulumi:"storageDescriptor"` +} + +// TableExternalCatalogTableOptionsInput is an input type that accepts TableExternalCatalogTableOptionsArgs and TableExternalCatalogTableOptionsOutput values. +// You can construct a concrete instance of `TableExternalCatalogTableOptionsInput` via: +// +// TableExternalCatalogTableOptionsArgs{...} +type TableExternalCatalogTableOptionsInput interface { + pulumi.Input + + ToTableExternalCatalogTableOptionsOutput() TableExternalCatalogTableOptionsOutput + ToTableExternalCatalogTableOptionsOutputWithContext(context.Context) TableExternalCatalogTableOptionsOutput +} + +type TableExternalCatalogTableOptionsArgs struct { + // 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 connectionId can have the form .. or projects//locations//connections/. + ConnectionId pulumi.StringPtrInput `pulumi:"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. + Parameters pulumi.StringMapInput `pulumi:"parameters"` + // A storage descriptor containing information about the physical storage of this table. + StorageDescriptor TableExternalCatalogTableOptionsStorageDescriptorPtrInput `pulumi:"storageDescriptor"` +} + +func (TableExternalCatalogTableOptionsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TableExternalCatalogTableOptions)(nil)).Elem() +} + +func (i TableExternalCatalogTableOptionsArgs) ToTableExternalCatalogTableOptionsOutput() TableExternalCatalogTableOptionsOutput { + return i.ToTableExternalCatalogTableOptionsOutputWithContext(context.Background()) +} + +func (i TableExternalCatalogTableOptionsArgs) ToTableExternalCatalogTableOptionsOutputWithContext(ctx context.Context) TableExternalCatalogTableOptionsOutput { + return pulumi.ToOutputWithContext(ctx, i).(TableExternalCatalogTableOptionsOutput) +} + +func (i TableExternalCatalogTableOptionsArgs) ToTableExternalCatalogTableOptionsPtrOutput() TableExternalCatalogTableOptionsPtrOutput { + return i.ToTableExternalCatalogTableOptionsPtrOutputWithContext(context.Background()) +} + +func (i TableExternalCatalogTableOptionsArgs) ToTableExternalCatalogTableOptionsPtrOutputWithContext(ctx context.Context) TableExternalCatalogTableOptionsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TableExternalCatalogTableOptionsOutput).ToTableExternalCatalogTableOptionsPtrOutputWithContext(ctx) +} + +// TableExternalCatalogTableOptionsPtrInput is an input type that accepts TableExternalCatalogTableOptionsArgs, TableExternalCatalogTableOptionsPtr and TableExternalCatalogTableOptionsPtrOutput values. +// You can construct a concrete instance of `TableExternalCatalogTableOptionsPtrInput` via: +// +// TableExternalCatalogTableOptionsArgs{...} +// +// or: +// +// nil +type TableExternalCatalogTableOptionsPtrInput interface { + pulumi.Input + + ToTableExternalCatalogTableOptionsPtrOutput() TableExternalCatalogTableOptionsPtrOutput + ToTableExternalCatalogTableOptionsPtrOutputWithContext(context.Context) TableExternalCatalogTableOptionsPtrOutput +} + +type tableExternalCatalogTableOptionsPtrType TableExternalCatalogTableOptionsArgs + +func TableExternalCatalogTableOptionsPtr(v *TableExternalCatalogTableOptionsArgs) TableExternalCatalogTableOptionsPtrInput { + return (*tableExternalCatalogTableOptionsPtrType)(v) +} + +func (*tableExternalCatalogTableOptionsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TableExternalCatalogTableOptions)(nil)).Elem() +} + +func (i *tableExternalCatalogTableOptionsPtrType) ToTableExternalCatalogTableOptionsPtrOutput() TableExternalCatalogTableOptionsPtrOutput { + return i.ToTableExternalCatalogTableOptionsPtrOutputWithContext(context.Background()) +} + +func (i *tableExternalCatalogTableOptionsPtrType) ToTableExternalCatalogTableOptionsPtrOutputWithContext(ctx context.Context) TableExternalCatalogTableOptionsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TableExternalCatalogTableOptionsPtrOutput) +} + +type TableExternalCatalogTableOptionsOutput struct{ *pulumi.OutputState } + +func (TableExternalCatalogTableOptionsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TableExternalCatalogTableOptions)(nil)).Elem() +} + +func (o TableExternalCatalogTableOptionsOutput) ToTableExternalCatalogTableOptionsOutput() TableExternalCatalogTableOptionsOutput { + return o +} + +func (o TableExternalCatalogTableOptionsOutput) ToTableExternalCatalogTableOptionsOutputWithContext(ctx context.Context) TableExternalCatalogTableOptionsOutput { + return o +} + +func (o TableExternalCatalogTableOptionsOutput) ToTableExternalCatalogTableOptionsPtrOutput() TableExternalCatalogTableOptionsPtrOutput { + return o.ToTableExternalCatalogTableOptionsPtrOutputWithContext(context.Background()) +} + +func (o TableExternalCatalogTableOptionsOutput) ToTableExternalCatalogTableOptionsPtrOutputWithContext(ctx context.Context) TableExternalCatalogTableOptionsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TableExternalCatalogTableOptions) *TableExternalCatalogTableOptions { + return &v + }).(TableExternalCatalogTableOptionsPtrOutput) +} + +// 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 connectionId can have the form .. or projects//locations//connections/. +func (o TableExternalCatalogTableOptionsOutput) ConnectionId() pulumi.StringPtrOutput { + return o.ApplyT(func(v TableExternalCatalogTableOptions) *string { return v.ConnectionId }).(pulumi.StringPtrOutput) +} + +// 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. +func (o TableExternalCatalogTableOptionsOutput) Parameters() pulumi.StringMapOutput { + return o.ApplyT(func(v TableExternalCatalogTableOptions) map[string]string { return v.Parameters }).(pulumi.StringMapOutput) +} + +// A storage descriptor containing information about the physical storage of this table. +func (o TableExternalCatalogTableOptionsOutput) StorageDescriptor() TableExternalCatalogTableOptionsStorageDescriptorPtrOutput { + return o.ApplyT(func(v TableExternalCatalogTableOptions) *TableExternalCatalogTableOptionsStorageDescriptor { + return v.StorageDescriptor + }).(TableExternalCatalogTableOptionsStorageDescriptorPtrOutput) +} + +type TableExternalCatalogTableOptionsPtrOutput struct{ *pulumi.OutputState } + +func (TableExternalCatalogTableOptionsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TableExternalCatalogTableOptions)(nil)).Elem() +} + +func (o TableExternalCatalogTableOptionsPtrOutput) ToTableExternalCatalogTableOptionsPtrOutput() TableExternalCatalogTableOptionsPtrOutput { + return o +} + +func (o TableExternalCatalogTableOptionsPtrOutput) ToTableExternalCatalogTableOptionsPtrOutputWithContext(ctx context.Context) TableExternalCatalogTableOptionsPtrOutput { + return o +} + +func (o TableExternalCatalogTableOptionsPtrOutput) Elem() TableExternalCatalogTableOptionsOutput { + return o.ApplyT(func(v *TableExternalCatalogTableOptions) TableExternalCatalogTableOptions { + if v != nil { + return *v + } + var ret TableExternalCatalogTableOptions + return ret + }).(TableExternalCatalogTableOptionsOutput) +} + +// 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 connectionId can have the form .. or projects//locations//connections/. +func (o TableExternalCatalogTableOptionsPtrOutput) ConnectionId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TableExternalCatalogTableOptions) *string { + if v == nil { + return nil + } + return v.ConnectionId + }).(pulumi.StringPtrOutput) +} + +// 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. +func (o TableExternalCatalogTableOptionsPtrOutput) Parameters() pulumi.StringMapOutput { + return o.ApplyT(func(v *TableExternalCatalogTableOptions) map[string]string { + if v == nil { + return nil + } + return v.Parameters + }).(pulumi.StringMapOutput) +} + +// A storage descriptor containing information about the physical storage of this table. +func (o TableExternalCatalogTableOptionsPtrOutput) StorageDescriptor() TableExternalCatalogTableOptionsStorageDescriptorPtrOutput { + return o.ApplyT(func(v *TableExternalCatalogTableOptions) *TableExternalCatalogTableOptionsStorageDescriptor { + if v == nil { + return nil + } + return v.StorageDescriptor + }).(TableExternalCatalogTableOptionsStorageDescriptorPtrOutput) +} + +type TableExternalCatalogTableOptionsStorageDescriptor struct { + // 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. + InputFormat *string `pulumi:"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. + LocationUri *string `pulumi:"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. + OutputFormat *string `pulumi:"outputFormat"` + // Serializer and deserializer information. + SerdeInfo *TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo `pulumi:"serdeInfo"` +} + +// TableExternalCatalogTableOptionsStorageDescriptorInput is an input type that accepts TableExternalCatalogTableOptionsStorageDescriptorArgs and TableExternalCatalogTableOptionsStorageDescriptorOutput values. +// You can construct a concrete instance of `TableExternalCatalogTableOptionsStorageDescriptorInput` via: +// +// TableExternalCatalogTableOptionsStorageDescriptorArgs{...} +type TableExternalCatalogTableOptionsStorageDescriptorInput interface { + pulumi.Input + + ToTableExternalCatalogTableOptionsStorageDescriptorOutput() TableExternalCatalogTableOptionsStorageDescriptorOutput + ToTableExternalCatalogTableOptionsStorageDescriptorOutputWithContext(context.Context) TableExternalCatalogTableOptionsStorageDescriptorOutput +} + +type TableExternalCatalogTableOptionsStorageDescriptorArgs struct { + // 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. + InputFormat pulumi.StringPtrInput `pulumi:"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. + LocationUri pulumi.StringPtrInput `pulumi:"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. + OutputFormat pulumi.StringPtrInput `pulumi:"outputFormat"` + // Serializer and deserializer information. + SerdeInfo TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrInput `pulumi:"serdeInfo"` +} + +func (TableExternalCatalogTableOptionsStorageDescriptorArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TableExternalCatalogTableOptionsStorageDescriptor)(nil)).Elem() +} + +func (i TableExternalCatalogTableOptionsStorageDescriptorArgs) ToTableExternalCatalogTableOptionsStorageDescriptorOutput() TableExternalCatalogTableOptionsStorageDescriptorOutput { + return i.ToTableExternalCatalogTableOptionsStorageDescriptorOutputWithContext(context.Background()) +} + +func (i TableExternalCatalogTableOptionsStorageDescriptorArgs) ToTableExternalCatalogTableOptionsStorageDescriptorOutputWithContext(ctx context.Context) TableExternalCatalogTableOptionsStorageDescriptorOutput { + return pulumi.ToOutputWithContext(ctx, i).(TableExternalCatalogTableOptionsStorageDescriptorOutput) +} + +func (i TableExternalCatalogTableOptionsStorageDescriptorArgs) ToTableExternalCatalogTableOptionsStorageDescriptorPtrOutput() TableExternalCatalogTableOptionsStorageDescriptorPtrOutput { + return i.ToTableExternalCatalogTableOptionsStorageDescriptorPtrOutputWithContext(context.Background()) +} + +func (i TableExternalCatalogTableOptionsStorageDescriptorArgs) ToTableExternalCatalogTableOptionsStorageDescriptorPtrOutputWithContext(ctx context.Context) TableExternalCatalogTableOptionsStorageDescriptorPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TableExternalCatalogTableOptionsStorageDescriptorOutput).ToTableExternalCatalogTableOptionsStorageDescriptorPtrOutputWithContext(ctx) +} + +// TableExternalCatalogTableOptionsStorageDescriptorPtrInput is an input type that accepts TableExternalCatalogTableOptionsStorageDescriptorArgs, TableExternalCatalogTableOptionsStorageDescriptorPtr and TableExternalCatalogTableOptionsStorageDescriptorPtrOutput values. +// You can construct a concrete instance of `TableExternalCatalogTableOptionsStorageDescriptorPtrInput` via: +// +// TableExternalCatalogTableOptionsStorageDescriptorArgs{...} +// +// or: +// +// nil +type TableExternalCatalogTableOptionsStorageDescriptorPtrInput interface { + pulumi.Input + + ToTableExternalCatalogTableOptionsStorageDescriptorPtrOutput() TableExternalCatalogTableOptionsStorageDescriptorPtrOutput + ToTableExternalCatalogTableOptionsStorageDescriptorPtrOutputWithContext(context.Context) TableExternalCatalogTableOptionsStorageDescriptorPtrOutput +} + +type tableExternalCatalogTableOptionsStorageDescriptorPtrType TableExternalCatalogTableOptionsStorageDescriptorArgs + +func TableExternalCatalogTableOptionsStorageDescriptorPtr(v *TableExternalCatalogTableOptionsStorageDescriptorArgs) TableExternalCatalogTableOptionsStorageDescriptorPtrInput { + return (*tableExternalCatalogTableOptionsStorageDescriptorPtrType)(v) +} + +func (*tableExternalCatalogTableOptionsStorageDescriptorPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TableExternalCatalogTableOptionsStorageDescriptor)(nil)).Elem() +} + +func (i *tableExternalCatalogTableOptionsStorageDescriptorPtrType) ToTableExternalCatalogTableOptionsStorageDescriptorPtrOutput() TableExternalCatalogTableOptionsStorageDescriptorPtrOutput { + return i.ToTableExternalCatalogTableOptionsStorageDescriptorPtrOutputWithContext(context.Background()) +} + +func (i *tableExternalCatalogTableOptionsStorageDescriptorPtrType) ToTableExternalCatalogTableOptionsStorageDescriptorPtrOutputWithContext(ctx context.Context) TableExternalCatalogTableOptionsStorageDescriptorPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TableExternalCatalogTableOptionsStorageDescriptorPtrOutput) +} + +type TableExternalCatalogTableOptionsStorageDescriptorOutput struct{ *pulumi.OutputState } + +func (TableExternalCatalogTableOptionsStorageDescriptorOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TableExternalCatalogTableOptionsStorageDescriptor)(nil)).Elem() +} + +func (o TableExternalCatalogTableOptionsStorageDescriptorOutput) ToTableExternalCatalogTableOptionsStorageDescriptorOutput() TableExternalCatalogTableOptionsStorageDescriptorOutput { + return o +} + +func (o TableExternalCatalogTableOptionsStorageDescriptorOutput) ToTableExternalCatalogTableOptionsStorageDescriptorOutputWithContext(ctx context.Context) TableExternalCatalogTableOptionsStorageDescriptorOutput { + return o +} + +func (o TableExternalCatalogTableOptionsStorageDescriptorOutput) ToTableExternalCatalogTableOptionsStorageDescriptorPtrOutput() TableExternalCatalogTableOptionsStorageDescriptorPtrOutput { + return o.ToTableExternalCatalogTableOptionsStorageDescriptorPtrOutputWithContext(context.Background()) +} + +func (o TableExternalCatalogTableOptionsStorageDescriptorOutput) ToTableExternalCatalogTableOptionsStorageDescriptorPtrOutputWithContext(ctx context.Context) TableExternalCatalogTableOptionsStorageDescriptorPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TableExternalCatalogTableOptionsStorageDescriptor) *TableExternalCatalogTableOptionsStorageDescriptor { + return &v + }).(TableExternalCatalogTableOptionsStorageDescriptorPtrOutput) +} + +// 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. +func (o TableExternalCatalogTableOptionsStorageDescriptorOutput) InputFormat() pulumi.StringPtrOutput { + return o.ApplyT(func(v TableExternalCatalogTableOptionsStorageDescriptor) *string { return v.InputFormat }).(pulumi.StringPtrOutput) +} + +// 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. +func (o TableExternalCatalogTableOptionsStorageDescriptorOutput) LocationUri() pulumi.StringPtrOutput { + return o.ApplyT(func(v TableExternalCatalogTableOptionsStorageDescriptor) *string { return v.LocationUri }).(pulumi.StringPtrOutput) +} + +// 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. +func (o TableExternalCatalogTableOptionsStorageDescriptorOutput) OutputFormat() pulumi.StringPtrOutput { + return o.ApplyT(func(v TableExternalCatalogTableOptionsStorageDescriptor) *string { return v.OutputFormat }).(pulumi.StringPtrOutput) +} + +// Serializer and deserializer information. +func (o TableExternalCatalogTableOptionsStorageDescriptorOutput) SerdeInfo() TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput { + return o.ApplyT(func(v TableExternalCatalogTableOptionsStorageDescriptor) *TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo { + return v.SerdeInfo + }).(TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput) +} + +type TableExternalCatalogTableOptionsStorageDescriptorPtrOutput struct{ *pulumi.OutputState } + +func (TableExternalCatalogTableOptionsStorageDescriptorPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TableExternalCatalogTableOptionsStorageDescriptor)(nil)).Elem() +} + +func (o TableExternalCatalogTableOptionsStorageDescriptorPtrOutput) ToTableExternalCatalogTableOptionsStorageDescriptorPtrOutput() TableExternalCatalogTableOptionsStorageDescriptorPtrOutput { + return o +} + +func (o TableExternalCatalogTableOptionsStorageDescriptorPtrOutput) ToTableExternalCatalogTableOptionsStorageDescriptorPtrOutputWithContext(ctx context.Context) TableExternalCatalogTableOptionsStorageDescriptorPtrOutput { + return o +} + +func (o TableExternalCatalogTableOptionsStorageDescriptorPtrOutput) Elem() TableExternalCatalogTableOptionsStorageDescriptorOutput { + return o.ApplyT(func(v *TableExternalCatalogTableOptionsStorageDescriptor) TableExternalCatalogTableOptionsStorageDescriptor { + if v != nil { + return *v + } + var ret TableExternalCatalogTableOptionsStorageDescriptor + return ret + }).(TableExternalCatalogTableOptionsStorageDescriptorOutput) +} + +// 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. +func (o TableExternalCatalogTableOptionsStorageDescriptorPtrOutput) InputFormat() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TableExternalCatalogTableOptionsStorageDescriptor) *string { + if v == nil { + return nil + } + return v.InputFormat + }).(pulumi.StringPtrOutput) +} + +// 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. +func (o TableExternalCatalogTableOptionsStorageDescriptorPtrOutput) LocationUri() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TableExternalCatalogTableOptionsStorageDescriptor) *string { + if v == nil { + return nil + } + return v.LocationUri + }).(pulumi.StringPtrOutput) +} + +// 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. +func (o TableExternalCatalogTableOptionsStorageDescriptorPtrOutput) OutputFormat() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TableExternalCatalogTableOptionsStorageDescriptor) *string { + if v == nil { + return nil + } + return v.OutputFormat + }).(pulumi.StringPtrOutput) +} + +// Serializer and deserializer information. +func (o TableExternalCatalogTableOptionsStorageDescriptorPtrOutput) SerdeInfo() TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput { + return o.ApplyT(func(v *TableExternalCatalogTableOptionsStorageDescriptor) *TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo { + if v == nil { + return nil + } + return v.SerdeInfo + }).(TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput) +} + +type TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo struct { + // Name of the SerDe. The maximum length is 256 characters. + Name *string `pulumi:"name"` + // Key-value pairs that define the initialization parameters for the serialization library. Maximum size 10 Kib. + Parameters map[string]string `pulumi:"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. + SerializationLibrary string `pulumi:"serializationLibrary"` +} + +// TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoInput is an input type that accepts TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs and TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoOutput values. +// You can construct a concrete instance of `TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoInput` via: +// +// TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs{...} +type TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoInput interface { + pulumi.Input + + ToTableExternalCatalogTableOptionsStorageDescriptorSerdeInfoOutput() TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoOutput + ToTableExternalCatalogTableOptionsStorageDescriptorSerdeInfoOutputWithContext(context.Context) TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoOutput +} + +type TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs struct { + // Name of the SerDe. The maximum length is 256 characters. + Name pulumi.StringPtrInput `pulumi:"name"` + // Key-value pairs that define the initialization parameters for the serialization library. Maximum size 10 Kib. + Parameters pulumi.StringMapInput `pulumi:"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. + SerializationLibrary pulumi.StringInput `pulumi:"serializationLibrary"` +} + +func (TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo)(nil)).Elem() +} + +func (i TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs) ToTableExternalCatalogTableOptionsStorageDescriptorSerdeInfoOutput() TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoOutput { + return i.ToTableExternalCatalogTableOptionsStorageDescriptorSerdeInfoOutputWithContext(context.Background()) +} + +func (i TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs) ToTableExternalCatalogTableOptionsStorageDescriptorSerdeInfoOutputWithContext(ctx context.Context) TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoOutput { + return pulumi.ToOutputWithContext(ctx, i).(TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoOutput) +} + +func (i TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs) ToTableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput() TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput { + return i.ToTableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutputWithContext(context.Background()) +} + +func (i TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs) ToTableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutputWithContext(ctx context.Context) TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoOutput).ToTableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutputWithContext(ctx) +} + +// TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrInput is an input type that accepts TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs, TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtr and TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput values. +// You can construct a concrete instance of `TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrInput` via: +// +// TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs{...} +// +// or: +// +// nil +type TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrInput interface { + pulumi.Input + + ToTableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput() TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput + ToTableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutputWithContext(context.Context) TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput +} + +type tableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrType TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs + +func TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtr(v *TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs) TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrInput { + return (*tableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrType)(v) +} + +func (*tableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo)(nil)).Elem() +} + +func (i *tableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrType) ToTableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput() TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput { + return i.ToTableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutputWithContext(context.Background()) +} + +func (i *tableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrType) ToTableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutputWithContext(ctx context.Context) TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput) +} + +type TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoOutput struct{ *pulumi.OutputState } + +func (TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo)(nil)).Elem() +} + +func (o TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoOutput) ToTableExternalCatalogTableOptionsStorageDescriptorSerdeInfoOutput() TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoOutput { + return o +} + +func (o TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoOutput) ToTableExternalCatalogTableOptionsStorageDescriptorSerdeInfoOutputWithContext(ctx context.Context) TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoOutput { + return o +} + +func (o TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoOutput) ToTableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput() TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput { + return o.ToTableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutputWithContext(context.Background()) +} + +func (o TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoOutput) ToTableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutputWithContext(ctx context.Context) TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo) *TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo { + return &v + }).(TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput) +} + +// Name of the SerDe. The maximum length is 256 characters. +func (o TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo) *string { return v.Name }).(pulumi.StringPtrOutput) +} + +// Key-value pairs that define the initialization parameters for the serialization library. Maximum size 10 Kib. +func (o TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoOutput) Parameters() pulumi.StringMapOutput { + return o.ApplyT(func(v TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo) map[string]string { + return v.Parameters + }).(pulumi.StringMapOutput) +} + +// 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. +func (o TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoOutput) SerializationLibrary() pulumi.StringOutput { + return o.ApplyT(func(v TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo) string { + return v.SerializationLibrary + }).(pulumi.StringOutput) +} + +type TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput struct{ *pulumi.OutputState } + +func (TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo)(nil)).Elem() +} + +func (o TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput) ToTableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput() TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput { + return o +} + +func (o TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput) ToTableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutputWithContext(ctx context.Context) TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput { + return o +} + +func (o TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput) Elem() TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoOutput { + return o.ApplyT(func(v *TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo) TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo { + if v != nil { + return *v + } + var ret TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo + return ret + }).(TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoOutput) +} + +// Name of the SerDe. The maximum length is 256 characters. +func (o TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo) *string { + if v == nil { + return nil + } + return v.Name + }).(pulumi.StringPtrOutput) +} + +// Key-value pairs that define the initialization parameters for the serialization library. Maximum size 10 Kib. +func (o TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput) Parameters() pulumi.StringMapOutput { + return o.ApplyT(func(v *TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo) map[string]string { + if v == nil { + return nil + } + return v.Parameters + }).(pulumi.StringMapOutput) +} + +// 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. +func (o TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput) SerializationLibrary() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo) *string { + if v == nil { + return nil + } + return &v.SerializationLibrary + }).(pulumi.StringPtrOutput) +} + type TableExternalDataConfiguration struct { // Let BigQuery try to autodetect the schema // and format of the table. @@ -15564,6 +16337,9 @@ func (o TableViewPtrOutput) UseLegacySql() pulumi.BoolPtrOutput { } type GetDatasetAccessType struct { + // Condition for the binding. If CEL expression in this field is true, this + // access binding will be considered. + Conditions []GetDatasetAccessCondition `pulumi:"conditions"` // Grants all resources of particular types in a particular dataset read access to the current dataset. Datasets []GetDatasetAccessDataset `pulumi:"datasets"` // A domain to grant access to. Any users signed in with the @@ -15615,6 +16391,9 @@ type GetDatasetAccessTypeInput interface { } type GetDatasetAccessTypeArgs struct { + // Condition for the binding. If CEL expression in this field is true, this + // access binding will be considered. + Conditions GetDatasetAccessConditionArrayInput `pulumi:"conditions"` // Grants all resources of particular types in a particular dataset read access to the current dataset. Datasets GetDatasetAccessDatasetArrayInput `pulumi:"datasets"` // A domain to grant access to. Any users signed in with the @@ -15705,6 +16484,12 @@ func (o GetDatasetAccessTypeOutput) ToGetDatasetAccessTypeOutputWithContext(ctx return o } +// Condition for the binding. If CEL expression in this field is true, this +// access binding will be considered. +func (o GetDatasetAccessTypeOutput) Conditions() GetDatasetAccessConditionArrayOutput { + return o.ApplyT(func(v GetDatasetAccessType) []GetDatasetAccessCondition { return v.Conditions }).(GetDatasetAccessConditionArrayOutput) +} + // Grants all resources of particular types in a particular dataset read access to the current dataset. func (o GetDatasetAccessTypeOutput) Datasets() GetDatasetAccessDatasetArrayOutput { return o.ApplyT(func(v GetDatasetAccessType) []GetDatasetAccessDataset { return v.Datasets }).(GetDatasetAccessDatasetArrayOutput) @@ -15789,6 +16574,139 @@ func (o GetDatasetAccessTypeArrayOutput) Index(i pulumi.IntInput) GetDatasetAcce }).(GetDatasetAccessTypeOutput) } +type GetDatasetAccessCondition struct { + // Description of the expression. This is a longer text which describes the expression, + // e.g. when hovered over it in a UI. + Description string `pulumi:"description"` + // Textual representation of an expression in Common Expression Language syntax. + Expression string `pulumi:"expression"` + // String indicating the location of the expression for error reporting, e.g. a file + // name and a position in the file. + Location string `pulumi:"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. + Title string `pulumi:"title"` +} + +// GetDatasetAccessConditionInput is an input type that accepts GetDatasetAccessConditionArgs and GetDatasetAccessConditionOutput values. +// You can construct a concrete instance of `GetDatasetAccessConditionInput` via: +// +// GetDatasetAccessConditionArgs{...} +type GetDatasetAccessConditionInput interface { + pulumi.Input + + ToGetDatasetAccessConditionOutput() GetDatasetAccessConditionOutput + ToGetDatasetAccessConditionOutputWithContext(context.Context) GetDatasetAccessConditionOutput +} + +type GetDatasetAccessConditionArgs struct { + // Description of the expression. This is a longer text which describes the expression, + // e.g. when hovered over it in a UI. + Description pulumi.StringInput `pulumi:"description"` + // Textual representation of an expression in Common Expression Language syntax. + Expression pulumi.StringInput `pulumi:"expression"` + // String indicating the location of the expression for error reporting, e.g. a file + // name and a position in the file. + Location pulumi.StringInput `pulumi:"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. + Title pulumi.StringInput `pulumi:"title"` +} + +func (GetDatasetAccessConditionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetDatasetAccessCondition)(nil)).Elem() +} + +func (i GetDatasetAccessConditionArgs) ToGetDatasetAccessConditionOutput() GetDatasetAccessConditionOutput { + return i.ToGetDatasetAccessConditionOutputWithContext(context.Background()) +} + +func (i GetDatasetAccessConditionArgs) ToGetDatasetAccessConditionOutputWithContext(ctx context.Context) GetDatasetAccessConditionOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetDatasetAccessConditionOutput) +} + +// GetDatasetAccessConditionArrayInput is an input type that accepts GetDatasetAccessConditionArray and GetDatasetAccessConditionArrayOutput values. +// You can construct a concrete instance of `GetDatasetAccessConditionArrayInput` via: +// +// GetDatasetAccessConditionArray{ GetDatasetAccessConditionArgs{...} } +type GetDatasetAccessConditionArrayInput interface { + pulumi.Input + + ToGetDatasetAccessConditionArrayOutput() GetDatasetAccessConditionArrayOutput + ToGetDatasetAccessConditionArrayOutputWithContext(context.Context) GetDatasetAccessConditionArrayOutput +} + +type GetDatasetAccessConditionArray []GetDatasetAccessConditionInput + +func (GetDatasetAccessConditionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetDatasetAccessCondition)(nil)).Elem() +} + +func (i GetDatasetAccessConditionArray) ToGetDatasetAccessConditionArrayOutput() GetDatasetAccessConditionArrayOutput { + return i.ToGetDatasetAccessConditionArrayOutputWithContext(context.Background()) +} + +func (i GetDatasetAccessConditionArray) ToGetDatasetAccessConditionArrayOutputWithContext(ctx context.Context) GetDatasetAccessConditionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetDatasetAccessConditionArrayOutput) +} + +type GetDatasetAccessConditionOutput struct{ *pulumi.OutputState } + +func (GetDatasetAccessConditionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetDatasetAccessCondition)(nil)).Elem() +} + +func (o GetDatasetAccessConditionOutput) ToGetDatasetAccessConditionOutput() GetDatasetAccessConditionOutput { + return o +} + +func (o GetDatasetAccessConditionOutput) ToGetDatasetAccessConditionOutputWithContext(ctx context.Context) GetDatasetAccessConditionOutput { + return o +} + +// Description of the expression. This is a longer text which describes the expression, +// e.g. when hovered over it in a UI. +func (o GetDatasetAccessConditionOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v GetDatasetAccessCondition) string { return v.Description }).(pulumi.StringOutput) +} + +// Textual representation of an expression in Common Expression Language syntax. +func (o GetDatasetAccessConditionOutput) Expression() pulumi.StringOutput { + return o.ApplyT(func(v GetDatasetAccessCondition) string { return v.Expression }).(pulumi.StringOutput) +} + +// String indicating the location of the expression for error reporting, e.g. a file +// name and a position in the file. +func (o GetDatasetAccessConditionOutput) Location() pulumi.StringOutput { + return o.ApplyT(func(v GetDatasetAccessCondition) string { return v.Location }).(pulumi.StringOutput) +} + +// 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. +func (o GetDatasetAccessConditionOutput) Title() pulumi.StringOutput { + return o.ApplyT(func(v GetDatasetAccessCondition) string { return v.Title }).(pulumi.StringOutput) +} + +type GetDatasetAccessConditionArrayOutput struct{ *pulumi.OutputState } + +func (GetDatasetAccessConditionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetDatasetAccessCondition)(nil)).Elem() +} + +func (o GetDatasetAccessConditionArrayOutput) ToGetDatasetAccessConditionArrayOutput() GetDatasetAccessConditionArrayOutput { + return o +} + +func (o GetDatasetAccessConditionArrayOutput) ToGetDatasetAccessConditionArrayOutputWithContext(ctx context.Context) GetDatasetAccessConditionArrayOutput { + return o +} + +func (o GetDatasetAccessConditionArrayOutput) Index(i pulumi.IntInput) GetDatasetAccessConditionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetDatasetAccessCondition { + return vs[0].([]GetDatasetAccessCondition)[vs[1].(int)] + }).(GetDatasetAccessConditionOutput) +} + type GetDatasetAccessDataset struct { // The dataset this entry applies to Datasets []GetDatasetAccessDatasetDataset `pulumi:"datasets"` @@ -16723,6 +17641,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*DatasetAccessAuthorizedDatasetPtrInput)(nil)).Elem(), DatasetAccessAuthorizedDatasetArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*DatasetAccessAuthorizedDatasetDatasetInput)(nil)).Elem(), DatasetAccessAuthorizedDatasetDatasetArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*DatasetAccessAuthorizedDatasetDatasetPtrInput)(nil)).Elem(), DatasetAccessAuthorizedDatasetDatasetArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*DatasetAccessConditionInput)(nil)).Elem(), DatasetAccessConditionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*DatasetAccessConditionPtrInput)(nil)).Elem(), DatasetAccessConditionArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*DatasetAccessDatasetInput)(nil)).Elem(), DatasetAccessDatasetArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*DatasetAccessDatasetPtrInput)(nil)).Elem(), DatasetAccessDatasetArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*DatasetAccessDatasetDatasetInput)(nil)).Elem(), DatasetAccessDatasetDatasetArgs{}) @@ -16799,6 +17719,12 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*TableBiglakeConfigurationPtrInput)(nil)).Elem(), TableBiglakeConfigurationArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*TableEncryptionConfigurationInput)(nil)).Elem(), TableEncryptionConfigurationArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*TableEncryptionConfigurationPtrInput)(nil)).Elem(), TableEncryptionConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TableExternalCatalogTableOptionsInput)(nil)).Elem(), TableExternalCatalogTableOptionsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TableExternalCatalogTableOptionsPtrInput)(nil)).Elem(), TableExternalCatalogTableOptionsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TableExternalCatalogTableOptionsStorageDescriptorInput)(nil)).Elem(), TableExternalCatalogTableOptionsStorageDescriptorArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TableExternalCatalogTableOptionsStorageDescriptorPtrInput)(nil)).Elem(), TableExternalCatalogTableOptionsStorageDescriptorArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoInput)(nil)).Elem(), TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrInput)(nil)).Elem(), TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*TableExternalDataConfigurationInput)(nil)).Elem(), TableExternalDataConfigurationArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*TableExternalDataConfigurationPtrInput)(nil)).Elem(), TableExternalDataConfigurationArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*TableExternalDataConfigurationAvroOptionsInput)(nil)).Elem(), TableExternalDataConfigurationAvroOptionsArgs{}) @@ -16841,6 +17767,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*TableViewPtrInput)(nil)).Elem(), TableViewArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetDatasetAccessTypeInput)(nil)).Elem(), GetDatasetAccessTypeArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetDatasetAccessTypeArrayInput)(nil)).Elem(), GetDatasetAccessTypeArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetDatasetAccessConditionInput)(nil)).Elem(), GetDatasetAccessConditionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetDatasetAccessConditionArrayInput)(nil)).Elem(), GetDatasetAccessConditionArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetDatasetAccessDatasetInput)(nil)).Elem(), GetDatasetAccessDatasetArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetDatasetAccessDatasetArrayInput)(nil)).Elem(), GetDatasetAccessDatasetArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetDatasetAccessDatasetDatasetInput)(nil)).Elem(), GetDatasetAccessDatasetDatasetArgs{}) @@ -16903,6 +17831,8 @@ func init() { pulumi.RegisterOutputType(DatasetAccessAuthorizedDatasetPtrOutput{}) pulumi.RegisterOutputType(DatasetAccessAuthorizedDatasetDatasetOutput{}) pulumi.RegisterOutputType(DatasetAccessAuthorizedDatasetDatasetPtrOutput{}) + pulumi.RegisterOutputType(DatasetAccessConditionOutput{}) + pulumi.RegisterOutputType(DatasetAccessConditionPtrOutput{}) pulumi.RegisterOutputType(DatasetAccessDatasetOutput{}) pulumi.RegisterOutputType(DatasetAccessDatasetPtrOutput{}) pulumi.RegisterOutputType(DatasetAccessDatasetDatasetOutput{}) @@ -16979,6 +17909,12 @@ func init() { pulumi.RegisterOutputType(TableBiglakeConfigurationPtrOutput{}) pulumi.RegisterOutputType(TableEncryptionConfigurationOutput{}) pulumi.RegisterOutputType(TableEncryptionConfigurationPtrOutput{}) + pulumi.RegisterOutputType(TableExternalCatalogTableOptionsOutput{}) + pulumi.RegisterOutputType(TableExternalCatalogTableOptionsPtrOutput{}) + pulumi.RegisterOutputType(TableExternalCatalogTableOptionsStorageDescriptorOutput{}) + pulumi.RegisterOutputType(TableExternalCatalogTableOptionsStorageDescriptorPtrOutput{}) + pulumi.RegisterOutputType(TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoOutput{}) + pulumi.RegisterOutputType(TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoPtrOutput{}) pulumi.RegisterOutputType(TableExternalDataConfigurationOutput{}) pulumi.RegisterOutputType(TableExternalDataConfigurationPtrOutput{}) pulumi.RegisterOutputType(TableExternalDataConfigurationAvroOptionsOutput{}) @@ -17021,6 +17957,8 @@ func init() { pulumi.RegisterOutputType(TableViewPtrOutput{}) pulumi.RegisterOutputType(GetDatasetAccessTypeOutput{}) pulumi.RegisterOutputType(GetDatasetAccessTypeArrayOutput{}) + pulumi.RegisterOutputType(GetDatasetAccessConditionOutput{}) + pulumi.RegisterOutputType(GetDatasetAccessConditionArrayOutput{}) pulumi.RegisterOutputType(GetDatasetAccessDatasetOutput{}) pulumi.RegisterOutputType(GetDatasetAccessDatasetArrayOutput{}) pulumi.RegisterOutputType(GetDatasetAccessDatasetDatasetOutput{}) diff --git a/sdk/go/gcp/bigquery/table.go b/sdk/go/gcp/bigquery/table.go index 5d42077dd0..9dfe8332d0 100644 --- a/sdk/go/gcp/bigquery/table.go +++ b/sdk/go/gcp/bigquery/table.go @@ -170,6 +170,8 @@ type Table struct { // indefinitely. Expired tables will be deleted and their storage // reclaimed. ExpirationTime pulumi.IntOutput `pulumi:"expirationTime"` + // Options defining open source compatible table. + ExternalCatalogTableOptions TableExternalCatalogTableOptionsPtrOutput `pulumi:"externalCatalogTableOptions"` // Describes the data format, // location, and other properties of a table stored outside of BigQuery. // By defining these properties, the data source can then be queried as @@ -328,6 +330,8 @@ type tableState struct { // indefinitely. Expired tables will be deleted and their storage // reclaimed. ExpirationTime *int `pulumi:"expirationTime"` + // Options defining open source compatible table. + ExternalCatalogTableOptions *TableExternalCatalogTableOptions `pulumi:"externalCatalogTableOptions"` // Describes the data format, // location, and other properties of a table stored outside of BigQuery. // By defining these properties, the data source can then be queried as @@ -446,6 +450,8 @@ type TableState struct { // indefinitely. Expired tables will be deleted and their storage // reclaimed. ExpirationTime pulumi.IntPtrInput + // Options defining open source compatible table. + ExternalCatalogTableOptions TableExternalCatalogTableOptionsPtrInput // Describes the data format, // location, and other properties of a table stored outside of BigQuery. // By defining these properties, the data source can then be queried as @@ -547,6 +553,8 @@ type tableArgs struct { // indefinitely. Expired tables will be deleted and their storage // reclaimed. ExpirationTime *int `pulumi:"expirationTime"` + // Options defining open source compatible table. + ExternalCatalogTableOptions *TableExternalCatalogTableOptions `pulumi:"externalCatalogTableOptions"` // Describes the data format, // location, and other properties of a table stored outside of BigQuery. // By defining these properties, the data source can then be queried as @@ -629,6 +637,8 @@ type TableArgs struct { // indefinitely. Expired tables will be deleted and their storage // reclaimed. ExpirationTime pulumi.IntPtrInput + // Options defining open source compatible table. + ExternalCatalogTableOptions TableExternalCatalogTableOptionsPtrInput // Describes the data format, // location, and other properties of a table stored outside of BigQuery. // By defining these properties, the data source can then be queried as @@ -847,6 +857,11 @@ func (o TableOutput) ExpirationTime() pulumi.IntOutput { return o.ApplyT(func(v *Table) pulumi.IntOutput { return v.ExpirationTime }).(pulumi.IntOutput) } +// Options defining open source compatible table. +func (o TableOutput) ExternalCatalogTableOptions() TableExternalCatalogTableOptionsPtrOutput { + return o.ApplyT(func(v *Table) TableExternalCatalogTableOptionsPtrOutput { return v.ExternalCatalogTableOptions }).(TableExternalCatalogTableOptionsPtrOutput) +} + // Describes the data format, // location, and other properties of a table stored outside of BigQuery. // By defining these properties, the data source can then be queried as diff --git a/sdk/go/gcp/chronicle/init.go b/sdk/go/gcp/chronicle/init.go new file mode 100644 index 0000000000..0f5f4c67a4 --- /dev/null +++ b/sdk/go/gcp/chronicle/init.go @@ -0,0 +1,44 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package chronicle + +import ( + "fmt" + + "github.com/blang/semver" + "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type module struct { + version semver.Version +} + +func (m *module) Version() semver.Version { + return m.version +} + +func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi.Resource, err error) { + switch typ { + case "gcp:chronicle/watchlist:Watchlist": + r = &Watchlist{} + default: + return nil, fmt.Errorf("unknown resource type: %s", typ) + } + + err = ctx.RegisterResource(typ, name, nil, r, pulumi.URN_(urn)) + return +} + +func init() { + version, err := internal.PkgVersion() + if err != nil { + version = semver.Version{Major: 1} + } + pulumi.RegisterResourceModule( + "gcp", + "chronicle/watchlist", + &module{version}, + ) +} diff --git a/sdk/go/gcp/chronicle/pulumiTypes.go b/sdk/go/gcp/chronicle/pulumiTypes.go new file mode 100644 index 0000000000..0e874e58ba --- /dev/null +++ b/sdk/go/gcp/chronicle/pulumiTypes.go @@ -0,0 +1,545 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package chronicle + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +var _ = internal.GetEnvOrDefault + +type WatchlistEntityCount struct { + // (Output) + // Output only. Count of asset type entities in the watchlist. + Asset *int `pulumi:"asset"` + // (Output) + // Output only. Count of user type entities in the watchlist. + User *int `pulumi:"user"` +} + +// WatchlistEntityCountInput is an input type that accepts WatchlistEntityCountArgs and WatchlistEntityCountOutput values. +// You can construct a concrete instance of `WatchlistEntityCountInput` via: +// +// WatchlistEntityCountArgs{...} +type WatchlistEntityCountInput interface { + pulumi.Input + + ToWatchlistEntityCountOutput() WatchlistEntityCountOutput + ToWatchlistEntityCountOutputWithContext(context.Context) WatchlistEntityCountOutput +} + +type WatchlistEntityCountArgs struct { + // (Output) + // Output only. Count of asset type entities in the watchlist. + Asset pulumi.IntPtrInput `pulumi:"asset"` + // (Output) + // Output only. Count of user type entities in the watchlist. + User pulumi.IntPtrInput `pulumi:"user"` +} + +func (WatchlistEntityCountArgs) ElementType() reflect.Type { + return reflect.TypeOf((*WatchlistEntityCount)(nil)).Elem() +} + +func (i WatchlistEntityCountArgs) ToWatchlistEntityCountOutput() WatchlistEntityCountOutput { + return i.ToWatchlistEntityCountOutputWithContext(context.Background()) +} + +func (i WatchlistEntityCountArgs) ToWatchlistEntityCountOutputWithContext(ctx context.Context) WatchlistEntityCountOutput { + return pulumi.ToOutputWithContext(ctx, i).(WatchlistEntityCountOutput) +} + +// WatchlistEntityCountArrayInput is an input type that accepts WatchlistEntityCountArray and WatchlistEntityCountArrayOutput values. +// You can construct a concrete instance of `WatchlistEntityCountArrayInput` via: +// +// WatchlistEntityCountArray{ WatchlistEntityCountArgs{...} } +type WatchlistEntityCountArrayInput interface { + pulumi.Input + + ToWatchlistEntityCountArrayOutput() WatchlistEntityCountArrayOutput + ToWatchlistEntityCountArrayOutputWithContext(context.Context) WatchlistEntityCountArrayOutput +} + +type WatchlistEntityCountArray []WatchlistEntityCountInput + +func (WatchlistEntityCountArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]WatchlistEntityCount)(nil)).Elem() +} + +func (i WatchlistEntityCountArray) ToWatchlistEntityCountArrayOutput() WatchlistEntityCountArrayOutput { + return i.ToWatchlistEntityCountArrayOutputWithContext(context.Background()) +} + +func (i WatchlistEntityCountArray) ToWatchlistEntityCountArrayOutputWithContext(ctx context.Context) WatchlistEntityCountArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(WatchlistEntityCountArrayOutput) +} + +type WatchlistEntityCountOutput struct{ *pulumi.OutputState } + +func (WatchlistEntityCountOutput) ElementType() reflect.Type { + return reflect.TypeOf((*WatchlistEntityCount)(nil)).Elem() +} + +func (o WatchlistEntityCountOutput) ToWatchlistEntityCountOutput() WatchlistEntityCountOutput { + return o +} + +func (o WatchlistEntityCountOutput) ToWatchlistEntityCountOutputWithContext(ctx context.Context) WatchlistEntityCountOutput { + return o +} + +// (Output) +// Output only. Count of asset type entities in the watchlist. +func (o WatchlistEntityCountOutput) Asset() pulumi.IntPtrOutput { + return o.ApplyT(func(v WatchlistEntityCount) *int { return v.Asset }).(pulumi.IntPtrOutput) +} + +// (Output) +// Output only. Count of user type entities in the watchlist. +func (o WatchlistEntityCountOutput) User() pulumi.IntPtrOutput { + return o.ApplyT(func(v WatchlistEntityCount) *int { return v.User }).(pulumi.IntPtrOutput) +} + +type WatchlistEntityCountArrayOutput struct{ *pulumi.OutputState } + +func (WatchlistEntityCountArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]WatchlistEntityCount)(nil)).Elem() +} + +func (o WatchlistEntityCountArrayOutput) ToWatchlistEntityCountArrayOutput() WatchlistEntityCountArrayOutput { + return o +} + +func (o WatchlistEntityCountArrayOutput) ToWatchlistEntityCountArrayOutputWithContext(ctx context.Context) WatchlistEntityCountArrayOutput { + return o +} + +func (o WatchlistEntityCountArrayOutput) Index(i pulumi.IntInput) WatchlistEntityCountOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) WatchlistEntityCount { + return vs[0].([]WatchlistEntityCount)[vs[1].(int)] + }).(WatchlistEntityCountOutput) +} + +type WatchlistEntityPopulationMechanism struct { + // Entities are added manually. + // + // *** + Manual *WatchlistEntityPopulationMechanismManual `pulumi:"manual"` +} + +// WatchlistEntityPopulationMechanismInput is an input type that accepts WatchlistEntityPopulationMechanismArgs and WatchlistEntityPopulationMechanismOutput values. +// You can construct a concrete instance of `WatchlistEntityPopulationMechanismInput` via: +// +// WatchlistEntityPopulationMechanismArgs{...} +type WatchlistEntityPopulationMechanismInput interface { + pulumi.Input + + ToWatchlistEntityPopulationMechanismOutput() WatchlistEntityPopulationMechanismOutput + ToWatchlistEntityPopulationMechanismOutputWithContext(context.Context) WatchlistEntityPopulationMechanismOutput +} + +type WatchlistEntityPopulationMechanismArgs struct { + // Entities are added manually. + // + // *** + Manual WatchlistEntityPopulationMechanismManualPtrInput `pulumi:"manual"` +} + +func (WatchlistEntityPopulationMechanismArgs) ElementType() reflect.Type { + return reflect.TypeOf((*WatchlistEntityPopulationMechanism)(nil)).Elem() +} + +func (i WatchlistEntityPopulationMechanismArgs) ToWatchlistEntityPopulationMechanismOutput() WatchlistEntityPopulationMechanismOutput { + return i.ToWatchlistEntityPopulationMechanismOutputWithContext(context.Background()) +} + +func (i WatchlistEntityPopulationMechanismArgs) ToWatchlistEntityPopulationMechanismOutputWithContext(ctx context.Context) WatchlistEntityPopulationMechanismOutput { + return pulumi.ToOutputWithContext(ctx, i).(WatchlistEntityPopulationMechanismOutput) +} + +func (i WatchlistEntityPopulationMechanismArgs) ToWatchlistEntityPopulationMechanismPtrOutput() WatchlistEntityPopulationMechanismPtrOutput { + return i.ToWatchlistEntityPopulationMechanismPtrOutputWithContext(context.Background()) +} + +func (i WatchlistEntityPopulationMechanismArgs) ToWatchlistEntityPopulationMechanismPtrOutputWithContext(ctx context.Context) WatchlistEntityPopulationMechanismPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(WatchlistEntityPopulationMechanismOutput).ToWatchlistEntityPopulationMechanismPtrOutputWithContext(ctx) +} + +// WatchlistEntityPopulationMechanismPtrInput is an input type that accepts WatchlistEntityPopulationMechanismArgs, WatchlistEntityPopulationMechanismPtr and WatchlistEntityPopulationMechanismPtrOutput values. +// You can construct a concrete instance of `WatchlistEntityPopulationMechanismPtrInput` via: +// +// WatchlistEntityPopulationMechanismArgs{...} +// +// or: +// +// nil +type WatchlistEntityPopulationMechanismPtrInput interface { + pulumi.Input + + ToWatchlistEntityPopulationMechanismPtrOutput() WatchlistEntityPopulationMechanismPtrOutput + ToWatchlistEntityPopulationMechanismPtrOutputWithContext(context.Context) WatchlistEntityPopulationMechanismPtrOutput +} + +type watchlistEntityPopulationMechanismPtrType WatchlistEntityPopulationMechanismArgs + +func WatchlistEntityPopulationMechanismPtr(v *WatchlistEntityPopulationMechanismArgs) WatchlistEntityPopulationMechanismPtrInput { + return (*watchlistEntityPopulationMechanismPtrType)(v) +} + +func (*watchlistEntityPopulationMechanismPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**WatchlistEntityPopulationMechanism)(nil)).Elem() +} + +func (i *watchlistEntityPopulationMechanismPtrType) ToWatchlistEntityPopulationMechanismPtrOutput() WatchlistEntityPopulationMechanismPtrOutput { + return i.ToWatchlistEntityPopulationMechanismPtrOutputWithContext(context.Background()) +} + +func (i *watchlistEntityPopulationMechanismPtrType) ToWatchlistEntityPopulationMechanismPtrOutputWithContext(ctx context.Context) WatchlistEntityPopulationMechanismPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(WatchlistEntityPopulationMechanismPtrOutput) +} + +type WatchlistEntityPopulationMechanismOutput struct{ *pulumi.OutputState } + +func (WatchlistEntityPopulationMechanismOutput) ElementType() reflect.Type { + return reflect.TypeOf((*WatchlistEntityPopulationMechanism)(nil)).Elem() +} + +func (o WatchlistEntityPopulationMechanismOutput) ToWatchlistEntityPopulationMechanismOutput() WatchlistEntityPopulationMechanismOutput { + return o +} + +func (o WatchlistEntityPopulationMechanismOutput) ToWatchlistEntityPopulationMechanismOutputWithContext(ctx context.Context) WatchlistEntityPopulationMechanismOutput { + return o +} + +func (o WatchlistEntityPopulationMechanismOutput) ToWatchlistEntityPopulationMechanismPtrOutput() WatchlistEntityPopulationMechanismPtrOutput { + return o.ToWatchlistEntityPopulationMechanismPtrOutputWithContext(context.Background()) +} + +func (o WatchlistEntityPopulationMechanismOutput) ToWatchlistEntityPopulationMechanismPtrOutputWithContext(ctx context.Context) WatchlistEntityPopulationMechanismPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v WatchlistEntityPopulationMechanism) *WatchlistEntityPopulationMechanism { + return &v + }).(WatchlistEntityPopulationMechanismPtrOutput) +} + +// Entities are added manually. +// +// *** +func (o WatchlistEntityPopulationMechanismOutput) Manual() WatchlistEntityPopulationMechanismManualPtrOutput { + return o.ApplyT(func(v WatchlistEntityPopulationMechanism) *WatchlistEntityPopulationMechanismManual { return v.Manual }).(WatchlistEntityPopulationMechanismManualPtrOutput) +} + +type WatchlistEntityPopulationMechanismPtrOutput struct{ *pulumi.OutputState } + +func (WatchlistEntityPopulationMechanismPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**WatchlistEntityPopulationMechanism)(nil)).Elem() +} + +func (o WatchlistEntityPopulationMechanismPtrOutput) ToWatchlistEntityPopulationMechanismPtrOutput() WatchlistEntityPopulationMechanismPtrOutput { + return o +} + +func (o WatchlistEntityPopulationMechanismPtrOutput) ToWatchlistEntityPopulationMechanismPtrOutputWithContext(ctx context.Context) WatchlistEntityPopulationMechanismPtrOutput { + return o +} + +func (o WatchlistEntityPopulationMechanismPtrOutput) Elem() WatchlistEntityPopulationMechanismOutput { + return o.ApplyT(func(v *WatchlistEntityPopulationMechanism) WatchlistEntityPopulationMechanism { + if v != nil { + return *v + } + var ret WatchlistEntityPopulationMechanism + return ret + }).(WatchlistEntityPopulationMechanismOutput) +} + +// Entities are added manually. +// +// *** +func (o WatchlistEntityPopulationMechanismPtrOutput) Manual() WatchlistEntityPopulationMechanismManualPtrOutput { + return o.ApplyT(func(v *WatchlistEntityPopulationMechanism) *WatchlistEntityPopulationMechanismManual { + if v == nil { + return nil + } + return v.Manual + }).(WatchlistEntityPopulationMechanismManualPtrOutput) +} + +type WatchlistEntityPopulationMechanismManual struct { +} + +// WatchlistEntityPopulationMechanismManualInput is an input type that accepts WatchlistEntityPopulationMechanismManualArgs and WatchlistEntityPopulationMechanismManualOutput values. +// You can construct a concrete instance of `WatchlistEntityPopulationMechanismManualInput` via: +// +// WatchlistEntityPopulationMechanismManualArgs{...} +type WatchlistEntityPopulationMechanismManualInput interface { + pulumi.Input + + ToWatchlistEntityPopulationMechanismManualOutput() WatchlistEntityPopulationMechanismManualOutput + ToWatchlistEntityPopulationMechanismManualOutputWithContext(context.Context) WatchlistEntityPopulationMechanismManualOutput +} + +type WatchlistEntityPopulationMechanismManualArgs struct { +} + +func (WatchlistEntityPopulationMechanismManualArgs) ElementType() reflect.Type { + return reflect.TypeOf((*WatchlistEntityPopulationMechanismManual)(nil)).Elem() +} + +func (i WatchlistEntityPopulationMechanismManualArgs) ToWatchlistEntityPopulationMechanismManualOutput() WatchlistEntityPopulationMechanismManualOutput { + return i.ToWatchlistEntityPopulationMechanismManualOutputWithContext(context.Background()) +} + +func (i WatchlistEntityPopulationMechanismManualArgs) ToWatchlistEntityPopulationMechanismManualOutputWithContext(ctx context.Context) WatchlistEntityPopulationMechanismManualOutput { + return pulumi.ToOutputWithContext(ctx, i).(WatchlistEntityPopulationMechanismManualOutput) +} + +func (i WatchlistEntityPopulationMechanismManualArgs) ToWatchlistEntityPopulationMechanismManualPtrOutput() WatchlistEntityPopulationMechanismManualPtrOutput { + return i.ToWatchlistEntityPopulationMechanismManualPtrOutputWithContext(context.Background()) +} + +func (i WatchlistEntityPopulationMechanismManualArgs) ToWatchlistEntityPopulationMechanismManualPtrOutputWithContext(ctx context.Context) WatchlistEntityPopulationMechanismManualPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(WatchlistEntityPopulationMechanismManualOutput).ToWatchlistEntityPopulationMechanismManualPtrOutputWithContext(ctx) +} + +// WatchlistEntityPopulationMechanismManualPtrInput is an input type that accepts WatchlistEntityPopulationMechanismManualArgs, WatchlistEntityPopulationMechanismManualPtr and WatchlistEntityPopulationMechanismManualPtrOutput values. +// You can construct a concrete instance of `WatchlistEntityPopulationMechanismManualPtrInput` via: +// +// WatchlistEntityPopulationMechanismManualArgs{...} +// +// or: +// +// nil +type WatchlistEntityPopulationMechanismManualPtrInput interface { + pulumi.Input + + ToWatchlistEntityPopulationMechanismManualPtrOutput() WatchlistEntityPopulationMechanismManualPtrOutput + ToWatchlistEntityPopulationMechanismManualPtrOutputWithContext(context.Context) WatchlistEntityPopulationMechanismManualPtrOutput +} + +type watchlistEntityPopulationMechanismManualPtrType WatchlistEntityPopulationMechanismManualArgs + +func WatchlistEntityPopulationMechanismManualPtr(v *WatchlistEntityPopulationMechanismManualArgs) WatchlistEntityPopulationMechanismManualPtrInput { + return (*watchlistEntityPopulationMechanismManualPtrType)(v) +} + +func (*watchlistEntityPopulationMechanismManualPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**WatchlistEntityPopulationMechanismManual)(nil)).Elem() +} + +func (i *watchlistEntityPopulationMechanismManualPtrType) ToWatchlistEntityPopulationMechanismManualPtrOutput() WatchlistEntityPopulationMechanismManualPtrOutput { + return i.ToWatchlistEntityPopulationMechanismManualPtrOutputWithContext(context.Background()) +} + +func (i *watchlistEntityPopulationMechanismManualPtrType) ToWatchlistEntityPopulationMechanismManualPtrOutputWithContext(ctx context.Context) WatchlistEntityPopulationMechanismManualPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(WatchlistEntityPopulationMechanismManualPtrOutput) +} + +type WatchlistEntityPopulationMechanismManualOutput struct{ *pulumi.OutputState } + +func (WatchlistEntityPopulationMechanismManualOutput) ElementType() reflect.Type { + return reflect.TypeOf((*WatchlistEntityPopulationMechanismManual)(nil)).Elem() +} + +func (o WatchlistEntityPopulationMechanismManualOutput) ToWatchlistEntityPopulationMechanismManualOutput() WatchlistEntityPopulationMechanismManualOutput { + return o +} + +func (o WatchlistEntityPopulationMechanismManualOutput) ToWatchlistEntityPopulationMechanismManualOutputWithContext(ctx context.Context) WatchlistEntityPopulationMechanismManualOutput { + return o +} + +func (o WatchlistEntityPopulationMechanismManualOutput) ToWatchlistEntityPopulationMechanismManualPtrOutput() WatchlistEntityPopulationMechanismManualPtrOutput { + return o.ToWatchlistEntityPopulationMechanismManualPtrOutputWithContext(context.Background()) +} + +func (o WatchlistEntityPopulationMechanismManualOutput) ToWatchlistEntityPopulationMechanismManualPtrOutputWithContext(ctx context.Context) WatchlistEntityPopulationMechanismManualPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v WatchlistEntityPopulationMechanismManual) *WatchlistEntityPopulationMechanismManual { + return &v + }).(WatchlistEntityPopulationMechanismManualPtrOutput) +} + +type WatchlistEntityPopulationMechanismManualPtrOutput struct{ *pulumi.OutputState } + +func (WatchlistEntityPopulationMechanismManualPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**WatchlistEntityPopulationMechanismManual)(nil)).Elem() +} + +func (o WatchlistEntityPopulationMechanismManualPtrOutput) ToWatchlistEntityPopulationMechanismManualPtrOutput() WatchlistEntityPopulationMechanismManualPtrOutput { + return o +} + +func (o WatchlistEntityPopulationMechanismManualPtrOutput) ToWatchlistEntityPopulationMechanismManualPtrOutputWithContext(ctx context.Context) WatchlistEntityPopulationMechanismManualPtrOutput { + return o +} + +func (o WatchlistEntityPopulationMechanismManualPtrOutput) Elem() WatchlistEntityPopulationMechanismManualOutput { + return o.ApplyT(func(v *WatchlistEntityPopulationMechanismManual) WatchlistEntityPopulationMechanismManual { + if v != nil { + return *v + } + var ret WatchlistEntityPopulationMechanismManual + return ret + }).(WatchlistEntityPopulationMechanismManualOutput) +} + +type WatchlistWatchlistUserPreferences struct { + // Optional. Whether the watchlist is pinned on the dashboard. + Pinned *bool `pulumi:"pinned"` +} + +// WatchlistWatchlistUserPreferencesInput is an input type that accepts WatchlistWatchlistUserPreferencesArgs and WatchlistWatchlistUserPreferencesOutput values. +// You can construct a concrete instance of `WatchlistWatchlistUserPreferencesInput` via: +// +// WatchlistWatchlistUserPreferencesArgs{...} +type WatchlistWatchlistUserPreferencesInput interface { + pulumi.Input + + ToWatchlistWatchlistUserPreferencesOutput() WatchlistWatchlistUserPreferencesOutput + ToWatchlistWatchlistUserPreferencesOutputWithContext(context.Context) WatchlistWatchlistUserPreferencesOutput +} + +type WatchlistWatchlistUserPreferencesArgs struct { + // Optional. Whether the watchlist is pinned on the dashboard. + Pinned pulumi.BoolPtrInput `pulumi:"pinned"` +} + +func (WatchlistWatchlistUserPreferencesArgs) ElementType() reflect.Type { + return reflect.TypeOf((*WatchlistWatchlistUserPreferences)(nil)).Elem() +} + +func (i WatchlistWatchlistUserPreferencesArgs) ToWatchlistWatchlistUserPreferencesOutput() WatchlistWatchlistUserPreferencesOutput { + return i.ToWatchlistWatchlistUserPreferencesOutputWithContext(context.Background()) +} + +func (i WatchlistWatchlistUserPreferencesArgs) ToWatchlistWatchlistUserPreferencesOutputWithContext(ctx context.Context) WatchlistWatchlistUserPreferencesOutput { + return pulumi.ToOutputWithContext(ctx, i).(WatchlistWatchlistUserPreferencesOutput) +} + +func (i WatchlistWatchlistUserPreferencesArgs) ToWatchlistWatchlistUserPreferencesPtrOutput() WatchlistWatchlistUserPreferencesPtrOutput { + return i.ToWatchlistWatchlistUserPreferencesPtrOutputWithContext(context.Background()) +} + +func (i WatchlistWatchlistUserPreferencesArgs) ToWatchlistWatchlistUserPreferencesPtrOutputWithContext(ctx context.Context) WatchlistWatchlistUserPreferencesPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(WatchlistWatchlistUserPreferencesOutput).ToWatchlistWatchlistUserPreferencesPtrOutputWithContext(ctx) +} + +// WatchlistWatchlistUserPreferencesPtrInput is an input type that accepts WatchlistWatchlistUserPreferencesArgs, WatchlistWatchlistUserPreferencesPtr and WatchlistWatchlistUserPreferencesPtrOutput values. +// You can construct a concrete instance of `WatchlistWatchlistUserPreferencesPtrInput` via: +// +// WatchlistWatchlistUserPreferencesArgs{...} +// +// or: +// +// nil +type WatchlistWatchlistUserPreferencesPtrInput interface { + pulumi.Input + + ToWatchlistWatchlistUserPreferencesPtrOutput() WatchlistWatchlistUserPreferencesPtrOutput + ToWatchlistWatchlistUserPreferencesPtrOutputWithContext(context.Context) WatchlistWatchlistUserPreferencesPtrOutput +} + +type watchlistWatchlistUserPreferencesPtrType WatchlistWatchlistUserPreferencesArgs + +func WatchlistWatchlistUserPreferencesPtr(v *WatchlistWatchlistUserPreferencesArgs) WatchlistWatchlistUserPreferencesPtrInput { + return (*watchlistWatchlistUserPreferencesPtrType)(v) +} + +func (*watchlistWatchlistUserPreferencesPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**WatchlistWatchlistUserPreferences)(nil)).Elem() +} + +func (i *watchlistWatchlistUserPreferencesPtrType) ToWatchlistWatchlistUserPreferencesPtrOutput() WatchlistWatchlistUserPreferencesPtrOutput { + return i.ToWatchlistWatchlistUserPreferencesPtrOutputWithContext(context.Background()) +} + +func (i *watchlistWatchlistUserPreferencesPtrType) ToWatchlistWatchlistUserPreferencesPtrOutputWithContext(ctx context.Context) WatchlistWatchlistUserPreferencesPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(WatchlistWatchlistUserPreferencesPtrOutput) +} + +type WatchlistWatchlistUserPreferencesOutput struct{ *pulumi.OutputState } + +func (WatchlistWatchlistUserPreferencesOutput) ElementType() reflect.Type { + return reflect.TypeOf((*WatchlistWatchlistUserPreferences)(nil)).Elem() +} + +func (o WatchlistWatchlistUserPreferencesOutput) ToWatchlistWatchlistUserPreferencesOutput() WatchlistWatchlistUserPreferencesOutput { + return o +} + +func (o WatchlistWatchlistUserPreferencesOutput) ToWatchlistWatchlistUserPreferencesOutputWithContext(ctx context.Context) WatchlistWatchlistUserPreferencesOutput { + return o +} + +func (o WatchlistWatchlistUserPreferencesOutput) ToWatchlistWatchlistUserPreferencesPtrOutput() WatchlistWatchlistUserPreferencesPtrOutput { + return o.ToWatchlistWatchlistUserPreferencesPtrOutputWithContext(context.Background()) +} + +func (o WatchlistWatchlistUserPreferencesOutput) ToWatchlistWatchlistUserPreferencesPtrOutputWithContext(ctx context.Context) WatchlistWatchlistUserPreferencesPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v WatchlistWatchlistUserPreferences) *WatchlistWatchlistUserPreferences { + return &v + }).(WatchlistWatchlistUserPreferencesPtrOutput) +} + +// Optional. Whether the watchlist is pinned on the dashboard. +func (o WatchlistWatchlistUserPreferencesOutput) Pinned() pulumi.BoolPtrOutput { + return o.ApplyT(func(v WatchlistWatchlistUserPreferences) *bool { return v.Pinned }).(pulumi.BoolPtrOutput) +} + +type WatchlistWatchlistUserPreferencesPtrOutput struct{ *pulumi.OutputState } + +func (WatchlistWatchlistUserPreferencesPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**WatchlistWatchlistUserPreferences)(nil)).Elem() +} + +func (o WatchlistWatchlistUserPreferencesPtrOutput) ToWatchlistWatchlistUserPreferencesPtrOutput() WatchlistWatchlistUserPreferencesPtrOutput { + return o +} + +func (o WatchlistWatchlistUserPreferencesPtrOutput) ToWatchlistWatchlistUserPreferencesPtrOutputWithContext(ctx context.Context) WatchlistWatchlistUserPreferencesPtrOutput { + return o +} + +func (o WatchlistWatchlistUserPreferencesPtrOutput) Elem() WatchlistWatchlistUserPreferencesOutput { + return o.ApplyT(func(v *WatchlistWatchlistUserPreferences) WatchlistWatchlistUserPreferences { + if v != nil { + return *v + } + var ret WatchlistWatchlistUserPreferences + return ret + }).(WatchlistWatchlistUserPreferencesOutput) +} + +// Optional. Whether the watchlist is pinned on the dashboard. +func (o WatchlistWatchlistUserPreferencesPtrOutput) Pinned() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *WatchlistWatchlistUserPreferences) *bool { + if v == nil { + return nil + } + return v.Pinned + }).(pulumi.BoolPtrOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*WatchlistEntityCountInput)(nil)).Elem(), WatchlistEntityCountArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*WatchlistEntityCountArrayInput)(nil)).Elem(), WatchlistEntityCountArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*WatchlistEntityPopulationMechanismInput)(nil)).Elem(), WatchlistEntityPopulationMechanismArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*WatchlistEntityPopulationMechanismPtrInput)(nil)).Elem(), WatchlistEntityPopulationMechanismArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*WatchlistEntityPopulationMechanismManualInput)(nil)).Elem(), WatchlistEntityPopulationMechanismManualArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*WatchlistEntityPopulationMechanismManualPtrInput)(nil)).Elem(), WatchlistEntityPopulationMechanismManualArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*WatchlistWatchlistUserPreferencesInput)(nil)).Elem(), WatchlistWatchlistUserPreferencesArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*WatchlistWatchlistUserPreferencesPtrInput)(nil)).Elem(), WatchlistWatchlistUserPreferencesArgs{}) + pulumi.RegisterOutputType(WatchlistEntityCountOutput{}) + pulumi.RegisterOutputType(WatchlistEntityCountArrayOutput{}) + pulumi.RegisterOutputType(WatchlistEntityPopulationMechanismOutput{}) + pulumi.RegisterOutputType(WatchlistEntityPopulationMechanismPtrOutput{}) + pulumi.RegisterOutputType(WatchlistEntityPopulationMechanismManualOutput{}) + pulumi.RegisterOutputType(WatchlistEntityPopulationMechanismManualPtrOutput{}) + pulumi.RegisterOutputType(WatchlistWatchlistUserPreferencesOutput{}) + pulumi.RegisterOutputType(WatchlistWatchlistUserPreferencesPtrOutput{}) +} diff --git a/sdk/go/gcp/chronicle/watchlist.go b/sdk/go/gcp/chronicle/watchlist.go new file mode 100644 index 0000000000..d9fb2e808e --- /dev/null +++ b/sdk/go/gcp/chronicle/watchlist.go @@ -0,0 +1,498 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package chronicle + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// ## Example Usage +// +// ### Chronicle Watchlist Basic +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/chronicle" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := chronicle.NewWatchlist(ctx, "example", &chronicle.WatchlistArgs{ +// Location: pulumi.String("us"), +// Instance: pulumi.String("00000000-0000-0000-0000-000000000000"), +// WatchlistId: pulumi.String("watchlist-name"), +// Description: pulumi.String("watchlist-description"), +// DisplayName: pulumi.String("watchlist-name"), +// MultiplyingFactor: pulumi.Float64(1), +// EntityPopulationMechanism: &chronicle.WatchlistEntityPopulationMechanismArgs{ +// Manual: &chronicle.WatchlistEntityPopulationMechanismManualArgs{}, +// }, +// WatchlistUserPreferences: &chronicle.WatchlistWatchlistUserPreferencesArgs{ +// Pinned: pulumi.Bool(true), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## 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}} +// ``` +type Watchlist struct { + pulumi.CustomResourceState + + // Output only. Time the watchlist was created. + CreateTime pulumi.StringOutput `pulumi:"createTime"` + // Optional. Description of the watchlist. + Description pulumi.StringPtrOutput `pulumi:"description"` + // 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). + DisplayName pulumi.StringOutput `pulumi:"displayName"` + // Count of different types of entities in the watchlist. + // Structure is documented below. + EntityCounts WatchlistEntityCountArrayOutput `pulumi:"entityCounts"` + // Mechanism to populate entities in the watchlist. + // Structure is documented below. + EntityPopulationMechanism WatchlistEntityPopulationMechanismOutput `pulumi:"entityPopulationMechanism"` + // The unique identifier for the Chronicle instance, which is the same as the customer ID. + Instance pulumi.StringOutput `pulumi:"instance"` + // The location of the resource. This is the geographical region where the Chronicle instance resides, such as "us" or "europe-west2". + Location pulumi.StringOutput `pulumi:"location"` + // Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified. + MultiplyingFactor pulumi.Float64PtrOutput `pulumi:"multiplyingFactor"` + // 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} + Name pulumi.StringOutput `pulumi:"name"` + Project pulumi.StringOutput `pulumi:"project"` + // Output only. Time the watchlist was last updated. + UpdateTime pulumi.StringOutput `pulumi:"updateTime"` + // 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-/. + WatchlistId pulumi.StringOutput `pulumi:"watchlistId"` + // A collection of user preferences for watchlist UI configuration. + WatchlistUserPreferences WatchlistWatchlistUserPreferencesOutput `pulumi:"watchlistUserPreferences"` +} + +// NewWatchlist registers a new resource with the given unique name, arguments, and options. +func NewWatchlist(ctx *pulumi.Context, + name string, args *WatchlistArgs, opts ...pulumi.ResourceOption) (*Watchlist, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.DisplayName == nil { + return nil, errors.New("invalid value for required argument 'DisplayName'") + } + if args.EntityPopulationMechanism == nil { + return nil, errors.New("invalid value for required argument 'EntityPopulationMechanism'") + } + if args.Instance == nil { + return nil, errors.New("invalid value for required argument 'Instance'") + } + if args.Location == nil { + return nil, errors.New("invalid value for required argument 'Location'") + } + if args.WatchlistId == nil { + return nil, errors.New("invalid value for required argument 'WatchlistId'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource Watchlist + err := ctx.RegisterResource("gcp:chronicle/watchlist:Watchlist", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetWatchlist gets an existing Watchlist resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetWatchlist(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *WatchlistState, opts ...pulumi.ResourceOption) (*Watchlist, error) { + var resource Watchlist + err := ctx.ReadResource("gcp:chronicle/watchlist:Watchlist", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Watchlist resources. +type watchlistState struct { + // Output only. Time the watchlist was created. + CreateTime *string `pulumi:"createTime"` + // Optional. Description of the watchlist. + Description *string `pulumi:"description"` + // 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). + DisplayName *string `pulumi:"displayName"` + // Count of different types of entities in the watchlist. + // Structure is documented below. + EntityCounts []WatchlistEntityCount `pulumi:"entityCounts"` + // Mechanism to populate entities in the watchlist. + // Structure is documented below. + EntityPopulationMechanism *WatchlistEntityPopulationMechanism `pulumi:"entityPopulationMechanism"` + // The unique identifier for the Chronicle instance, which is the same as the customer ID. + Instance *string `pulumi:"instance"` + // The location of the resource. This is the geographical region where the Chronicle instance resides, such as "us" or "europe-west2". + Location *string `pulumi:"location"` + // Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified. + MultiplyingFactor *float64 `pulumi:"multiplyingFactor"` + // 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} + Name *string `pulumi:"name"` + Project *string `pulumi:"project"` + // Output only. Time the watchlist was last updated. + UpdateTime *string `pulumi:"updateTime"` + // 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-/. + WatchlistId *string `pulumi:"watchlistId"` + // A collection of user preferences for watchlist UI configuration. + WatchlistUserPreferences *WatchlistWatchlistUserPreferences `pulumi:"watchlistUserPreferences"` +} + +type WatchlistState struct { + // Output only. Time the watchlist was created. + CreateTime pulumi.StringPtrInput + // Optional. Description of the watchlist. + Description pulumi.StringPtrInput + // 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). + DisplayName pulumi.StringPtrInput + // Count of different types of entities in the watchlist. + // Structure is documented below. + EntityCounts WatchlistEntityCountArrayInput + // Mechanism to populate entities in the watchlist. + // Structure is documented below. + EntityPopulationMechanism WatchlistEntityPopulationMechanismPtrInput + // The unique identifier for the Chronicle instance, which is the same as the customer ID. + Instance pulumi.StringPtrInput + // The location of the resource. This is the geographical region where the Chronicle instance resides, such as "us" or "europe-west2". + Location pulumi.StringPtrInput + // Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified. + MultiplyingFactor pulumi.Float64PtrInput + // 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} + Name pulumi.StringPtrInput + Project pulumi.StringPtrInput + // Output only. Time the watchlist was last updated. + UpdateTime pulumi.StringPtrInput + // 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-/. + WatchlistId pulumi.StringPtrInput + // A collection of user preferences for watchlist UI configuration. + WatchlistUserPreferences WatchlistWatchlistUserPreferencesPtrInput +} + +func (WatchlistState) ElementType() reflect.Type { + return reflect.TypeOf((*watchlistState)(nil)).Elem() +} + +type watchlistArgs struct { + // Optional. Description of the watchlist. + Description *string `pulumi:"description"` + // 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). + DisplayName string `pulumi:"displayName"` + // Mechanism to populate entities in the watchlist. + // Structure is documented below. + EntityPopulationMechanism WatchlistEntityPopulationMechanism `pulumi:"entityPopulationMechanism"` + // The unique identifier for the Chronicle instance, which is the same as the customer ID. + Instance string `pulumi:"instance"` + // The location of the resource. This is the geographical region where the Chronicle instance resides, such as "us" or "europe-west2". + Location string `pulumi:"location"` + // Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified. + MultiplyingFactor *float64 `pulumi:"multiplyingFactor"` + Project *string `pulumi:"project"` + // 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-/. + WatchlistId string `pulumi:"watchlistId"` + // A collection of user preferences for watchlist UI configuration. + WatchlistUserPreferences *WatchlistWatchlistUserPreferences `pulumi:"watchlistUserPreferences"` +} + +// The set of arguments for constructing a Watchlist resource. +type WatchlistArgs struct { + // Optional. Description of the watchlist. + Description pulumi.StringPtrInput + // 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). + DisplayName pulumi.StringInput + // Mechanism to populate entities in the watchlist. + // Structure is documented below. + EntityPopulationMechanism WatchlistEntityPopulationMechanismInput + // The unique identifier for the Chronicle instance, which is the same as the customer ID. + Instance pulumi.StringInput + // The location of the resource. This is the geographical region where the Chronicle instance resides, such as "us" or "europe-west2". + Location pulumi.StringInput + // Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified. + MultiplyingFactor pulumi.Float64PtrInput + Project pulumi.StringPtrInput + // 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-/. + WatchlistId pulumi.StringInput + // A collection of user preferences for watchlist UI configuration. + WatchlistUserPreferences WatchlistWatchlistUserPreferencesPtrInput +} + +func (WatchlistArgs) ElementType() reflect.Type { + return reflect.TypeOf((*watchlistArgs)(nil)).Elem() +} + +type WatchlistInput interface { + pulumi.Input + + ToWatchlistOutput() WatchlistOutput + ToWatchlistOutputWithContext(ctx context.Context) WatchlistOutput +} + +func (*Watchlist) ElementType() reflect.Type { + return reflect.TypeOf((**Watchlist)(nil)).Elem() +} + +func (i *Watchlist) ToWatchlistOutput() WatchlistOutput { + return i.ToWatchlistOutputWithContext(context.Background()) +} + +func (i *Watchlist) ToWatchlistOutputWithContext(ctx context.Context) WatchlistOutput { + return pulumi.ToOutputWithContext(ctx, i).(WatchlistOutput) +} + +// WatchlistArrayInput is an input type that accepts WatchlistArray and WatchlistArrayOutput values. +// You can construct a concrete instance of `WatchlistArrayInput` via: +// +// WatchlistArray{ WatchlistArgs{...} } +type WatchlistArrayInput interface { + pulumi.Input + + ToWatchlistArrayOutput() WatchlistArrayOutput + ToWatchlistArrayOutputWithContext(context.Context) WatchlistArrayOutput +} + +type WatchlistArray []WatchlistInput + +func (WatchlistArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Watchlist)(nil)).Elem() +} + +func (i WatchlistArray) ToWatchlistArrayOutput() WatchlistArrayOutput { + return i.ToWatchlistArrayOutputWithContext(context.Background()) +} + +func (i WatchlistArray) ToWatchlistArrayOutputWithContext(ctx context.Context) WatchlistArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(WatchlistArrayOutput) +} + +// WatchlistMapInput is an input type that accepts WatchlistMap and WatchlistMapOutput values. +// You can construct a concrete instance of `WatchlistMapInput` via: +// +// WatchlistMap{ "key": WatchlistArgs{...} } +type WatchlistMapInput interface { + pulumi.Input + + ToWatchlistMapOutput() WatchlistMapOutput + ToWatchlistMapOutputWithContext(context.Context) WatchlistMapOutput +} + +type WatchlistMap map[string]WatchlistInput + +func (WatchlistMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Watchlist)(nil)).Elem() +} + +func (i WatchlistMap) ToWatchlistMapOutput() WatchlistMapOutput { + return i.ToWatchlistMapOutputWithContext(context.Background()) +} + +func (i WatchlistMap) ToWatchlistMapOutputWithContext(ctx context.Context) WatchlistMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(WatchlistMapOutput) +} + +type WatchlistOutput struct{ *pulumi.OutputState } + +func (WatchlistOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Watchlist)(nil)).Elem() +} + +func (o WatchlistOutput) ToWatchlistOutput() WatchlistOutput { + return o +} + +func (o WatchlistOutput) ToWatchlistOutputWithContext(ctx context.Context) WatchlistOutput { + return o +} + +// Output only. Time the watchlist was created. +func (o WatchlistOutput) CreateTime() pulumi.StringOutput { + return o.ApplyT(func(v *Watchlist) pulumi.StringOutput { return v.CreateTime }).(pulumi.StringOutput) +} + +// Optional. Description of the watchlist. +func (o WatchlistOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Watchlist) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) +} + +// 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). +func (o WatchlistOutput) DisplayName() pulumi.StringOutput { + return o.ApplyT(func(v *Watchlist) pulumi.StringOutput { return v.DisplayName }).(pulumi.StringOutput) +} + +// Count of different types of entities in the watchlist. +// Structure is documented below. +func (o WatchlistOutput) EntityCounts() WatchlistEntityCountArrayOutput { + return o.ApplyT(func(v *Watchlist) WatchlistEntityCountArrayOutput { return v.EntityCounts }).(WatchlistEntityCountArrayOutput) +} + +// Mechanism to populate entities in the watchlist. +// Structure is documented below. +func (o WatchlistOutput) EntityPopulationMechanism() WatchlistEntityPopulationMechanismOutput { + return o.ApplyT(func(v *Watchlist) WatchlistEntityPopulationMechanismOutput { return v.EntityPopulationMechanism }).(WatchlistEntityPopulationMechanismOutput) +} + +// The unique identifier for the Chronicle instance, which is the same as the customer ID. +func (o WatchlistOutput) Instance() pulumi.StringOutput { + return o.ApplyT(func(v *Watchlist) pulumi.StringOutput { return v.Instance }).(pulumi.StringOutput) +} + +// The location of the resource. This is the geographical region where the Chronicle instance resides, such as "us" or "europe-west2". +func (o WatchlistOutput) Location() pulumi.StringOutput { + return o.ApplyT(func(v *Watchlist) pulumi.StringOutput { return v.Location }).(pulumi.StringOutput) +} + +// Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified. +func (o WatchlistOutput) MultiplyingFactor() pulumi.Float64PtrOutput { + return o.ApplyT(func(v *Watchlist) pulumi.Float64PtrOutput { return v.MultiplyingFactor }).(pulumi.Float64PtrOutput) +} + +// 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} +func (o WatchlistOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *Watchlist) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +func (o WatchlistOutput) Project() pulumi.StringOutput { + return o.ApplyT(func(v *Watchlist) pulumi.StringOutput { return v.Project }).(pulumi.StringOutput) +} + +// Output only. Time the watchlist was last updated. +func (o WatchlistOutput) UpdateTime() pulumi.StringOutput { + return o.ApplyT(func(v *Watchlist) pulumi.StringOutput { return v.UpdateTime }).(pulumi.StringOutput) +} + +// 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-/. +func (o WatchlistOutput) WatchlistId() pulumi.StringOutput { + return o.ApplyT(func(v *Watchlist) pulumi.StringOutput { return v.WatchlistId }).(pulumi.StringOutput) +} + +// A collection of user preferences for watchlist UI configuration. +func (o WatchlistOutput) WatchlistUserPreferences() WatchlistWatchlistUserPreferencesOutput { + return o.ApplyT(func(v *Watchlist) WatchlistWatchlistUserPreferencesOutput { return v.WatchlistUserPreferences }).(WatchlistWatchlistUserPreferencesOutput) +} + +type WatchlistArrayOutput struct{ *pulumi.OutputState } + +func (WatchlistArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Watchlist)(nil)).Elem() +} + +func (o WatchlistArrayOutput) ToWatchlistArrayOutput() WatchlistArrayOutput { + return o +} + +func (o WatchlistArrayOutput) ToWatchlistArrayOutputWithContext(ctx context.Context) WatchlistArrayOutput { + return o +} + +func (o WatchlistArrayOutput) Index(i pulumi.IntInput) WatchlistOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Watchlist { + return vs[0].([]*Watchlist)[vs[1].(int)] + }).(WatchlistOutput) +} + +type WatchlistMapOutput struct{ *pulumi.OutputState } + +func (WatchlistMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Watchlist)(nil)).Elem() +} + +func (o WatchlistMapOutput) ToWatchlistMapOutput() WatchlistMapOutput { + return o +} + +func (o WatchlistMapOutput) ToWatchlistMapOutputWithContext(ctx context.Context) WatchlistMapOutput { + return o +} + +func (o WatchlistMapOutput) MapIndex(k pulumi.StringInput) WatchlistOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Watchlist { + return vs[0].(map[string]*Watchlist)[vs[1].(string)] + }).(WatchlistOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*WatchlistInput)(nil)).Elem(), &Watchlist{}) + pulumi.RegisterInputType(reflect.TypeOf((*WatchlistArrayInput)(nil)).Elem(), WatchlistArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*WatchlistMapInput)(nil)).Elem(), WatchlistMap{}) + pulumi.RegisterOutputType(WatchlistOutput{}) + pulumi.RegisterOutputType(WatchlistArrayOutput{}) + pulumi.RegisterOutputType(WatchlistMapOutput{}) +} diff --git a/sdk/go/gcp/cloudrunv2/pulumiTypes.go b/sdk/go/gcp/cloudrunv2/pulumiTypes.go index 2e01dd6d95..dc1ff400ad 100644 --- a/sdk/go/gcp/cloudrunv2/pulumiTypes.go +++ b/sdk/go/gcp/cloudrunv2/pulumiTypes.go @@ -8173,7 +8173,8 @@ func (o ServiceTemplateNodeSelectorPtrOutput) Accelerator() pulumi.StringPtrOutp } type ServiceTemplateScaling struct { - // 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. MaxInstanceCount *int `pulumi:"maxInstanceCount"` // Minimum number of instances for the service, to be divided among all revisions receiving traffic. MinInstanceCount *int `pulumi:"minInstanceCount"` @@ -8191,7 +8192,8 @@ type ServiceTemplateScalingInput interface { } type ServiceTemplateScalingArgs struct { - // 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. MaxInstanceCount pulumi.IntPtrInput `pulumi:"maxInstanceCount"` // Minimum number of instances for the service, to be divided among all revisions receiving traffic. MinInstanceCount pulumi.IntPtrInput `pulumi:"minInstanceCount"` @@ -8274,7 +8276,8 @@ func (o ServiceTemplateScalingOutput) ToServiceTemplateScalingPtrOutputWithConte }).(ServiceTemplateScalingPtrOutput) } -// 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. func (o ServiceTemplateScalingOutput) MaxInstanceCount() pulumi.IntPtrOutput { return o.ApplyT(func(v ServiceTemplateScaling) *int { return v.MaxInstanceCount }).(pulumi.IntPtrOutput) } @@ -8308,7 +8311,8 @@ func (o ServiceTemplateScalingPtrOutput) Elem() ServiceTemplateScalingOutput { }).(ServiceTemplateScalingOutput) } -// 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. func (o ServiceTemplateScalingPtrOutput) MaxInstanceCount() pulumi.IntPtrOutput { return o.ApplyT(func(v *ServiceTemplateScaling) *int { if v == nil { @@ -15900,9 +15904,10 @@ func (o GetServiceTemplateNodeSelectorArrayOutput) Index(i pulumi.IntInput) GetS } type GetServiceTemplateScaling struct { - // 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. MaxInstanceCount int `pulumi:"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. MinInstanceCount int `pulumi:"minInstanceCount"` } @@ -15918,9 +15923,10 @@ type GetServiceTemplateScalingInput interface { } type GetServiceTemplateScalingArgs struct { - // 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. MaxInstanceCount pulumi.IntInput `pulumi:"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. MinInstanceCount pulumi.IntInput `pulumi:"minInstanceCount"` } @@ -15975,12 +15981,13 @@ func (o GetServiceTemplateScalingOutput) ToGetServiceTemplateScalingOutputWithCo return o } -// 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. func (o GetServiceTemplateScalingOutput) MaxInstanceCount() pulumi.IntOutput { return o.ApplyT(func(v GetServiceTemplateScaling) int { return v.MaxInstanceCount }).(pulumi.IntOutput) } -// 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. func (o GetServiceTemplateScalingOutput) MinInstanceCount() pulumi.IntOutput { return o.ApplyT(func(v GetServiceTemplateScaling) int { return v.MinInstanceCount }).(pulumi.IntOutput) } diff --git a/sdk/go/gcp/composer/pulumiTypes.go b/sdk/go/gcp/composer/pulumiTypes.go index 1adcd5ebe8..9fa7b91c5b 100644 --- a/sdk/go/gcp/composer/pulumiTypes.go +++ b/sdk/go/gcp/composer/pulumiTypes.go @@ -538,6 +538,8 @@ func (o EnvironmentConfigPtrOutput) WorkloadsConfig() EnvironmentConfigWorkloads } type EnvironmentConfigDataRetentionConfig struct { + // Optional. The configuration setting for database retention. + AirflowMetadataRetentionConfigs []EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig `pulumi:"airflowMetadataRetentionConfigs"` // Optional. The configuration setting for Task Logs. TaskLogsRetentionConfigs []EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig `pulumi:"taskLogsRetentionConfigs"` } @@ -554,6 +556,8 @@ type EnvironmentConfigDataRetentionConfigInput interface { } type EnvironmentConfigDataRetentionConfigArgs struct { + // Optional. The configuration setting for database retention. + AirflowMetadataRetentionConfigs EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayInput `pulumi:"airflowMetadataRetentionConfigs"` // Optional. The configuration setting for Task Logs. TaskLogsRetentionConfigs EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArrayInput `pulumi:"taskLogsRetentionConfigs"` } @@ -635,6 +639,13 @@ func (o EnvironmentConfigDataRetentionConfigOutput) ToEnvironmentConfigDataReten }).(EnvironmentConfigDataRetentionConfigPtrOutput) } +// Optional. The configuration setting for database retention. +func (o EnvironmentConfigDataRetentionConfigOutput) AirflowMetadataRetentionConfigs() EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput { + return o.ApplyT(func(v EnvironmentConfigDataRetentionConfig) []EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig { + return v.AirflowMetadataRetentionConfigs + }).(EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput) +} + // Optional. The configuration setting for Task Logs. func (o EnvironmentConfigDataRetentionConfigOutput) TaskLogsRetentionConfigs() EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArrayOutput { return o.ApplyT(func(v EnvironmentConfigDataRetentionConfig) []EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig { @@ -666,6 +677,16 @@ func (o EnvironmentConfigDataRetentionConfigPtrOutput) Elem() EnvironmentConfigD }).(EnvironmentConfigDataRetentionConfigOutput) } +// Optional. The configuration setting for database retention. +func (o EnvironmentConfigDataRetentionConfigPtrOutput) AirflowMetadataRetentionConfigs() EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput { + return o.ApplyT(func(v *EnvironmentConfigDataRetentionConfig) []EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig { + if v == nil { + return nil + } + return v.AirflowMetadataRetentionConfigs + }).(EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput) +} + // Optional. The configuration setting for Task Logs. func (o EnvironmentConfigDataRetentionConfigPtrOutput) TaskLogsRetentionConfigs() EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArrayOutput { return o.ApplyT(func(v *EnvironmentConfigDataRetentionConfig) []EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig { @@ -676,6 +697,116 @@ func (o EnvironmentConfigDataRetentionConfigPtrOutput) TaskLogsRetentionConfigs( }).(EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArrayOutput) } +type EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig struct { + // How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer. + RetentionDays *int `pulumi:"retentionDays"` + // Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer. + RetentionMode *string `pulumi:"retentionMode"` +} + +// EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigInput is an input type that accepts EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs and EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput values. +// You can construct a concrete instance of `EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigInput` via: +// +// EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs{...} +type EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigInput interface { + pulumi.Input + + ToEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput() EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput + ToEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutputWithContext(context.Context) EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput +} + +type EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs struct { + // How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer. + RetentionDays pulumi.IntPtrInput `pulumi:"retentionDays"` + // Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer. + RetentionMode pulumi.StringPtrInput `pulumi:"retentionMode"` +} + +func (EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig)(nil)).Elem() +} + +func (i EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs) ToEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput() EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput { + return i.ToEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutputWithContext(context.Background()) +} + +func (i EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs) ToEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutputWithContext(ctx context.Context) EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput) +} + +// EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayInput is an input type that accepts EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArray and EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput values. +// You can construct a concrete instance of `EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayInput` via: +// +// EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArray{ EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs{...} } +type EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayInput interface { + pulumi.Input + + ToEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput() EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput + ToEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutputWithContext(context.Context) EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput +} + +type EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArray []EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigInput + +func (EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig)(nil)).Elem() +} + +func (i EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArray) ToEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput() EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput { + return i.ToEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutputWithContext(context.Background()) +} + +func (i EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArray) ToEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutputWithContext(ctx context.Context) EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput) +} + +type EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput struct{ *pulumi.OutputState } + +func (EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig)(nil)).Elem() +} + +func (o EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput) ToEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput() EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput { + return o +} + +func (o EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput) ToEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutputWithContext(ctx context.Context) EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput { + return o +} + +// How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer. +func (o EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput) RetentionDays() pulumi.IntPtrOutput { + return o.ApplyT(func(v EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig) *int { + return v.RetentionDays + }).(pulumi.IntPtrOutput) +} + +// Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer. +func (o EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput) RetentionMode() pulumi.StringPtrOutput { + return o.ApplyT(func(v EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig) *string { + return v.RetentionMode + }).(pulumi.StringPtrOutput) +} + +type EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput struct{ *pulumi.OutputState } + +func (EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig)(nil)).Elem() +} + +func (o EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput) ToEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput() EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput { + return o +} + +func (o EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput) ToEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutputWithContext(ctx context.Context) EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput { + return o +} + +func (o EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput) Index(i pulumi.IntInput) EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig { + return vs[0].([]EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig)[vs[1].(int)] + }).(EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput) +} + type EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig struct { // Whether logs in cloud logging only is enabled or not. This field is supported for Cloud Composer environments in versions composer-2.0.32-airflow-2.1.4 and newer. StorageMode *string `pulumi:"storageMode"` @@ -5068,6 +5199,8 @@ func (o GetEnvironmentConfigArrayOutput) Index(i pulumi.IntInput) GetEnvironment } type GetEnvironmentConfigDataRetentionConfig struct { + // Optional. The configuration setting for database retention. + AirflowMetadataRetentionConfigs []GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig `pulumi:"airflowMetadataRetentionConfigs"` // Optional. The configuration setting for Task Logs. TaskLogsRetentionConfigs []GetEnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig `pulumi:"taskLogsRetentionConfigs"` } @@ -5084,6 +5217,8 @@ type GetEnvironmentConfigDataRetentionConfigInput interface { } type GetEnvironmentConfigDataRetentionConfigArgs struct { + // Optional. The configuration setting for database retention. + AirflowMetadataRetentionConfigs GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayInput `pulumi:"airflowMetadataRetentionConfigs"` // Optional. The configuration setting for Task Logs. TaskLogsRetentionConfigs GetEnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArrayInput `pulumi:"taskLogsRetentionConfigs"` } @@ -5139,6 +5274,13 @@ func (o GetEnvironmentConfigDataRetentionConfigOutput) ToGetEnvironmentConfigDat return o } +// Optional. The configuration setting for database retention. +func (o GetEnvironmentConfigDataRetentionConfigOutput) AirflowMetadataRetentionConfigs() GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput { + return o.ApplyT(func(v GetEnvironmentConfigDataRetentionConfig) []GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig { + return v.AirflowMetadataRetentionConfigs + }).(GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput) +} + // Optional. The configuration setting for Task Logs. func (o GetEnvironmentConfigDataRetentionConfigOutput) TaskLogsRetentionConfigs() GetEnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArrayOutput { return o.ApplyT(func(v GetEnvironmentConfigDataRetentionConfig) []GetEnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig { @@ -5166,6 +5308,116 @@ func (o GetEnvironmentConfigDataRetentionConfigArrayOutput) Index(i pulumi.IntIn }).(GetEnvironmentConfigDataRetentionConfigOutput) } +type GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig struct { + // How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer. + RetentionDays int `pulumi:"retentionDays"` + // Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer. + RetentionMode string `pulumi:"retentionMode"` +} + +// GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigInput is an input type that accepts GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs and GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput values. +// You can construct a concrete instance of `GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigInput` via: +// +// GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs{...} +type GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigInput interface { + pulumi.Input + + ToGetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput() GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput + ToGetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutputWithContext(context.Context) GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput +} + +type GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs struct { + // How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer. + RetentionDays pulumi.IntInput `pulumi:"retentionDays"` + // Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer. + RetentionMode pulumi.StringInput `pulumi:"retentionMode"` +} + +func (GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig)(nil)).Elem() +} + +func (i GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs) ToGetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput() GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput { + return i.ToGetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutputWithContext(context.Background()) +} + +func (i GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs) ToGetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutputWithContext(ctx context.Context) GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput) +} + +// GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayInput is an input type that accepts GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArray and GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput values. +// You can construct a concrete instance of `GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayInput` via: +// +// GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArray{ GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs{...} } +type GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayInput interface { + pulumi.Input + + ToGetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput() GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput + ToGetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutputWithContext(context.Context) GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput +} + +type GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArray []GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigInput + +func (GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig)(nil)).Elem() +} + +func (i GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArray) ToGetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput() GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput { + return i.ToGetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutputWithContext(context.Background()) +} + +func (i GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArray) ToGetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutputWithContext(ctx context.Context) GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput) +} + +type GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput struct{ *pulumi.OutputState } + +func (GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig)(nil)).Elem() +} + +func (o GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput) ToGetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput() GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput { + return o +} + +func (o GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput) ToGetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutputWithContext(ctx context.Context) GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput { + return o +} + +// How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer. +func (o GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput) RetentionDays() pulumi.IntOutput { + return o.ApplyT(func(v GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig) int { + return v.RetentionDays + }).(pulumi.IntOutput) +} + +// Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer. +func (o GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput) RetentionMode() pulumi.StringOutput { + return o.ApplyT(func(v GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig) string { + return v.RetentionMode + }).(pulumi.StringOutput) +} + +type GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput struct{ *pulumi.OutputState } + +func (GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig)(nil)).Elem() +} + +func (o GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput) ToGetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput() GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput { + return o +} + +func (o GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput) ToGetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutputWithContext(ctx context.Context) GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput { + return o +} + +func (o GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput) Index(i pulumi.IntInput) GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig { + return vs[0].([]GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig)[vs[1].(int)] + }).(GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput) +} + type GetEnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig struct { // Whether logs in cloud logging only is enabled or not. This field is supported for Cloud Composer environments in versions composer-2.0.32-airflow-2.1.4 and newer. StorageMode string `pulumi:"storageMode"` @@ -8047,6 +8299,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*EnvironmentConfigPtrInput)(nil)).Elem(), EnvironmentConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*EnvironmentConfigDataRetentionConfigInput)(nil)).Elem(), EnvironmentConfigDataRetentionConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*EnvironmentConfigDataRetentionConfigPtrInput)(nil)).Elem(), EnvironmentConfigDataRetentionConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigInput)(nil)).Elem(), EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayInput)(nil)).Elem(), EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArray{}) pulumi.RegisterInputType(reflect.TypeOf((*EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigInput)(nil)).Elem(), EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArrayInput)(nil)).Elem(), EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArray{}) pulumi.RegisterInputType(reflect.TypeOf((*EnvironmentConfigDatabaseConfigInput)(nil)).Elem(), EnvironmentConfigDatabaseConfigArgs{}) @@ -8097,6 +8351,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*GetEnvironmentConfigArrayInput)(nil)).Elem(), GetEnvironmentConfigArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetEnvironmentConfigDataRetentionConfigInput)(nil)).Elem(), GetEnvironmentConfigDataRetentionConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetEnvironmentConfigDataRetentionConfigArrayInput)(nil)).Elem(), GetEnvironmentConfigDataRetentionConfigArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigInput)(nil)).Elem(), GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayInput)(nil)).Elem(), GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetEnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigInput)(nil)).Elem(), GetEnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetEnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArrayInput)(nil)).Elem(), GetEnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetEnvironmentConfigDatabaseConfigInput)(nil)).Elem(), GetEnvironmentConfigDatabaseConfigArgs{}) @@ -8149,6 +8405,8 @@ func init() { pulumi.RegisterOutputType(EnvironmentConfigPtrOutput{}) pulumi.RegisterOutputType(EnvironmentConfigDataRetentionConfigOutput{}) pulumi.RegisterOutputType(EnvironmentConfigDataRetentionConfigPtrOutput{}) + pulumi.RegisterOutputType(EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput{}) + pulumi.RegisterOutputType(EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput{}) pulumi.RegisterOutputType(EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigOutput{}) pulumi.RegisterOutputType(EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArrayOutput{}) pulumi.RegisterOutputType(EnvironmentConfigDatabaseConfigOutput{}) @@ -8199,6 +8457,8 @@ func init() { pulumi.RegisterOutputType(GetEnvironmentConfigArrayOutput{}) pulumi.RegisterOutputType(GetEnvironmentConfigDataRetentionConfigOutput{}) pulumi.RegisterOutputType(GetEnvironmentConfigDataRetentionConfigArrayOutput{}) + pulumi.RegisterOutputType(GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigOutput{}) + pulumi.RegisterOutputType(GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArrayOutput{}) pulumi.RegisterOutputType(GetEnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigOutput{}) pulumi.RegisterOutputType(GetEnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArrayOutput{}) pulumi.RegisterOutputType(GetEnvironmentConfigDatabaseConfigOutput{}) diff --git a/sdk/go/gcp/compute/firewallPolicyAssociation.go b/sdk/go/gcp/compute/firewallPolicyAssociation.go index df79f3c85c..729c0cdf72 100644 --- a/sdk/go/gcp/compute/firewallPolicyAssociation.go +++ b/sdk/go/gcp/compute/firewallPolicyAssociation.go @@ -13,25 +13,39 @@ import ( ) // 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 +// // ```go // package main // // import ( // // "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute" +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // // ) // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewFirewallPolicy(ctx, "default", &compute.FirewallPolicyArgs{ -// Parent: pulumi.String("organizations/12345"), +// folder, err := organizations.NewFolder(ctx, "folder", &organizations.FolderArgs{ +// DisplayName: pulumi.String("my-folder"), +// Parent: pulumi.String("organizations/123456789"), +// DeletionProtection: pulumi.Bool(false), +// }) +// if err != nil { +// return err +// } +// policy, err := compute.NewFirewallPolicy(ctx, "policy", &compute.FirewallPolicyArgs{ +// Parent: pulumi.String("organizations/123456789"), // ShortName: pulumi.String("my-policy"), // Description: pulumi.String("Example Resource"), // }) @@ -39,8 +53,8 @@ import ( // return err // } // _, err = compute.NewFirewallPolicyAssociation(ctx, "default", &compute.FirewallPolicyAssociationArgs{ -// FirewallPolicy: _default.ID(), -// AttachmentTarget: pulumi.Any(folder.Name), +// FirewallPolicy: policy.ID(), +// AttachmentTarget: folder.Name, // Name: pulumi.String("my-association"), // }) // if err != nil { @@ -74,11 +88,11 @@ type FirewallPolicyAssociation struct { // The target that the firewall policy is attached to. AttachmentTarget pulumi.StringOutput `pulumi:"attachmentTarget"` - // The firewall policy ID of the association. - FirewallPolicy pulumi.StringOutput `pulumi:"firewallPolicy"` - // The name for an association. + // The firewall policy of the resource. // // *** + FirewallPolicy pulumi.StringOutput `pulumi:"firewallPolicy"` + // The name for an association. Name pulumi.StringOutput `pulumi:"name"` // The short name of the firewall policy of the association. ShortName pulumi.StringOutput `pulumi:"shortName"` @@ -122,11 +136,11 @@ func GetFirewallPolicyAssociation(ctx *pulumi.Context, type firewallPolicyAssociationState struct { // The target that the firewall policy is attached to. AttachmentTarget *string `pulumi:"attachmentTarget"` - // The firewall policy ID of the association. - FirewallPolicy *string `pulumi:"firewallPolicy"` - // The name for an association. + // The firewall policy of the resource. // // *** + FirewallPolicy *string `pulumi:"firewallPolicy"` + // The name for an association. Name *string `pulumi:"name"` // The short name of the firewall policy of the association. ShortName *string `pulumi:"shortName"` @@ -135,11 +149,11 @@ type firewallPolicyAssociationState struct { type FirewallPolicyAssociationState struct { // The target that the firewall policy is attached to. AttachmentTarget pulumi.StringPtrInput - // The firewall policy ID of the association. - FirewallPolicy pulumi.StringPtrInput - // The name for an association. + // The firewall policy of the resource. // // *** + FirewallPolicy pulumi.StringPtrInput + // The name for an association. Name pulumi.StringPtrInput // The short name of the firewall policy of the association. ShortName pulumi.StringPtrInput @@ -152,11 +166,11 @@ func (FirewallPolicyAssociationState) ElementType() reflect.Type { type firewallPolicyAssociationArgs struct { // The target that the firewall policy is attached to. AttachmentTarget string `pulumi:"attachmentTarget"` - // The firewall policy ID of the association. - FirewallPolicy string `pulumi:"firewallPolicy"` - // The name for an association. + // The firewall policy of the resource. // // *** + FirewallPolicy string `pulumi:"firewallPolicy"` + // The name for an association. Name *string `pulumi:"name"` } @@ -164,11 +178,11 @@ type firewallPolicyAssociationArgs struct { type FirewallPolicyAssociationArgs struct { // The target that the firewall policy is attached to. AttachmentTarget pulumi.StringInput - // The firewall policy ID of the association. - FirewallPolicy pulumi.StringInput - // The name for an association. + // The firewall policy of the resource. // // *** + FirewallPolicy pulumi.StringInput + // The name for an association. Name pulumi.StringPtrInput } @@ -264,14 +278,14 @@ func (o FirewallPolicyAssociationOutput) AttachmentTarget() pulumi.StringOutput return o.ApplyT(func(v *FirewallPolicyAssociation) pulumi.StringOutput { return v.AttachmentTarget }).(pulumi.StringOutput) } -// The firewall policy ID of the association. +// The firewall policy of the resource. +// +// *** func (o FirewallPolicyAssociationOutput) FirewallPolicy() pulumi.StringOutput { return o.ApplyT(func(v *FirewallPolicyAssociation) pulumi.StringOutput { return v.FirewallPolicy }).(pulumi.StringOutput) } // The name for an association. -// -// *** func (o FirewallPolicyAssociationOutput) Name() pulumi.StringOutput { return o.ApplyT(func(v *FirewallPolicyAssociation) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) } diff --git a/sdk/go/gcp/compute/getNetwork.go b/sdk/go/gcp/compute/getNetwork.go index d315b35197..ef19f35b39 100644 --- a/sdk/go/gcp/compute/getNetwork.go +++ b/sdk/go/gcp/compute/getNetwork.go @@ -72,9 +72,13 @@ type LookupNetworkResult struct { // The ula internal ipv6 range assigned to this network. InternalIpv6Range string `pulumi:"internalIpv6Range"` Name string `pulumi:"name"` + // The numeric unique identifier for the resource. + NetworkId int `pulumi:"networkId"` // Beta A full or partial URL of the network profile to apply to this network. NetworkProfile *string `pulumi:"networkProfile"` - // The numeric unique identifier for the resource. + // (Deprecated) The numeric unique identifier for the resource. `numericId` is deprecated and will be removed in a future major release. Use `networkId` instead. + // + // Deprecated: `numericId` is deprecated and will be removed in a future major release. Use `networkId` instead. NumericId string `pulumi:"numericId"` Project *string `pulumi:"project"` // The URI of the resource. @@ -148,12 +152,19 @@ func (o LookupNetworkResultOutput) Name() pulumi.StringOutput { return o.ApplyT(func(v LookupNetworkResult) string { return v.Name }).(pulumi.StringOutput) } +// The numeric unique identifier for the resource. +func (o LookupNetworkResultOutput) NetworkId() pulumi.IntOutput { + return o.ApplyT(func(v LookupNetworkResult) int { return v.NetworkId }).(pulumi.IntOutput) +} + // Beta A full or partial URL of the network profile to apply to this network. func (o LookupNetworkResultOutput) NetworkProfile() pulumi.StringPtrOutput { return o.ApplyT(func(v LookupNetworkResult) *string { return v.NetworkProfile }).(pulumi.StringPtrOutput) } -// The numeric unique identifier for the resource. +// (Deprecated) The numeric unique identifier for the resource. `numericId` is deprecated and will be removed in a future major release. Use `networkId` instead. +// +// Deprecated: `numericId` is deprecated and will be removed in a future major release. Use `networkId` instead. func (o LookupNetworkResultOutput) NumericId() pulumi.StringOutput { return o.ApplyT(func(v LookupNetworkResult) string { return v.NumericId }).(pulumi.StringOutput) } diff --git a/sdk/go/gcp/compute/getSubnetwork.go b/sdk/go/gcp/compute/getSubnetwork.go index 58a95eeddc..43d35f1fc0 100644 --- a/sdk/go/gcp/compute/getSubnetwork.go +++ b/sdk/go/gcp/compute/getSubnetwork.go @@ -92,6 +92,8 @@ type LookupSubnetworkResult struct { // VM instances contained in this subnetwork. Structure is documented below. SecondaryIpRanges []GetSubnetworkSecondaryIpRange `pulumi:"secondaryIpRanges"` SelfLink string `pulumi:"selfLink"` + // The numeric ID of the resource. + SubnetworkId int `pulumi:"subnetworkId"` } func LookupSubnetworkOutput(ctx *pulumi.Context, args LookupSubnetworkOutputArgs, opts ...pulumi.InvokeOption) LookupSubnetworkResultOutput { @@ -199,6 +201,11 @@ func (o LookupSubnetworkResultOutput) SelfLink() pulumi.StringOutput { return o.ApplyT(func(v LookupSubnetworkResult) string { return v.SelfLink }).(pulumi.StringOutput) } +// The numeric ID of the resource. +func (o LookupSubnetworkResultOutput) SubnetworkId() pulumi.IntOutput { + return o.ApplyT(func(v LookupSubnetworkResult) int { return v.SubnetworkId }).(pulumi.IntOutput) +} + func init() { pulumi.RegisterOutputType(LookupSubnetworkResultOutput{}) } diff --git a/sdk/go/gcp/compute/network.go b/sdk/go/gcp/compute/network.go index 99d408d546..912f90acaa 100644 --- a/sdk/go/gcp/compute/network.go +++ b/sdk/go/gcp/compute/network.go @@ -267,13 +267,18 @@ type Network struct { // Default value is `AFTER_CLASSIC_FIREWALL`. // Possible values are: `BEFORE_CLASSIC_FIREWALL`, `AFTER_CLASSIC_FIREWALL`. NetworkFirewallPolicyEnforcementOrder pulumi.StringPtrOutput `pulumi:"networkFirewallPolicyEnforcementOrder"` + // The unique identifier for the resource. This identifier is defined by the server. + NetworkId pulumi.StringOutput `pulumi:"networkId"` // 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 // following are valid URLs: // * https://www.googleapis.com/compute/beta/projects/{projectId}/global/networkProfiles/{network_profile_name} // * projects/{projectId}/global/networkProfiles/{network_profile_name} NetworkProfile pulumi.StringPtrOutput `pulumi:"networkProfile"` + // (Deprecated) // The unique identifier for the resource. This identifier is defined by the server. + // + // Deprecated: `numericId` is deprecated and will be removed in a future major release. Use `networkId` instead. NumericId pulumi.StringOutput `pulumi:"numericId"` // The ID of the project in which the resource belongs. // If it is not provided, the provider project is used. @@ -372,13 +377,18 @@ type networkState struct { // Default value is `AFTER_CLASSIC_FIREWALL`. // Possible values are: `BEFORE_CLASSIC_FIREWALL`, `AFTER_CLASSIC_FIREWALL`. NetworkFirewallPolicyEnforcementOrder *string `pulumi:"networkFirewallPolicyEnforcementOrder"` + // The unique identifier for the resource. This identifier is defined by the server. + NetworkId *string `pulumi:"networkId"` // 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 // following are valid URLs: // * https://www.googleapis.com/compute/beta/projects/{projectId}/global/networkProfiles/{network_profile_name} // * projects/{projectId}/global/networkProfiles/{network_profile_name} NetworkProfile *string `pulumi:"networkProfile"` + // (Deprecated) // The unique identifier for the resource. This identifier is defined by the server. + // + // Deprecated: `numericId` is deprecated and will be removed in a future major release. Use `networkId` instead. NumericId *string `pulumi:"numericId"` // The ID of the project in which the resource belongs. // If it is not provided, the provider project is used. @@ -448,13 +458,18 @@ type NetworkState struct { // Default value is `AFTER_CLASSIC_FIREWALL`. // Possible values are: `BEFORE_CLASSIC_FIREWALL`, `AFTER_CLASSIC_FIREWALL`. NetworkFirewallPolicyEnforcementOrder pulumi.StringPtrInput + // The unique identifier for the resource. This identifier is defined by the server. + NetworkId pulumi.StringPtrInput // 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 // following are valid URLs: // * https://www.googleapis.com/compute/beta/projects/{projectId}/global/networkProfiles/{network_profile_name} // * projects/{projectId}/global/networkProfiles/{network_profile_name} NetworkProfile pulumi.StringPtrInput + // (Deprecated) // The unique identifier for the resource. This identifier is defined by the server. + // + // Deprecated: `numericId` is deprecated and will be removed in a future major release. Use `networkId` instead. NumericId pulumi.StringPtrInput // The ID of the project in which the resource belongs. // If it is not provided, the provider project is used. @@ -789,6 +804,11 @@ func (o NetworkOutput) NetworkFirewallPolicyEnforcementOrder() pulumi.StringPtrO return o.ApplyT(func(v *Network) pulumi.StringPtrOutput { return v.NetworkFirewallPolicyEnforcementOrder }).(pulumi.StringPtrOutput) } +// The unique identifier for the resource. This identifier is defined by the server. +func (o NetworkOutput) NetworkId() pulumi.StringOutput { + return o.ApplyT(func(v *Network) pulumi.StringOutput { return v.NetworkId }).(pulumi.StringOutput) +} + // 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 // following are valid URLs: @@ -798,7 +818,10 @@ func (o NetworkOutput) NetworkProfile() pulumi.StringPtrOutput { return o.ApplyT(func(v *Network) pulumi.StringPtrOutput { return v.NetworkProfile }).(pulumi.StringPtrOutput) } +// (Deprecated) // The unique identifier for the resource. This identifier is defined by the server. +// +// Deprecated: `numericId` is deprecated and will be removed in a future major release. Use `networkId` instead. func (o NetworkOutput) NumericId() pulumi.StringOutput { return o.ApplyT(func(v *Network) pulumi.StringOutput { return v.NumericId }).(pulumi.StringOutput) } diff --git a/sdk/go/gcp/compute/pulumiTypes.go b/sdk/go/gcp/compute/pulumiTypes.go index 24ef6ce8b2..106010b7e4 100644 --- a/sdk/go/gcp/compute/pulumiTypes.go +++ b/sdk/go/gcp/compute/pulumiTypes.go @@ -16067,7 +16067,7 @@ type InstanceBootDiskInitializeParams struct { ProvisionedThroughput *int `pulumi:"provisionedThroughput"` // 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/456. The field is ignored (both PUT & PATCH) when empty. ResourceManagerTags map[string]string `pulumi:"resourceManagerTags"` - // A list of selfLinks 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 selfLinks 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. ResourcePolicies *string `pulumi:"resourcePolicies"` // The size of the image in gigabytes. If not specified, it // will inherit the size of its base image. @@ -16129,7 +16129,7 @@ type InstanceBootDiskInitializeParamsArgs struct { ProvisionedThroughput pulumi.IntPtrInput `pulumi:"provisionedThroughput"` // 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/456. The field is ignored (both PUT & PATCH) when empty. ResourceManagerTags pulumi.StringMapInput `pulumi:"resourceManagerTags"` - // A list of selfLinks 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 selfLinks 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. ResourcePolicies pulumi.StringPtrInput `pulumi:"resourcePolicies"` // The size of the image in gigabytes. If not specified, it // will inherit the size of its base image. @@ -16274,7 +16274,7 @@ func (o InstanceBootDiskInitializeParamsOutput) ResourceManagerTags() pulumi.Str return o.ApplyT(func(v InstanceBootDiskInitializeParams) map[string]string { return v.ResourceManagerTags }).(pulumi.StringMapOutput) } -// A list of selfLinks 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 selfLinks 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. func (o InstanceBootDiskInitializeParamsOutput) ResourcePolicies() pulumi.StringPtrOutput { return o.ApplyT(func(v InstanceBootDiskInitializeParams) *string { return v.ResourcePolicies }).(pulumi.StringPtrOutput) } @@ -16406,7 +16406,7 @@ func (o InstanceBootDiskInitializeParamsPtrOutput) ResourceManagerTags() pulumi. }).(pulumi.StringMapOutput) } -// A list of selfLinks 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 selfLinks 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. func (o InstanceBootDiskInitializeParamsPtrOutput) ResourcePolicies() pulumi.StringPtrOutput { return o.ApplyT(func(v *InstanceBootDiskInitializeParams) *string { if v == nil { @@ -18948,6 +18948,8 @@ func (o InstanceFromMachineImageReservationAffinitySpecificReservationPtrOutput) type InstanceFromMachineImageScheduling struct { // Specifies if the instance should be restarted if it was terminated by Compute Engine (not a user). AutomaticRestart *bool `pulumi:"automaticRestart"` + // Specifies the availability domain, which this instance should be scheduled on. + AvailabilityDomain *int `pulumi:"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. HostErrorTimeoutSeconds *int `pulumi:"hostErrorTimeoutSeconds"` // Specifies the action GCE should take when SPOT VM is preempted. @@ -18988,6 +18990,8 @@ type InstanceFromMachineImageSchedulingInput interface { type InstanceFromMachineImageSchedulingArgs struct { // Specifies if the instance should be restarted if it was terminated by Compute Engine (not a user). AutomaticRestart pulumi.BoolPtrInput `pulumi:"automaticRestart"` + // Specifies the availability domain, which this instance should be scheduled on. + AvailabilityDomain pulumi.IntPtrInput `pulumi:"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. HostErrorTimeoutSeconds pulumi.IntPtrInput `pulumi:"hostErrorTimeoutSeconds"` // Specifies the action GCE should take when SPOT VM is preempted. @@ -19096,6 +19100,11 @@ func (o InstanceFromMachineImageSchedulingOutput) AutomaticRestart() pulumi.Bool return o.ApplyT(func(v InstanceFromMachineImageScheduling) *bool { return v.AutomaticRestart }).(pulumi.BoolPtrOutput) } +// Specifies the availability domain, which this instance should be scheduled on. +func (o InstanceFromMachineImageSchedulingOutput) AvailabilityDomain() pulumi.IntPtrOutput { + return o.ApplyT(func(v InstanceFromMachineImageScheduling) *int { return v.AvailabilityDomain }).(pulumi.IntPtrOutput) +} + // 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. func (o InstanceFromMachineImageSchedulingOutput) HostErrorTimeoutSeconds() pulumi.IntPtrOutput { return o.ApplyT(func(v InstanceFromMachineImageScheduling) *int { return v.HostErrorTimeoutSeconds }).(pulumi.IntPtrOutput) @@ -19196,6 +19205,16 @@ func (o InstanceFromMachineImageSchedulingPtrOutput) AutomaticRestart() pulumi.B }).(pulumi.BoolPtrOutput) } +// Specifies the availability domain, which this instance should be scheduled on. +func (o InstanceFromMachineImageSchedulingPtrOutput) AvailabilityDomain() pulumi.IntPtrOutput { + return o.ApplyT(func(v *InstanceFromMachineImageScheduling) *int { + if v == nil { + return nil + } + return v.AvailabilityDomain + }).(pulumi.IntPtrOutput) +} + // 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. func (o InstanceFromMachineImageSchedulingPtrOutput) HostErrorTimeoutSeconds() pulumi.IntPtrOutput { return o.ApplyT(func(v *InstanceFromMachineImageScheduling) *int { @@ -22800,6 +22819,8 @@ func (o InstanceFromTemplateReservationAffinitySpecificReservationPtrOutput) Val type InstanceFromTemplateScheduling struct { // Specifies if the instance should be restarted if it was terminated by Compute Engine (not a user). AutomaticRestart *bool `pulumi:"automaticRestart"` + // Specifies the availability domain, which this instance should be scheduled on. + AvailabilityDomain *int `pulumi:"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. HostErrorTimeoutSeconds *int `pulumi:"hostErrorTimeoutSeconds"` // Specifies the action GCE should take when SPOT VM is preempted. @@ -22840,6 +22861,8 @@ type InstanceFromTemplateSchedulingInput interface { type InstanceFromTemplateSchedulingArgs struct { // Specifies if the instance should be restarted if it was terminated by Compute Engine (not a user). AutomaticRestart pulumi.BoolPtrInput `pulumi:"automaticRestart"` + // Specifies the availability domain, which this instance should be scheduled on. + AvailabilityDomain pulumi.IntPtrInput `pulumi:"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. HostErrorTimeoutSeconds pulumi.IntPtrInput `pulumi:"hostErrorTimeoutSeconds"` // Specifies the action GCE should take when SPOT VM is preempted. @@ -22948,6 +22971,11 @@ func (o InstanceFromTemplateSchedulingOutput) AutomaticRestart() pulumi.BoolPtrO return o.ApplyT(func(v InstanceFromTemplateScheduling) *bool { return v.AutomaticRestart }).(pulumi.BoolPtrOutput) } +// Specifies the availability domain, which this instance should be scheduled on. +func (o InstanceFromTemplateSchedulingOutput) AvailabilityDomain() pulumi.IntPtrOutput { + return o.ApplyT(func(v InstanceFromTemplateScheduling) *int { return v.AvailabilityDomain }).(pulumi.IntPtrOutput) +} + // 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. func (o InstanceFromTemplateSchedulingOutput) HostErrorTimeoutSeconds() pulumi.IntPtrOutput { return o.ApplyT(func(v InstanceFromTemplateScheduling) *int { return v.HostErrorTimeoutSeconds }).(pulumi.IntPtrOutput) @@ -23048,6 +23076,16 @@ func (o InstanceFromTemplateSchedulingPtrOutput) AutomaticRestart() pulumi.BoolP }).(pulumi.BoolPtrOutput) } +// Specifies the availability domain, which this instance should be scheduled on. +func (o InstanceFromTemplateSchedulingPtrOutput) AvailabilityDomain() pulumi.IntPtrOutput { + return o.ApplyT(func(v *InstanceFromTemplateScheduling) *int { + if v == nil { + return nil + } + return v.AvailabilityDomain + }).(pulumi.IntPtrOutput) +} + // 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. func (o InstanceFromTemplateSchedulingPtrOutput) HostErrorTimeoutSeconds() pulumi.IntPtrOutput { return o.ApplyT(func(v *InstanceFromTemplateScheduling) *int { @@ -28405,6 +28443,8 @@ type InstanceScheduling struct { // restarted if it was terminated by Compute Engine (not a user). // Defaults to true. AutomaticRestart *bool `pulumi:"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. + AvailabilityDomain *int `pulumi:"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. HostErrorTimeoutSeconds *int `pulumi:"hostErrorTimeoutSeconds"` // Describe the type of termination action for VM. Can be `STOP` or `DELETE`. Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot) @@ -28459,6 +28499,8 @@ type InstanceSchedulingArgs struct { // restarted if it was terminated by Compute Engine (not a user). // Defaults to true. AutomaticRestart pulumi.BoolPtrInput `pulumi:"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. + AvailabilityDomain pulumi.IntPtrInput `pulumi:"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. HostErrorTimeoutSeconds pulumi.IntPtrInput `pulumi:"hostErrorTimeoutSeconds"` // Describe the type of termination action for VM. Can be `STOP` or `DELETE`. Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot) @@ -28581,6 +28623,11 @@ func (o InstanceSchedulingOutput) AutomaticRestart() pulumi.BoolPtrOutput { return o.ApplyT(func(v InstanceScheduling) *bool { return v.AutomaticRestart }).(pulumi.BoolPtrOutput) } +// 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. +func (o InstanceSchedulingOutput) AvailabilityDomain() pulumi.IntPtrOutput { + return o.ApplyT(func(v InstanceScheduling) *int { return v.AvailabilityDomain }).(pulumi.IntPtrOutput) +} + // 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. func (o InstanceSchedulingOutput) HostErrorTimeoutSeconds() pulumi.IntPtrOutput { return o.ApplyT(func(v InstanceScheduling) *int { return v.HostErrorTimeoutSeconds }).(pulumi.IntPtrOutput) @@ -28689,6 +28736,16 @@ func (o InstanceSchedulingPtrOutput) AutomaticRestart() pulumi.BoolPtrOutput { }).(pulumi.BoolPtrOutput) } +// 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. +func (o InstanceSchedulingPtrOutput) AvailabilityDomain() pulumi.IntPtrOutput { + return o.ApplyT(func(v *InstanceScheduling) *int { + if v == nil { + return nil + } + return v.AvailabilityDomain + }).(pulumi.IntPtrOutput) +} + // 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. func (o InstanceSchedulingPtrOutput) HostErrorTimeoutSeconds() pulumi.IntPtrOutput { return o.ApplyT(func(v *InstanceScheduling) *int { @@ -32514,6 +32571,8 @@ type InstanceTemplateScheduling struct { // automatically restarted if it is terminated by Compute Engine (not // terminated by a user). This defaults to true. AutomaticRestart *bool `pulumi:"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. + AvailabilityDomain *int `pulumi:"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. HostErrorTimeoutSeconds *int `pulumi:"hostErrorTimeoutSeconds"` // Describe the type of termination action for `SPOT` VM. Can be `STOP` or `DELETE`. Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot) @@ -32567,6 +32626,8 @@ type InstanceTemplateSchedulingArgs struct { // automatically restarted if it is terminated by Compute Engine (not // terminated by a user). This defaults to true. AutomaticRestart pulumi.BoolPtrInput `pulumi:"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. + AvailabilityDomain pulumi.IntPtrInput `pulumi:"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. HostErrorTimeoutSeconds pulumi.IntPtrInput `pulumi:"hostErrorTimeoutSeconds"` // Describe the type of termination action for `SPOT` VM. Can be `STOP` or `DELETE`. Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot) @@ -32688,6 +32749,11 @@ func (o InstanceTemplateSchedulingOutput) AutomaticRestart() pulumi.BoolPtrOutpu return o.ApplyT(func(v InstanceTemplateScheduling) *bool { return v.AutomaticRestart }).(pulumi.BoolPtrOutput) } +// 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. +func (o InstanceTemplateSchedulingOutput) AvailabilityDomain() pulumi.IntPtrOutput { + return o.ApplyT(func(v InstanceTemplateScheduling) *int { return v.AvailabilityDomain }).(pulumi.IntPtrOutput) +} + // 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. func (o InstanceTemplateSchedulingOutput) HostErrorTimeoutSeconds() pulumi.IntPtrOutput { return o.ApplyT(func(v InstanceTemplateScheduling) *int { return v.HostErrorTimeoutSeconds }).(pulumi.IntPtrOutput) @@ -32797,6 +32863,16 @@ func (o InstanceTemplateSchedulingPtrOutput) AutomaticRestart() pulumi.BoolPtrOu }).(pulumi.BoolPtrOutput) } +// 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. +func (o InstanceTemplateSchedulingPtrOutput) AvailabilityDomain() pulumi.IntPtrOutput { + return o.ApplyT(func(v *InstanceTemplateScheduling) *int { + if v == nil { + return nil + } + return v.AvailabilityDomain + }).(pulumi.IntPtrOutput) +} + // 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. func (o InstanceTemplateSchedulingPtrOutput) HostErrorTimeoutSeconds() pulumi.IntPtrOutput { return o.ApplyT(func(v *InstanceTemplateScheduling) *int { @@ -56636,6 +56712,8 @@ type RegionInstanceTemplateScheduling struct { // automatically restarted if it is terminated by Compute Engine (not // terminated by a user). This defaults to true. AutomaticRestart *bool `pulumi:"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. + AvailabilityDomain *int `pulumi:"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. HostErrorTimeoutSeconds *int `pulumi:"hostErrorTimeoutSeconds"` // Describe the type of termination action for `SPOT` VM. Can be `STOP` or `DELETE`. Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot) @@ -56689,6 +56767,8 @@ type RegionInstanceTemplateSchedulingArgs struct { // automatically restarted if it is terminated by Compute Engine (not // terminated by a user). This defaults to true. AutomaticRestart pulumi.BoolPtrInput `pulumi:"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. + AvailabilityDomain pulumi.IntPtrInput `pulumi:"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. HostErrorTimeoutSeconds pulumi.IntPtrInput `pulumi:"hostErrorTimeoutSeconds"` // Describe the type of termination action for `SPOT` VM. Can be `STOP` or `DELETE`. Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot) @@ -56810,6 +56890,11 @@ func (o RegionInstanceTemplateSchedulingOutput) AutomaticRestart() pulumi.BoolPt return o.ApplyT(func(v RegionInstanceTemplateScheduling) *bool { return v.AutomaticRestart }).(pulumi.BoolPtrOutput) } +// 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. +func (o RegionInstanceTemplateSchedulingOutput) AvailabilityDomain() pulumi.IntPtrOutput { + return o.ApplyT(func(v RegionInstanceTemplateScheduling) *int { return v.AvailabilityDomain }).(pulumi.IntPtrOutput) +} + // 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. func (o RegionInstanceTemplateSchedulingOutput) HostErrorTimeoutSeconds() pulumi.IntPtrOutput { return o.ApplyT(func(v RegionInstanceTemplateScheduling) *int { return v.HostErrorTimeoutSeconds }).(pulumi.IntPtrOutput) @@ -56923,6 +57008,16 @@ func (o RegionInstanceTemplateSchedulingPtrOutput) AutomaticRestart() pulumi.Boo }).(pulumi.BoolPtrOutput) } +// 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. +func (o RegionInstanceTemplateSchedulingPtrOutput) AvailabilityDomain() pulumi.IntPtrOutput { + return o.ApplyT(func(v *RegionInstanceTemplateScheduling) *int { + if v == nil { + return nil + } + return v.AvailabilityDomain + }).(pulumi.IntPtrOutput) +} + // 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. func (o RegionInstanceTemplateSchedulingPtrOutput) HostErrorTimeoutSeconds() pulumi.IntPtrOutput { return o.ApplyT(func(v *RegionInstanceTemplateScheduling) *int { @@ -80844,7 +80939,7 @@ func (o ReservationSpecificReservationInstancePropertiesLocalSsdArrayOutput) Ind type ResizeRequestRequestedRunDuration struct { // Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive. Nanos *int `pulumi:"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. Seconds string `pulumi:"seconds"` } @@ -80862,7 +80957,7 @@ type ResizeRequestRequestedRunDurationInput interface { type ResizeRequestRequestedRunDurationArgs struct { // Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive. Nanos pulumi.IntPtrInput `pulumi:"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. Seconds pulumi.StringInput `pulumi:"seconds"` } @@ -80948,7 +81043,7 @@ func (o ResizeRequestRequestedRunDurationOutput) Nanos() pulumi.IntPtrOutput { return o.ApplyT(func(v ResizeRequestRequestedRunDuration) *int { return v.Nanos }).(pulumi.IntPtrOutput) } -// 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. func (o ResizeRequestRequestedRunDurationOutput) Seconds() pulumi.StringOutput { return o.ApplyT(func(v ResizeRequestRequestedRunDuration) string { return v.Seconds }).(pulumi.StringOutput) } @@ -80987,7 +81082,7 @@ func (o ResizeRequestRequestedRunDurationPtrOutput) Nanos() pulumi.IntPtrOutput }).(pulumi.IntPtrOutput) } -// 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. func (o ResizeRequestRequestedRunDurationPtrOutput) Seconds() pulumi.StringPtrOutput { return o.ApplyT(func(v *ResizeRequestRequestedRunDuration) *string { if v == nil { @@ -80999,11 +81094,11 @@ func (o ResizeRequestRequestedRunDurationPtrOutput) Seconds() pulumi.StringPtrOu type ResizeRequestStatus struct { // (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. Errors []ResizeRequestStatusError `pulumi:"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. LastAttempts []ResizeRequestStatusLastAttempt `pulumi:"lastAttempts"` } @@ -81021,11 +81116,11 @@ type ResizeRequestStatusInput interface { type ResizeRequestStatusArgs struct { // (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. Errors ResizeRequestStatusErrorArrayInput `pulumi:"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. LastAttempts ResizeRequestStatusLastAttemptArrayInput `pulumi:"lastAttempts"` } @@ -81082,14 +81177,14 @@ func (o ResizeRequestStatusOutput) ToResizeRequestStatusOutputWithContext(ctx co } // (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. func (o ResizeRequestStatusOutput) Errors() ResizeRequestStatusErrorArrayOutput { return o.ApplyT(func(v ResizeRequestStatus) []ResizeRequestStatusError { return v.Errors }).(ResizeRequestStatusErrorArrayOutput) } // (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. func (o ResizeRequestStatusOutput) LastAttempts() ResizeRequestStatusLastAttemptArrayOutput { return o.ApplyT(func(v ResizeRequestStatus) []ResizeRequestStatusLastAttempt { return v.LastAttempts }).(ResizeRequestStatusLastAttemptArrayOutput) @@ -81117,7 +81212,7 @@ func (o ResizeRequestStatusArrayOutput) Index(i pulumi.IntInput) ResizeRequestSt type ResizeRequestStatusError struct { // (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. Errors []ResizeRequestStatusErrorError `pulumi:"errors"` } @@ -81135,7 +81230,7 @@ type ResizeRequestStatusErrorInput interface { type ResizeRequestStatusErrorArgs struct { // (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. Errors ResizeRequestStatusErrorErrorArrayInput `pulumi:"errors"` } @@ -81192,7 +81287,7 @@ func (o ResizeRequestStatusErrorOutput) ToResizeRequestStatusErrorOutputWithCont } // (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. func (o ResizeRequestStatusErrorOutput) Errors() ResizeRequestStatusErrorErrorArrayOutput { return o.ApplyT(func(v ResizeRequestStatusError) []ResizeRequestStatusErrorError { return v.Errors }).(ResizeRequestStatusErrorErrorArrayOutput) @@ -81220,14 +81315,14 @@ func (o ResizeRequestStatusErrorArrayOutput) Index(i pulumi.IntInput) ResizeRequ type ResizeRequestStatusErrorError struct { // (Output) - // [Output Only] The error type identifier for this error. + // The error type identifier for this error. Code *string `pulumi:"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. ErrorDetails []ResizeRequestStatusErrorErrorErrorDetail `pulumi:"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. Location *string `pulumi:"location"` // (Output) // The localized error message in the above locale. @@ -81247,14 +81342,14 @@ type ResizeRequestStatusErrorErrorInput interface { type ResizeRequestStatusErrorErrorArgs struct { // (Output) - // [Output Only] The error type identifier for this error. + // The error type identifier for this error. Code pulumi.StringPtrInput `pulumi:"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. ErrorDetails ResizeRequestStatusErrorErrorErrorDetailArrayInput `pulumi:"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. Location pulumi.StringPtrInput `pulumi:"location"` // (Output) // The localized error message in the above locale. @@ -81313,13 +81408,13 @@ func (o ResizeRequestStatusErrorErrorOutput) ToResizeRequestStatusErrorErrorOutp } // (Output) -// [Output Only] The error type identifier for this error. +// The error type identifier for this error. func (o ResizeRequestStatusErrorErrorOutput) Code() pulumi.StringPtrOutput { return o.ApplyT(func(v ResizeRequestStatusErrorError) *string { return v.Code }).(pulumi.StringPtrOutput) } // (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. func (o ResizeRequestStatusErrorErrorOutput) ErrorDetails() ResizeRequestStatusErrorErrorErrorDetailArrayOutput { return o.ApplyT(func(v ResizeRequestStatusErrorError) []ResizeRequestStatusErrorErrorErrorDetail { @@ -81328,7 +81423,7 @@ func (o ResizeRequestStatusErrorErrorOutput) ErrorDetails() ResizeRequestStatusE } // (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. func (o ResizeRequestStatusErrorErrorOutput) Location() pulumi.StringPtrOutput { return o.ApplyT(func(v ResizeRequestStatusErrorError) *string { return v.Location }).(pulumi.StringPtrOutput) } @@ -81361,19 +81456,19 @@ func (o ResizeRequestStatusErrorErrorArrayOutput) Index(i pulumi.IntInput) Resiz type ResizeRequestStatusErrorErrorErrorDetail struct { // (Output) - // [Output Only] + // A nested object resource. // Structure is documented below. ErrorInfos []ResizeRequestStatusErrorErrorErrorDetailErrorInfo `pulumi:"errorInfos"` // (Output) - // [Output Only] + // A nested object resource. // Structure is documented below. Helps []ResizeRequestStatusErrorErrorErrorDetailHelp `pulumi:"helps"` // (Output) - // [Output Only] + // A nested object resource. // Structure is documented below. LocalizedMessages []ResizeRequestStatusErrorErrorErrorDetailLocalizedMessage `pulumi:"localizedMessages"` // (Output) - // [Output Only] + // A nested object resource. // Structure is documented below. QuotaInfos []ResizeRequestStatusErrorErrorErrorDetailQuotaInfo `pulumi:"quotaInfos"` } @@ -81391,19 +81486,19 @@ type ResizeRequestStatusErrorErrorErrorDetailInput interface { type ResizeRequestStatusErrorErrorErrorDetailArgs struct { // (Output) - // [Output Only] + // A nested object resource. // Structure is documented below. ErrorInfos ResizeRequestStatusErrorErrorErrorDetailErrorInfoArrayInput `pulumi:"errorInfos"` // (Output) - // [Output Only] + // A nested object resource. // Structure is documented below. Helps ResizeRequestStatusErrorErrorErrorDetailHelpArrayInput `pulumi:"helps"` // (Output) - // [Output Only] + // A nested object resource. // Structure is documented below. LocalizedMessages ResizeRequestStatusErrorErrorErrorDetailLocalizedMessageArrayInput `pulumi:"localizedMessages"` // (Output) - // [Output Only] + // A nested object resource. // Structure is documented below. QuotaInfos ResizeRequestStatusErrorErrorErrorDetailQuotaInfoArrayInput `pulumi:"quotaInfos"` } @@ -81460,7 +81555,7 @@ func (o ResizeRequestStatusErrorErrorErrorDetailOutput) ToResizeRequestStatusErr } // (Output) -// [Output Only] +// A nested object resource. // Structure is documented below. func (o ResizeRequestStatusErrorErrorErrorDetailOutput) ErrorInfos() ResizeRequestStatusErrorErrorErrorDetailErrorInfoArrayOutput { return o.ApplyT(func(v ResizeRequestStatusErrorErrorErrorDetail) []ResizeRequestStatusErrorErrorErrorDetailErrorInfo { @@ -81469,7 +81564,7 @@ func (o ResizeRequestStatusErrorErrorErrorDetailOutput) ErrorInfos() ResizeReque } // (Output) -// [Output Only] +// A nested object resource. // Structure is documented below. func (o ResizeRequestStatusErrorErrorErrorDetailOutput) Helps() ResizeRequestStatusErrorErrorErrorDetailHelpArrayOutput { return o.ApplyT(func(v ResizeRequestStatusErrorErrorErrorDetail) []ResizeRequestStatusErrorErrorErrorDetailHelp { @@ -81478,7 +81573,7 @@ func (o ResizeRequestStatusErrorErrorErrorDetailOutput) Helps() ResizeRequestSta } // (Output) -// [Output Only] +// A nested object resource. // Structure is documented below. func (o ResizeRequestStatusErrorErrorErrorDetailOutput) LocalizedMessages() ResizeRequestStatusErrorErrorErrorDetailLocalizedMessageArrayOutput { return o.ApplyT(func(v ResizeRequestStatusErrorErrorErrorDetail) []ResizeRequestStatusErrorErrorErrorDetailLocalizedMessage { @@ -81487,7 +81582,7 @@ func (o ResizeRequestStatusErrorErrorErrorDetailOutput) LocalizedMessages() Resi } // (Output) -// [Output Only] +// A nested object resource. // Structure is documented below. func (o ResizeRequestStatusErrorErrorErrorDetailOutput) QuotaInfos() ResizeRequestStatusErrorErrorErrorDetailQuotaInfoArrayOutput { return o.ApplyT(func(v ResizeRequestStatusErrorErrorErrorDetail) []ResizeRequestStatusErrorErrorErrorDetailQuotaInfo { @@ -81517,14 +81612,13 @@ func (o ResizeRequestStatusErrorErrorErrorDetailArrayOutput) Index(i pulumi.IntI type ResizeRequestStatusErrorErrorErrorDetailErrorInfo struct { // (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". Domain *string `pulumi:"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. Metadatas map[string]string `pulumi:"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. Reason *string `pulumi:"reason"` } @@ -81541,14 +81635,13 @@ type ResizeRequestStatusErrorErrorErrorDetailErrorInfoInput interface { type ResizeRequestStatusErrorErrorErrorDetailErrorInfoArgs struct { // (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". Domain pulumi.StringPtrInput `pulumi:"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. Metadatas pulumi.StringMapInput `pulumi:"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. Reason pulumi.StringPtrInput `pulumi:"reason"` } @@ -81604,20 +81697,19 @@ func (o ResizeRequestStatusErrorErrorErrorDetailErrorInfoOutput) ToResizeRequest } // (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". func (o ResizeRequestStatusErrorErrorErrorDetailErrorInfoOutput) Domain() pulumi.StringPtrOutput { return o.ApplyT(func(v ResizeRequestStatusErrorErrorErrorDetailErrorInfo) *string { return v.Domain }).(pulumi.StringPtrOutput) } // (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. func (o ResizeRequestStatusErrorErrorErrorDetailErrorInfoOutput) Metadatas() pulumi.StringMapOutput { return o.ApplyT(func(v ResizeRequestStatusErrorErrorErrorDetailErrorInfo) map[string]string { return v.Metadatas }).(pulumi.StringMapOutput) } // (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. func (o ResizeRequestStatusErrorErrorErrorDetailErrorInfoOutput) Reason() pulumi.StringPtrOutput { return o.ApplyT(func(v ResizeRequestStatusErrorErrorErrorDetailErrorInfo) *string { return v.Reason }).(pulumi.StringPtrOutput) } @@ -81644,7 +81736,7 @@ func (o ResizeRequestStatusErrorErrorErrorDetailErrorInfoArrayOutput) Index(i pu type ResizeRequestStatusErrorErrorErrorDetailHelp struct { // (Output) - // [Output Only] + // A nested object resource. // Structure is documented below. Links []ResizeRequestStatusErrorErrorErrorDetailHelpLink `pulumi:"links"` } @@ -81662,7 +81754,7 @@ type ResizeRequestStatusErrorErrorErrorDetailHelpInput interface { type ResizeRequestStatusErrorErrorErrorDetailHelpArgs struct { // (Output) - // [Output Only] + // A nested object resource. // Structure is documented below. Links ResizeRequestStatusErrorErrorErrorDetailHelpLinkArrayInput `pulumi:"links"` } @@ -81719,7 +81811,7 @@ func (o ResizeRequestStatusErrorErrorErrorDetailHelpOutput) ToResizeRequestStatu } // (Output) -// [Output Only] +// A nested object resource. // Structure is documented below. func (o ResizeRequestStatusErrorErrorErrorDetailHelpOutput) Links() ResizeRequestStatusErrorErrorErrorDetailHelpLinkArrayOutput { return o.ApplyT(func(v ResizeRequestStatusErrorErrorErrorDetailHelp) []ResizeRequestStatusErrorErrorErrorDetailHelpLink { @@ -82130,7 +82222,7 @@ func (o ResizeRequestStatusErrorErrorErrorDetailQuotaInfoArrayOutput) Index(i pu type ResizeRequestStatusLastAttempt struct { // (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. Errors []ResizeRequestStatusLastAttemptError `pulumi:"errors"` } @@ -82148,7 +82240,7 @@ type ResizeRequestStatusLastAttemptInput interface { type ResizeRequestStatusLastAttemptArgs struct { // (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. Errors ResizeRequestStatusLastAttemptErrorArrayInput `pulumi:"errors"` } @@ -82205,7 +82297,7 @@ func (o ResizeRequestStatusLastAttemptOutput) ToResizeRequestStatusLastAttemptOu } // (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. func (o ResizeRequestStatusLastAttemptOutput) Errors() ResizeRequestStatusLastAttemptErrorArrayOutput { return o.ApplyT(func(v ResizeRequestStatusLastAttempt) []ResizeRequestStatusLastAttemptError { return v.Errors }).(ResizeRequestStatusLastAttemptErrorArrayOutput) @@ -82233,7 +82325,7 @@ func (o ResizeRequestStatusLastAttemptArrayOutput) Index(i pulumi.IntInput) Resi type ResizeRequestStatusLastAttemptError struct { // (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. Errors []ResizeRequestStatusLastAttemptErrorError `pulumi:"errors"` } @@ -82251,7 +82343,7 @@ type ResizeRequestStatusLastAttemptErrorInput interface { type ResizeRequestStatusLastAttemptErrorArgs struct { // (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. Errors ResizeRequestStatusLastAttemptErrorErrorArrayInput `pulumi:"errors"` } @@ -82308,7 +82400,7 @@ func (o ResizeRequestStatusLastAttemptErrorOutput) ToResizeRequestStatusLastAtte } // (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. func (o ResizeRequestStatusLastAttemptErrorOutput) Errors() ResizeRequestStatusLastAttemptErrorErrorArrayOutput { return o.ApplyT(func(v ResizeRequestStatusLastAttemptError) []ResizeRequestStatusLastAttemptErrorError { @@ -82338,14 +82430,14 @@ func (o ResizeRequestStatusLastAttemptErrorArrayOutput) Index(i pulumi.IntInput) type ResizeRequestStatusLastAttemptErrorError struct { // (Output) - // [Output Only] The error type identifier for this error. + // The error type identifier for this error. Code *string `pulumi:"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. ErrorDetails []ResizeRequestStatusLastAttemptErrorErrorErrorDetail `pulumi:"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. Location *string `pulumi:"location"` // (Output) // The localized error message in the above locale. @@ -82365,14 +82457,14 @@ type ResizeRequestStatusLastAttemptErrorErrorInput interface { type ResizeRequestStatusLastAttemptErrorErrorArgs struct { // (Output) - // [Output Only] The error type identifier for this error. + // The error type identifier for this error. Code pulumi.StringPtrInput `pulumi:"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. ErrorDetails ResizeRequestStatusLastAttemptErrorErrorErrorDetailArrayInput `pulumi:"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. Location pulumi.StringPtrInput `pulumi:"location"` // (Output) // The localized error message in the above locale. @@ -82431,13 +82523,13 @@ func (o ResizeRequestStatusLastAttemptErrorErrorOutput) ToResizeRequestStatusLas } // (Output) -// [Output Only] The error type identifier for this error. +// The error type identifier for this error. func (o ResizeRequestStatusLastAttemptErrorErrorOutput) Code() pulumi.StringPtrOutput { return o.ApplyT(func(v ResizeRequestStatusLastAttemptErrorError) *string { return v.Code }).(pulumi.StringPtrOutput) } // (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. func (o ResizeRequestStatusLastAttemptErrorErrorOutput) ErrorDetails() ResizeRequestStatusLastAttemptErrorErrorErrorDetailArrayOutput { return o.ApplyT(func(v ResizeRequestStatusLastAttemptErrorError) []ResizeRequestStatusLastAttemptErrorErrorErrorDetail { @@ -82446,7 +82538,7 @@ func (o ResizeRequestStatusLastAttemptErrorErrorOutput) ErrorDetails() ResizeReq } // (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. func (o ResizeRequestStatusLastAttemptErrorErrorOutput) Location() pulumi.StringPtrOutput { return o.ApplyT(func(v ResizeRequestStatusLastAttemptErrorError) *string { return v.Location }).(pulumi.StringPtrOutput) } @@ -82479,19 +82571,19 @@ func (o ResizeRequestStatusLastAttemptErrorErrorArrayOutput) Index(i pulumi.IntI type ResizeRequestStatusLastAttemptErrorErrorErrorDetail struct { // (Output) - // [Output Only] + // A nested object resource. // Structure is documented below. ErrorInfos []ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo `pulumi:"errorInfos"` // (Output) - // [Output Only] + // A nested object resource. // Structure is documented below. Helps []ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp `pulumi:"helps"` // (Output) - // [Output Only] + // A nested object resource. // Structure is documented below. LocalizedMessages []ResizeRequestStatusLastAttemptErrorErrorErrorDetailLocalizedMessage `pulumi:"localizedMessages"` // (Output) - // [Output Only] + // A nested object resource. // Structure is documented below. QuotaInfos []ResizeRequestStatusLastAttemptErrorErrorErrorDetailQuotaInfo `pulumi:"quotaInfos"` } @@ -82509,19 +82601,19 @@ type ResizeRequestStatusLastAttemptErrorErrorErrorDetailInput interface { type ResizeRequestStatusLastAttemptErrorErrorErrorDetailArgs struct { // (Output) - // [Output Only] + // A nested object resource. // Structure is documented below. ErrorInfos ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfoArrayInput `pulumi:"errorInfos"` // (Output) - // [Output Only] + // A nested object resource. // Structure is documented below. Helps ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpArrayInput `pulumi:"helps"` // (Output) - // [Output Only] + // A nested object resource. // Structure is documented below. LocalizedMessages ResizeRequestStatusLastAttemptErrorErrorErrorDetailLocalizedMessageArrayInput `pulumi:"localizedMessages"` // (Output) - // [Output Only] + // A nested object resource. // Structure is documented below. QuotaInfos ResizeRequestStatusLastAttemptErrorErrorErrorDetailQuotaInfoArrayInput `pulumi:"quotaInfos"` } @@ -82578,7 +82670,7 @@ func (o ResizeRequestStatusLastAttemptErrorErrorErrorDetailOutput) ToResizeReque } // (Output) -// [Output Only] +// A nested object resource. // Structure is documented below. func (o ResizeRequestStatusLastAttemptErrorErrorErrorDetailOutput) ErrorInfos() ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfoArrayOutput { return o.ApplyT(func(v ResizeRequestStatusLastAttemptErrorErrorErrorDetail) []ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo { @@ -82587,7 +82679,7 @@ func (o ResizeRequestStatusLastAttemptErrorErrorErrorDetailOutput) ErrorInfos() } // (Output) -// [Output Only] +// A nested object resource. // Structure is documented below. func (o ResizeRequestStatusLastAttemptErrorErrorErrorDetailOutput) Helps() ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpArrayOutput { return o.ApplyT(func(v ResizeRequestStatusLastAttemptErrorErrorErrorDetail) []ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp { @@ -82596,7 +82688,7 @@ func (o ResizeRequestStatusLastAttemptErrorErrorErrorDetailOutput) Helps() Resiz } // (Output) -// [Output Only] +// A nested object resource. // Structure is documented below. func (o ResizeRequestStatusLastAttemptErrorErrorErrorDetailOutput) LocalizedMessages() ResizeRequestStatusLastAttemptErrorErrorErrorDetailLocalizedMessageArrayOutput { return o.ApplyT(func(v ResizeRequestStatusLastAttemptErrorErrorErrorDetail) []ResizeRequestStatusLastAttemptErrorErrorErrorDetailLocalizedMessage { @@ -82605,7 +82697,7 @@ func (o ResizeRequestStatusLastAttemptErrorErrorErrorDetailOutput) LocalizedMess } // (Output) -// [Output Only] +// A nested object resource. // Structure is documented below. func (o ResizeRequestStatusLastAttemptErrorErrorErrorDetailOutput) QuotaInfos() ResizeRequestStatusLastAttemptErrorErrorErrorDetailQuotaInfoArrayOutput { return o.ApplyT(func(v ResizeRequestStatusLastAttemptErrorErrorErrorDetail) []ResizeRequestStatusLastAttemptErrorErrorErrorDetailQuotaInfo { @@ -82635,14 +82727,13 @@ func (o ResizeRequestStatusLastAttemptErrorErrorErrorDetailArrayOutput) Index(i type ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo struct { // (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". Domain *string `pulumi:"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. Metadatas map[string]string `pulumi:"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. Reason *string `pulumi:"reason"` } @@ -82659,14 +82750,13 @@ type ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfoInput interface type ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfoArgs struct { // (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". Domain pulumi.StringPtrInput `pulumi:"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. Metadatas pulumi.StringMapInput `pulumi:"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. Reason pulumi.StringPtrInput `pulumi:"reason"` } @@ -82722,14 +82812,13 @@ func (o ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfoOutput) ToRe } // (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". func (o ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfoOutput) Domain() pulumi.StringPtrOutput { return o.ApplyT(func(v ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo) *string { return v.Domain }).(pulumi.StringPtrOutput) } // (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. func (o ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfoOutput) Metadatas() pulumi.StringMapOutput { return o.ApplyT(func(v ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo) map[string]string { return v.Metadatas @@ -82737,7 +82826,7 @@ func (o ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfoOutput) Meta } // (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. func (o ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfoOutput) Reason() pulumi.StringPtrOutput { return o.ApplyT(func(v ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo) *string { return v.Reason }).(pulumi.StringPtrOutput) } @@ -82764,7 +82853,7 @@ func (o ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfoArrayOutput) type ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp struct { // (Output) - // [Output Only] + // A nested object resource. // Structure is documented below. Links []ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpLink `pulumi:"links"` } @@ -82782,7 +82871,7 @@ type ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpInput interface { type ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpArgs struct { // (Output) - // [Output Only] + // A nested object resource. // Structure is documented below. Links ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpLinkArrayInput `pulumi:"links"` } @@ -82839,7 +82928,7 @@ func (o ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpOutput) ToResizeR } // (Output) -// [Output Only] +// A nested object resource. // Structure is documented below. func (o ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpOutput) Links() ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpLinkArrayOutput { return o.ApplyT(func(v ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp) []ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpLink { diff --git a/sdk/go/gcp/compute/pulumiTypes1.go b/sdk/go/gcp/compute/pulumiTypes1.go index 52bf7f699a..9df7991f94 100644 --- a/sdk/go/gcp/compute/pulumiTypes1.go +++ b/sdk/go/gcp/compute/pulumiTypes1.go @@ -34822,6 +34822,8 @@ type GetInstanceScheduling struct { // Specifies if the instance should be // restarted if it was terminated by Compute Engine (not a user). AutomaticRestart bool `pulumi:"automaticRestart"` + // Specifies the availability domain, which this instance should be scheduled on. + AvailabilityDomain int `pulumi:"availabilityDomain"` // Beta Time in seconds for host error detection. HostErrorTimeoutSeconds int `pulumi:"hostErrorTimeoutSeconds"` // Describe the type of termination action for `SPOT` VM. Can be `STOP` or `DELETE`. Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot) @@ -34865,6 +34867,8 @@ type GetInstanceSchedulingArgs struct { // Specifies if the instance should be // restarted if it was terminated by Compute Engine (not a user). AutomaticRestart pulumi.BoolInput `pulumi:"automaticRestart"` + // Specifies the availability domain, which this instance should be scheduled on. + AvailabilityDomain pulumi.IntInput `pulumi:"availabilityDomain"` // Beta Time in seconds for host error detection. HostErrorTimeoutSeconds pulumi.IntInput `pulumi:"hostErrorTimeoutSeconds"` // Describe the type of termination action for `SPOT` VM. Can be `STOP` or `DELETE`. Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot) @@ -34950,6 +34954,11 @@ func (o GetInstanceSchedulingOutput) AutomaticRestart() pulumi.BoolOutput { return o.ApplyT(func(v GetInstanceScheduling) bool { return v.AutomaticRestart }).(pulumi.BoolOutput) } +// Specifies the availability domain, which this instance should be scheduled on. +func (o GetInstanceSchedulingOutput) AvailabilityDomain() pulumi.IntOutput { + return o.ApplyT(func(v GetInstanceScheduling) int { return v.AvailabilityDomain }).(pulumi.IntOutput) +} + // Beta Time in seconds for host error detection. func (o GetInstanceSchedulingOutput) HostErrorTimeoutSeconds() pulumi.IntOutput { return o.ApplyT(func(v GetInstanceScheduling) int { return v.HostErrorTimeoutSeconds }).(pulumi.IntOutput) @@ -37844,6 +37853,8 @@ type GetInstanceTemplateScheduling struct { // automatically restarted if it is terminated by Compute Engine (not // terminated by a user). This defaults to true. AutomaticRestart bool `pulumi:"automaticRestart"` + // Specifies the availability domain, which this instance should be scheduled on. + AvailabilityDomain int `pulumi:"availabilityDomain"` // Beta Time in seconds for host error detection. HostErrorTimeoutSeconds int `pulumi:"hostErrorTimeoutSeconds"` // Describe the type of termination action for `SPOT` VM. Can be `STOP` or `DELETE`. Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot) @@ -37894,6 +37905,8 @@ type GetInstanceTemplateSchedulingArgs struct { // automatically restarted if it is terminated by Compute Engine (not // terminated by a user). This defaults to true. AutomaticRestart pulumi.BoolInput `pulumi:"automaticRestart"` + // Specifies the availability domain, which this instance should be scheduled on. + AvailabilityDomain pulumi.IntInput `pulumi:"availabilityDomain"` // Beta Time in seconds for host error detection. HostErrorTimeoutSeconds pulumi.IntInput `pulumi:"hostErrorTimeoutSeconds"` // Describe the type of termination action for `SPOT` VM. Can be `STOP` or `DELETE`. Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot) @@ -37986,6 +37999,11 @@ func (o GetInstanceTemplateSchedulingOutput) AutomaticRestart() pulumi.BoolOutpu return o.ApplyT(func(v GetInstanceTemplateScheduling) bool { return v.AutomaticRestart }).(pulumi.BoolOutput) } +// Specifies the availability domain, which this instance should be scheduled on. +func (o GetInstanceTemplateSchedulingOutput) AvailabilityDomain() pulumi.IntOutput { + return o.ApplyT(func(v GetInstanceTemplateScheduling) int { return v.AvailabilityDomain }).(pulumi.IntOutput) +} + // Beta Time in seconds for host error detection. func (o GetInstanceTemplateSchedulingOutput) HostErrorTimeoutSeconds() pulumi.IntOutput { return o.ApplyT(func(v GetInstanceTemplateScheduling) int { return v.HostErrorTimeoutSeconds }).(pulumi.IntOutput) @@ -44029,6 +44047,8 @@ type GetRegionInstanceTemplateScheduling struct { // automatically restarted if it is terminated by Compute Engine (not // terminated by a user). This defaults to true. AutomaticRestart bool `pulumi:"automaticRestart"` + // Specifies the availability domain, which this instance should be scheduled on. + AvailabilityDomain int `pulumi:"availabilityDomain"` // Beta Time in seconds for host error detection. HostErrorTimeoutSeconds int `pulumi:"hostErrorTimeoutSeconds"` // Describe the type of termination action for `SPOT` VM. Can be `STOP` or `DELETE`. Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot) @@ -44079,6 +44099,8 @@ type GetRegionInstanceTemplateSchedulingArgs struct { // automatically restarted if it is terminated by Compute Engine (not // terminated by a user). This defaults to true. AutomaticRestart pulumi.BoolInput `pulumi:"automaticRestart"` + // Specifies the availability domain, which this instance should be scheduled on. + AvailabilityDomain pulumi.IntInput `pulumi:"availabilityDomain"` // Beta Time in seconds for host error detection. HostErrorTimeoutSeconds pulumi.IntInput `pulumi:"hostErrorTimeoutSeconds"` // Describe the type of termination action for `SPOT` VM. Can be `STOP` or `DELETE`. Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot) @@ -44171,6 +44193,11 @@ func (o GetRegionInstanceTemplateSchedulingOutput) AutomaticRestart() pulumi.Boo return o.ApplyT(func(v GetRegionInstanceTemplateScheduling) bool { return v.AutomaticRestart }).(pulumi.BoolOutput) } +// Specifies the availability domain, which this instance should be scheduled on. +func (o GetRegionInstanceTemplateSchedulingOutput) AvailabilityDomain() pulumi.IntOutput { + return o.ApplyT(func(v GetRegionInstanceTemplateScheduling) int { return v.AvailabilityDomain }).(pulumi.IntOutput) +} + // Beta Time in seconds for host error detection. func (o GetRegionInstanceTemplateSchedulingOutput) HostErrorTimeoutSeconds() pulumi.IntOutput { return o.ApplyT(func(v GetRegionInstanceTemplateScheduling) int { return v.HostErrorTimeoutSeconds }).(pulumi.IntOutput) diff --git a/sdk/go/gcp/compute/regionNetworkEndpointGroup.go b/sdk/go/gcp/compute/regionNetworkEndpointGroup.go index fd3f54bd7f..64ccabeb55 100644 --- a/sdk/go/gcp/compute/regionNetworkEndpointGroup.go +++ b/sdk/go/gcp/compute/regionNetworkEndpointGroup.go @@ -589,7 +589,7 @@ type RegionNetworkEndpointGroup struct { Project pulumi.StringOutput `pulumi:"project"` // This field is only used for PSC NEGs. // Structure is documented below. - PscData RegionNetworkEndpointGroupPscDataPtrOutput `pulumi:"pscData"` + PscData RegionNetworkEndpointGroupPscDataOutput `pulumi:"pscData"` // This field is only used for PSC and INTERNET NEGs. // The target service url used to set up private service connection to // a Google API or a PSC Producer Service Attachment. @@ -1019,8 +1019,8 @@ func (o RegionNetworkEndpointGroupOutput) Project() pulumi.StringOutput { // This field is only used for PSC NEGs. // Structure is documented below. -func (o RegionNetworkEndpointGroupOutput) PscData() RegionNetworkEndpointGroupPscDataPtrOutput { - return o.ApplyT(func(v *RegionNetworkEndpointGroup) RegionNetworkEndpointGroupPscDataPtrOutput { return v.PscData }).(RegionNetworkEndpointGroupPscDataPtrOutput) +func (o RegionNetworkEndpointGroupOutput) PscData() RegionNetworkEndpointGroupPscDataOutput { + return o.ApplyT(func(v *RegionNetworkEndpointGroup) RegionNetworkEndpointGroupPscDataOutput { return v.PscData }).(RegionNetworkEndpointGroupPscDataOutput) } // This field is only used for PSC and INTERNET NEGs. diff --git a/sdk/go/gcp/compute/resizeRequest.go b/sdk/go/gcp/compute/resizeRequest.go index d8ff12c7bf..87ee9e19b3 100644 --- a/sdk/go/gcp/compute/resizeRequest.go +++ b/sdk/go/gcp/compute/resizeRequest.go @@ -16,13 +16,13 @@ import ( // // 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 // @@ -156,9 +156,7 @@ type ResizeRequest struct { CreationTimestamp pulumi.StringOutput `pulumi:"creationTimestamp"` // An optional description of this resize-request. Description pulumi.StringPtrOutput `pulumi:"description"` - // 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. // // *** InstanceGroupManager pulumi.StringOutput `pulumi:"instanceGroupManager"` @@ -172,12 +170,12 @@ type ResizeRequest struct { RequestedRunDuration ResizeRequestRequestedRunDurationPtrOutput `pulumi:"requestedRunDuration"` // The number of instances to be created by this resize request. The group's target size will be increased by this number. ResizeBy pulumi.IntOutput `pulumi:"resizeBy"` - // [Output only] Current state of the request. + // Current state of the request. State pulumi.StringOutput `pulumi:"state"` - // [Output only] Status of the request. + // Status of the request. // Structure is documented below. Statuses ResizeRequestStatusArrayOutput `pulumi:"statuses"` - // Name of the compute zone scoping this request. Name should conform to RFC1035. + // The reference of the compute zone scoping this request. Zone pulumi.StringOutput `pulumi:"zone"` } @@ -224,9 +222,7 @@ type resizeRequestState struct { CreationTimestamp *string `pulumi:"creationTimestamp"` // An optional description of this resize-request. Description *string `pulumi:"description"` - // 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. // // *** InstanceGroupManager *string `pulumi:"instanceGroupManager"` @@ -240,12 +236,12 @@ type resizeRequestState struct { RequestedRunDuration *ResizeRequestRequestedRunDuration `pulumi:"requestedRunDuration"` // The number of instances to be created by this resize request. The group's target size will be increased by this number. ResizeBy *int `pulumi:"resizeBy"` - // [Output only] Current state of the request. + // Current state of the request. State *string `pulumi:"state"` - // [Output only] Status of the request. + // Status of the request. // Structure is documented below. Statuses []ResizeRequestStatus `pulumi:"statuses"` - // Name of the compute zone scoping this request. Name should conform to RFC1035. + // The reference of the compute zone scoping this request. Zone *string `pulumi:"zone"` } @@ -254,9 +250,7 @@ type ResizeRequestState struct { CreationTimestamp pulumi.StringPtrInput // An optional description of this resize-request. Description pulumi.StringPtrInput - // 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. // // *** InstanceGroupManager pulumi.StringPtrInput @@ -270,12 +264,12 @@ type ResizeRequestState struct { RequestedRunDuration ResizeRequestRequestedRunDurationPtrInput // The number of instances to be created by this resize request. The group's target size will be increased by this number. ResizeBy pulumi.IntPtrInput - // [Output only] Current state of the request. + // Current state of the request. State pulumi.StringPtrInput - // [Output only] Status of the request. + // Status of the request. // Structure is documented below. Statuses ResizeRequestStatusArrayInput - // Name of the compute zone scoping this request. Name should conform to RFC1035. + // The reference of the compute zone scoping this request. Zone pulumi.StringPtrInput } @@ -286,9 +280,7 @@ func (ResizeRequestState) ElementType() reflect.Type { type resizeRequestArgs struct { // An optional description of this resize-request. Description *string `pulumi:"description"` - // 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. // // *** InstanceGroupManager string `pulumi:"instanceGroupManager"` @@ -302,7 +294,7 @@ type resizeRequestArgs struct { RequestedRunDuration *ResizeRequestRequestedRunDuration `pulumi:"requestedRunDuration"` // The number of instances to be created by this resize request. The group's target size will be increased by this number. ResizeBy int `pulumi:"resizeBy"` - // Name of the compute zone scoping this request. Name should conform to RFC1035. + // The reference of the compute zone scoping this request. Zone string `pulumi:"zone"` } @@ -310,9 +302,7 @@ type resizeRequestArgs struct { type ResizeRequestArgs struct { // An optional description of this resize-request. Description pulumi.StringPtrInput - // 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. // // *** InstanceGroupManager pulumi.StringInput @@ -326,7 +316,7 @@ type ResizeRequestArgs struct { RequestedRunDuration ResizeRequestRequestedRunDurationPtrInput // The number of instances to be created by this resize request. The group's target size will be increased by this number. ResizeBy pulumi.IntInput - // Name of the compute zone scoping this request. Name should conform to RFC1035. + // The reference of the compute zone scoping this request. Zone pulumi.StringInput } @@ -427,9 +417,7 @@ func (o ResizeRequestOutput) Description() pulumi.StringPtrOutput { return o.ApplyT(func(v *ResizeRequest) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) } -// 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. // // *** func (o ResizeRequestOutput) InstanceGroupManager() pulumi.StringOutput { @@ -458,18 +446,18 @@ func (o ResizeRequestOutput) ResizeBy() pulumi.IntOutput { return o.ApplyT(func(v *ResizeRequest) pulumi.IntOutput { return v.ResizeBy }).(pulumi.IntOutput) } -// [Output only] Current state of the request. +// Current state of the request. func (o ResizeRequestOutput) State() pulumi.StringOutput { return o.ApplyT(func(v *ResizeRequest) pulumi.StringOutput { return v.State }).(pulumi.StringOutput) } -// [Output only] Status of the request. +// Status of the request. // Structure is documented below. func (o ResizeRequestOutput) Statuses() ResizeRequestStatusArrayOutput { return o.ApplyT(func(v *ResizeRequest) ResizeRequestStatusArrayOutput { return v.Statuses }).(ResizeRequestStatusArrayOutput) } -// Name of the compute zone scoping this request. Name should conform to RFC1035. +// The reference of the compute zone scoping this request. func (o ResizeRequestOutput) Zone() pulumi.StringOutput { return o.ApplyT(func(v *ResizeRequest) pulumi.StringOutput { return v.Zone }).(pulumi.StringOutput) } diff --git a/sdk/go/gcp/config/config.go b/sdk/go/gcp/config/config.go index 9163b8dec8..30d74c278e 100644 --- a/sdk/go/gcp/config/config.go +++ b/sdk/go/gcp/config/config.go @@ -98,6 +98,9 @@ func GetBlockchainNodeEngineCustomEndpoint(ctx *pulumi.Context) string { func GetCertificateManagerCustomEndpoint(ctx *pulumi.Context) string { return config.Get(ctx, "gcp:certificateManagerCustomEndpoint") } +func GetChronicleCustomEndpoint(ctx *pulumi.Context) string { + return config.Get(ctx, "gcp:chronicleCustomEndpoint") +} func GetCloudAssetCustomEndpoint(ctx *pulumi.Context) string { return config.Get(ctx, "gcp:cloudAssetCustomEndpoint") } diff --git a/sdk/go/gcp/dataproc/batch.go b/sdk/go/gcp/dataproc/batch.go index 5d2b2f4b55..40c2af403f 100644 --- a/sdk/go/gcp/dataproc/batch.go +++ b/sdk/go/gcp/dataproc/batch.go @@ -111,23 +111,8 @@ import ( // if err != nil { // return err // } -// keyRing, err := kms.NewKeyRing(ctx, "key_ring", &kms.KeyRingArgs{ -// Name: pulumi.String("example-keyring"), -// Location: pulumi.String("us-central1"), -// }) -// if err != nil { -// return err -// } -// cryptoKey, err := kms.NewCryptoKey(ctx, "crypto_key", &kms.CryptoKeyArgs{ -// Name: pulumi.String("example-key"), -// KeyRing: keyRing.ID(), -// Purpose: pulumi.String("ENCRYPT_DECRYPT"), -// }) -// if err != nil { -// return err -// } // cryptoKeyMember1, err := kms.NewCryptoKeyIAMMember(ctx, "crypto_key_member_1", &kms.CryptoKeyIAMMemberArgs{ -// CryptoKeyId: cryptoKey.ID(), +// CryptoKeyId: pulumi.String("example-key"), // Role: pulumi.String("roles/cloudkms.cryptoKeyEncrypterDecrypter"), // Member: pulumi.Sprintf("serviceAccount:service-%v@dataproc-accounts.iam.gserviceaccount.com", project.Number), // }) @@ -199,7 +184,7 @@ import ( // NetworkTags: pulumi.StringArray{ // pulumi.String("tag1"), // }, -// KmsKey: cryptoKey.ID(), +// KmsKey: pulumi.String("example-key"), // NetworkUri: pulumi.String("default"), // ServiceAccount: pulumi.Sprintf("%v-compute@developer.gserviceaccount.com", project.Number), // StagingBucket: bucket.Name, diff --git a/sdk/go/gcp/datastream/pulumiTypes.go b/sdk/go/gcp/datastream/pulumiTypes.go index 3e42fb9d00..fc103fb8b2 100644 --- a/sdk/go/gcp/datastream/pulumiTypes.go +++ b/sdk/go/gcp/datastream/pulumiTypes.go @@ -6541,9 +6541,13 @@ func (o StreamSourceConfigPtrOutput) SqlServerSourceConfig() StreamSourceConfigS } type StreamSourceConfigMysqlSourceConfig struct { + // CDC reader reads from binary logs replication cdc method. + BinaryLogPosition *StreamSourceConfigMysqlSourceConfigBinaryLogPosition `pulumi:"binaryLogPosition"` // MySQL objects to exclude from the stream. // Structure is documented below. ExcludeObjects *StreamSourceConfigMysqlSourceConfigExcludeObjects `pulumi:"excludeObjects"` + // CDC reader reads from gtid based replication. + Gtid *StreamSourceConfigMysqlSourceConfigGtid `pulumi:"gtid"` // MySQL objects to retrieve from the source. // Structure is documented below. IncludeObjects *StreamSourceConfigMysqlSourceConfigIncludeObjects `pulumi:"includeObjects"` @@ -6567,9 +6571,13 @@ type StreamSourceConfigMysqlSourceConfigInput interface { } type StreamSourceConfigMysqlSourceConfigArgs struct { + // CDC reader reads from binary logs replication cdc method. + BinaryLogPosition StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrInput `pulumi:"binaryLogPosition"` // MySQL objects to exclude from the stream. // Structure is documented below. ExcludeObjects StreamSourceConfigMysqlSourceConfigExcludeObjectsPtrInput `pulumi:"excludeObjects"` + // CDC reader reads from gtid based replication. + Gtid StreamSourceConfigMysqlSourceConfigGtidPtrInput `pulumi:"gtid"` // MySQL objects to retrieve from the source. // Structure is documented below. IncludeObjects StreamSourceConfigMysqlSourceConfigIncludeObjectsPtrInput `pulumi:"includeObjects"` @@ -6658,6 +6666,13 @@ func (o StreamSourceConfigMysqlSourceConfigOutput) ToStreamSourceConfigMysqlSour }).(StreamSourceConfigMysqlSourceConfigPtrOutput) } +// CDC reader reads from binary logs replication cdc method. +func (o StreamSourceConfigMysqlSourceConfigOutput) BinaryLogPosition() StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutput { + return o.ApplyT(func(v StreamSourceConfigMysqlSourceConfig) *StreamSourceConfigMysqlSourceConfigBinaryLogPosition { + return v.BinaryLogPosition + }).(StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutput) +} + // MySQL objects to exclude from the stream. // Structure is documented below. func (o StreamSourceConfigMysqlSourceConfigOutput) ExcludeObjects() StreamSourceConfigMysqlSourceConfigExcludeObjectsPtrOutput { @@ -6666,6 +6681,11 @@ func (o StreamSourceConfigMysqlSourceConfigOutput) ExcludeObjects() StreamSource }).(StreamSourceConfigMysqlSourceConfigExcludeObjectsPtrOutput) } +// CDC reader reads from gtid based replication. +func (o StreamSourceConfigMysqlSourceConfigOutput) Gtid() StreamSourceConfigMysqlSourceConfigGtidPtrOutput { + return o.ApplyT(func(v StreamSourceConfigMysqlSourceConfig) *StreamSourceConfigMysqlSourceConfigGtid { return v.Gtid }).(StreamSourceConfigMysqlSourceConfigGtidPtrOutput) +} + // MySQL objects to retrieve from the source. // Structure is documented below. func (o StreamSourceConfigMysqlSourceConfigOutput) IncludeObjects() StreamSourceConfigMysqlSourceConfigIncludeObjectsPtrOutput { @@ -6710,6 +6730,16 @@ func (o StreamSourceConfigMysqlSourceConfigPtrOutput) Elem() StreamSourceConfigM }).(StreamSourceConfigMysqlSourceConfigOutput) } +// CDC reader reads from binary logs replication cdc method. +func (o StreamSourceConfigMysqlSourceConfigPtrOutput) BinaryLogPosition() StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutput { + return o.ApplyT(func(v *StreamSourceConfigMysqlSourceConfig) *StreamSourceConfigMysqlSourceConfigBinaryLogPosition { + if v == nil { + return nil + } + return v.BinaryLogPosition + }).(StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutput) +} + // MySQL objects to exclude from the stream. // Structure is documented below. func (o StreamSourceConfigMysqlSourceConfigPtrOutput) ExcludeObjects() StreamSourceConfigMysqlSourceConfigExcludeObjectsPtrOutput { @@ -6721,6 +6751,16 @@ func (o StreamSourceConfigMysqlSourceConfigPtrOutput) ExcludeObjects() StreamSou }).(StreamSourceConfigMysqlSourceConfigExcludeObjectsPtrOutput) } +// CDC reader reads from gtid based replication. +func (o StreamSourceConfigMysqlSourceConfigPtrOutput) Gtid() StreamSourceConfigMysqlSourceConfigGtidPtrOutput { + return o.ApplyT(func(v *StreamSourceConfigMysqlSourceConfig) *StreamSourceConfigMysqlSourceConfigGtid { + if v == nil { + return nil + } + return v.Gtid + }).(StreamSourceConfigMysqlSourceConfigGtidPtrOutput) +} + // MySQL objects to retrieve from the source. // Structure is documented below. func (o StreamSourceConfigMysqlSourceConfigPtrOutput) IncludeObjects() StreamSourceConfigMysqlSourceConfigIncludeObjectsPtrOutput { @@ -6754,6 +6794,124 @@ func (o StreamSourceConfigMysqlSourceConfigPtrOutput) MaxConcurrentCdcTasks() pu }).(pulumi.IntPtrOutput) } +type StreamSourceConfigMysqlSourceConfigBinaryLogPosition struct { +} + +// StreamSourceConfigMysqlSourceConfigBinaryLogPositionInput is an input type that accepts StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs and StreamSourceConfigMysqlSourceConfigBinaryLogPositionOutput values. +// You can construct a concrete instance of `StreamSourceConfigMysqlSourceConfigBinaryLogPositionInput` via: +// +// StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs{...} +type StreamSourceConfigMysqlSourceConfigBinaryLogPositionInput interface { + pulumi.Input + + ToStreamSourceConfigMysqlSourceConfigBinaryLogPositionOutput() StreamSourceConfigMysqlSourceConfigBinaryLogPositionOutput + ToStreamSourceConfigMysqlSourceConfigBinaryLogPositionOutputWithContext(context.Context) StreamSourceConfigMysqlSourceConfigBinaryLogPositionOutput +} + +type StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs struct { +} + +func (StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*StreamSourceConfigMysqlSourceConfigBinaryLogPosition)(nil)).Elem() +} + +func (i StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs) ToStreamSourceConfigMysqlSourceConfigBinaryLogPositionOutput() StreamSourceConfigMysqlSourceConfigBinaryLogPositionOutput { + return i.ToStreamSourceConfigMysqlSourceConfigBinaryLogPositionOutputWithContext(context.Background()) +} + +func (i StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs) ToStreamSourceConfigMysqlSourceConfigBinaryLogPositionOutputWithContext(ctx context.Context) StreamSourceConfigMysqlSourceConfigBinaryLogPositionOutput { + return pulumi.ToOutputWithContext(ctx, i).(StreamSourceConfigMysqlSourceConfigBinaryLogPositionOutput) +} + +func (i StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs) ToStreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutput() StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutput { + return i.ToStreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutputWithContext(context.Background()) +} + +func (i StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs) ToStreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutputWithContext(ctx context.Context) StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(StreamSourceConfigMysqlSourceConfigBinaryLogPositionOutput).ToStreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutputWithContext(ctx) +} + +// StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrInput is an input type that accepts StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs, StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtr and StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutput values. +// You can construct a concrete instance of `StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrInput` via: +// +// StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs{...} +// +// or: +// +// nil +type StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrInput interface { + pulumi.Input + + ToStreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutput() StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutput + ToStreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutputWithContext(context.Context) StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutput +} + +type streamSourceConfigMysqlSourceConfigBinaryLogPositionPtrType StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs + +func StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtr(v *StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs) StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrInput { + return (*streamSourceConfigMysqlSourceConfigBinaryLogPositionPtrType)(v) +} + +func (*streamSourceConfigMysqlSourceConfigBinaryLogPositionPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**StreamSourceConfigMysqlSourceConfigBinaryLogPosition)(nil)).Elem() +} + +func (i *streamSourceConfigMysqlSourceConfigBinaryLogPositionPtrType) ToStreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutput() StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutput { + return i.ToStreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutputWithContext(context.Background()) +} + +func (i *streamSourceConfigMysqlSourceConfigBinaryLogPositionPtrType) ToStreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutputWithContext(ctx context.Context) StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutput) +} + +type StreamSourceConfigMysqlSourceConfigBinaryLogPositionOutput struct{ *pulumi.OutputState } + +func (StreamSourceConfigMysqlSourceConfigBinaryLogPositionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*StreamSourceConfigMysqlSourceConfigBinaryLogPosition)(nil)).Elem() +} + +func (o StreamSourceConfigMysqlSourceConfigBinaryLogPositionOutput) ToStreamSourceConfigMysqlSourceConfigBinaryLogPositionOutput() StreamSourceConfigMysqlSourceConfigBinaryLogPositionOutput { + return o +} + +func (o StreamSourceConfigMysqlSourceConfigBinaryLogPositionOutput) ToStreamSourceConfigMysqlSourceConfigBinaryLogPositionOutputWithContext(ctx context.Context) StreamSourceConfigMysqlSourceConfigBinaryLogPositionOutput { + return o +} + +func (o StreamSourceConfigMysqlSourceConfigBinaryLogPositionOutput) ToStreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutput() StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutput { + return o.ToStreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutputWithContext(context.Background()) +} + +func (o StreamSourceConfigMysqlSourceConfigBinaryLogPositionOutput) ToStreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutputWithContext(ctx context.Context) StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v StreamSourceConfigMysqlSourceConfigBinaryLogPosition) *StreamSourceConfigMysqlSourceConfigBinaryLogPosition { + return &v + }).(StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutput) +} + +type StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutput struct{ *pulumi.OutputState } + +func (StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**StreamSourceConfigMysqlSourceConfigBinaryLogPosition)(nil)).Elem() +} + +func (o StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutput) ToStreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutput() StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutput { + return o +} + +func (o StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutput) ToStreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutputWithContext(ctx context.Context) StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutput { + return o +} + +func (o StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutput) Elem() StreamSourceConfigMysqlSourceConfigBinaryLogPositionOutput { + return o.ApplyT(func(v *StreamSourceConfigMysqlSourceConfigBinaryLogPosition) StreamSourceConfigMysqlSourceConfigBinaryLogPosition { + if v != nil { + return *v + } + var ret StreamSourceConfigMysqlSourceConfigBinaryLogPosition + return ret + }).(StreamSourceConfigMysqlSourceConfigBinaryLogPositionOutput) +} + type StreamSourceConfigMysqlSourceConfigExcludeObjects struct { // MySQL databases on the server // Structure is documented below. @@ -7292,6 +7450,124 @@ func (o StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTable }).(StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableMysqlColumnOutput) } +type StreamSourceConfigMysqlSourceConfigGtid struct { +} + +// StreamSourceConfigMysqlSourceConfigGtidInput is an input type that accepts StreamSourceConfigMysqlSourceConfigGtidArgs and StreamSourceConfigMysqlSourceConfigGtidOutput values. +// You can construct a concrete instance of `StreamSourceConfigMysqlSourceConfigGtidInput` via: +// +// StreamSourceConfigMysqlSourceConfigGtidArgs{...} +type StreamSourceConfigMysqlSourceConfigGtidInput interface { + pulumi.Input + + ToStreamSourceConfigMysqlSourceConfigGtidOutput() StreamSourceConfigMysqlSourceConfigGtidOutput + ToStreamSourceConfigMysqlSourceConfigGtidOutputWithContext(context.Context) StreamSourceConfigMysqlSourceConfigGtidOutput +} + +type StreamSourceConfigMysqlSourceConfigGtidArgs struct { +} + +func (StreamSourceConfigMysqlSourceConfigGtidArgs) ElementType() reflect.Type { + return reflect.TypeOf((*StreamSourceConfigMysqlSourceConfigGtid)(nil)).Elem() +} + +func (i StreamSourceConfigMysqlSourceConfigGtidArgs) ToStreamSourceConfigMysqlSourceConfigGtidOutput() StreamSourceConfigMysqlSourceConfigGtidOutput { + return i.ToStreamSourceConfigMysqlSourceConfigGtidOutputWithContext(context.Background()) +} + +func (i StreamSourceConfigMysqlSourceConfigGtidArgs) ToStreamSourceConfigMysqlSourceConfigGtidOutputWithContext(ctx context.Context) StreamSourceConfigMysqlSourceConfigGtidOutput { + return pulumi.ToOutputWithContext(ctx, i).(StreamSourceConfigMysqlSourceConfigGtidOutput) +} + +func (i StreamSourceConfigMysqlSourceConfigGtidArgs) ToStreamSourceConfigMysqlSourceConfigGtidPtrOutput() StreamSourceConfigMysqlSourceConfigGtidPtrOutput { + return i.ToStreamSourceConfigMysqlSourceConfigGtidPtrOutputWithContext(context.Background()) +} + +func (i StreamSourceConfigMysqlSourceConfigGtidArgs) ToStreamSourceConfigMysqlSourceConfigGtidPtrOutputWithContext(ctx context.Context) StreamSourceConfigMysqlSourceConfigGtidPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(StreamSourceConfigMysqlSourceConfigGtidOutput).ToStreamSourceConfigMysqlSourceConfigGtidPtrOutputWithContext(ctx) +} + +// StreamSourceConfigMysqlSourceConfigGtidPtrInput is an input type that accepts StreamSourceConfigMysqlSourceConfigGtidArgs, StreamSourceConfigMysqlSourceConfigGtidPtr and StreamSourceConfigMysqlSourceConfigGtidPtrOutput values. +// You can construct a concrete instance of `StreamSourceConfigMysqlSourceConfigGtidPtrInput` via: +// +// StreamSourceConfigMysqlSourceConfigGtidArgs{...} +// +// or: +// +// nil +type StreamSourceConfigMysqlSourceConfigGtidPtrInput interface { + pulumi.Input + + ToStreamSourceConfigMysqlSourceConfigGtidPtrOutput() StreamSourceConfigMysqlSourceConfigGtidPtrOutput + ToStreamSourceConfigMysqlSourceConfigGtidPtrOutputWithContext(context.Context) StreamSourceConfigMysqlSourceConfigGtidPtrOutput +} + +type streamSourceConfigMysqlSourceConfigGtidPtrType StreamSourceConfigMysqlSourceConfigGtidArgs + +func StreamSourceConfigMysqlSourceConfigGtidPtr(v *StreamSourceConfigMysqlSourceConfigGtidArgs) StreamSourceConfigMysqlSourceConfigGtidPtrInput { + return (*streamSourceConfigMysqlSourceConfigGtidPtrType)(v) +} + +func (*streamSourceConfigMysqlSourceConfigGtidPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**StreamSourceConfigMysqlSourceConfigGtid)(nil)).Elem() +} + +func (i *streamSourceConfigMysqlSourceConfigGtidPtrType) ToStreamSourceConfigMysqlSourceConfigGtidPtrOutput() StreamSourceConfigMysqlSourceConfigGtidPtrOutput { + return i.ToStreamSourceConfigMysqlSourceConfigGtidPtrOutputWithContext(context.Background()) +} + +func (i *streamSourceConfigMysqlSourceConfigGtidPtrType) ToStreamSourceConfigMysqlSourceConfigGtidPtrOutputWithContext(ctx context.Context) StreamSourceConfigMysqlSourceConfigGtidPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(StreamSourceConfigMysqlSourceConfigGtidPtrOutput) +} + +type StreamSourceConfigMysqlSourceConfigGtidOutput struct{ *pulumi.OutputState } + +func (StreamSourceConfigMysqlSourceConfigGtidOutput) ElementType() reflect.Type { + return reflect.TypeOf((*StreamSourceConfigMysqlSourceConfigGtid)(nil)).Elem() +} + +func (o StreamSourceConfigMysqlSourceConfigGtidOutput) ToStreamSourceConfigMysqlSourceConfigGtidOutput() StreamSourceConfigMysqlSourceConfigGtidOutput { + return o +} + +func (o StreamSourceConfigMysqlSourceConfigGtidOutput) ToStreamSourceConfigMysqlSourceConfigGtidOutputWithContext(ctx context.Context) StreamSourceConfigMysqlSourceConfigGtidOutput { + return o +} + +func (o StreamSourceConfigMysqlSourceConfigGtidOutput) ToStreamSourceConfigMysqlSourceConfigGtidPtrOutput() StreamSourceConfigMysqlSourceConfigGtidPtrOutput { + return o.ToStreamSourceConfigMysqlSourceConfigGtidPtrOutputWithContext(context.Background()) +} + +func (o StreamSourceConfigMysqlSourceConfigGtidOutput) ToStreamSourceConfigMysqlSourceConfigGtidPtrOutputWithContext(ctx context.Context) StreamSourceConfigMysqlSourceConfigGtidPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v StreamSourceConfigMysqlSourceConfigGtid) *StreamSourceConfigMysqlSourceConfigGtid { + return &v + }).(StreamSourceConfigMysqlSourceConfigGtidPtrOutput) +} + +type StreamSourceConfigMysqlSourceConfigGtidPtrOutput struct{ *pulumi.OutputState } + +func (StreamSourceConfigMysqlSourceConfigGtidPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**StreamSourceConfigMysqlSourceConfigGtid)(nil)).Elem() +} + +func (o StreamSourceConfigMysqlSourceConfigGtidPtrOutput) ToStreamSourceConfigMysqlSourceConfigGtidPtrOutput() StreamSourceConfigMysqlSourceConfigGtidPtrOutput { + return o +} + +func (o StreamSourceConfigMysqlSourceConfigGtidPtrOutput) ToStreamSourceConfigMysqlSourceConfigGtidPtrOutputWithContext(ctx context.Context) StreamSourceConfigMysqlSourceConfigGtidPtrOutput { + return o +} + +func (o StreamSourceConfigMysqlSourceConfigGtidPtrOutput) Elem() StreamSourceConfigMysqlSourceConfigGtidOutput { + return o.ApplyT(func(v *StreamSourceConfigMysqlSourceConfigGtid) StreamSourceConfigMysqlSourceConfigGtid { + if v != nil { + return *v + } + var ret StreamSourceConfigMysqlSourceConfigGtid + return ret + }).(StreamSourceConfigMysqlSourceConfigGtidOutput) +} + type StreamSourceConfigMysqlSourceConfigIncludeObjects struct { // MySQL databases on the server // Structure is documented below. @@ -12508,6 +12784,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*StreamSourceConfigPtrInput)(nil)).Elem(), StreamSourceConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*StreamSourceConfigMysqlSourceConfigInput)(nil)).Elem(), StreamSourceConfigMysqlSourceConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*StreamSourceConfigMysqlSourceConfigPtrInput)(nil)).Elem(), StreamSourceConfigMysqlSourceConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*StreamSourceConfigMysqlSourceConfigBinaryLogPositionInput)(nil)).Elem(), StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrInput)(nil)).Elem(), StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*StreamSourceConfigMysqlSourceConfigExcludeObjectsInput)(nil)).Elem(), StreamSourceConfigMysqlSourceConfigExcludeObjectsArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*StreamSourceConfigMysqlSourceConfigExcludeObjectsPtrInput)(nil)).Elem(), StreamSourceConfigMysqlSourceConfigExcludeObjectsArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseInput)(nil)).Elem(), StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseArgs{}) @@ -12516,6 +12794,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableArrayInput)(nil)).Elem(), StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableArray{}) pulumi.RegisterInputType(reflect.TypeOf((*StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableMysqlColumnInput)(nil)).Elem(), StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableMysqlColumnArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableMysqlColumnArrayInput)(nil)).Elem(), StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableMysqlColumnArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*StreamSourceConfigMysqlSourceConfigGtidInput)(nil)).Elem(), StreamSourceConfigMysqlSourceConfigGtidArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*StreamSourceConfigMysqlSourceConfigGtidPtrInput)(nil)).Elem(), StreamSourceConfigMysqlSourceConfigGtidArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*StreamSourceConfigMysqlSourceConfigIncludeObjectsInput)(nil)).Elem(), StreamSourceConfigMysqlSourceConfigIncludeObjectsArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*StreamSourceConfigMysqlSourceConfigIncludeObjectsPtrInput)(nil)).Elem(), StreamSourceConfigMysqlSourceConfigIncludeObjectsArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseInput)(nil)).Elem(), StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseArgs{}) @@ -12668,6 +12948,8 @@ func init() { pulumi.RegisterOutputType(StreamSourceConfigPtrOutput{}) pulumi.RegisterOutputType(StreamSourceConfigMysqlSourceConfigOutput{}) pulumi.RegisterOutputType(StreamSourceConfigMysqlSourceConfigPtrOutput{}) + pulumi.RegisterOutputType(StreamSourceConfigMysqlSourceConfigBinaryLogPositionOutput{}) + pulumi.RegisterOutputType(StreamSourceConfigMysqlSourceConfigBinaryLogPositionPtrOutput{}) pulumi.RegisterOutputType(StreamSourceConfigMysqlSourceConfigExcludeObjectsOutput{}) pulumi.RegisterOutputType(StreamSourceConfigMysqlSourceConfigExcludeObjectsPtrOutput{}) pulumi.RegisterOutputType(StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseOutput{}) @@ -12676,6 +12958,8 @@ func init() { pulumi.RegisterOutputType(StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableArrayOutput{}) pulumi.RegisterOutputType(StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableMysqlColumnOutput{}) pulumi.RegisterOutputType(StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableMysqlColumnArrayOutput{}) + pulumi.RegisterOutputType(StreamSourceConfigMysqlSourceConfigGtidOutput{}) + pulumi.RegisterOutputType(StreamSourceConfigMysqlSourceConfigGtidPtrOutput{}) pulumi.RegisterOutputType(StreamSourceConfigMysqlSourceConfigIncludeObjectsOutput{}) pulumi.RegisterOutputType(StreamSourceConfigMysqlSourceConfigIncludeObjectsPtrOutput{}) pulumi.RegisterOutputType(StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseOutput{}) diff --git a/sdk/go/gcp/developerconnect/connection.go b/sdk/go/gcp/developerconnect/connection.go index 98c5ee1eec..883533f323 100644 --- a/sdk/go/gcp/developerconnect/connection.go +++ b/sdk/go/gcp/developerconnect/connection.go @@ -14,7 +14,55 @@ import ( // ## Example Usage // -// ### Developer Connect Connection Basic +// ### Developer Connect Connection New +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect" +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// // Setup permissions. Only needed once per project +// _, err := projects.NewServiceIdentity(ctx, "devconnect-p4sa", &projects.ServiceIdentityArgs{ +// Service: pulumi.String("developerconnect.googleapis.com"), +// }) +// if err != nil { +// return err +// } +// _, err = projects.NewIAMMember(ctx, "devconnect-secret", &projects.IAMMemberArgs{ +// Project: pulumi.String("my-project-name"), +// Role: pulumi.String("roles/secretmanager.admin"), +// Member: devconnect_p4sa.Member, +// }) +// if err != nil { +// return err +// } +// _, err = developerconnect.NewConnection(ctx, "my-connection", &developerconnect.ConnectionArgs{ +// Location: pulumi.String("us-central1"), +// ConnectionId: pulumi.String("tf-test-connection-new"), +// GithubConfig: &developerconnect.ConnectionGithubConfigArgs{ +// GithubApp: pulumi.String("FIREBASE"), +// }, +// }, pulumi.DependsOn([]pulumi.Resource{ +// devconnect_secret, +// })) +// if err != nil { +// return err +// } +// ctx.Export("nextSteps", my_connection.InstallationStates) +// return nil +// }) +// } +// +// ``` +// ### Developer Connect Connection Existing Credentials // // ```go // package main @@ -30,23 +78,24 @@ import ( // pulumi.Run(func(ctx *pulumi.Context) error { // _, err := developerconnect.NewConnection(ctx, "my-connection", &developerconnect.ConnectionArgs{ // Location: pulumi.String("us-central1"), -// ConnectionId: pulumi.String("tf-test-connection"), +// ConnectionId: pulumi.String("tf-test-connection-cred"), // GithubConfig: &developerconnect.ConnectionGithubConfigArgs{ // GithubApp: pulumi.String("DEVELOPER_CONNECT"), // AuthorizerCredential: &developerconnect.ConnectionGithubConfigAuthorizerCredentialArgs{ -// OauthTokenSecretVersion: pulumi.String("projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1"), +// OauthTokenSecretVersion: pulumi.String("projects/your-project/secrets/your-secret-id/versions/latest"), // }, // }, // }) // if err != nil { // return err // } +// ctx.Export("nextSteps", my_connection.InstallationStates) // return nil // }) // } // // ``` -// ### Developer Connect Connection Github Doc +// ### Developer Connect Connection Existing Installation // // ```go // package main @@ -55,6 +104,7 @@ import ( // // "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect" // "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations" +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects" // "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager" // "github.com/pulumi/pulumi-std/sdk/go/std" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" @@ -85,22 +135,27 @@ import ( // if err != nil { // return err // } -// p4sa_secretAccessor, err := organizations.LookupIAMPolicy(ctx, &organizations.LookupIAMPolicyArgs{ -// Bindings: []organizations.GetIAMPolicyBinding{ -// { -// Role: "roles/secretmanager.secretAccessor", -// Members: []string{ -// "serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com", +// _, err = projects.NewServiceIdentity(ctx, "devconnect-p4sa", &projects.ServiceIdentityArgs{ +// Service: pulumi.String("developerconnect.googleapis.com"), +// }) +// if err != nil { +// return err +// } +// p4sa_secretAccessor := organizations.LookupIAMPolicyOutput(ctx, organizations.GetIAMPolicyOutputArgs{ +// Bindings: organizations.GetIAMPolicyBindingArray{ +// &organizations.GetIAMPolicyBindingArgs{ +// Role: pulumi.String("roles/secretmanager.secretAccessor"), +// Members: pulumi.StringArray{ +// devconnect_p4sa.Member, // }, // }, // }, // }, nil) -// if err != nil { -// return err -// } // _, err = secretmanager.NewSecretIamPolicy(ctx, "policy", &secretmanager.SecretIamPolicyArgs{ -// SecretId: github_token_secret.SecretId, -// PolicyData: pulumi.String(p4sa_secretAccessor.PolicyData), +// SecretId: github_token_secret.SecretId, +// PolicyData: pulumi.String(p4sa_secretAccessor.ApplyT(func(p4sa_secretAccessor organizations.GetIAMPolicyResult) (*string, error) { +// return &p4sa_secretAccessor.PolicyData, nil +// }).(pulumi.StringPtrOutput)), // }) // if err != nil { // return err diff --git a/sdk/go/gcp/diagflow/pulumiTypes.go b/sdk/go/gcp/diagflow/pulumiTypes.go index 3329ba3c9f..91148ef524 100644 --- a/sdk/go/gcp/diagflow/pulumiTypes.go +++ b/sdk/go/gcp/diagflow/pulumiTypes.go @@ -769,7 +769,7 @@ type CxAgentAdvancedSettingsSpeechSettings struct { // Timeout before detecting no speech. // A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s". NoSpeechTimeout *string `pulumi:"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. UseTimeoutBasedEndpointing *bool `pulumi:"useTimeoutBasedEndpointing"` } @@ -793,7 +793,7 @@ type CxAgentAdvancedSettingsSpeechSettingsArgs struct { // Timeout before detecting no speech. // A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s". NoSpeechTimeout pulumi.StringPtrInput `pulumi:"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. UseTimeoutBasedEndpointing pulumi.BoolPtrInput `pulumi:"useTimeoutBasedEndpointing"` } @@ -891,7 +891,7 @@ func (o CxAgentAdvancedSettingsSpeechSettingsOutput) NoSpeechTimeout() pulumi.St return o.ApplyT(func(v CxAgentAdvancedSettingsSpeechSettings) *string { return v.NoSpeechTimeout }).(pulumi.StringPtrOutput) } -// Use timeout based endpointing, interpreting endpointer sensitivy as seconds of timeout value. +// Use timeout based endpointing, interpreting endpointer sensitivity as seconds of timeout value. func (o CxAgentAdvancedSettingsSpeechSettingsOutput) UseTimeoutBasedEndpointing() pulumi.BoolPtrOutput { return o.ApplyT(func(v CxAgentAdvancedSettingsSpeechSettings) *bool { return v.UseTimeoutBasedEndpointing }).(pulumi.BoolPtrOutput) } @@ -952,7 +952,7 @@ func (o CxAgentAdvancedSettingsSpeechSettingsPtrOutput) NoSpeechTimeout() pulumi }).(pulumi.StringPtrOutput) } -// Use timeout based endpointing, interpreting endpointer sensitivy as seconds of timeout value. +// Use timeout based endpointing, interpreting endpointer sensitivity as seconds of timeout value. func (o CxAgentAdvancedSettingsSpeechSettingsPtrOutput) UseTimeoutBasedEndpointing() pulumi.BoolPtrOutput { return o.ApplyT(func(v *CxAgentAdvancedSettingsSpeechSettings) *bool { if v == nil { diff --git a/sdk/go/gcp/filestore/backup.go b/sdk/go/gcp/filestore/backup.go index bc6520e06d..6bc168eafc 100644 --- a/sdk/go/gcp/filestore/backup.go +++ b/sdk/go/gcp/filestore/backup.go @@ -149,6 +149,11 @@ type Backup struct { State pulumi.StringOutput `pulumi:"state"` // The size of the storage used by the backup. As backups share storage, this number is expected to change with backup creation/deletion. StorageBytes pulumi.StringOutput `pulumi:"storageBytes"` + // 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. + Tags pulumi.StringMapOutput `pulumi:"tags"` } // NewBackup registers a new resource with the given unique name, arguments, and options. @@ -240,6 +245,11 @@ type backupState struct { State *string `pulumi:"state"` // The size of the storage used by the backup. As backups share storage, this number is expected to change with backup creation/deletion. StorageBytes *string `pulumi:"storageBytes"` + // 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. + Tags map[string]string `pulumi:"tags"` } type BackupState struct { @@ -288,6 +298,11 @@ type BackupState struct { State pulumi.StringPtrInput // The size of the storage used by the backup. As backups share storage, this number is expected to change with backup creation/deletion. StorageBytes pulumi.StringPtrInput + // 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. + Tags pulumi.StringMapInput } func (BackupState) ElementType() reflect.Type { @@ -321,6 +336,11 @@ type backupArgs struct { SourceFileShare string `pulumi:"sourceFileShare"` // The resource name of the source Cloud Filestore instance, in the format projects/{projectId}/locations/{locationId}/instances/{instanceId}, used to create this backup. SourceInstance string `pulumi:"sourceInstance"` + // 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. + Tags map[string]string `pulumi:"tags"` } // The set of arguments for constructing a Backup resource. @@ -351,6 +371,11 @@ type BackupArgs struct { SourceFileShare pulumi.StringInput // The resource name of the source Cloud Filestore instance, in the format projects/{projectId}/locations/{locationId}/instances/{instanceId}, used to create this backup. SourceInstance pulumi.StringInput + // 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. + Tags pulumi.StringMapInput } func (BackupArgs) ElementType() reflect.Type { @@ -533,6 +558,14 @@ func (o BackupOutput) StorageBytes() pulumi.StringOutput { return o.ApplyT(func(v *Backup) pulumi.StringOutput { return v.StorageBytes }).(pulumi.StringOutput) } +// 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. +func (o BackupOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *Backup) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + type BackupArrayOutput struct{ *pulumi.OutputState } func (BackupArrayOutput) ElementType() reflect.Type { diff --git a/sdk/go/gcp/firebase/hostingCustomDomain.go b/sdk/go/gcp/firebase/hostingCustomDomain.go index 46a311b9e7..aef56f6443 100644 --- a/sdk/go/gcp/firebase/hostingCustomDomain.go +++ b/sdk/go/gcp/firebase/hostingCustomDomain.go @@ -280,7 +280,7 @@ type HostingCustomDomain struct { // The ID of the project in which the resource belongs. // If it is not provided, the provider project is used. Project pulumi.StringOutput `pulumi:"project"` - // 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 `certPreference` @@ -428,7 +428,7 @@ type hostingCustomDomainState struct { // The ID of the project in which the resource belongs. // If it is not provided, the provider project is used. Project *string `pulumi:"project"` - // 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 `certPreference` @@ -541,7 +541,7 @@ type HostingCustomDomainState struct { // The ID of the project in which the resource belongs. // If it is not provided, the provider project is used. Project pulumi.StringPtrInput - // 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 `certPreference` @@ -827,7 +827,7 @@ func (o HostingCustomDomainOutput) Project() pulumi.StringOutput { return o.ApplyT(func(v *HostingCustomDomain) pulumi.StringOutput { return v.Project }).(pulumi.StringOutput) } -// 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 `certPreference` diff --git a/sdk/go/gcp/firestore/pulumiTypes.go b/sdk/go/gcp/firestore/pulumiTypes.go index 8f0d8f44c0..0c6a580a84 100644 --- a/sdk/go/gcp/firestore/pulumiTypes.go +++ b/sdk/go/gcp/firestore/pulumiTypes.go @@ -289,7 +289,7 @@ type DatabaseCmekConfig struct { // 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. KmsKeyName string `pulumi:"kmsKeyName"` } @@ -322,7 +322,7 @@ type DatabaseCmekConfigArgs struct { // 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. KmsKeyName pulumi.StringInput `pulumi:"kmsKeyName"` } @@ -423,7 +423,7 @@ func (o DatabaseCmekConfigOutput) ActiveKeyVersions() pulumi.StringArrayOutput { // 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. func (o DatabaseCmekConfigOutput) KmsKeyName() pulumi.StringOutput { return o.ApplyT(func(v DatabaseCmekConfig) string { return v.KmsKeyName }).(pulumi.StringOutput) @@ -477,7 +477,7 @@ func (o DatabaseCmekConfigPtrOutput) ActiveKeyVersions() pulumi.StringArrayOutpu // 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. func (o DatabaseCmekConfigPtrOutput) KmsKeyName() pulumi.StringPtrOutput { return o.ApplyT(func(v *DatabaseCmekConfig) *string { diff --git a/sdk/go/gcp/gkehub/getFeature.go b/sdk/go/gcp/gkehub/getFeature.go new file mode 100644 index 0000000000..839cd3b443 --- /dev/null +++ b/sdk/go/gcp/gkehub/getFeature.go @@ -0,0 +1,144 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package gkehub + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +func LookupFeature(ctx *pulumi.Context, args *LookupFeatureArgs, opts ...pulumi.InvokeOption) (*LookupFeatureResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupFeatureResult + err := ctx.Invoke("gcp:gkehub/getFeature:getFeature", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getFeature. +type LookupFeatureArgs struct { + Location string `pulumi:"location"` + Name string `pulumi:"name"` + Project *string `pulumi:"project"` +} + +// A collection of values returned by getFeature. +type LookupFeatureResult struct { + CreateTime string `pulumi:"createTime"` + DeleteTime string `pulumi:"deleteTime"` + EffectiveLabels map[string]string `pulumi:"effectiveLabels"` + FleetDefaultMemberConfigs []GetFeatureFleetDefaultMemberConfig `pulumi:"fleetDefaultMemberConfigs"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + Labels map[string]string `pulumi:"labels"` + Location string `pulumi:"location"` + Name string `pulumi:"name"` + Project *string `pulumi:"project"` + PulumiLabels map[string]string `pulumi:"pulumiLabels"` + ResourceStates []GetFeatureResourceState `pulumi:"resourceStates"` + Specs []GetFeatureSpec `pulumi:"specs"` + States []GetFeatureState `pulumi:"states"` + UpdateTime string `pulumi:"updateTime"` +} + +func LookupFeatureOutput(ctx *pulumi.Context, args LookupFeatureOutputArgs, opts ...pulumi.InvokeOption) LookupFeatureResultOutput { + return pulumi.ToOutputWithContext(ctx.Context(), args). + ApplyT(func(v interface{}) (LookupFeatureResultOutput, error) { + args := v.(LookupFeatureArgs) + options := pulumi.InvokeOutputOptions{InvokeOptions: internal.PkgInvokeDefaultOpts(opts)} + return ctx.InvokeOutput("gcp:gkehub/getFeature:getFeature", args, LookupFeatureResultOutput{}, options).(LookupFeatureResultOutput), nil + }).(LookupFeatureResultOutput) +} + +// A collection of arguments for invoking getFeature. +type LookupFeatureOutputArgs struct { + Location pulumi.StringInput `pulumi:"location"` + Name pulumi.StringInput `pulumi:"name"` + Project pulumi.StringPtrInput `pulumi:"project"` +} + +func (LookupFeatureOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupFeatureArgs)(nil)).Elem() +} + +// A collection of values returned by getFeature. +type LookupFeatureResultOutput struct{ *pulumi.OutputState } + +func (LookupFeatureResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupFeatureResult)(nil)).Elem() +} + +func (o LookupFeatureResultOutput) ToLookupFeatureResultOutput() LookupFeatureResultOutput { + return o +} + +func (o LookupFeatureResultOutput) ToLookupFeatureResultOutputWithContext(ctx context.Context) LookupFeatureResultOutput { + return o +} + +func (o LookupFeatureResultOutput) CreateTime() pulumi.StringOutput { + return o.ApplyT(func(v LookupFeatureResult) string { return v.CreateTime }).(pulumi.StringOutput) +} + +func (o LookupFeatureResultOutput) DeleteTime() pulumi.StringOutput { + return o.ApplyT(func(v LookupFeatureResult) string { return v.DeleteTime }).(pulumi.StringOutput) +} + +func (o LookupFeatureResultOutput) EffectiveLabels() pulumi.StringMapOutput { + return o.ApplyT(func(v LookupFeatureResult) map[string]string { return v.EffectiveLabels }).(pulumi.StringMapOutput) +} + +func (o LookupFeatureResultOutput) FleetDefaultMemberConfigs() GetFeatureFleetDefaultMemberConfigArrayOutput { + return o.ApplyT(func(v LookupFeatureResult) []GetFeatureFleetDefaultMemberConfig { return v.FleetDefaultMemberConfigs }).(GetFeatureFleetDefaultMemberConfigArrayOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o LookupFeatureResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupFeatureResult) string { return v.Id }).(pulumi.StringOutput) +} + +func (o LookupFeatureResultOutput) Labels() pulumi.StringMapOutput { + return o.ApplyT(func(v LookupFeatureResult) map[string]string { return v.Labels }).(pulumi.StringMapOutput) +} + +func (o LookupFeatureResultOutput) Location() pulumi.StringOutput { + return o.ApplyT(func(v LookupFeatureResult) string { return v.Location }).(pulumi.StringOutput) +} + +func (o LookupFeatureResultOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v LookupFeatureResult) string { return v.Name }).(pulumi.StringOutput) +} + +func (o LookupFeatureResultOutput) Project() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupFeatureResult) *string { return v.Project }).(pulumi.StringPtrOutput) +} + +func (o LookupFeatureResultOutput) PulumiLabels() pulumi.StringMapOutput { + return o.ApplyT(func(v LookupFeatureResult) map[string]string { return v.PulumiLabels }).(pulumi.StringMapOutput) +} + +func (o LookupFeatureResultOutput) ResourceStates() GetFeatureResourceStateArrayOutput { + return o.ApplyT(func(v LookupFeatureResult) []GetFeatureResourceState { return v.ResourceStates }).(GetFeatureResourceStateArrayOutput) +} + +func (o LookupFeatureResultOutput) Specs() GetFeatureSpecArrayOutput { + return o.ApplyT(func(v LookupFeatureResult) []GetFeatureSpec { return v.Specs }).(GetFeatureSpecArrayOutput) +} + +func (o LookupFeatureResultOutput) States() GetFeatureStateArrayOutput { + return o.ApplyT(func(v LookupFeatureResult) []GetFeatureState { return v.States }).(GetFeatureStateArrayOutput) +} + +func (o LookupFeatureResultOutput) UpdateTime() pulumi.StringOutput { + return o.ApplyT(func(v LookupFeatureResult) string { return v.UpdateTime }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupFeatureResultOutput{}) +} diff --git a/sdk/go/gcp/gkehub/pulumiTypes.go b/sdk/go/gcp/gkehub/pulumiTypes.go index 9252a9d6d2..5ca493e8c8 100644 --- a/sdk/go/gcp/gkehub/pulumiTypes.go +++ b/sdk/go/gcp/gkehub/pulumiTypes.go @@ -11503,6 +11503,3567 @@ func (o ScopeStateTypeArrayOutput) Index(i pulumi.IntInput) ScopeStateTypeOutput }).(ScopeStateTypeOutput) } +type GetFeatureFleetDefaultMemberConfig struct { + // Config Management spec + Configmanagements []GetFeatureFleetDefaultMemberConfigConfigmanagement `pulumi:"configmanagements"` + // Service Mesh spec + Meshes []GetFeatureFleetDefaultMemberConfigMesh `pulumi:"meshes"` + // Policy Controller spec + Policycontrollers []GetFeatureFleetDefaultMemberConfigPolicycontroller `pulumi:"policycontrollers"` +} + +// GetFeatureFleetDefaultMemberConfigInput is an input type that accepts GetFeatureFleetDefaultMemberConfigArgs and GetFeatureFleetDefaultMemberConfigOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigInput` via: +// +// GetFeatureFleetDefaultMemberConfigArgs{...} +type GetFeatureFleetDefaultMemberConfigInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigOutput() GetFeatureFleetDefaultMemberConfigOutput + ToGetFeatureFleetDefaultMemberConfigOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigOutput +} + +type GetFeatureFleetDefaultMemberConfigArgs struct { + // Config Management spec + Configmanagements GetFeatureFleetDefaultMemberConfigConfigmanagementArrayInput `pulumi:"configmanagements"` + // Service Mesh spec + Meshes GetFeatureFleetDefaultMemberConfigMeshArrayInput `pulumi:"meshes"` + // Policy Controller spec + Policycontrollers GetFeatureFleetDefaultMemberConfigPolicycontrollerArrayInput `pulumi:"policycontrollers"` +} + +func (GetFeatureFleetDefaultMemberConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfig)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigArgs) ToGetFeatureFleetDefaultMemberConfigOutput() GetFeatureFleetDefaultMemberConfigOutput { + return i.ToGetFeatureFleetDefaultMemberConfigOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigArgs) ToGetFeatureFleetDefaultMemberConfigOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigOutput) +} + +// GetFeatureFleetDefaultMemberConfigArrayInput is an input type that accepts GetFeatureFleetDefaultMemberConfigArray and GetFeatureFleetDefaultMemberConfigArrayOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigArrayInput` via: +// +// GetFeatureFleetDefaultMemberConfigArray{ GetFeatureFleetDefaultMemberConfigArgs{...} } +type GetFeatureFleetDefaultMemberConfigArrayInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigArrayOutput() GetFeatureFleetDefaultMemberConfigArrayOutput + ToGetFeatureFleetDefaultMemberConfigArrayOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigArrayOutput +} + +type GetFeatureFleetDefaultMemberConfigArray []GetFeatureFleetDefaultMemberConfigInput + +func (GetFeatureFleetDefaultMemberConfigArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfig)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigArray) ToGetFeatureFleetDefaultMemberConfigArrayOutput() GetFeatureFleetDefaultMemberConfigArrayOutput { + return i.ToGetFeatureFleetDefaultMemberConfigArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigArray) ToGetFeatureFleetDefaultMemberConfigArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigArrayOutput) +} + +type GetFeatureFleetDefaultMemberConfigOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfig)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigOutput) ToGetFeatureFleetDefaultMemberConfigOutput() GetFeatureFleetDefaultMemberConfigOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigOutput) ToGetFeatureFleetDefaultMemberConfigOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigOutput { + return o +} + +// Config Management spec +func (o GetFeatureFleetDefaultMemberConfigOutput) Configmanagements() GetFeatureFleetDefaultMemberConfigConfigmanagementArrayOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfig) []GetFeatureFleetDefaultMemberConfigConfigmanagement { + return v.Configmanagements + }).(GetFeatureFleetDefaultMemberConfigConfigmanagementArrayOutput) +} + +// Service Mesh spec +func (o GetFeatureFleetDefaultMemberConfigOutput) Meshes() GetFeatureFleetDefaultMemberConfigMeshArrayOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfig) []GetFeatureFleetDefaultMemberConfigMesh { return v.Meshes }).(GetFeatureFleetDefaultMemberConfigMeshArrayOutput) +} + +// Policy Controller spec +func (o GetFeatureFleetDefaultMemberConfigOutput) Policycontrollers() GetFeatureFleetDefaultMemberConfigPolicycontrollerArrayOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfig) []GetFeatureFleetDefaultMemberConfigPolicycontroller { + return v.Policycontrollers + }).(GetFeatureFleetDefaultMemberConfigPolicycontrollerArrayOutput) +} + +type GetFeatureFleetDefaultMemberConfigArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfig)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigArrayOutput) ToGetFeatureFleetDefaultMemberConfigArrayOutput() GetFeatureFleetDefaultMemberConfigArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigArrayOutput) ToGetFeatureFleetDefaultMemberConfigArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigArrayOutput) Index(i pulumi.IntInput) GetFeatureFleetDefaultMemberConfigOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureFleetDefaultMemberConfig { + return vs[0].([]GetFeatureFleetDefaultMemberConfig)[vs[1].(int)] + }).(GetFeatureFleetDefaultMemberConfigOutput) +} + +type GetFeatureFleetDefaultMemberConfigConfigmanagement struct { + // ConfigSync configuration for the cluster + ConfigSyncs []GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync `pulumi:"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"] + Management string `pulumi:"management"` + // Version of Config Sync installed + Version string `pulumi:"version"` +} + +// GetFeatureFleetDefaultMemberConfigConfigmanagementInput is an input type that accepts GetFeatureFleetDefaultMemberConfigConfigmanagementArgs and GetFeatureFleetDefaultMemberConfigConfigmanagementOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigConfigmanagementInput` via: +// +// GetFeatureFleetDefaultMemberConfigConfigmanagementArgs{...} +type GetFeatureFleetDefaultMemberConfigConfigmanagementInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigConfigmanagementOutput() GetFeatureFleetDefaultMemberConfigConfigmanagementOutput + ToGetFeatureFleetDefaultMemberConfigConfigmanagementOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigConfigmanagementOutput +} + +type GetFeatureFleetDefaultMemberConfigConfigmanagementArgs struct { + // ConfigSync configuration for the cluster + ConfigSyncs GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArrayInput `pulumi:"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"] + Management pulumi.StringInput `pulumi:"management"` + // Version of Config Sync installed + Version pulumi.StringInput `pulumi:"version"` +} + +func (GetFeatureFleetDefaultMemberConfigConfigmanagementArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigConfigmanagement)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigConfigmanagementArgs) ToGetFeatureFleetDefaultMemberConfigConfigmanagementOutput() GetFeatureFleetDefaultMemberConfigConfigmanagementOutput { + return i.ToGetFeatureFleetDefaultMemberConfigConfigmanagementOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigConfigmanagementArgs) ToGetFeatureFleetDefaultMemberConfigConfigmanagementOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigConfigmanagementOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigConfigmanagementOutput) +} + +// GetFeatureFleetDefaultMemberConfigConfigmanagementArrayInput is an input type that accepts GetFeatureFleetDefaultMemberConfigConfigmanagementArray and GetFeatureFleetDefaultMemberConfigConfigmanagementArrayOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigConfigmanagementArrayInput` via: +// +// GetFeatureFleetDefaultMemberConfigConfigmanagementArray{ GetFeatureFleetDefaultMemberConfigConfigmanagementArgs{...} } +type GetFeatureFleetDefaultMemberConfigConfigmanagementArrayInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigConfigmanagementArrayOutput() GetFeatureFleetDefaultMemberConfigConfigmanagementArrayOutput + ToGetFeatureFleetDefaultMemberConfigConfigmanagementArrayOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigConfigmanagementArrayOutput +} + +type GetFeatureFleetDefaultMemberConfigConfigmanagementArray []GetFeatureFleetDefaultMemberConfigConfigmanagementInput + +func (GetFeatureFleetDefaultMemberConfigConfigmanagementArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigConfigmanagement)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigConfigmanagementArray) ToGetFeatureFleetDefaultMemberConfigConfigmanagementArrayOutput() GetFeatureFleetDefaultMemberConfigConfigmanagementArrayOutput { + return i.ToGetFeatureFleetDefaultMemberConfigConfigmanagementArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigConfigmanagementArray) ToGetFeatureFleetDefaultMemberConfigConfigmanagementArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigConfigmanagementArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigConfigmanagementArrayOutput) +} + +type GetFeatureFleetDefaultMemberConfigConfigmanagementOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigConfigmanagementOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigConfigmanagement)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementOutput) ToGetFeatureFleetDefaultMemberConfigConfigmanagementOutput() GetFeatureFleetDefaultMemberConfigConfigmanagementOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementOutput) ToGetFeatureFleetDefaultMemberConfigConfigmanagementOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigConfigmanagementOutput { + return o +} + +// ConfigSync configuration for the cluster +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementOutput) ConfigSyncs() GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArrayOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigConfigmanagement) []GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync { + return v.ConfigSyncs + }).(GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArrayOutput) +} + +// 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"] +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementOutput) Management() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigConfigmanagement) string { return v.Management }).(pulumi.StringOutput) +} + +// Version of Config Sync installed +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementOutput) Version() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigConfigmanagement) string { return v.Version }).(pulumi.StringOutput) +} + +type GetFeatureFleetDefaultMemberConfigConfigmanagementArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigConfigmanagementArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigConfigmanagement)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementArrayOutput) ToGetFeatureFleetDefaultMemberConfigConfigmanagementArrayOutput() GetFeatureFleetDefaultMemberConfigConfigmanagementArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementArrayOutput) ToGetFeatureFleetDefaultMemberConfigConfigmanagementArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigConfigmanagementArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementArrayOutput) Index(i pulumi.IntInput) GetFeatureFleetDefaultMemberConfigConfigmanagementOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureFleetDefaultMemberConfigConfigmanagement { + return vs[0].([]GetFeatureFleetDefaultMemberConfigConfigmanagement)[vs[1].(int)] + }).(GetFeatureFleetDefaultMemberConfigConfigmanagementOutput) +} + +type GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync struct { + // 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. + Enabled bool `pulumi:"enabled"` + // Git repo configuration for the cluster + Gits []GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit `pulumi:"gits"` + // OCI repo configuration for the cluster + Ocis []GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci `pulumi:"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. + PreventDrift bool `pulumi:"preventDrift"` + // Specifies whether the Config Sync Repo is in hierarchical or unstructured mode + SourceFormat string `pulumi:"sourceFormat"` +} + +// GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncInput is an input type that accepts GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArgs and GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncInput` via: +// +// GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArgs{...} +type GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOutput() GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOutput + ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOutput +} + +type GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArgs struct { + // 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. + Enabled pulumi.BoolInput `pulumi:"enabled"` + // Git repo configuration for the cluster + Gits GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArrayInput `pulumi:"gits"` + // OCI repo configuration for the cluster + Ocis GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArrayInput `pulumi:"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. + PreventDrift pulumi.BoolInput `pulumi:"preventDrift"` + // Specifies whether the Config Sync Repo is in hierarchical or unstructured mode + SourceFormat pulumi.StringInput `pulumi:"sourceFormat"` +} + +func (GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArgs) ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOutput() GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOutput { + return i.ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArgs) ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOutput) +} + +// GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArrayInput is an input type that accepts GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArray and GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArrayOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArrayInput` via: +// +// GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArray{ GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArgs{...} } +type GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArrayInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArrayOutput() GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArrayOutput + ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArrayOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArrayOutput +} + +type GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArray []GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncInput + +func (GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArray) ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArrayOutput() GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArrayOutput { + return i.ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArray) ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArrayOutput) +} + +type GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOutput) ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOutput() GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOutput) ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOutput { + return o +} + +// 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. +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOutput) Enabled() pulumi.BoolOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync) bool { return v.Enabled }).(pulumi.BoolOutput) +} + +// Git repo configuration for the cluster +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOutput) Gits() GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArrayOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync) []GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit { + return v.Gits + }).(GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArrayOutput) +} + +// OCI repo configuration for the cluster +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOutput) Ocis() GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArrayOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync) []GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci { + return v.Ocis + }).(GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArrayOutput) +} + +// 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. +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOutput) PreventDrift() pulumi.BoolOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync) bool { return v.PreventDrift }).(pulumi.BoolOutput) +} + +// Specifies whether the Config Sync Repo is in hierarchical or unstructured mode +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOutput) SourceFormat() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync) string { return v.SourceFormat }).(pulumi.StringOutput) +} + +type GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArrayOutput) ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArrayOutput() GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArrayOutput) ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArrayOutput) Index(i pulumi.IntInput) GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync { + return vs[0].([]GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync)[vs[1].(int)] + }).(GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOutput) +} + +type GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit struct { + // The Google Cloud Service Account Email used for auth when secretType is gcpServiceAccount + GcpServiceAccountEmail string `pulumi:"gcpServiceAccountEmail"` + // URL for the HTTPS Proxy to be used when communicating with the Git repo + HttpsProxy string `pulumi:"httpsProxy"` + // The path within the Git repository that represents the top level of the repo to sync + PolicyDir string `pulumi:"policyDir"` + // Type of secret configured for access to the Git repo + SecretType string `pulumi:"secretType"` + // The branch of the repository to sync from. Default: master + SyncBranch string `pulumi:"syncBranch"` + // The URL of the Git repository to use as the source of truth + SyncRepo string `pulumi:"syncRepo"` + // Git revision (tag or hash) to check out. Default HEAD + SyncRev string `pulumi:"syncRev"` + // Period in seconds between consecutive syncs. Default: 15 + SyncWaitSecs string `pulumi:"syncWaitSecs"` +} + +// GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitInput is an input type that accepts GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArgs and GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitInput` via: +// +// GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArgs{...} +type GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutput() GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutput + ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutput +} + +type GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArgs struct { + // The Google Cloud Service Account Email used for auth when secretType is gcpServiceAccount + GcpServiceAccountEmail pulumi.StringInput `pulumi:"gcpServiceAccountEmail"` + // URL for the HTTPS Proxy to be used when communicating with the Git repo + HttpsProxy pulumi.StringInput `pulumi:"httpsProxy"` + // The path within the Git repository that represents the top level of the repo to sync + PolicyDir pulumi.StringInput `pulumi:"policyDir"` + // Type of secret configured for access to the Git repo + SecretType pulumi.StringInput `pulumi:"secretType"` + // The branch of the repository to sync from. Default: master + SyncBranch pulumi.StringInput `pulumi:"syncBranch"` + // The URL of the Git repository to use as the source of truth + SyncRepo pulumi.StringInput `pulumi:"syncRepo"` + // Git revision (tag or hash) to check out. Default HEAD + SyncRev pulumi.StringInput `pulumi:"syncRev"` + // Period in seconds between consecutive syncs. Default: 15 + SyncWaitSecs pulumi.StringInput `pulumi:"syncWaitSecs"` +} + +func (GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArgs) ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutput() GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutput { + return i.ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArgs) ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutput) +} + +// GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArrayInput is an input type that accepts GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArray and GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArrayOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArrayInput` via: +// +// GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArray{ GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArgs{...} } +type GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArrayInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArrayOutput() GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArrayOutput + ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArrayOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArrayOutput +} + +type GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArray []GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitInput + +func (GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArray) ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArrayOutput() GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArrayOutput { + return i.ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArray) ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArrayOutput) +} + +type GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutput) ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutput() GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutput) ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutput { + return o +} + +// The Google Cloud Service Account Email used for auth when secretType is gcpServiceAccount +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutput) GcpServiceAccountEmail() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit) string { + return v.GcpServiceAccountEmail + }).(pulumi.StringOutput) +} + +// URL for the HTTPS Proxy to be used when communicating with the Git repo +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutput) HttpsProxy() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit) string { return v.HttpsProxy }).(pulumi.StringOutput) +} + +// The path within the Git repository that represents the top level of the repo to sync +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutput) PolicyDir() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit) string { return v.PolicyDir }).(pulumi.StringOutput) +} + +// Type of secret configured for access to the Git repo +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutput) SecretType() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit) string { return v.SecretType }).(pulumi.StringOutput) +} + +// The branch of the repository to sync from. Default: master +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutput) SyncBranch() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit) string { return v.SyncBranch }).(pulumi.StringOutput) +} + +// The URL of the Git repository to use as the source of truth +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutput) SyncRepo() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit) string { return v.SyncRepo }).(pulumi.StringOutput) +} + +// Git revision (tag or hash) to check out. Default HEAD +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutput) SyncRev() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit) string { return v.SyncRev }).(pulumi.StringOutput) +} + +// Period in seconds between consecutive syncs. Default: 15 +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutput) SyncWaitSecs() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit) string { return v.SyncWaitSecs }).(pulumi.StringOutput) +} + +type GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArrayOutput) ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArrayOutput() GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArrayOutput) ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArrayOutput) Index(i pulumi.IntInput) GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit { + return vs[0].([]GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit)[vs[1].(int)] + }).(GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutput) +} + +type GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci struct { + // The Google Cloud Service Account Email used for auth when secretType is gcpServiceAccount + GcpServiceAccountEmail string `pulumi:"gcpServiceAccountEmail"` + // The absolute path of the directory that contains the local resources. Default: the root directory of the image + PolicyDir string `pulumi:"policyDir"` + // Type of secret configured for access to the Git repo + SecretType string `pulumi:"secretType"` + // The OCI image repository URL for the package to sync from + SyncRepo string `pulumi:"syncRepo"` + // Period in seconds between consecutive syncs. Default: 15 + SyncWaitSecs string `pulumi:"syncWaitSecs"` + // Version of Config Sync installed + Version string `pulumi:"version"` +} + +// GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciInput is an input type that accepts GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArgs and GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciInput` via: +// +// GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArgs{...} +type GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciOutput() GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciOutput + ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciOutput +} + +type GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArgs struct { + // The Google Cloud Service Account Email used for auth when secretType is gcpServiceAccount + GcpServiceAccountEmail pulumi.StringInput `pulumi:"gcpServiceAccountEmail"` + // The absolute path of the directory that contains the local resources. Default: the root directory of the image + PolicyDir pulumi.StringInput `pulumi:"policyDir"` + // Type of secret configured for access to the Git repo + SecretType pulumi.StringInput `pulumi:"secretType"` + // The OCI image repository URL for the package to sync from + SyncRepo pulumi.StringInput `pulumi:"syncRepo"` + // Period in seconds between consecutive syncs. Default: 15 + SyncWaitSecs pulumi.StringInput `pulumi:"syncWaitSecs"` + // Version of Config Sync installed + Version pulumi.StringInput `pulumi:"version"` +} + +func (GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArgs) ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciOutput() GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciOutput { + return i.ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArgs) ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciOutput) +} + +// GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArrayInput is an input type that accepts GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArray and GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArrayOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArrayInput` via: +// +// GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArray{ GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArgs{...} } +type GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArrayInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArrayOutput() GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArrayOutput + ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArrayOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArrayOutput +} + +type GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArray []GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciInput + +func (GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArray) ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArrayOutput() GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArrayOutput { + return i.ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArray) ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArrayOutput) +} + +type GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciOutput) ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciOutput() GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciOutput) ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciOutput { + return o +} + +// The Google Cloud Service Account Email used for auth when secretType is gcpServiceAccount +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciOutput) GcpServiceAccountEmail() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci) string { + return v.GcpServiceAccountEmail + }).(pulumi.StringOutput) +} + +// The absolute path of the directory that contains the local resources. Default: the root directory of the image +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciOutput) PolicyDir() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci) string { return v.PolicyDir }).(pulumi.StringOutput) +} + +// Type of secret configured for access to the Git repo +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciOutput) SecretType() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci) string { return v.SecretType }).(pulumi.StringOutput) +} + +// The OCI image repository URL for the package to sync from +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciOutput) SyncRepo() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci) string { return v.SyncRepo }).(pulumi.StringOutput) +} + +// Period in seconds between consecutive syncs. Default: 15 +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciOutput) SyncWaitSecs() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci) string { return v.SyncWaitSecs }).(pulumi.StringOutput) +} + +// Version of Config Sync installed +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciOutput) Version() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci) string { return v.Version }).(pulumi.StringOutput) +} + +type GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArrayOutput) ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArrayOutput() GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArrayOutput) ToGetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArrayOutput) Index(i pulumi.IntInput) GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci { + return vs[0].([]GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci)[vs[1].(int)] + }).(GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciOutput) +} + +type GetFeatureFleetDefaultMemberConfigMesh struct { + // Whether to automatically manage Service Mesh Possible values: ["MANAGEMENT_UNSPECIFIED", "MANAGEMENT_AUTOMATIC", "MANAGEMENT_MANUAL"] + Management string `pulumi:"management"` +} + +// GetFeatureFleetDefaultMemberConfigMeshInput is an input type that accepts GetFeatureFleetDefaultMemberConfigMeshArgs and GetFeatureFleetDefaultMemberConfigMeshOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigMeshInput` via: +// +// GetFeatureFleetDefaultMemberConfigMeshArgs{...} +type GetFeatureFleetDefaultMemberConfigMeshInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigMeshOutput() GetFeatureFleetDefaultMemberConfigMeshOutput + ToGetFeatureFleetDefaultMemberConfigMeshOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigMeshOutput +} + +type GetFeatureFleetDefaultMemberConfigMeshArgs struct { + // Whether to automatically manage Service Mesh Possible values: ["MANAGEMENT_UNSPECIFIED", "MANAGEMENT_AUTOMATIC", "MANAGEMENT_MANUAL"] + Management pulumi.StringInput `pulumi:"management"` +} + +func (GetFeatureFleetDefaultMemberConfigMeshArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigMesh)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigMeshArgs) ToGetFeatureFleetDefaultMemberConfigMeshOutput() GetFeatureFleetDefaultMemberConfigMeshOutput { + return i.ToGetFeatureFleetDefaultMemberConfigMeshOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigMeshArgs) ToGetFeatureFleetDefaultMemberConfigMeshOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigMeshOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigMeshOutput) +} + +// GetFeatureFleetDefaultMemberConfigMeshArrayInput is an input type that accepts GetFeatureFleetDefaultMemberConfigMeshArray and GetFeatureFleetDefaultMemberConfigMeshArrayOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigMeshArrayInput` via: +// +// GetFeatureFleetDefaultMemberConfigMeshArray{ GetFeatureFleetDefaultMemberConfigMeshArgs{...} } +type GetFeatureFleetDefaultMemberConfigMeshArrayInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigMeshArrayOutput() GetFeatureFleetDefaultMemberConfigMeshArrayOutput + ToGetFeatureFleetDefaultMemberConfigMeshArrayOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigMeshArrayOutput +} + +type GetFeatureFleetDefaultMemberConfigMeshArray []GetFeatureFleetDefaultMemberConfigMeshInput + +func (GetFeatureFleetDefaultMemberConfigMeshArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigMesh)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigMeshArray) ToGetFeatureFleetDefaultMemberConfigMeshArrayOutput() GetFeatureFleetDefaultMemberConfigMeshArrayOutput { + return i.ToGetFeatureFleetDefaultMemberConfigMeshArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigMeshArray) ToGetFeatureFleetDefaultMemberConfigMeshArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigMeshArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigMeshArrayOutput) +} + +type GetFeatureFleetDefaultMemberConfigMeshOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigMeshOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigMesh)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigMeshOutput) ToGetFeatureFleetDefaultMemberConfigMeshOutput() GetFeatureFleetDefaultMemberConfigMeshOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigMeshOutput) ToGetFeatureFleetDefaultMemberConfigMeshOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigMeshOutput { + return o +} + +// Whether to automatically manage Service Mesh Possible values: ["MANAGEMENT_UNSPECIFIED", "MANAGEMENT_AUTOMATIC", "MANAGEMENT_MANUAL"] +func (o GetFeatureFleetDefaultMemberConfigMeshOutput) Management() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigMesh) string { return v.Management }).(pulumi.StringOutput) +} + +type GetFeatureFleetDefaultMemberConfigMeshArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigMeshArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigMesh)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigMeshArrayOutput) ToGetFeatureFleetDefaultMemberConfigMeshArrayOutput() GetFeatureFleetDefaultMemberConfigMeshArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigMeshArrayOutput) ToGetFeatureFleetDefaultMemberConfigMeshArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigMeshArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigMeshArrayOutput) Index(i pulumi.IntInput) GetFeatureFleetDefaultMemberConfigMeshOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureFleetDefaultMemberConfigMesh { + return vs[0].([]GetFeatureFleetDefaultMemberConfigMesh)[vs[1].(int)] + }).(GetFeatureFleetDefaultMemberConfigMeshOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontroller struct { + // Configuration of Policy Controller + PolicyControllerHubConfigs []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig `pulumi:"policyControllerHubConfigs"` + // Configures the version of Policy Controller + Version string `pulumi:"version"` +} + +// GetFeatureFleetDefaultMemberConfigPolicycontrollerInput is an input type that accepts GetFeatureFleetDefaultMemberConfigPolicycontrollerArgs and GetFeatureFleetDefaultMemberConfigPolicycontrollerOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigPolicycontrollerInput` via: +// +// GetFeatureFleetDefaultMemberConfigPolicycontrollerArgs{...} +type GetFeatureFleetDefaultMemberConfigPolicycontrollerInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerOutput + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerOutput +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerArgs struct { + // Configuration of Policy Controller + PolicyControllerHubConfigs GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArrayInput `pulumi:"policyControllerHubConfigs"` + // Configures the version of Policy Controller + Version pulumi.StringInput `pulumi:"version"` +} + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontroller)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerArgs) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerOutput { + return i.ToGetFeatureFleetDefaultMemberConfigPolicycontrollerOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerArgs) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigPolicycontrollerOutput) +} + +// GetFeatureFleetDefaultMemberConfigPolicycontrollerArrayInput is an input type that accepts GetFeatureFleetDefaultMemberConfigPolicycontrollerArray and GetFeatureFleetDefaultMemberConfigPolicycontrollerArrayOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigPolicycontrollerArrayInput` via: +// +// GetFeatureFleetDefaultMemberConfigPolicycontrollerArray{ GetFeatureFleetDefaultMemberConfigPolicycontrollerArgs{...} } +type GetFeatureFleetDefaultMemberConfigPolicycontrollerArrayInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerArrayOutput + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerArrayOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerArrayOutput +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerArray []GetFeatureFleetDefaultMemberConfigPolicycontrollerInput + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigPolicycontroller)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerArray) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerArrayOutput { + return i.ToGetFeatureFleetDefaultMemberConfigPolicycontrollerArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerArray) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigPolicycontrollerArrayOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontroller)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerOutput { + return o +} + +// Configuration of Policy Controller +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerOutput) PolicyControllerHubConfigs() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArrayOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontroller) []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig { + return v.PolicyControllerHubConfigs + }).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArrayOutput) +} + +// Configures the version of Policy Controller +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerOutput) Version() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontroller) string { return v.Version }).(pulumi.StringOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigPolicycontroller)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerArrayOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerArrayOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerArrayOutput) Index(i pulumi.IntInput) GetFeatureFleetDefaultMemberConfigPolicycontrollerOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureFleetDefaultMemberConfigPolicycontroller { + return vs[0].([]GetFeatureFleetDefaultMemberConfigPolicycontroller)[vs[1].(int)] + }).(GetFeatureFleetDefaultMemberConfigPolicycontrollerOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig struct { + // Interval for Policy Controller Audit scans (in seconds). When set to 0, this disables audit functionality altogether. + AuditIntervalSeconds int `pulumi:"auditIntervalSeconds"` + // The maximum number of audit violations to be stored in a constraint. If not set, the internal default of 20 will be used. + ConstraintViolationLimit int `pulumi:"constraintViolationLimit"` + // Map of deployment configs to deployments ("admission", "audit", "mutation"). + DeploymentConfigs []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig `pulumi:"deploymentConfigs"` + // The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster. + ExemptableNamespaces []string `pulumi:"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"] + InstallSpec string `pulumi:"installSpec"` + // Logs all denies and dry run failures. + LogDeniesEnabled bool `pulumi:"logDeniesEnabled"` + // Monitoring specifies the configuration of monitoring Policy Controller. + Monitorings []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoring `pulumi:"monitorings"` + // Enables the ability to mutate resources using Policy Controller. + MutationEnabled bool `pulumi:"mutationEnabled"` + // Specifies the desired policy content on the cluster. + PolicyContents []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent `pulumi:"policyContents"` + // Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated. + ReferentialRulesEnabled bool `pulumi:"referentialRulesEnabled"` +} + +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigInput is an input type that accepts GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs and GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigInput` via: +// +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs{...} +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutput + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutput +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs struct { + // Interval for Policy Controller Audit scans (in seconds). When set to 0, this disables audit functionality altogether. + AuditIntervalSeconds pulumi.IntInput `pulumi:"auditIntervalSeconds"` + // The maximum number of audit violations to be stored in a constraint. If not set, the internal default of 20 will be used. + ConstraintViolationLimit pulumi.IntInput `pulumi:"constraintViolationLimit"` + // Map of deployment configs to deployments ("admission", "audit", "mutation"). + DeploymentConfigs GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArrayInput `pulumi:"deploymentConfigs"` + // The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster. + ExemptableNamespaces pulumi.StringArrayInput `pulumi:"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"] + InstallSpec pulumi.StringInput `pulumi:"installSpec"` + // Logs all denies and dry run failures. + LogDeniesEnabled pulumi.BoolInput `pulumi:"logDeniesEnabled"` + // Monitoring specifies the configuration of monitoring Policy Controller. + Monitorings GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArrayInput `pulumi:"monitorings"` + // Enables the ability to mutate resources using Policy Controller. + MutationEnabled pulumi.BoolInput `pulumi:"mutationEnabled"` + // Specifies the desired policy content on the cluster. + PolicyContents GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArrayInput `pulumi:"policyContents"` + // Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated. + ReferentialRulesEnabled pulumi.BoolInput `pulumi:"referentialRulesEnabled"` +} + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutput { + return i.ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutput) +} + +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArrayInput is an input type that accepts GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArray and GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArrayOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArrayInput` via: +// +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArray{ GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs{...} } +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArrayInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArrayOutput + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArrayOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArrayOutput +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArray []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigInput + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArray) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArrayOutput { + return i.ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArray) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArrayOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutput { + return o +} + +// Interval for Policy Controller Audit scans (in seconds). When set to 0, this disables audit functionality altogether. +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutput) AuditIntervalSeconds() pulumi.IntOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig) int { + return v.AuditIntervalSeconds + }).(pulumi.IntOutput) +} + +// The maximum number of audit violations to be stored in a constraint. If not set, the internal default of 20 will be used. +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutput) ConstraintViolationLimit() pulumi.IntOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig) int { + return v.ConstraintViolationLimit + }).(pulumi.IntOutput) +} + +// Map of deployment configs to deployments ("admission", "audit", "mutation"). +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutput) DeploymentConfigs() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArrayOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig) []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig { + return v.DeploymentConfigs + }).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArrayOutput) +} + +// The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster. +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutput) ExemptableNamespaces() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig) []string { + return v.ExemptableNamespaces + }).(pulumi.StringArrayOutput) +} + +// 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"] +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutput) InstallSpec() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig) string { + return v.InstallSpec + }).(pulumi.StringOutput) +} + +// Logs all denies and dry run failures. +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutput) LogDeniesEnabled() pulumi.BoolOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig) bool { + return v.LogDeniesEnabled + }).(pulumi.BoolOutput) +} + +// Monitoring specifies the configuration of monitoring Policy Controller. +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutput) Monitorings() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArrayOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig) []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoring { + return v.Monitorings + }).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArrayOutput) +} + +// Enables the ability to mutate resources using Policy Controller. +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutput) MutationEnabled() pulumi.BoolOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig) bool { + return v.MutationEnabled + }).(pulumi.BoolOutput) +} + +// Specifies the desired policy content on the cluster. +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutput) PolicyContents() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArrayOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig) []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent { + return v.PolicyContents + }).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArrayOutput) +} + +// Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated. +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutput) ReferentialRulesEnabled() pulumi.BoolOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig) bool { + return v.ReferentialRulesEnabled + }).(pulumi.BoolOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArrayOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArrayOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArrayOutput) Index(i pulumi.IntInput) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig { + return vs[0].([]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig)[vs[1].(int)] + }).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig struct { + Component string `pulumi:"component"` + // Container resource requirements. + ContainerResources []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource `pulumi:"containerResources"` + // Pod affinity configuration. Possible values: ["AFFINITY_UNSPECIFIED", "NO_AFFINITY", "ANTI_AFFINITY"] + PodAffinity string `pulumi:"podAffinity"` + // Pod tolerations of node taints. + PodTolerations []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration `pulumi:"podTolerations"` + // Pod replica count. + ReplicaCount int `pulumi:"replicaCount"` +} + +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigInput is an input type that accepts GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs and GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigInput` via: +// +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs{...} +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigOutput + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigOutput +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs struct { + Component pulumi.StringInput `pulumi:"component"` + // Container resource requirements. + ContainerResources GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArrayInput `pulumi:"containerResources"` + // Pod affinity configuration. Possible values: ["AFFINITY_UNSPECIFIED", "NO_AFFINITY", "ANTI_AFFINITY"] + PodAffinity pulumi.StringInput `pulumi:"podAffinity"` + // Pod tolerations of node taints. + PodTolerations GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArrayInput `pulumi:"podTolerations"` + // Pod replica count. + ReplicaCount pulumi.IntInput `pulumi:"replicaCount"` +} + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigOutput { + return i.ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigOutput) +} + +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArrayInput is an input type that accepts GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArray and GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArrayOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArrayInput` via: +// +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArray{ GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs{...} } +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArrayInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArrayOutput + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArrayOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArrayOutput +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArray []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigInput + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArray) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArrayOutput { + return i.ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArray) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArrayOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigOutput) Component() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig) string { + return v.Component + }).(pulumi.StringOutput) +} + +// Container resource requirements. +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigOutput) ContainerResources() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArrayOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig) []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource { + return v.ContainerResources + }).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArrayOutput) +} + +// Pod affinity configuration. Possible values: ["AFFINITY_UNSPECIFIED", "NO_AFFINITY", "ANTI_AFFINITY"] +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigOutput) PodAffinity() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig) string { + return v.PodAffinity + }).(pulumi.StringOutput) +} + +// Pod tolerations of node taints. +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigOutput) PodTolerations() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArrayOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig) []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration { + return v.PodTolerations + }).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArrayOutput) +} + +// Pod replica count. +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigOutput) ReplicaCount() pulumi.IntOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig) int { + return v.ReplicaCount + }).(pulumi.IntOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArrayOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArrayOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArrayOutput) Index(i pulumi.IntInput) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig { + return vs[0].([]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig)[vs[1].(int)] + }).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource struct { + // Limits describes the maximum amount of compute resources allowed for use by the running container. + Limits []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit `pulumi:"limits"` + // Requests describes the amount of compute resources reserved for the container by the kube-scheduler. + Requests []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest `pulumi:"requests"` +} + +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceInput is an input type that accepts GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArgs and GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceInput` via: +// +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArgs{...} +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceOutput + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceOutput +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArgs struct { + // Limits describes the maximum amount of compute resources allowed for use by the running container. + Limits GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArrayInput `pulumi:"limits"` + // Requests describes the amount of compute resources reserved for the container by the kube-scheduler. + Requests GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArrayInput `pulumi:"requests"` +} + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArgs) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceOutput { + return i.ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArgs) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceOutput) +} + +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArrayInput is an input type that accepts GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArray and GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArrayOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArrayInput` via: +// +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArray{ GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArgs{...} } +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArrayInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArrayOutput + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArrayOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArrayOutput +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArray []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceInput + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArray) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArrayOutput { + return i.ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArray) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArrayOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceOutput { + return o +} + +// Limits describes the maximum amount of compute resources allowed for use by the running container. +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceOutput) Limits() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArrayOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource) []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit { + return v.Limits + }).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArrayOutput) +} + +// Requests describes the amount of compute resources reserved for the container by the kube-scheduler. +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceOutput) Requests() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArrayOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource) []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest { + return v.Requests + }).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArrayOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArrayOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArrayOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArrayOutput) Index(i pulumi.IntInput) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource { + return vs[0].([]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource)[vs[1].(int)] + }).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit struct { + // CPU requirement expressed in Kubernetes resource units. + Cpu string `pulumi:"cpu"` + // Memory requirement expressed in Kubernetes resource units. + Memory string `pulumi:"memory"` +} + +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitInput is an input type that accepts GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArgs and GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitInput` via: +// +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArgs{...} +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitOutput + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitOutput +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArgs struct { + // CPU requirement expressed in Kubernetes resource units. + Cpu pulumi.StringInput `pulumi:"cpu"` + // Memory requirement expressed in Kubernetes resource units. + Memory pulumi.StringInput `pulumi:"memory"` +} + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArgs) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitOutput { + return i.ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArgs) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitOutput) +} + +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArrayInput is an input type that accepts GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArray and GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArrayOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArrayInput` via: +// +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArray{ GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArgs{...} } +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArrayInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArrayOutput + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArrayOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArrayOutput +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArray []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitInput + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArray) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArrayOutput { + return i.ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArray) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArrayOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitOutput { + return o +} + +// CPU requirement expressed in Kubernetes resource units. +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitOutput) Cpu() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit) string { + return v.Cpu + }).(pulumi.StringOutput) +} + +// Memory requirement expressed in Kubernetes resource units. +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitOutput) Memory() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit) string { + return v.Memory + }).(pulumi.StringOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArrayOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArrayOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArrayOutput) Index(i pulumi.IntInput) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit { + return vs[0].([]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit)[vs[1].(int)] + }).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest struct { + // CPU requirement expressed in Kubernetes resource units. + Cpu string `pulumi:"cpu"` + // Memory requirement expressed in Kubernetes resource units. + Memory string `pulumi:"memory"` +} + +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestInput is an input type that accepts GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArgs and GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestInput` via: +// +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArgs{...} +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestOutput + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestOutput +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArgs struct { + // CPU requirement expressed in Kubernetes resource units. + Cpu pulumi.StringInput `pulumi:"cpu"` + // Memory requirement expressed in Kubernetes resource units. + Memory pulumi.StringInput `pulumi:"memory"` +} + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArgs) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestOutput { + return i.ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArgs) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestOutput) +} + +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArrayInput is an input type that accepts GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArray and GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArrayOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArrayInput` via: +// +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArray{ GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArgs{...} } +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArrayInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArrayOutput + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArrayOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArrayOutput +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArray []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestInput + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArray) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArrayOutput { + return i.ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArray) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArrayOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestOutput { + return o +} + +// CPU requirement expressed in Kubernetes resource units. +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestOutput) Cpu() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest) string { + return v.Cpu + }).(pulumi.StringOutput) +} + +// Memory requirement expressed in Kubernetes resource units. +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestOutput) Memory() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest) string { + return v.Memory + }).(pulumi.StringOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArrayOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArrayOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArrayOutput) Index(i pulumi.IntInput) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest { + return vs[0].([]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest)[vs[1].(int)] + }).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration struct { + // Matches a taint effect. + Effect string `pulumi:"effect"` + // Matches a taint key (not necessarily unique). + Key string `pulumi:"key"` + // Matches a taint operator. + Operator string `pulumi:"operator"` + // Matches a taint value. + Value string `pulumi:"value"` +} + +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationInput is an input type that accepts GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArgs and GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationInput` via: +// +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArgs{...} +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationOutput + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationOutput +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArgs struct { + // Matches a taint effect. + Effect pulumi.StringInput `pulumi:"effect"` + // Matches a taint key (not necessarily unique). + Key pulumi.StringInput `pulumi:"key"` + // Matches a taint operator. + Operator pulumi.StringInput `pulumi:"operator"` + // Matches a taint value. + Value pulumi.StringInput `pulumi:"value"` +} + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArgs) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationOutput { + return i.ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArgs) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationOutput) +} + +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArrayInput is an input type that accepts GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArray and GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArrayOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArrayInput` via: +// +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArray{ GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArgs{...} } +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArrayInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArrayOutput + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArrayOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArrayOutput +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArray []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationInput + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArray) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArrayOutput { + return i.ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArray) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArrayOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationOutput { + return o +} + +// Matches a taint effect. +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationOutput) Effect() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration) string { + return v.Effect + }).(pulumi.StringOutput) +} + +// Matches a taint key (not necessarily unique). +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationOutput) Key() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration) string { + return v.Key + }).(pulumi.StringOutput) +} + +// Matches a taint operator. +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationOutput) Operator() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration) string { + return v.Operator + }).(pulumi.StringOutput) +} + +// Matches a taint value. +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationOutput) Value() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration) string { + return v.Value + }).(pulumi.StringOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArrayOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArrayOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArrayOutput) Index(i pulumi.IntInput) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration { + return vs[0].([]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration)[vs[1].(int)] + }).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoring struct { + // 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"] + Backends []string `pulumi:"backends"` +} + +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringInput is an input type that accepts GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs and GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringInput` via: +// +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs{...} +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringOutput + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringOutput +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs struct { + // 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"] + Backends pulumi.StringArrayInput `pulumi:"backends"` +} + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoring)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringOutput { + return i.ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringOutput) +} + +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArrayInput is an input type that accepts GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArray and GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArrayOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArrayInput` via: +// +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArray{ GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs{...} } +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArrayInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArrayOutput + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArrayOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArrayOutput +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArray []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringInput + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoring)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArray) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArrayOutput { + return i.ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArray) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArrayOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoring)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringOutput { + return o +} + +// 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"] +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringOutput) Backends() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoring) []string { + return v.Backends + }).(pulumi.StringArrayOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoring)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArrayOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArrayOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArrayOutput) Index(i pulumi.IntInput) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoring { + return vs[0].([]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoring)[vs[1].(int)] + }).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent struct { + // Configures which bundles to install and their corresponding install specs. + Bundles []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle `pulumi:"bundles"` + // Configures the installation of the Template Library. + TemplateLibraries []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibrary `pulumi:"templateLibraries"` +} + +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentInput is an input type that accepts GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs and GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentInput` via: +// +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs{...} +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentOutput + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentOutput +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs struct { + // Configures which bundles to install and their corresponding install specs. + Bundles GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArrayInput `pulumi:"bundles"` + // Configures the installation of the Template Library. + TemplateLibraries GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArrayInput `pulumi:"templateLibraries"` +} + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentOutput { + return i.ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentOutput) +} + +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArrayInput is an input type that accepts GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArray and GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArrayOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArrayInput` via: +// +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArray{ GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs{...} } +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArrayInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArrayOutput + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArrayOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArrayOutput +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArray []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentInput + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArray) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArrayOutput { + return i.ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArray) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArrayOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentOutput { + return o +} + +// Configures which bundles to install and their corresponding install specs. +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentOutput) Bundles() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArrayOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent) []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle { + return v.Bundles + }).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArrayOutput) +} + +// Configures the installation of the Template Library. +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentOutput) TemplateLibraries() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArrayOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent) []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibrary { + return v.TemplateLibraries + }).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArrayOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArrayOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArrayOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArrayOutput) Index(i pulumi.IntInput) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent { + return vs[0].([]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent)[vs[1].(int)] + }).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle struct { + Bundle string `pulumi:"bundle"` + // The set of namespaces to be exempted from the bundle. + ExemptedNamespaces []string `pulumi:"exemptedNamespaces"` +} + +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleInput is an input type that accepts GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs and GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleInput` via: +// +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs{...} +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleOutput + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleOutput +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs struct { + Bundle pulumi.StringInput `pulumi:"bundle"` + // The set of namespaces to be exempted from the bundle. + ExemptedNamespaces pulumi.StringArrayInput `pulumi:"exemptedNamespaces"` +} + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleOutput { + return i.ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleOutput) +} + +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArrayInput is an input type that accepts GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArray and GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArrayOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArrayInput` via: +// +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArray{ GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs{...} } +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArrayInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArrayOutput + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArrayOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArrayOutput +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArray []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleInput + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArray) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArrayOutput { + return i.ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArray) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArrayOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleOutput) Bundle() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle) string { + return v.Bundle + }).(pulumi.StringOutput) +} + +// The set of namespaces to be exempted from the bundle. +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleOutput) ExemptedNamespaces() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle) []string { + return v.ExemptedNamespaces + }).(pulumi.StringArrayOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArrayOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArrayOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArrayOutput) Index(i pulumi.IntInput) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle { + return vs[0].([]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle)[vs[1].(int)] + }).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibrary struct { + // Configures the manner in which the template library is installed on the cluster. Possible values: ["INSTALLATION_UNSPECIFIED", "NOT_INSTALLED", "ALL"] + Installation string `pulumi:"installation"` +} + +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryInput is an input type that accepts GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs and GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryInput` via: +// +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs{...} +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryOutput + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryOutput +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs struct { + // Configures the manner in which the template library is installed on the cluster. Possible values: ["INSTALLATION_UNSPECIFIED", "NOT_INSTALLED", "ALL"] + Installation pulumi.StringInput `pulumi:"installation"` +} + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibrary)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryOutput { + return i.ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryOutput) +} + +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArrayInput is an input type that accepts GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArray and GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArrayOutput values. +// You can construct a concrete instance of `GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArrayInput` via: +// +// GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArray{ GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs{...} } +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArrayInput interface { + pulumi.Input + + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArrayOutput + ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArrayOutputWithContext(context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArrayOutput +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArray []GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryInput + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibrary)(nil)).Elem() +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArray) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArrayOutput { + return i.ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArray) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArrayOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibrary)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryOutput { + return o +} + +// Configures the manner in which the template library is installed on the cluster. Possible values: ["INSTALLATION_UNSPECIFIED", "NOT_INSTALLED", "ALL"] +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryOutput) Installation() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibrary) string { + return v.Installation + }).(pulumi.StringOutput) +} + +type GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibrary)(nil)).Elem() +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArrayOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArrayOutput() GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArrayOutput) ToGetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArrayOutputWithContext(ctx context.Context) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArrayOutput { + return o +} + +func (o GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArrayOutput) Index(i pulumi.IntInput) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibrary { + return vs[0].([]GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibrary)[vs[1].(int)] + }).(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryOutput) +} + +type GetFeatureResourceState struct { + // Whether this Feature has outstanding resources that need to be cleaned up before it can be disabled. + HasResources bool `pulumi:"hasResources"` + // The current state of the Feature resource in the Hub API. + State string `pulumi:"state"` +} + +// GetFeatureResourceStateInput is an input type that accepts GetFeatureResourceStateArgs and GetFeatureResourceStateOutput values. +// You can construct a concrete instance of `GetFeatureResourceStateInput` via: +// +// GetFeatureResourceStateArgs{...} +type GetFeatureResourceStateInput interface { + pulumi.Input + + ToGetFeatureResourceStateOutput() GetFeatureResourceStateOutput + ToGetFeatureResourceStateOutputWithContext(context.Context) GetFeatureResourceStateOutput +} + +type GetFeatureResourceStateArgs struct { + // Whether this Feature has outstanding resources that need to be cleaned up before it can be disabled. + HasResources pulumi.BoolInput `pulumi:"hasResources"` + // The current state of the Feature resource in the Hub API. + State pulumi.StringInput `pulumi:"state"` +} + +func (GetFeatureResourceStateArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureResourceState)(nil)).Elem() +} + +func (i GetFeatureResourceStateArgs) ToGetFeatureResourceStateOutput() GetFeatureResourceStateOutput { + return i.ToGetFeatureResourceStateOutputWithContext(context.Background()) +} + +func (i GetFeatureResourceStateArgs) ToGetFeatureResourceStateOutputWithContext(ctx context.Context) GetFeatureResourceStateOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureResourceStateOutput) +} + +// GetFeatureResourceStateArrayInput is an input type that accepts GetFeatureResourceStateArray and GetFeatureResourceStateArrayOutput values. +// You can construct a concrete instance of `GetFeatureResourceStateArrayInput` via: +// +// GetFeatureResourceStateArray{ GetFeatureResourceStateArgs{...} } +type GetFeatureResourceStateArrayInput interface { + pulumi.Input + + ToGetFeatureResourceStateArrayOutput() GetFeatureResourceStateArrayOutput + ToGetFeatureResourceStateArrayOutputWithContext(context.Context) GetFeatureResourceStateArrayOutput +} + +type GetFeatureResourceStateArray []GetFeatureResourceStateInput + +func (GetFeatureResourceStateArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureResourceState)(nil)).Elem() +} + +func (i GetFeatureResourceStateArray) ToGetFeatureResourceStateArrayOutput() GetFeatureResourceStateArrayOutput { + return i.ToGetFeatureResourceStateArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureResourceStateArray) ToGetFeatureResourceStateArrayOutputWithContext(ctx context.Context) GetFeatureResourceStateArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureResourceStateArrayOutput) +} + +type GetFeatureResourceStateOutput struct{ *pulumi.OutputState } + +func (GetFeatureResourceStateOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureResourceState)(nil)).Elem() +} + +func (o GetFeatureResourceStateOutput) ToGetFeatureResourceStateOutput() GetFeatureResourceStateOutput { + return o +} + +func (o GetFeatureResourceStateOutput) ToGetFeatureResourceStateOutputWithContext(ctx context.Context) GetFeatureResourceStateOutput { + return o +} + +// Whether this Feature has outstanding resources that need to be cleaned up before it can be disabled. +func (o GetFeatureResourceStateOutput) HasResources() pulumi.BoolOutput { + return o.ApplyT(func(v GetFeatureResourceState) bool { return v.HasResources }).(pulumi.BoolOutput) +} + +// The current state of the Feature resource in the Hub API. +func (o GetFeatureResourceStateOutput) State() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureResourceState) string { return v.State }).(pulumi.StringOutput) +} + +type GetFeatureResourceStateArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureResourceStateArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureResourceState)(nil)).Elem() +} + +func (o GetFeatureResourceStateArrayOutput) ToGetFeatureResourceStateArrayOutput() GetFeatureResourceStateArrayOutput { + return o +} + +func (o GetFeatureResourceStateArrayOutput) ToGetFeatureResourceStateArrayOutputWithContext(ctx context.Context) GetFeatureResourceStateArrayOutput { + return o +} + +func (o GetFeatureResourceStateArrayOutput) Index(i pulumi.IntInput) GetFeatureResourceStateOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureResourceState { + return vs[0].([]GetFeatureResourceState)[vs[1].(int)] + }).(GetFeatureResourceStateOutput) +} + +type GetFeatureSpec struct { + // Clusterupgrade feature spec. + Clusterupgrades []GetFeatureSpecClusterupgrade `pulumi:"clusterupgrades"` + // Fleet Observability feature spec. + Fleetobservabilities []GetFeatureSpecFleetobservability `pulumi:"fleetobservabilities"` + // Multicluster Ingress-specific spec. + Multiclusteringresses []GetFeatureSpecMulticlusteringress `pulumi:"multiclusteringresses"` +} + +// GetFeatureSpecInput is an input type that accepts GetFeatureSpecArgs and GetFeatureSpecOutput values. +// You can construct a concrete instance of `GetFeatureSpecInput` via: +// +// GetFeatureSpecArgs{...} +type GetFeatureSpecInput interface { + pulumi.Input + + ToGetFeatureSpecOutput() GetFeatureSpecOutput + ToGetFeatureSpecOutputWithContext(context.Context) GetFeatureSpecOutput +} + +type GetFeatureSpecArgs struct { + // Clusterupgrade feature spec. + Clusterupgrades GetFeatureSpecClusterupgradeArrayInput `pulumi:"clusterupgrades"` + // Fleet Observability feature spec. + Fleetobservabilities GetFeatureSpecFleetobservabilityArrayInput `pulumi:"fleetobservabilities"` + // Multicluster Ingress-specific spec. + Multiclusteringresses GetFeatureSpecMulticlusteringressArrayInput `pulumi:"multiclusteringresses"` +} + +func (GetFeatureSpecArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureSpec)(nil)).Elem() +} + +func (i GetFeatureSpecArgs) ToGetFeatureSpecOutput() GetFeatureSpecOutput { + return i.ToGetFeatureSpecOutputWithContext(context.Background()) +} + +func (i GetFeatureSpecArgs) ToGetFeatureSpecOutputWithContext(ctx context.Context) GetFeatureSpecOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureSpecOutput) +} + +// GetFeatureSpecArrayInput is an input type that accepts GetFeatureSpecArray and GetFeatureSpecArrayOutput values. +// You can construct a concrete instance of `GetFeatureSpecArrayInput` via: +// +// GetFeatureSpecArray{ GetFeatureSpecArgs{...} } +type GetFeatureSpecArrayInput interface { + pulumi.Input + + ToGetFeatureSpecArrayOutput() GetFeatureSpecArrayOutput + ToGetFeatureSpecArrayOutputWithContext(context.Context) GetFeatureSpecArrayOutput +} + +type GetFeatureSpecArray []GetFeatureSpecInput + +func (GetFeatureSpecArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureSpec)(nil)).Elem() +} + +func (i GetFeatureSpecArray) ToGetFeatureSpecArrayOutput() GetFeatureSpecArrayOutput { + return i.ToGetFeatureSpecArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureSpecArray) ToGetFeatureSpecArrayOutputWithContext(ctx context.Context) GetFeatureSpecArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureSpecArrayOutput) +} + +type GetFeatureSpecOutput struct{ *pulumi.OutputState } + +func (GetFeatureSpecOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureSpec)(nil)).Elem() +} + +func (o GetFeatureSpecOutput) ToGetFeatureSpecOutput() GetFeatureSpecOutput { + return o +} + +func (o GetFeatureSpecOutput) ToGetFeatureSpecOutputWithContext(ctx context.Context) GetFeatureSpecOutput { + return o +} + +// Clusterupgrade feature spec. +func (o GetFeatureSpecOutput) Clusterupgrades() GetFeatureSpecClusterupgradeArrayOutput { + return o.ApplyT(func(v GetFeatureSpec) []GetFeatureSpecClusterupgrade { return v.Clusterupgrades }).(GetFeatureSpecClusterupgradeArrayOutput) +} + +// Fleet Observability feature spec. +func (o GetFeatureSpecOutput) Fleetobservabilities() GetFeatureSpecFleetobservabilityArrayOutput { + return o.ApplyT(func(v GetFeatureSpec) []GetFeatureSpecFleetobservability { return v.Fleetobservabilities }).(GetFeatureSpecFleetobservabilityArrayOutput) +} + +// Multicluster Ingress-specific spec. +func (o GetFeatureSpecOutput) Multiclusteringresses() GetFeatureSpecMulticlusteringressArrayOutput { + return o.ApplyT(func(v GetFeatureSpec) []GetFeatureSpecMulticlusteringress { return v.Multiclusteringresses }).(GetFeatureSpecMulticlusteringressArrayOutput) +} + +type GetFeatureSpecArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureSpecArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureSpec)(nil)).Elem() +} + +func (o GetFeatureSpecArrayOutput) ToGetFeatureSpecArrayOutput() GetFeatureSpecArrayOutput { + return o +} + +func (o GetFeatureSpecArrayOutput) ToGetFeatureSpecArrayOutputWithContext(ctx context.Context) GetFeatureSpecArrayOutput { + return o +} + +func (o GetFeatureSpecArrayOutput) Index(i pulumi.IntInput) GetFeatureSpecOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureSpec { + return vs[0].([]GetFeatureSpec)[vs[1].(int)] + }).(GetFeatureSpecOutput) +} + +type GetFeatureSpecClusterupgrade struct { + // Configuration overrides for individual upgrades. + GkeUpgradeOverrides []GetFeatureSpecClusterupgradeGkeUpgradeOverride `pulumi:"gkeUpgradeOverrides"` + // Post conditions to override for the specified upgrade. + PostConditions []GetFeatureSpecClusterupgradePostCondition `pulumi:"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. + UpstreamFleets []string `pulumi:"upstreamFleets"` +} + +// GetFeatureSpecClusterupgradeInput is an input type that accepts GetFeatureSpecClusterupgradeArgs and GetFeatureSpecClusterupgradeOutput values. +// You can construct a concrete instance of `GetFeatureSpecClusterupgradeInput` via: +// +// GetFeatureSpecClusterupgradeArgs{...} +type GetFeatureSpecClusterupgradeInput interface { + pulumi.Input + + ToGetFeatureSpecClusterupgradeOutput() GetFeatureSpecClusterupgradeOutput + ToGetFeatureSpecClusterupgradeOutputWithContext(context.Context) GetFeatureSpecClusterupgradeOutput +} + +type GetFeatureSpecClusterupgradeArgs struct { + // Configuration overrides for individual upgrades. + GkeUpgradeOverrides GetFeatureSpecClusterupgradeGkeUpgradeOverrideArrayInput `pulumi:"gkeUpgradeOverrides"` + // Post conditions to override for the specified upgrade. + PostConditions GetFeatureSpecClusterupgradePostConditionArrayInput `pulumi:"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. + UpstreamFleets pulumi.StringArrayInput `pulumi:"upstreamFleets"` +} + +func (GetFeatureSpecClusterupgradeArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureSpecClusterupgrade)(nil)).Elem() +} + +func (i GetFeatureSpecClusterupgradeArgs) ToGetFeatureSpecClusterupgradeOutput() GetFeatureSpecClusterupgradeOutput { + return i.ToGetFeatureSpecClusterupgradeOutputWithContext(context.Background()) +} + +func (i GetFeatureSpecClusterupgradeArgs) ToGetFeatureSpecClusterupgradeOutputWithContext(ctx context.Context) GetFeatureSpecClusterupgradeOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureSpecClusterupgradeOutput) +} + +// GetFeatureSpecClusterupgradeArrayInput is an input type that accepts GetFeatureSpecClusterupgradeArray and GetFeatureSpecClusterupgradeArrayOutput values. +// You can construct a concrete instance of `GetFeatureSpecClusterupgradeArrayInput` via: +// +// GetFeatureSpecClusterupgradeArray{ GetFeatureSpecClusterupgradeArgs{...} } +type GetFeatureSpecClusterupgradeArrayInput interface { + pulumi.Input + + ToGetFeatureSpecClusterupgradeArrayOutput() GetFeatureSpecClusterupgradeArrayOutput + ToGetFeatureSpecClusterupgradeArrayOutputWithContext(context.Context) GetFeatureSpecClusterupgradeArrayOutput +} + +type GetFeatureSpecClusterupgradeArray []GetFeatureSpecClusterupgradeInput + +func (GetFeatureSpecClusterupgradeArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureSpecClusterupgrade)(nil)).Elem() +} + +func (i GetFeatureSpecClusterupgradeArray) ToGetFeatureSpecClusterupgradeArrayOutput() GetFeatureSpecClusterupgradeArrayOutput { + return i.ToGetFeatureSpecClusterupgradeArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureSpecClusterupgradeArray) ToGetFeatureSpecClusterupgradeArrayOutputWithContext(ctx context.Context) GetFeatureSpecClusterupgradeArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureSpecClusterupgradeArrayOutput) +} + +type GetFeatureSpecClusterupgradeOutput struct{ *pulumi.OutputState } + +func (GetFeatureSpecClusterupgradeOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureSpecClusterupgrade)(nil)).Elem() +} + +func (o GetFeatureSpecClusterupgradeOutput) ToGetFeatureSpecClusterupgradeOutput() GetFeatureSpecClusterupgradeOutput { + return o +} + +func (o GetFeatureSpecClusterupgradeOutput) ToGetFeatureSpecClusterupgradeOutputWithContext(ctx context.Context) GetFeatureSpecClusterupgradeOutput { + return o +} + +// Configuration overrides for individual upgrades. +func (o GetFeatureSpecClusterupgradeOutput) GkeUpgradeOverrides() GetFeatureSpecClusterupgradeGkeUpgradeOverrideArrayOutput { + return o.ApplyT(func(v GetFeatureSpecClusterupgrade) []GetFeatureSpecClusterupgradeGkeUpgradeOverride { + return v.GkeUpgradeOverrides + }).(GetFeatureSpecClusterupgradeGkeUpgradeOverrideArrayOutput) +} + +// Post conditions to override for the specified upgrade. +func (o GetFeatureSpecClusterupgradeOutput) PostConditions() GetFeatureSpecClusterupgradePostConditionArrayOutput { + return o.ApplyT(func(v GetFeatureSpecClusterupgrade) []GetFeatureSpecClusterupgradePostCondition { + return v.PostConditions + }).(GetFeatureSpecClusterupgradePostConditionArrayOutput) +} + +// 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. +func (o GetFeatureSpecClusterupgradeOutput) UpstreamFleets() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetFeatureSpecClusterupgrade) []string { return v.UpstreamFleets }).(pulumi.StringArrayOutput) +} + +type GetFeatureSpecClusterupgradeArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureSpecClusterupgradeArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureSpecClusterupgrade)(nil)).Elem() +} + +func (o GetFeatureSpecClusterupgradeArrayOutput) ToGetFeatureSpecClusterupgradeArrayOutput() GetFeatureSpecClusterupgradeArrayOutput { + return o +} + +func (o GetFeatureSpecClusterupgradeArrayOutput) ToGetFeatureSpecClusterupgradeArrayOutputWithContext(ctx context.Context) GetFeatureSpecClusterupgradeArrayOutput { + return o +} + +func (o GetFeatureSpecClusterupgradeArrayOutput) Index(i pulumi.IntInput) GetFeatureSpecClusterupgradeOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureSpecClusterupgrade { + return vs[0].([]GetFeatureSpecClusterupgrade)[vs[1].(int)] + }).(GetFeatureSpecClusterupgradeOutput) +} + +type GetFeatureSpecClusterupgradeGkeUpgradeOverride struct { + // Post conditions to override for the specified upgrade. + PostConditions []GetFeatureSpecClusterupgradeGkeUpgradeOverridePostCondition `pulumi:"postConditions"` + // Which upgrade to override. + Upgrades []GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade `pulumi:"upgrades"` +} + +// GetFeatureSpecClusterupgradeGkeUpgradeOverrideInput is an input type that accepts GetFeatureSpecClusterupgradeGkeUpgradeOverrideArgs and GetFeatureSpecClusterupgradeGkeUpgradeOverrideOutput values. +// You can construct a concrete instance of `GetFeatureSpecClusterupgradeGkeUpgradeOverrideInput` via: +// +// GetFeatureSpecClusterupgradeGkeUpgradeOverrideArgs{...} +type GetFeatureSpecClusterupgradeGkeUpgradeOverrideInput interface { + pulumi.Input + + ToGetFeatureSpecClusterupgradeGkeUpgradeOverrideOutput() GetFeatureSpecClusterupgradeGkeUpgradeOverrideOutput + ToGetFeatureSpecClusterupgradeGkeUpgradeOverrideOutputWithContext(context.Context) GetFeatureSpecClusterupgradeGkeUpgradeOverrideOutput +} + +type GetFeatureSpecClusterupgradeGkeUpgradeOverrideArgs struct { + // Post conditions to override for the specified upgrade. + PostConditions GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArrayInput `pulumi:"postConditions"` + // Which upgrade to override. + Upgrades GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArrayInput `pulumi:"upgrades"` +} + +func (GetFeatureSpecClusterupgradeGkeUpgradeOverrideArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureSpecClusterupgradeGkeUpgradeOverride)(nil)).Elem() +} + +func (i GetFeatureSpecClusterupgradeGkeUpgradeOverrideArgs) ToGetFeatureSpecClusterupgradeGkeUpgradeOverrideOutput() GetFeatureSpecClusterupgradeGkeUpgradeOverrideOutput { + return i.ToGetFeatureSpecClusterupgradeGkeUpgradeOverrideOutputWithContext(context.Background()) +} + +func (i GetFeatureSpecClusterupgradeGkeUpgradeOverrideArgs) ToGetFeatureSpecClusterupgradeGkeUpgradeOverrideOutputWithContext(ctx context.Context) GetFeatureSpecClusterupgradeGkeUpgradeOverrideOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureSpecClusterupgradeGkeUpgradeOverrideOutput) +} + +// GetFeatureSpecClusterupgradeGkeUpgradeOverrideArrayInput is an input type that accepts GetFeatureSpecClusterupgradeGkeUpgradeOverrideArray and GetFeatureSpecClusterupgradeGkeUpgradeOverrideArrayOutput values. +// You can construct a concrete instance of `GetFeatureSpecClusterupgradeGkeUpgradeOverrideArrayInput` via: +// +// GetFeatureSpecClusterupgradeGkeUpgradeOverrideArray{ GetFeatureSpecClusterupgradeGkeUpgradeOverrideArgs{...} } +type GetFeatureSpecClusterupgradeGkeUpgradeOverrideArrayInput interface { + pulumi.Input + + ToGetFeatureSpecClusterupgradeGkeUpgradeOverrideArrayOutput() GetFeatureSpecClusterupgradeGkeUpgradeOverrideArrayOutput + ToGetFeatureSpecClusterupgradeGkeUpgradeOverrideArrayOutputWithContext(context.Context) GetFeatureSpecClusterupgradeGkeUpgradeOverrideArrayOutput +} + +type GetFeatureSpecClusterupgradeGkeUpgradeOverrideArray []GetFeatureSpecClusterupgradeGkeUpgradeOverrideInput + +func (GetFeatureSpecClusterupgradeGkeUpgradeOverrideArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureSpecClusterupgradeGkeUpgradeOverride)(nil)).Elem() +} + +func (i GetFeatureSpecClusterupgradeGkeUpgradeOverrideArray) ToGetFeatureSpecClusterupgradeGkeUpgradeOverrideArrayOutput() GetFeatureSpecClusterupgradeGkeUpgradeOverrideArrayOutput { + return i.ToGetFeatureSpecClusterupgradeGkeUpgradeOverrideArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureSpecClusterupgradeGkeUpgradeOverrideArray) ToGetFeatureSpecClusterupgradeGkeUpgradeOverrideArrayOutputWithContext(ctx context.Context) GetFeatureSpecClusterupgradeGkeUpgradeOverrideArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureSpecClusterupgradeGkeUpgradeOverrideArrayOutput) +} + +type GetFeatureSpecClusterupgradeGkeUpgradeOverrideOutput struct{ *pulumi.OutputState } + +func (GetFeatureSpecClusterupgradeGkeUpgradeOverrideOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureSpecClusterupgradeGkeUpgradeOverride)(nil)).Elem() +} + +func (o GetFeatureSpecClusterupgradeGkeUpgradeOverrideOutput) ToGetFeatureSpecClusterupgradeGkeUpgradeOverrideOutput() GetFeatureSpecClusterupgradeGkeUpgradeOverrideOutput { + return o +} + +func (o GetFeatureSpecClusterupgradeGkeUpgradeOverrideOutput) ToGetFeatureSpecClusterupgradeGkeUpgradeOverrideOutputWithContext(ctx context.Context) GetFeatureSpecClusterupgradeGkeUpgradeOverrideOutput { + return o +} + +// Post conditions to override for the specified upgrade. +func (o GetFeatureSpecClusterupgradeGkeUpgradeOverrideOutput) PostConditions() GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArrayOutput { + return o.ApplyT(func(v GetFeatureSpecClusterupgradeGkeUpgradeOverride) []GetFeatureSpecClusterupgradeGkeUpgradeOverridePostCondition { + return v.PostConditions + }).(GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArrayOutput) +} + +// Which upgrade to override. +func (o GetFeatureSpecClusterupgradeGkeUpgradeOverrideOutput) Upgrades() GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArrayOutput { + return o.ApplyT(func(v GetFeatureSpecClusterupgradeGkeUpgradeOverride) []GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade { + return v.Upgrades + }).(GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArrayOutput) +} + +type GetFeatureSpecClusterupgradeGkeUpgradeOverrideArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureSpecClusterupgradeGkeUpgradeOverrideArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureSpecClusterupgradeGkeUpgradeOverride)(nil)).Elem() +} + +func (o GetFeatureSpecClusterupgradeGkeUpgradeOverrideArrayOutput) ToGetFeatureSpecClusterupgradeGkeUpgradeOverrideArrayOutput() GetFeatureSpecClusterupgradeGkeUpgradeOverrideArrayOutput { + return o +} + +func (o GetFeatureSpecClusterupgradeGkeUpgradeOverrideArrayOutput) ToGetFeatureSpecClusterupgradeGkeUpgradeOverrideArrayOutputWithContext(ctx context.Context) GetFeatureSpecClusterupgradeGkeUpgradeOverrideArrayOutput { + return o +} + +func (o GetFeatureSpecClusterupgradeGkeUpgradeOverrideArrayOutput) Index(i pulumi.IntInput) GetFeatureSpecClusterupgradeGkeUpgradeOverrideOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureSpecClusterupgradeGkeUpgradeOverride { + return vs[0].([]GetFeatureSpecClusterupgradeGkeUpgradeOverride)[vs[1].(int)] + }).(GetFeatureSpecClusterupgradeGkeUpgradeOverrideOutput) +} + +type GetFeatureSpecClusterupgradeGkeUpgradeOverridePostCondition struct { + // Amount of time to "soak" after a rollout has been finished before marking it COMPLETE. Cannot exceed 30 days. + Soaking string `pulumi:"soaking"` +} + +// GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionInput is an input type that accepts GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArgs and GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionOutput values. +// You can construct a concrete instance of `GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionInput` via: +// +// GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArgs{...} +type GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionInput interface { + pulumi.Input + + ToGetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionOutput() GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionOutput + ToGetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionOutputWithContext(context.Context) GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionOutput +} + +type GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArgs struct { + // Amount of time to "soak" after a rollout has been finished before marking it COMPLETE. Cannot exceed 30 days. + Soaking pulumi.StringInput `pulumi:"soaking"` +} + +func (GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureSpecClusterupgradeGkeUpgradeOverridePostCondition)(nil)).Elem() +} + +func (i GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArgs) ToGetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionOutput() GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionOutput { + return i.ToGetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionOutputWithContext(context.Background()) +} + +func (i GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArgs) ToGetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionOutputWithContext(ctx context.Context) GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionOutput) +} + +// GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArrayInput is an input type that accepts GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArray and GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArrayOutput values. +// You can construct a concrete instance of `GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArrayInput` via: +// +// GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArray{ GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArgs{...} } +type GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArrayInput interface { + pulumi.Input + + ToGetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArrayOutput() GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArrayOutput + ToGetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArrayOutputWithContext(context.Context) GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArrayOutput +} + +type GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArray []GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionInput + +func (GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureSpecClusterupgradeGkeUpgradeOverridePostCondition)(nil)).Elem() +} + +func (i GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArray) ToGetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArrayOutput() GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArrayOutput { + return i.ToGetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArray) ToGetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArrayOutputWithContext(ctx context.Context) GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArrayOutput) +} + +type GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionOutput struct{ *pulumi.OutputState } + +func (GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureSpecClusterupgradeGkeUpgradeOverridePostCondition)(nil)).Elem() +} + +func (o GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionOutput) ToGetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionOutput() GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionOutput { + return o +} + +func (o GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionOutput) ToGetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionOutputWithContext(ctx context.Context) GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionOutput { + return o +} + +// Amount of time to "soak" after a rollout has been finished before marking it COMPLETE. Cannot exceed 30 days. +func (o GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionOutput) Soaking() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureSpecClusterupgradeGkeUpgradeOverridePostCondition) string { return v.Soaking }).(pulumi.StringOutput) +} + +type GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureSpecClusterupgradeGkeUpgradeOverridePostCondition)(nil)).Elem() +} + +func (o GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArrayOutput) ToGetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArrayOutput() GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArrayOutput { + return o +} + +func (o GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArrayOutput) ToGetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArrayOutputWithContext(ctx context.Context) GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArrayOutput { + return o +} + +func (o GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArrayOutput) Index(i pulumi.IntInput) GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureSpecClusterupgradeGkeUpgradeOverridePostCondition { + return vs[0].([]GetFeatureSpecClusterupgradeGkeUpgradeOverridePostCondition)[vs[1].(int)] + }).(GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionOutput) +} + +type GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade struct { + // Name of the upgrade, e.g., "k8sControlPlane". It should be a valid upgrade name. It must not exceet 99 characters. + Name string `pulumi:"name"` + // Version of the upgrade, e.g., "1.22.1-gke.100". It should be a valid version. It must not exceet 99 characters. + Version string `pulumi:"version"` +} + +// GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeInput is an input type that accepts GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArgs and GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeOutput values. +// You can construct a concrete instance of `GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeInput` via: +// +// GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArgs{...} +type GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeInput interface { + pulumi.Input + + ToGetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeOutput() GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeOutput + ToGetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeOutputWithContext(context.Context) GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeOutput +} + +type GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArgs struct { + // Name of the upgrade, e.g., "k8sControlPlane". It should be a valid upgrade name. It must not exceet 99 characters. + Name pulumi.StringInput `pulumi:"name"` + // Version of the upgrade, e.g., "1.22.1-gke.100". It should be a valid version. It must not exceet 99 characters. + Version pulumi.StringInput `pulumi:"version"` +} + +func (GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade)(nil)).Elem() +} + +func (i GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArgs) ToGetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeOutput() GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeOutput { + return i.ToGetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeOutputWithContext(context.Background()) +} + +func (i GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArgs) ToGetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeOutputWithContext(ctx context.Context) GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeOutput) +} + +// GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArrayInput is an input type that accepts GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArray and GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArrayOutput values. +// You can construct a concrete instance of `GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArrayInput` via: +// +// GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArray{ GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArgs{...} } +type GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArrayInput interface { + pulumi.Input + + ToGetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArrayOutput() GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArrayOutput + ToGetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArrayOutputWithContext(context.Context) GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArrayOutput +} + +type GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArray []GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeInput + +func (GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade)(nil)).Elem() +} + +func (i GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArray) ToGetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArrayOutput() GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArrayOutput { + return i.ToGetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArray) ToGetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArrayOutputWithContext(ctx context.Context) GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArrayOutput) +} + +type GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeOutput struct{ *pulumi.OutputState } + +func (GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade)(nil)).Elem() +} + +func (o GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeOutput) ToGetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeOutput() GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeOutput { + return o +} + +func (o GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeOutput) ToGetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeOutputWithContext(ctx context.Context) GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeOutput { + return o +} + +// Name of the upgrade, e.g., "k8sControlPlane". It should be a valid upgrade name. It must not exceet 99 characters. +func (o GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade) string { return v.Name }).(pulumi.StringOutput) +} + +// Version of the upgrade, e.g., "1.22.1-gke.100". It should be a valid version. It must not exceet 99 characters. +func (o GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeOutput) Version() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade) string { return v.Version }).(pulumi.StringOutput) +} + +type GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade)(nil)).Elem() +} + +func (o GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArrayOutput) ToGetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArrayOutput() GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArrayOutput { + return o +} + +func (o GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArrayOutput) ToGetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArrayOutputWithContext(ctx context.Context) GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArrayOutput { + return o +} + +func (o GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArrayOutput) Index(i pulumi.IntInput) GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade { + return vs[0].([]GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade)[vs[1].(int)] + }).(GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeOutput) +} + +type GetFeatureSpecClusterupgradePostCondition struct { + // Amount of time to "soak" after a rollout has been finished before marking it COMPLETE. Cannot exceed 30 days. + Soaking string `pulumi:"soaking"` +} + +// GetFeatureSpecClusterupgradePostConditionInput is an input type that accepts GetFeatureSpecClusterupgradePostConditionArgs and GetFeatureSpecClusterupgradePostConditionOutput values. +// You can construct a concrete instance of `GetFeatureSpecClusterupgradePostConditionInput` via: +// +// GetFeatureSpecClusterupgradePostConditionArgs{...} +type GetFeatureSpecClusterupgradePostConditionInput interface { + pulumi.Input + + ToGetFeatureSpecClusterupgradePostConditionOutput() GetFeatureSpecClusterupgradePostConditionOutput + ToGetFeatureSpecClusterupgradePostConditionOutputWithContext(context.Context) GetFeatureSpecClusterupgradePostConditionOutput +} + +type GetFeatureSpecClusterupgradePostConditionArgs struct { + // Amount of time to "soak" after a rollout has been finished before marking it COMPLETE. Cannot exceed 30 days. + Soaking pulumi.StringInput `pulumi:"soaking"` +} + +func (GetFeatureSpecClusterupgradePostConditionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureSpecClusterupgradePostCondition)(nil)).Elem() +} + +func (i GetFeatureSpecClusterupgradePostConditionArgs) ToGetFeatureSpecClusterupgradePostConditionOutput() GetFeatureSpecClusterupgradePostConditionOutput { + return i.ToGetFeatureSpecClusterupgradePostConditionOutputWithContext(context.Background()) +} + +func (i GetFeatureSpecClusterupgradePostConditionArgs) ToGetFeatureSpecClusterupgradePostConditionOutputWithContext(ctx context.Context) GetFeatureSpecClusterupgradePostConditionOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureSpecClusterupgradePostConditionOutput) +} + +// GetFeatureSpecClusterupgradePostConditionArrayInput is an input type that accepts GetFeatureSpecClusterupgradePostConditionArray and GetFeatureSpecClusterupgradePostConditionArrayOutput values. +// You can construct a concrete instance of `GetFeatureSpecClusterupgradePostConditionArrayInput` via: +// +// GetFeatureSpecClusterupgradePostConditionArray{ GetFeatureSpecClusterupgradePostConditionArgs{...} } +type GetFeatureSpecClusterupgradePostConditionArrayInput interface { + pulumi.Input + + ToGetFeatureSpecClusterupgradePostConditionArrayOutput() GetFeatureSpecClusterupgradePostConditionArrayOutput + ToGetFeatureSpecClusterupgradePostConditionArrayOutputWithContext(context.Context) GetFeatureSpecClusterupgradePostConditionArrayOutput +} + +type GetFeatureSpecClusterupgradePostConditionArray []GetFeatureSpecClusterupgradePostConditionInput + +func (GetFeatureSpecClusterupgradePostConditionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureSpecClusterupgradePostCondition)(nil)).Elem() +} + +func (i GetFeatureSpecClusterupgradePostConditionArray) ToGetFeatureSpecClusterupgradePostConditionArrayOutput() GetFeatureSpecClusterupgradePostConditionArrayOutput { + return i.ToGetFeatureSpecClusterupgradePostConditionArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureSpecClusterupgradePostConditionArray) ToGetFeatureSpecClusterupgradePostConditionArrayOutputWithContext(ctx context.Context) GetFeatureSpecClusterupgradePostConditionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureSpecClusterupgradePostConditionArrayOutput) +} + +type GetFeatureSpecClusterupgradePostConditionOutput struct{ *pulumi.OutputState } + +func (GetFeatureSpecClusterupgradePostConditionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureSpecClusterupgradePostCondition)(nil)).Elem() +} + +func (o GetFeatureSpecClusterupgradePostConditionOutput) ToGetFeatureSpecClusterupgradePostConditionOutput() GetFeatureSpecClusterupgradePostConditionOutput { + return o +} + +func (o GetFeatureSpecClusterupgradePostConditionOutput) ToGetFeatureSpecClusterupgradePostConditionOutputWithContext(ctx context.Context) GetFeatureSpecClusterupgradePostConditionOutput { + return o +} + +// Amount of time to "soak" after a rollout has been finished before marking it COMPLETE. Cannot exceed 30 days. +func (o GetFeatureSpecClusterupgradePostConditionOutput) Soaking() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureSpecClusterupgradePostCondition) string { return v.Soaking }).(pulumi.StringOutput) +} + +type GetFeatureSpecClusterupgradePostConditionArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureSpecClusterupgradePostConditionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureSpecClusterupgradePostCondition)(nil)).Elem() +} + +func (o GetFeatureSpecClusterupgradePostConditionArrayOutput) ToGetFeatureSpecClusterupgradePostConditionArrayOutput() GetFeatureSpecClusterupgradePostConditionArrayOutput { + return o +} + +func (o GetFeatureSpecClusterupgradePostConditionArrayOutput) ToGetFeatureSpecClusterupgradePostConditionArrayOutputWithContext(ctx context.Context) GetFeatureSpecClusterupgradePostConditionArrayOutput { + return o +} + +func (o GetFeatureSpecClusterupgradePostConditionArrayOutput) Index(i pulumi.IntInput) GetFeatureSpecClusterupgradePostConditionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureSpecClusterupgradePostCondition { + return vs[0].([]GetFeatureSpecClusterupgradePostCondition)[vs[1].(int)] + }).(GetFeatureSpecClusterupgradePostConditionOutput) +} + +type GetFeatureSpecFleetobservability struct { + // Specified if fleet logging feature is enabled for the entire fleet. If UNSPECIFIED, fleet logging feature is disabled for the entire fleet. + LoggingConfigs []GetFeatureSpecFleetobservabilityLoggingConfig `pulumi:"loggingConfigs"` +} + +// GetFeatureSpecFleetobservabilityInput is an input type that accepts GetFeatureSpecFleetobservabilityArgs and GetFeatureSpecFleetobservabilityOutput values. +// You can construct a concrete instance of `GetFeatureSpecFleetobservabilityInput` via: +// +// GetFeatureSpecFleetobservabilityArgs{...} +type GetFeatureSpecFleetobservabilityInput interface { + pulumi.Input + + ToGetFeatureSpecFleetobservabilityOutput() GetFeatureSpecFleetobservabilityOutput + ToGetFeatureSpecFleetobservabilityOutputWithContext(context.Context) GetFeatureSpecFleetobservabilityOutput +} + +type GetFeatureSpecFleetobservabilityArgs struct { + // Specified if fleet logging feature is enabled for the entire fleet. If UNSPECIFIED, fleet logging feature is disabled for the entire fleet. + LoggingConfigs GetFeatureSpecFleetobservabilityLoggingConfigArrayInput `pulumi:"loggingConfigs"` +} + +func (GetFeatureSpecFleetobservabilityArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureSpecFleetobservability)(nil)).Elem() +} + +func (i GetFeatureSpecFleetobservabilityArgs) ToGetFeatureSpecFleetobservabilityOutput() GetFeatureSpecFleetobservabilityOutput { + return i.ToGetFeatureSpecFleetobservabilityOutputWithContext(context.Background()) +} + +func (i GetFeatureSpecFleetobservabilityArgs) ToGetFeatureSpecFleetobservabilityOutputWithContext(ctx context.Context) GetFeatureSpecFleetobservabilityOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureSpecFleetobservabilityOutput) +} + +// GetFeatureSpecFleetobservabilityArrayInput is an input type that accepts GetFeatureSpecFleetobservabilityArray and GetFeatureSpecFleetobservabilityArrayOutput values. +// You can construct a concrete instance of `GetFeatureSpecFleetobservabilityArrayInput` via: +// +// GetFeatureSpecFleetobservabilityArray{ GetFeatureSpecFleetobservabilityArgs{...} } +type GetFeatureSpecFleetobservabilityArrayInput interface { + pulumi.Input + + ToGetFeatureSpecFleetobservabilityArrayOutput() GetFeatureSpecFleetobservabilityArrayOutput + ToGetFeatureSpecFleetobservabilityArrayOutputWithContext(context.Context) GetFeatureSpecFleetobservabilityArrayOutput +} + +type GetFeatureSpecFleetobservabilityArray []GetFeatureSpecFleetobservabilityInput + +func (GetFeatureSpecFleetobservabilityArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureSpecFleetobservability)(nil)).Elem() +} + +func (i GetFeatureSpecFleetobservabilityArray) ToGetFeatureSpecFleetobservabilityArrayOutput() GetFeatureSpecFleetobservabilityArrayOutput { + return i.ToGetFeatureSpecFleetobservabilityArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureSpecFleetobservabilityArray) ToGetFeatureSpecFleetobservabilityArrayOutputWithContext(ctx context.Context) GetFeatureSpecFleetobservabilityArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureSpecFleetobservabilityArrayOutput) +} + +type GetFeatureSpecFleetobservabilityOutput struct{ *pulumi.OutputState } + +func (GetFeatureSpecFleetobservabilityOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureSpecFleetobservability)(nil)).Elem() +} + +func (o GetFeatureSpecFleetobservabilityOutput) ToGetFeatureSpecFleetobservabilityOutput() GetFeatureSpecFleetobservabilityOutput { + return o +} + +func (o GetFeatureSpecFleetobservabilityOutput) ToGetFeatureSpecFleetobservabilityOutputWithContext(ctx context.Context) GetFeatureSpecFleetobservabilityOutput { + return o +} + +// Specified if fleet logging feature is enabled for the entire fleet. If UNSPECIFIED, fleet logging feature is disabled for the entire fleet. +func (o GetFeatureSpecFleetobservabilityOutput) LoggingConfigs() GetFeatureSpecFleetobservabilityLoggingConfigArrayOutput { + return o.ApplyT(func(v GetFeatureSpecFleetobservability) []GetFeatureSpecFleetobservabilityLoggingConfig { + return v.LoggingConfigs + }).(GetFeatureSpecFleetobservabilityLoggingConfigArrayOutput) +} + +type GetFeatureSpecFleetobservabilityArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureSpecFleetobservabilityArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureSpecFleetobservability)(nil)).Elem() +} + +func (o GetFeatureSpecFleetobservabilityArrayOutput) ToGetFeatureSpecFleetobservabilityArrayOutput() GetFeatureSpecFleetobservabilityArrayOutput { + return o +} + +func (o GetFeatureSpecFleetobservabilityArrayOutput) ToGetFeatureSpecFleetobservabilityArrayOutputWithContext(ctx context.Context) GetFeatureSpecFleetobservabilityArrayOutput { + return o +} + +func (o GetFeatureSpecFleetobservabilityArrayOutput) Index(i pulumi.IntInput) GetFeatureSpecFleetobservabilityOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureSpecFleetobservability { + return vs[0].([]GetFeatureSpecFleetobservability)[vs[1].(int)] + }).(GetFeatureSpecFleetobservabilityOutput) +} + +type GetFeatureSpecFleetobservabilityLoggingConfig struct { + // Specified if applying the default routing config to logs not specified in other configs. + DefaultConfigs []GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfig `pulumi:"defaultConfigs"` + // Specified if applying the routing config to all logs for all fleet scopes. + FleetScopeLogsConfigs []GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfig `pulumi:"fleetScopeLogsConfigs"` +} + +// GetFeatureSpecFleetobservabilityLoggingConfigInput is an input type that accepts GetFeatureSpecFleetobservabilityLoggingConfigArgs and GetFeatureSpecFleetobservabilityLoggingConfigOutput values. +// You can construct a concrete instance of `GetFeatureSpecFleetobservabilityLoggingConfigInput` via: +// +// GetFeatureSpecFleetobservabilityLoggingConfigArgs{...} +type GetFeatureSpecFleetobservabilityLoggingConfigInput interface { + pulumi.Input + + ToGetFeatureSpecFleetobservabilityLoggingConfigOutput() GetFeatureSpecFleetobservabilityLoggingConfigOutput + ToGetFeatureSpecFleetobservabilityLoggingConfigOutputWithContext(context.Context) GetFeatureSpecFleetobservabilityLoggingConfigOutput +} + +type GetFeatureSpecFleetobservabilityLoggingConfigArgs struct { + // Specified if applying the default routing config to logs not specified in other configs. + DefaultConfigs GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArrayInput `pulumi:"defaultConfigs"` + // Specified if applying the routing config to all logs for all fleet scopes. + FleetScopeLogsConfigs GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArrayInput `pulumi:"fleetScopeLogsConfigs"` +} + +func (GetFeatureSpecFleetobservabilityLoggingConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureSpecFleetobservabilityLoggingConfig)(nil)).Elem() +} + +func (i GetFeatureSpecFleetobservabilityLoggingConfigArgs) ToGetFeatureSpecFleetobservabilityLoggingConfigOutput() GetFeatureSpecFleetobservabilityLoggingConfigOutput { + return i.ToGetFeatureSpecFleetobservabilityLoggingConfigOutputWithContext(context.Background()) +} + +func (i GetFeatureSpecFleetobservabilityLoggingConfigArgs) ToGetFeatureSpecFleetobservabilityLoggingConfigOutputWithContext(ctx context.Context) GetFeatureSpecFleetobservabilityLoggingConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureSpecFleetobservabilityLoggingConfigOutput) +} + +// GetFeatureSpecFleetobservabilityLoggingConfigArrayInput is an input type that accepts GetFeatureSpecFleetobservabilityLoggingConfigArray and GetFeatureSpecFleetobservabilityLoggingConfigArrayOutput values. +// You can construct a concrete instance of `GetFeatureSpecFleetobservabilityLoggingConfigArrayInput` via: +// +// GetFeatureSpecFleetobservabilityLoggingConfigArray{ GetFeatureSpecFleetobservabilityLoggingConfigArgs{...} } +type GetFeatureSpecFleetobservabilityLoggingConfigArrayInput interface { + pulumi.Input + + ToGetFeatureSpecFleetobservabilityLoggingConfigArrayOutput() GetFeatureSpecFleetobservabilityLoggingConfigArrayOutput + ToGetFeatureSpecFleetobservabilityLoggingConfigArrayOutputWithContext(context.Context) GetFeatureSpecFleetobservabilityLoggingConfigArrayOutput +} + +type GetFeatureSpecFleetobservabilityLoggingConfigArray []GetFeatureSpecFleetobservabilityLoggingConfigInput + +func (GetFeatureSpecFleetobservabilityLoggingConfigArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureSpecFleetobservabilityLoggingConfig)(nil)).Elem() +} + +func (i GetFeatureSpecFleetobservabilityLoggingConfigArray) ToGetFeatureSpecFleetobservabilityLoggingConfigArrayOutput() GetFeatureSpecFleetobservabilityLoggingConfigArrayOutput { + return i.ToGetFeatureSpecFleetobservabilityLoggingConfigArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureSpecFleetobservabilityLoggingConfigArray) ToGetFeatureSpecFleetobservabilityLoggingConfigArrayOutputWithContext(ctx context.Context) GetFeatureSpecFleetobservabilityLoggingConfigArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureSpecFleetobservabilityLoggingConfigArrayOutput) +} + +type GetFeatureSpecFleetobservabilityLoggingConfigOutput struct{ *pulumi.OutputState } + +func (GetFeatureSpecFleetobservabilityLoggingConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureSpecFleetobservabilityLoggingConfig)(nil)).Elem() +} + +func (o GetFeatureSpecFleetobservabilityLoggingConfigOutput) ToGetFeatureSpecFleetobservabilityLoggingConfigOutput() GetFeatureSpecFleetobservabilityLoggingConfigOutput { + return o +} + +func (o GetFeatureSpecFleetobservabilityLoggingConfigOutput) ToGetFeatureSpecFleetobservabilityLoggingConfigOutputWithContext(ctx context.Context) GetFeatureSpecFleetobservabilityLoggingConfigOutput { + return o +} + +// Specified if applying the default routing config to logs not specified in other configs. +func (o GetFeatureSpecFleetobservabilityLoggingConfigOutput) DefaultConfigs() GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArrayOutput { + return o.ApplyT(func(v GetFeatureSpecFleetobservabilityLoggingConfig) []GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfig { + return v.DefaultConfigs + }).(GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArrayOutput) +} + +// Specified if applying the routing config to all logs for all fleet scopes. +func (o GetFeatureSpecFleetobservabilityLoggingConfigOutput) FleetScopeLogsConfigs() GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArrayOutput { + return o.ApplyT(func(v GetFeatureSpecFleetobservabilityLoggingConfig) []GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfig { + return v.FleetScopeLogsConfigs + }).(GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArrayOutput) +} + +type GetFeatureSpecFleetobservabilityLoggingConfigArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureSpecFleetobservabilityLoggingConfigArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureSpecFleetobservabilityLoggingConfig)(nil)).Elem() +} + +func (o GetFeatureSpecFleetobservabilityLoggingConfigArrayOutput) ToGetFeatureSpecFleetobservabilityLoggingConfigArrayOutput() GetFeatureSpecFleetobservabilityLoggingConfigArrayOutput { + return o +} + +func (o GetFeatureSpecFleetobservabilityLoggingConfigArrayOutput) ToGetFeatureSpecFleetobservabilityLoggingConfigArrayOutputWithContext(ctx context.Context) GetFeatureSpecFleetobservabilityLoggingConfigArrayOutput { + return o +} + +func (o GetFeatureSpecFleetobservabilityLoggingConfigArrayOutput) Index(i pulumi.IntInput) GetFeatureSpecFleetobservabilityLoggingConfigOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureSpecFleetobservabilityLoggingConfig { + return vs[0].([]GetFeatureSpecFleetobservabilityLoggingConfig)[vs[1].(int)] + }).(GetFeatureSpecFleetobservabilityLoggingConfigOutput) +} + +type GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfig struct { + // Specified if fleet logging feature is enabled. Possible values: ["MODE_UNSPECIFIED", "COPY", "MOVE"] + Mode string `pulumi:"mode"` +} + +// GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigInput is an input type that accepts GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs and GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigOutput values. +// You can construct a concrete instance of `GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigInput` via: +// +// GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs{...} +type GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigInput interface { + pulumi.Input + + ToGetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigOutput() GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigOutput + ToGetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigOutputWithContext(context.Context) GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigOutput +} + +type GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs struct { + // Specified if fleet logging feature is enabled. Possible values: ["MODE_UNSPECIFIED", "COPY", "MOVE"] + Mode pulumi.StringInput `pulumi:"mode"` +} + +func (GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfig)(nil)).Elem() +} + +func (i GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs) ToGetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigOutput() GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigOutput { + return i.ToGetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigOutputWithContext(context.Background()) +} + +func (i GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs) ToGetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigOutputWithContext(ctx context.Context) GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigOutput) +} + +// GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArrayInput is an input type that accepts GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArray and GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArrayOutput values. +// You can construct a concrete instance of `GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArrayInput` via: +// +// GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArray{ GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs{...} } +type GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArrayInput interface { + pulumi.Input + + ToGetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArrayOutput() GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArrayOutput + ToGetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArrayOutputWithContext(context.Context) GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArrayOutput +} + +type GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArray []GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigInput + +func (GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfig)(nil)).Elem() +} + +func (i GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArray) ToGetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArrayOutput() GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArrayOutput { + return i.ToGetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArray) ToGetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArrayOutputWithContext(ctx context.Context) GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArrayOutput) +} + +type GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigOutput struct{ *pulumi.OutputState } + +func (GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfig)(nil)).Elem() +} + +func (o GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigOutput) ToGetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigOutput() GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigOutput { + return o +} + +func (o GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigOutput) ToGetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigOutputWithContext(ctx context.Context) GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigOutput { + return o +} + +// Specified if fleet logging feature is enabled. Possible values: ["MODE_UNSPECIFIED", "COPY", "MOVE"] +func (o GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigOutput) Mode() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfig) string { return v.Mode }).(pulumi.StringOutput) +} + +type GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfig)(nil)).Elem() +} + +func (o GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArrayOutput) ToGetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArrayOutput() GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArrayOutput { + return o +} + +func (o GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArrayOutput) ToGetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArrayOutputWithContext(ctx context.Context) GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArrayOutput { + return o +} + +func (o GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArrayOutput) Index(i pulumi.IntInput) GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfig { + return vs[0].([]GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfig)[vs[1].(int)] + }).(GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigOutput) +} + +type GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfig struct { + // Specified if fleet logging feature is enabled. Possible values: ["MODE_UNSPECIFIED", "COPY", "MOVE"] + Mode string `pulumi:"mode"` +} + +// GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigInput is an input type that accepts GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs and GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigOutput values. +// You can construct a concrete instance of `GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigInput` via: +// +// GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs{...} +type GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigInput interface { + pulumi.Input + + ToGetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigOutput() GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigOutput + ToGetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigOutputWithContext(context.Context) GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigOutput +} + +type GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs struct { + // Specified if fleet logging feature is enabled. Possible values: ["MODE_UNSPECIFIED", "COPY", "MOVE"] + Mode pulumi.StringInput `pulumi:"mode"` +} + +func (GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfig)(nil)).Elem() +} + +func (i GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs) ToGetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigOutput() GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigOutput { + return i.ToGetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigOutputWithContext(context.Background()) +} + +func (i GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs) ToGetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigOutputWithContext(ctx context.Context) GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigOutput) +} + +// GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArrayInput is an input type that accepts GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArray and GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArrayOutput values. +// You can construct a concrete instance of `GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArrayInput` via: +// +// GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArray{ GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs{...} } +type GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArrayInput interface { + pulumi.Input + + ToGetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArrayOutput() GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArrayOutput + ToGetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArrayOutputWithContext(context.Context) GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArrayOutput +} + +type GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArray []GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigInput + +func (GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfig)(nil)).Elem() +} + +func (i GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArray) ToGetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArrayOutput() GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArrayOutput { + return i.ToGetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArray) ToGetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArrayOutputWithContext(ctx context.Context) GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArrayOutput) +} + +type GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigOutput struct{ *pulumi.OutputState } + +func (GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfig)(nil)).Elem() +} + +func (o GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigOutput) ToGetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigOutput() GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigOutput { + return o +} + +func (o GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigOutput) ToGetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigOutputWithContext(ctx context.Context) GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigOutput { + return o +} + +// Specified if fleet logging feature is enabled. Possible values: ["MODE_UNSPECIFIED", "COPY", "MOVE"] +func (o GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigOutput) Mode() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfig) string { return v.Mode }).(pulumi.StringOutput) +} + +type GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfig)(nil)).Elem() +} + +func (o GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArrayOutput) ToGetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArrayOutput() GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArrayOutput { + return o +} + +func (o GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArrayOutput) ToGetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArrayOutputWithContext(ctx context.Context) GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArrayOutput { + return o +} + +func (o GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArrayOutput) Index(i pulumi.IntInput) GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfig { + return vs[0].([]GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfig)[vs[1].(int)] + }).(GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigOutput) +} + +type GetFeatureSpecMulticlusteringress struct { + // Fully-qualified Membership name which hosts the MultiClusterIngress CRD. Example: 'projects/foo-proj/locations/global/memberships/bar' + ConfigMembership string `pulumi:"configMembership"` +} + +// GetFeatureSpecMulticlusteringressInput is an input type that accepts GetFeatureSpecMulticlusteringressArgs and GetFeatureSpecMulticlusteringressOutput values. +// You can construct a concrete instance of `GetFeatureSpecMulticlusteringressInput` via: +// +// GetFeatureSpecMulticlusteringressArgs{...} +type GetFeatureSpecMulticlusteringressInput interface { + pulumi.Input + + ToGetFeatureSpecMulticlusteringressOutput() GetFeatureSpecMulticlusteringressOutput + ToGetFeatureSpecMulticlusteringressOutputWithContext(context.Context) GetFeatureSpecMulticlusteringressOutput +} + +type GetFeatureSpecMulticlusteringressArgs struct { + // Fully-qualified Membership name which hosts the MultiClusterIngress CRD. Example: 'projects/foo-proj/locations/global/memberships/bar' + ConfigMembership pulumi.StringInput `pulumi:"configMembership"` +} + +func (GetFeatureSpecMulticlusteringressArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureSpecMulticlusteringress)(nil)).Elem() +} + +func (i GetFeatureSpecMulticlusteringressArgs) ToGetFeatureSpecMulticlusteringressOutput() GetFeatureSpecMulticlusteringressOutput { + return i.ToGetFeatureSpecMulticlusteringressOutputWithContext(context.Background()) +} + +func (i GetFeatureSpecMulticlusteringressArgs) ToGetFeatureSpecMulticlusteringressOutputWithContext(ctx context.Context) GetFeatureSpecMulticlusteringressOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureSpecMulticlusteringressOutput) +} + +// GetFeatureSpecMulticlusteringressArrayInput is an input type that accepts GetFeatureSpecMulticlusteringressArray and GetFeatureSpecMulticlusteringressArrayOutput values. +// You can construct a concrete instance of `GetFeatureSpecMulticlusteringressArrayInput` via: +// +// GetFeatureSpecMulticlusteringressArray{ GetFeatureSpecMulticlusteringressArgs{...} } +type GetFeatureSpecMulticlusteringressArrayInput interface { + pulumi.Input + + ToGetFeatureSpecMulticlusteringressArrayOutput() GetFeatureSpecMulticlusteringressArrayOutput + ToGetFeatureSpecMulticlusteringressArrayOutputWithContext(context.Context) GetFeatureSpecMulticlusteringressArrayOutput +} + +type GetFeatureSpecMulticlusteringressArray []GetFeatureSpecMulticlusteringressInput + +func (GetFeatureSpecMulticlusteringressArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureSpecMulticlusteringress)(nil)).Elem() +} + +func (i GetFeatureSpecMulticlusteringressArray) ToGetFeatureSpecMulticlusteringressArrayOutput() GetFeatureSpecMulticlusteringressArrayOutput { + return i.ToGetFeatureSpecMulticlusteringressArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureSpecMulticlusteringressArray) ToGetFeatureSpecMulticlusteringressArrayOutputWithContext(ctx context.Context) GetFeatureSpecMulticlusteringressArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureSpecMulticlusteringressArrayOutput) +} + +type GetFeatureSpecMulticlusteringressOutput struct{ *pulumi.OutputState } + +func (GetFeatureSpecMulticlusteringressOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureSpecMulticlusteringress)(nil)).Elem() +} + +func (o GetFeatureSpecMulticlusteringressOutput) ToGetFeatureSpecMulticlusteringressOutput() GetFeatureSpecMulticlusteringressOutput { + return o +} + +func (o GetFeatureSpecMulticlusteringressOutput) ToGetFeatureSpecMulticlusteringressOutputWithContext(ctx context.Context) GetFeatureSpecMulticlusteringressOutput { + return o +} + +// Fully-qualified Membership name which hosts the MultiClusterIngress CRD. Example: 'projects/foo-proj/locations/global/memberships/bar' +func (o GetFeatureSpecMulticlusteringressOutput) ConfigMembership() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureSpecMulticlusteringress) string { return v.ConfigMembership }).(pulumi.StringOutput) +} + +type GetFeatureSpecMulticlusteringressArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureSpecMulticlusteringressArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureSpecMulticlusteringress)(nil)).Elem() +} + +func (o GetFeatureSpecMulticlusteringressArrayOutput) ToGetFeatureSpecMulticlusteringressArrayOutput() GetFeatureSpecMulticlusteringressArrayOutput { + return o +} + +func (o GetFeatureSpecMulticlusteringressArrayOutput) ToGetFeatureSpecMulticlusteringressArrayOutputWithContext(ctx context.Context) GetFeatureSpecMulticlusteringressArrayOutput { + return o +} + +func (o GetFeatureSpecMulticlusteringressArrayOutput) Index(i pulumi.IntInput) GetFeatureSpecMulticlusteringressOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureSpecMulticlusteringress { + return vs[0].([]GetFeatureSpecMulticlusteringress)[vs[1].(int)] + }).(GetFeatureSpecMulticlusteringressOutput) +} + +type GetFeatureState struct { + // Output only. The "running state" of the Feature in this Hub. + States []GetFeatureStateState `pulumi:"states"` +} + +// GetFeatureStateInput is an input type that accepts GetFeatureStateArgs and GetFeatureStateOutput values. +// You can construct a concrete instance of `GetFeatureStateInput` via: +// +// GetFeatureStateArgs{...} +type GetFeatureStateInput interface { + pulumi.Input + + ToGetFeatureStateOutput() GetFeatureStateOutput + ToGetFeatureStateOutputWithContext(context.Context) GetFeatureStateOutput +} + +type GetFeatureStateArgs struct { + // Output only. The "running state" of the Feature in this Hub. + States GetFeatureStateStateArrayInput `pulumi:"states"` +} + +func (GetFeatureStateArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureState)(nil)).Elem() +} + +func (i GetFeatureStateArgs) ToGetFeatureStateOutput() GetFeatureStateOutput { + return i.ToGetFeatureStateOutputWithContext(context.Background()) +} + +func (i GetFeatureStateArgs) ToGetFeatureStateOutputWithContext(ctx context.Context) GetFeatureStateOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureStateOutput) +} + +// GetFeatureStateArrayInput is an input type that accepts GetFeatureStateArray and GetFeatureStateArrayOutput values. +// You can construct a concrete instance of `GetFeatureStateArrayInput` via: +// +// GetFeatureStateArray{ GetFeatureStateArgs{...} } +type GetFeatureStateArrayInput interface { + pulumi.Input + + ToGetFeatureStateArrayOutput() GetFeatureStateArrayOutput + ToGetFeatureStateArrayOutputWithContext(context.Context) GetFeatureStateArrayOutput +} + +type GetFeatureStateArray []GetFeatureStateInput + +func (GetFeatureStateArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureState)(nil)).Elem() +} + +func (i GetFeatureStateArray) ToGetFeatureStateArrayOutput() GetFeatureStateArrayOutput { + return i.ToGetFeatureStateArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureStateArray) ToGetFeatureStateArrayOutputWithContext(ctx context.Context) GetFeatureStateArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureStateArrayOutput) +} + +type GetFeatureStateOutput struct{ *pulumi.OutputState } + +func (GetFeatureStateOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureState)(nil)).Elem() +} + +func (o GetFeatureStateOutput) ToGetFeatureStateOutput() GetFeatureStateOutput { + return o +} + +func (o GetFeatureStateOutput) ToGetFeatureStateOutputWithContext(ctx context.Context) GetFeatureStateOutput { + return o +} + +// Output only. The "running state" of the Feature in this Hub. +func (o GetFeatureStateOutput) States() GetFeatureStateStateArrayOutput { + return o.ApplyT(func(v GetFeatureState) []GetFeatureStateState { return v.States }).(GetFeatureStateStateArrayOutput) +} + +type GetFeatureStateArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureStateArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureState)(nil)).Elem() +} + +func (o GetFeatureStateArrayOutput) ToGetFeatureStateArrayOutput() GetFeatureStateArrayOutput { + return o +} + +func (o GetFeatureStateArrayOutput) ToGetFeatureStateArrayOutputWithContext(ctx context.Context) GetFeatureStateArrayOutput { + return o +} + +func (o GetFeatureStateArrayOutput) Index(i pulumi.IntInput) GetFeatureStateOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureState { + return vs[0].([]GetFeatureState)[vs[1].(int)] + }).(GetFeatureStateOutput) +} + +type GetFeatureStateState struct { + // The high-level, machine-readable status of this Feature. + Code string `pulumi:"code"` + // A human-readable description of the current status. + Description string `pulumi:"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" + UpdateTime string `pulumi:"updateTime"` +} + +// GetFeatureStateStateInput is an input type that accepts GetFeatureStateStateArgs and GetFeatureStateStateOutput values. +// You can construct a concrete instance of `GetFeatureStateStateInput` via: +// +// GetFeatureStateStateArgs{...} +type GetFeatureStateStateInput interface { + pulumi.Input + + ToGetFeatureStateStateOutput() GetFeatureStateStateOutput + ToGetFeatureStateStateOutputWithContext(context.Context) GetFeatureStateStateOutput +} + +type GetFeatureStateStateArgs struct { + // The high-level, machine-readable status of this Feature. + Code pulumi.StringInput `pulumi:"code"` + // A human-readable description of the current status. + Description pulumi.StringInput `pulumi:"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" + UpdateTime pulumi.StringInput `pulumi:"updateTime"` +} + +func (GetFeatureStateStateArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureStateState)(nil)).Elem() +} + +func (i GetFeatureStateStateArgs) ToGetFeatureStateStateOutput() GetFeatureStateStateOutput { + return i.ToGetFeatureStateStateOutputWithContext(context.Background()) +} + +func (i GetFeatureStateStateArgs) ToGetFeatureStateStateOutputWithContext(ctx context.Context) GetFeatureStateStateOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureStateStateOutput) +} + +// GetFeatureStateStateArrayInput is an input type that accepts GetFeatureStateStateArray and GetFeatureStateStateArrayOutput values. +// You can construct a concrete instance of `GetFeatureStateStateArrayInput` via: +// +// GetFeatureStateStateArray{ GetFeatureStateStateArgs{...} } +type GetFeatureStateStateArrayInput interface { + pulumi.Input + + ToGetFeatureStateStateArrayOutput() GetFeatureStateStateArrayOutput + ToGetFeatureStateStateArrayOutputWithContext(context.Context) GetFeatureStateStateArrayOutput +} + +type GetFeatureStateStateArray []GetFeatureStateStateInput + +func (GetFeatureStateStateArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureStateState)(nil)).Elem() +} + +func (i GetFeatureStateStateArray) ToGetFeatureStateStateArrayOutput() GetFeatureStateStateArrayOutput { + return i.ToGetFeatureStateStateArrayOutputWithContext(context.Background()) +} + +func (i GetFeatureStateStateArray) ToGetFeatureStateStateArrayOutputWithContext(ctx context.Context) GetFeatureStateStateArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetFeatureStateStateArrayOutput) +} + +type GetFeatureStateStateOutput struct{ *pulumi.OutputState } + +func (GetFeatureStateStateOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetFeatureStateState)(nil)).Elem() +} + +func (o GetFeatureStateStateOutput) ToGetFeatureStateStateOutput() GetFeatureStateStateOutput { + return o +} + +func (o GetFeatureStateStateOutput) ToGetFeatureStateStateOutputWithContext(ctx context.Context) GetFeatureStateStateOutput { + return o +} + +// The high-level, machine-readable status of this Feature. +func (o GetFeatureStateStateOutput) Code() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureStateState) string { return v.Code }).(pulumi.StringOutput) +} + +// A human-readable description of the current status. +func (o GetFeatureStateStateOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureStateState) string { return v.Description }).(pulumi.StringOutput) +} + +// 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" +func (o GetFeatureStateStateOutput) UpdateTime() pulumi.StringOutput { + return o.ApplyT(func(v GetFeatureStateState) string { return v.UpdateTime }).(pulumi.StringOutput) +} + +type GetFeatureStateStateArrayOutput struct{ *pulumi.OutputState } + +func (GetFeatureStateStateArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetFeatureStateState)(nil)).Elem() +} + +func (o GetFeatureStateStateArrayOutput) ToGetFeatureStateStateArrayOutput() GetFeatureStateStateArrayOutput { + return o +} + +func (o GetFeatureStateStateArrayOutput) ToGetFeatureStateStateArrayOutputWithContext(ctx context.Context) GetFeatureStateStateArrayOutput { + return o +} + +func (o GetFeatureStateStateArrayOutput) Index(i pulumi.IntInput) GetFeatureStateStateOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetFeatureStateState { + return vs[0].([]GetFeatureStateState)[vs[1].(int)] + }).(GetFeatureStateStateOutput) +} + type GetMembershipBindingState struct { // Code describes the state of a MembershipBinding resource. Code string `pulumi:"code"` @@ -11743,6 +15304,68 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*ScopeRbacRoleBindingStateTypeArrayInput)(nil)).Elem(), ScopeRbacRoleBindingStateTypeArray{}) pulumi.RegisterInputType(reflect.TypeOf((*ScopeStateTypeInput)(nil)).Elem(), ScopeStateTypeArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*ScopeStateTypeArrayInput)(nil)).Elem(), ScopeStateTypeArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigArrayInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigConfigmanagementInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigConfigmanagementArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigConfigmanagementArrayInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigConfigmanagementArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArrayInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArrayInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArrayInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigMeshInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigMeshArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigMeshArrayInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigMeshArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigPolicycontrollerArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerArrayInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigPolicycontrollerArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArrayInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArrayInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArrayInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArrayInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArrayInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArrayInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArrayInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArrayInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArrayInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArrayInput)(nil)).Elem(), GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureResourceStateInput)(nil)).Elem(), GetFeatureResourceStateArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureResourceStateArrayInput)(nil)).Elem(), GetFeatureResourceStateArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureSpecInput)(nil)).Elem(), GetFeatureSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureSpecArrayInput)(nil)).Elem(), GetFeatureSpecArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureSpecClusterupgradeInput)(nil)).Elem(), GetFeatureSpecClusterupgradeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureSpecClusterupgradeArrayInput)(nil)).Elem(), GetFeatureSpecClusterupgradeArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureSpecClusterupgradeGkeUpgradeOverrideInput)(nil)).Elem(), GetFeatureSpecClusterupgradeGkeUpgradeOverrideArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureSpecClusterupgradeGkeUpgradeOverrideArrayInput)(nil)).Elem(), GetFeatureSpecClusterupgradeGkeUpgradeOverrideArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionInput)(nil)).Elem(), GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArrayInput)(nil)).Elem(), GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeInput)(nil)).Elem(), GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArrayInput)(nil)).Elem(), GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureSpecClusterupgradePostConditionInput)(nil)).Elem(), GetFeatureSpecClusterupgradePostConditionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureSpecClusterupgradePostConditionArrayInput)(nil)).Elem(), GetFeatureSpecClusterupgradePostConditionArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureSpecFleetobservabilityInput)(nil)).Elem(), GetFeatureSpecFleetobservabilityArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureSpecFleetobservabilityArrayInput)(nil)).Elem(), GetFeatureSpecFleetobservabilityArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureSpecFleetobservabilityLoggingConfigInput)(nil)).Elem(), GetFeatureSpecFleetobservabilityLoggingConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureSpecFleetobservabilityLoggingConfigArrayInput)(nil)).Elem(), GetFeatureSpecFleetobservabilityLoggingConfigArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigInput)(nil)).Elem(), GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArrayInput)(nil)).Elem(), GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigInput)(nil)).Elem(), GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArrayInput)(nil)).Elem(), GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureSpecMulticlusteringressInput)(nil)).Elem(), GetFeatureSpecMulticlusteringressArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureSpecMulticlusteringressArrayInput)(nil)).Elem(), GetFeatureSpecMulticlusteringressArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureStateInput)(nil)).Elem(), GetFeatureStateArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureStateArrayInput)(nil)).Elem(), GetFeatureStateArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureStateStateInput)(nil)).Elem(), GetFeatureStateStateArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetFeatureStateStateArrayInput)(nil)).Elem(), GetFeatureStateStateArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetMembershipBindingStateInput)(nil)).Elem(), GetMembershipBindingStateArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetMembershipBindingStateArrayInput)(nil)).Elem(), GetMembershipBindingStateArray{}) pulumi.RegisterOutputType(FeatureFleetDefaultMemberConfigOutput{}) @@ -11887,6 +15510,68 @@ func init() { pulumi.RegisterOutputType(ScopeRbacRoleBindingStateTypeArrayOutput{}) pulumi.RegisterOutputType(ScopeStateTypeOutput{}) pulumi.RegisterOutputType(ScopeStateTypeArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigConfigmanagementOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigConfigmanagementArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigMeshOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigMeshArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigPolicycontrollerOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigPolicycontrollerArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryOutput{}) + pulumi.RegisterOutputType(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureResourceStateOutput{}) + pulumi.RegisterOutputType(GetFeatureResourceStateArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureSpecOutput{}) + pulumi.RegisterOutputType(GetFeatureSpecArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureSpecClusterupgradeOutput{}) + pulumi.RegisterOutputType(GetFeatureSpecClusterupgradeArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureSpecClusterupgradeGkeUpgradeOverrideOutput{}) + pulumi.RegisterOutputType(GetFeatureSpecClusterupgradeGkeUpgradeOverrideArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionOutput{}) + pulumi.RegisterOutputType(GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeOutput{}) + pulumi.RegisterOutputType(GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureSpecClusterupgradePostConditionOutput{}) + pulumi.RegisterOutputType(GetFeatureSpecClusterupgradePostConditionArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureSpecFleetobservabilityOutput{}) + pulumi.RegisterOutputType(GetFeatureSpecFleetobservabilityArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureSpecFleetobservabilityLoggingConfigOutput{}) + pulumi.RegisterOutputType(GetFeatureSpecFleetobservabilityLoggingConfigArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigOutput{}) + pulumi.RegisterOutputType(GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigOutput{}) + pulumi.RegisterOutputType(GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureSpecMulticlusteringressOutput{}) + pulumi.RegisterOutputType(GetFeatureSpecMulticlusteringressArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureStateOutput{}) + pulumi.RegisterOutputType(GetFeatureStateArrayOutput{}) + pulumi.RegisterOutputType(GetFeatureStateStateOutput{}) + pulumi.RegisterOutputType(GetFeatureStateStateArrayOutput{}) pulumi.RegisterOutputType(GetMembershipBindingStateOutput{}) pulumi.RegisterOutputType(GetMembershipBindingStateArrayOutput{}) } diff --git a/sdk/go/gcp/gkeonprem/init.go b/sdk/go/gcp/gkeonprem/init.go index e7dce11255..0fe004eec4 100644 --- a/sdk/go/gcp/gkeonprem/init.go +++ b/sdk/go/gcp/gkeonprem/init.go @@ -31,6 +31,8 @@ func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi r = &VMwareCluster{} case "gcp:gkeonprem/vMwareNodePool:VMwareNodePool": r = &VMwareNodePool{} + case "gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster": + r = &VmwareAdminCluster{} default: return nil, fmt.Errorf("unknown resource type: %s", typ) } @@ -69,4 +71,9 @@ func init() { "gkeonprem/vMwareNodePool", &module{version}, ) + pulumi.RegisterResourceModule( + "gcp", + "gkeonprem/vmwareAdminCluster", + &module{version}, + ) } diff --git a/sdk/go/gcp/gkeonprem/pulumiTypes.go b/sdk/go/gcp/gkeonprem/pulumiTypes.go index 072bbd32ed..d4ee35dd2f 100644 --- a/sdk/go/gcp/gkeonprem/pulumiTypes.go +++ b/sdk/go/gcp/gkeonprem/pulumiTypes.go @@ -18949,6 +18949,4920 @@ func (o VMwareNodePoolStatusConditionArrayOutput) Index(i pulumi.IntInput) VMwar }).(VMwareNodePoolStatusConditionOutput) } +type VmwareAdminClusterAddonNode struct { + // Specifies auto resize config. + // Structure is documented below. + AutoResizeConfig *VmwareAdminClusterAddonNodeAutoResizeConfig `pulumi:"autoResizeConfig"` +} + +// VmwareAdminClusterAddonNodeInput is an input type that accepts VmwareAdminClusterAddonNodeArgs and VmwareAdminClusterAddonNodeOutput values. +// You can construct a concrete instance of `VmwareAdminClusterAddonNodeInput` via: +// +// VmwareAdminClusterAddonNodeArgs{...} +type VmwareAdminClusterAddonNodeInput interface { + pulumi.Input + + ToVmwareAdminClusterAddonNodeOutput() VmwareAdminClusterAddonNodeOutput + ToVmwareAdminClusterAddonNodeOutputWithContext(context.Context) VmwareAdminClusterAddonNodeOutput +} + +type VmwareAdminClusterAddonNodeArgs struct { + // Specifies auto resize config. + // Structure is documented below. + AutoResizeConfig VmwareAdminClusterAddonNodeAutoResizeConfigPtrInput `pulumi:"autoResizeConfig"` +} + +func (VmwareAdminClusterAddonNodeArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterAddonNode)(nil)).Elem() +} + +func (i VmwareAdminClusterAddonNodeArgs) ToVmwareAdminClusterAddonNodeOutput() VmwareAdminClusterAddonNodeOutput { + return i.ToVmwareAdminClusterAddonNodeOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterAddonNodeArgs) ToVmwareAdminClusterAddonNodeOutputWithContext(ctx context.Context) VmwareAdminClusterAddonNodeOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterAddonNodeOutput) +} + +func (i VmwareAdminClusterAddonNodeArgs) ToVmwareAdminClusterAddonNodePtrOutput() VmwareAdminClusterAddonNodePtrOutput { + return i.ToVmwareAdminClusterAddonNodePtrOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterAddonNodeArgs) ToVmwareAdminClusterAddonNodePtrOutputWithContext(ctx context.Context) VmwareAdminClusterAddonNodePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterAddonNodeOutput).ToVmwareAdminClusterAddonNodePtrOutputWithContext(ctx) +} + +// VmwareAdminClusterAddonNodePtrInput is an input type that accepts VmwareAdminClusterAddonNodeArgs, VmwareAdminClusterAddonNodePtr and VmwareAdminClusterAddonNodePtrOutput values. +// You can construct a concrete instance of `VmwareAdminClusterAddonNodePtrInput` via: +// +// VmwareAdminClusterAddonNodeArgs{...} +// +// or: +// +// nil +type VmwareAdminClusterAddonNodePtrInput interface { + pulumi.Input + + ToVmwareAdminClusterAddonNodePtrOutput() VmwareAdminClusterAddonNodePtrOutput + ToVmwareAdminClusterAddonNodePtrOutputWithContext(context.Context) VmwareAdminClusterAddonNodePtrOutput +} + +type vmwareAdminClusterAddonNodePtrType VmwareAdminClusterAddonNodeArgs + +func VmwareAdminClusterAddonNodePtr(v *VmwareAdminClusterAddonNodeArgs) VmwareAdminClusterAddonNodePtrInput { + return (*vmwareAdminClusterAddonNodePtrType)(v) +} + +func (*vmwareAdminClusterAddonNodePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterAddonNode)(nil)).Elem() +} + +func (i *vmwareAdminClusterAddonNodePtrType) ToVmwareAdminClusterAddonNodePtrOutput() VmwareAdminClusterAddonNodePtrOutput { + return i.ToVmwareAdminClusterAddonNodePtrOutputWithContext(context.Background()) +} + +func (i *vmwareAdminClusterAddonNodePtrType) ToVmwareAdminClusterAddonNodePtrOutputWithContext(ctx context.Context) VmwareAdminClusterAddonNodePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterAddonNodePtrOutput) +} + +type VmwareAdminClusterAddonNodeOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterAddonNodeOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterAddonNode)(nil)).Elem() +} + +func (o VmwareAdminClusterAddonNodeOutput) ToVmwareAdminClusterAddonNodeOutput() VmwareAdminClusterAddonNodeOutput { + return o +} + +func (o VmwareAdminClusterAddonNodeOutput) ToVmwareAdminClusterAddonNodeOutputWithContext(ctx context.Context) VmwareAdminClusterAddonNodeOutput { + return o +} + +func (o VmwareAdminClusterAddonNodeOutput) ToVmwareAdminClusterAddonNodePtrOutput() VmwareAdminClusterAddonNodePtrOutput { + return o.ToVmwareAdminClusterAddonNodePtrOutputWithContext(context.Background()) +} + +func (o VmwareAdminClusterAddonNodeOutput) ToVmwareAdminClusterAddonNodePtrOutputWithContext(ctx context.Context) VmwareAdminClusterAddonNodePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v VmwareAdminClusterAddonNode) *VmwareAdminClusterAddonNode { + return &v + }).(VmwareAdminClusterAddonNodePtrOutput) +} + +// Specifies auto resize config. +// Structure is documented below. +func (o VmwareAdminClusterAddonNodeOutput) AutoResizeConfig() VmwareAdminClusterAddonNodeAutoResizeConfigPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterAddonNode) *VmwareAdminClusterAddonNodeAutoResizeConfig { + return v.AutoResizeConfig + }).(VmwareAdminClusterAddonNodeAutoResizeConfigPtrOutput) +} + +type VmwareAdminClusterAddonNodePtrOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterAddonNodePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterAddonNode)(nil)).Elem() +} + +func (o VmwareAdminClusterAddonNodePtrOutput) ToVmwareAdminClusterAddonNodePtrOutput() VmwareAdminClusterAddonNodePtrOutput { + return o +} + +func (o VmwareAdminClusterAddonNodePtrOutput) ToVmwareAdminClusterAddonNodePtrOutputWithContext(ctx context.Context) VmwareAdminClusterAddonNodePtrOutput { + return o +} + +func (o VmwareAdminClusterAddonNodePtrOutput) Elem() VmwareAdminClusterAddonNodeOutput { + return o.ApplyT(func(v *VmwareAdminClusterAddonNode) VmwareAdminClusterAddonNode { + if v != nil { + return *v + } + var ret VmwareAdminClusterAddonNode + return ret + }).(VmwareAdminClusterAddonNodeOutput) +} + +// Specifies auto resize config. +// Structure is documented below. +func (o VmwareAdminClusterAddonNodePtrOutput) AutoResizeConfig() VmwareAdminClusterAddonNodeAutoResizeConfigPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterAddonNode) *VmwareAdminClusterAddonNodeAutoResizeConfig { + if v == nil { + return nil + } + return v.AutoResizeConfig + }).(VmwareAdminClusterAddonNodeAutoResizeConfigPtrOutput) +} + +type VmwareAdminClusterAddonNodeAutoResizeConfig struct { + // Whether to enable controle plane node auto resizing. + Enabled bool `pulumi:"enabled"` +} + +// VmwareAdminClusterAddonNodeAutoResizeConfigInput is an input type that accepts VmwareAdminClusterAddonNodeAutoResizeConfigArgs and VmwareAdminClusterAddonNodeAutoResizeConfigOutput values. +// You can construct a concrete instance of `VmwareAdminClusterAddonNodeAutoResizeConfigInput` via: +// +// VmwareAdminClusterAddonNodeAutoResizeConfigArgs{...} +type VmwareAdminClusterAddonNodeAutoResizeConfigInput interface { + pulumi.Input + + ToVmwareAdminClusterAddonNodeAutoResizeConfigOutput() VmwareAdminClusterAddonNodeAutoResizeConfigOutput + ToVmwareAdminClusterAddonNodeAutoResizeConfigOutputWithContext(context.Context) VmwareAdminClusterAddonNodeAutoResizeConfigOutput +} + +type VmwareAdminClusterAddonNodeAutoResizeConfigArgs struct { + // Whether to enable controle plane node auto resizing. + Enabled pulumi.BoolInput `pulumi:"enabled"` +} + +func (VmwareAdminClusterAddonNodeAutoResizeConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterAddonNodeAutoResizeConfig)(nil)).Elem() +} + +func (i VmwareAdminClusterAddonNodeAutoResizeConfigArgs) ToVmwareAdminClusterAddonNodeAutoResizeConfigOutput() VmwareAdminClusterAddonNodeAutoResizeConfigOutput { + return i.ToVmwareAdminClusterAddonNodeAutoResizeConfigOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterAddonNodeAutoResizeConfigArgs) ToVmwareAdminClusterAddonNodeAutoResizeConfigOutputWithContext(ctx context.Context) VmwareAdminClusterAddonNodeAutoResizeConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterAddonNodeAutoResizeConfigOutput) +} + +func (i VmwareAdminClusterAddonNodeAutoResizeConfigArgs) ToVmwareAdminClusterAddonNodeAutoResizeConfigPtrOutput() VmwareAdminClusterAddonNodeAutoResizeConfigPtrOutput { + return i.ToVmwareAdminClusterAddonNodeAutoResizeConfigPtrOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterAddonNodeAutoResizeConfigArgs) ToVmwareAdminClusterAddonNodeAutoResizeConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterAddonNodeAutoResizeConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterAddonNodeAutoResizeConfigOutput).ToVmwareAdminClusterAddonNodeAutoResizeConfigPtrOutputWithContext(ctx) +} + +// VmwareAdminClusterAddonNodeAutoResizeConfigPtrInput is an input type that accepts VmwareAdminClusterAddonNodeAutoResizeConfigArgs, VmwareAdminClusterAddonNodeAutoResizeConfigPtr and VmwareAdminClusterAddonNodeAutoResizeConfigPtrOutput values. +// You can construct a concrete instance of `VmwareAdminClusterAddonNodeAutoResizeConfigPtrInput` via: +// +// VmwareAdminClusterAddonNodeAutoResizeConfigArgs{...} +// +// or: +// +// nil +type VmwareAdminClusterAddonNodeAutoResizeConfigPtrInput interface { + pulumi.Input + + ToVmwareAdminClusterAddonNodeAutoResizeConfigPtrOutput() VmwareAdminClusterAddonNodeAutoResizeConfigPtrOutput + ToVmwareAdminClusterAddonNodeAutoResizeConfigPtrOutputWithContext(context.Context) VmwareAdminClusterAddonNodeAutoResizeConfigPtrOutput +} + +type vmwareAdminClusterAddonNodeAutoResizeConfigPtrType VmwareAdminClusterAddonNodeAutoResizeConfigArgs + +func VmwareAdminClusterAddonNodeAutoResizeConfigPtr(v *VmwareAdminClusterAddonNodeAutoResizeConfigArgs) VmwareAdminClusterAddonNodeAutoResizeConfigPtrInput { + return (*vmwareAdminClusterAddonNodeAutoResizeConfigPtrType)(v) +} + +func (*vmwareAdminClusterAddonNodeAutoResizeConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterAddonNodeAutoResizeConfig)(nil)).Elem() +} + +func (i *vmwareAdminClusterAddonNodeAutoResizeConfigPtrType) ToVmwareAdminClusterAddonNodeAutoResizeConfigPtrOutput() VmwareAdminClusterAddonNodeAutoResizeConfigPtrOutput { + return i.ToVmwareAdminClusterAddonNodeAutoResizeConfigPtrOutputWithContext(context.Background()) +} + +func (i *vmwareAdminClusterAddonNodeAutoResizeConfigPtrType) ToVmwareAdminClusterAddonNodeAutoResizeConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterAddonNodeAutoResizeConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterAddonNodeAutoResizeConfigPtrOutput) +} + +type VmwareAdminClusterAddonNodeAutoResizeConfigOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterAddonNodeAutoResizeConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterAddonNodeAutoResizeConfig)(nil)).Elem() +} + +func (o VmwareAdminClusterAddonNodeAutoResizeConfigOutput) ToVmwareAdminClusterAddonNodeAutoResizeConfigOutput() VmwareAdminClusterAddonNodeAutoResizeConfigOutput { + return o +} + +func (o VmwareAdminClusterAddonNodeAutoResizeConfigOutput) ToVmwareAdminClusterAddonNodeAutoResizeConfigOutputWithContext(ctx context.Context) VmwareAdminClusterAddonNodeAutoResizeConfigOutput { + return o +} + +func (o VmwareAdminClusterAddonNodeAutoResizeConfigOutput) ToVmwareAdminClusterAddonNodeAutoResizeConfigPtrOutput() VmwareAdminClusterAddonNodeAutoResizeConfigPtrOutput { + return o.ToVmwareAdminClusterAddonNodeAutoResizeConfigPtrOutputWithContext(context.Background()) +} + +func (o VmwareAdminClusterAddonNodeAutoResizeConfigOutput) ToVmwareAdminClusterAddonNodeAutoResizeConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterAddonNodeAutoResizeConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v VmwareAdminClusterAddonNodeAutoResizeConfig) *VmwareAdminClusterAddonNodeAutoResizeConfig { + return &v + }).(VmwareAdminClusterAddonNodeAutoResizeConfigPtrOutput) +} + +// Whether to enable controle plane node auto resizing. +func (o VmwareAdminClusterAddonNodeAutoResizeConfigOutput) Enabled() pulumi.BoolOutput { + return o.ApplyT(func(v VmwareAdminClusterAddonNodeAutoResizeConfig) bool { return v.Enabled }).(pulumi.BoolOutput) +} + +type VmwareAdminClusterAddonNodeAutoResizeConfigPtrOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterAddonNodeAutoResizeConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterAddonNodeAutoResizeConfig)(nil)).Elem() +} + +func (o VmwareAdminClusterAddonNodeAutoResizeConfigPtrOutput) ToVmwareAdminClusterAddonNodeAutoResizeConfigPtrOutput() VmwareAdminClusterAddonNodeAutoResizeConfigPtrOutput { + return o +} + +func (o VmwareAdminClusterAddonNodeAutoResizeConfigPtrOutput) ToVmwareAdminClusterAddonNodeAutoResizeConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterAddonNodeAutoResizeConfigPtrOutput { + return o +} + +func (o VmwareAdminClusterAddonNodeAutoResizeConfigPtrOutput) Elem() VmwareAdminClusterAddonNodeAutoResizeConfigOutput { + return o.ApplyT(func(v *VmwareAdminClusterAddonNodeAutoResizeConfig) VmwareAdminClusterAddonNodeAutoResizeConfig { + if v != nil { + return *v + } + var ret VmwareAdminClusterAddonNodeAutoResizeConfig + return ret + }).(VmwareAdminClusterAddonNodeAutoResizeConfigOutput) +} + +// Whether to enable controle plane node auto resizing. +func (o VmwareAdminClusterAddonNodeAutoResizeConfigPtrOutput) Enabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterAddonNodeAutoResizeConfig) *bool { + if v == nil { + return nil + } + return &v.Enabled + }).(pulumi.BoolPtrOutput) +} + +type VmwareAdminClusterAntiAffinityGroups struct { + // Spread nodes across at least three physical hosts (requires at least three + // hosts). + // Enabled by default. + AagConfigDisabled bool `pulumi:"aagConfigDisabled"` +} + +// VmwareAdminClusterAntiAffinityGroupsInput is an input type that accepts VmwareAdminClusterAntiAffinityGroupsArgs and VmwareAdminClusterAntiAffinityGroupsOutput values. +// You can construct a concrete instance of `VmwareAdminClusterAntiAffinityGroupsInput` via: +// +// VmwareAdminClusterAntiAffinityGroupsArgs{...} +type VmwareAdminClusterAntiAffinityGroupsInput interface { + pulumi.Input + + ToVmwareAdminClusterAntiAffinityGroupsOutput() VmwareAdminClusterAntiAffinityGroupsOutput + ToVmwareAdminClusterAntiAffinityGroupsOutputWithContext(context.Context) VmwareAdminClusterAntiAffinityGroupsOutput +} + +type VmwareAdminClusterAntiAffinityGroupsArgs struct { + // Spread nodes across at least three physical hosts (requires at least three + // hosts). + // Enabled by default. + AagConfigDisabled pulumi.BoolInput `pulumi:"aagConfigDisabled"` +} + +func (VmwareAdminClusterAntiAffinityGroupsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterAntiAffinityGroups)(nil)).Elem() +} + +func (i VmwareAdminClusterAntiAffinityGroupsArgs) ToVmwareAdminClusterAntiAffinityGroupsOutput() VmwareAdminClusterAntiAffinityGroupsOutput { + return i.ToVmwareAdminClusterAntiAffinityGroupsOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterAntiAffinityGroupsArgs) ToVmwareAdminClusterAntiAffinityGroupsOutputWithContext(ctx context.Context) VmwareAdminClusterAntiAffinityGroupsOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterAntiAffinityGroupsOutput) +} + +func (i VmwareAdminClusterAntiAffinityGroupsArgs) ToVmwareAdminClusterAntiAffinityGroupsPtrOutput() VmwareAdminClusterAntiAffinityGroupsPtrOutput { + return i.ToVmwareAdminClusterAntiAffinityGroupsPtrOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterAntiAffinityGroupsArgs) ToVmwareAdminClusterAntiAffinityGroupsPtrOutputWithContext(ctx context.Context) VmwareAdminClusterAntiAffinityGroupsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterAntiAffinityGroupsOutput).ToVmwareAdminClusterAntiAffinityGroupsPtrOutputWithContext(ctx) +} + +// VmwareAdminClusterAntiAffinityGroupsPtrInput is an input type that accepts VmwareAdminClusterAntiAffinityGroupsArgs, VmwareAdminClusterAntiAffinityGroupsPtr and VmwareAdminClusterAntiAffinityGroupsPtrOutput values. +// You can construct a concrete instance of `VmwareAdminClusterAntiAffinityGroupsPtrInput` via: +// +// VmwareAdminClusterAntiAffinityGroupsArgs{...} +// +// or: +// +// nil +type VmwareAdminClusterAntiAffinityGroupsPtrInput interface { + pulumi.Input + + ToVmwareAdminClusterAntiAffinityGroupsPtrOutput() VmwareAdminClusterAntiAffinityGroupsPtrOutput + ToVmwareAdminClusterAntiAffinityGroupsPtrOutputWithContext(context.Context) VmwareAdminClusterAntiAffinityGroupsPtrOutput +} + +type vmwareAdminClusterAntiAffinityGroupsPtrType VmwareAdminClusterAntiAffinityGroupsArgs + +func VmwareAdminClusterAntiAffinityGroupsPtr(v *VmwareAdminClusterAntiAffinityGroupsArgs) VmwareAdminClusterAntiAffinityGroupsPtrInput { + return (*vmwareAdminClusterAntiAffinityGroupsPtrType)(v) +} + +func (*vmwareAdminClusterAntiAffinityGroupsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterAntiAffinityGroups)(nil)).Elem() +} + +func (i *vmwareAdminClusterAntiAffinityGroupsPtrType) ToVmwareAdminClusterAntiAffinityGroupsPtrOutput() VmwareAdminClusterAntiAffinityGroupsPtrOutput { + return i.ToVmwareAdminClusterAntiAffinityGroupsPtrOutputWithContext(context.Background()) +} + +func (i *vmwareAdminClusterAntiAffinityGroupsPtrType) ToVmwareAdminClusterAntiAffinityGroupsPtrOutputWithContext(ctx context.Context) VmwareAdminClusterAntiAffinityGroupsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterAntiAffinityGroupsPtrOutput) +} + +type VmwareAdminClusterAntiAffinityGroupsOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterAntiAffinityGroupsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterAntiAffinityGroups)(nil)).Elem() +} + +func (o VmwareAdminClusterAntiAffinityGroupsOutput) ToVmwareAdminClusterAntiAffinityGroupsOutput() VmwareAdminClusterAntiAffinityGroupsOutput { + return o +} + +func (o VmwareAdminClusterAntiAffinityGroupsOutput) ToVmwareAdminClusterAntiAffinityGroupsOutputWithContext(ctx context.Context) VmwareAdminClusterAntiAffinityGroupsOutput { + return o +} + +func (o VmwareAdminClusterAntiAffinityGroupsOutput) ToVmwareAdminClusterAntiAffinityGroupsPtrOutput() VmwareAdminClusterAntiAffinityGroupsPtrOutput { + return o.ToVmwareAdminClusterAntiAffinityGroupsPtrOutputWithContext(context.Background()) +} + +func (o VmwareAdminClusterAntiAffinityGroupsOutput) ToVmwareAdminClusterAntiAffinityGroupsPtrOutputWithContext(ctx context.Context) VmwareAdminClusterAntiAffinityGroupsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v VmwareAdminClusterAntiAffinityGroups) *VmwareAdminClusterAntiAffinityGroups { + return &v + }).(VmwareAdminClusterAntiAffinityGroupsPtrOutput) +} + +// Spread nodes across at least three physical hosts (requires at least three +// hosts). +// Enabled by default. +func (o VmwareAdminClusterAntiAffinityGroupsOutput) AagConfigDisabled() pulumi.BoolOutput { + return o.ApplyT(func(v VmwareAdminClusterAntiAffinityGroups) bool { return v.AagConfigDisabled }).(pulumi.BoolOutput) +} + +type VmwareAdminClusterAntiAffinityGroupsPtrOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterAntiAffinityGroupsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterAntiAffinityGroups)(nil)).Elem() +} + +func (o VmwareAdminClusterAntiAffinityGroupsPtrOutput) ToVmwareAdminClusterAntiAffinityGroupsPtrOutput() VmwareAdminClusterAntiAffinityGroupsPtrOutput { + return o +} + +func (o VmwareAdminClusterAntiAffinityGroupsPtrOutput) ToVmwareAdminClusterAntiAffinityGroupsPtrOutputWithContext(ctx context.Context) VmwareAdminClusterAntiAffinityGroupsPtrOutput { + return o +} + +func (o VmwareAdminClusterAntiAffinityGroupsPtrOutput) Elem() VmwareAdminClusterAntiAffinityGroupsOutput { + return o.ApplyT(func(v *VmwareAdminClusterAntiAffinityGroups) VmwareAdminClusterAntiAffinityGroups { + if v != nil { + return *v + } + var ret VmwareAdminClusterAntiAffinityGroups + return ret + }).(VmwareAdminClusterAntiAffinityGroupsOutput) +} + +// Spread nodes across at least three physical hosts (requires at least three +// hosts). +// Enabled by default. +func (o VmwareAdminClusterAntiAffinityGroupsPtrOutput) AagConfigDisabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterAntiAffinityGroups) *bool { + if v == nil { + return nil + } + return &v.AagConfigDisabled + }).(pulumi.BoolPtrOutput) +} + +type VmwareAdminClusterAuthorization struct { + // Users that will be granted the cluster-admin role on the cluster, providing + // full access to the cluster. + // Structure is documented below. + ViewerUsers []VmwareAdminClusterAuthorizationViewerUser `pulumi:"viewerUsers"` +} + +// VmwareAdminClusterAuthorizationInput is an input type that accepts VmwareAdminClusterAuthorizationArgs and VmwareAdminClusterAuthorizationOutput values. +// You can construct a concrete instance of `VmwareAdminClusterAuthorizationInput` via: +// +// VmwareAdminClusterAuthorizationArgs{...} +type VmwareAdminClusterAuthorizationInput interface { + pulumi.Input + + ToVmwareAdminClusterAuthorizationOutput() VmwareAdminClusterAuthorizationOutput + ToVmwareAdminClusterAuthorizationOutputWithContext(context.Context) VmwareAdminClusterAuthorizationOutput +} + +type VmwareAdminClusterAuthorizationArgs struct { + // Users that will be granted the cluster-admin role on the cluster, providing + // full access to the cluster. + // Structure is documented below. + ViewerUsers VmwareAdminClusterAuthorizationViewerUserArrayInput `pulumi:"viewerUsers"` +} + +func (VmwareAdminClusterAuthorizationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterAuthorization)(nil)).Elem() +} + +func (i VmwareAdminClusterAuthorizationArgs) ToVmwareAdminClusterAuthorizationOutput() VmwareAdminClusterAuthorizationOutput { + return i.ToVmwareAdminClusterAuthorizationOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterAuthorizationArgs) ToVmwareAdminClusterAuthorizationOutputWithContext(ctx context.Context) VmwareAdminClusterAuthorizationOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterAuthorizationOutput) +} + +func (i VmwareAdminClusterAuthorizationArgs) ToVmwareAdminClusterAuthorizationPtrOutput() VmwareAdminClusterAuthorizationPtrOutput { + return i.ToVmwareAdminClusterAuthorizationPtrOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterAuthorizationArgs) ToVmwareAdminClusterAuthorizationPtrOutputWithContext(ctx context.Context) VmwareAdminClusterAuthorizationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterAuthorizationOutput).ToVmwareAdminClusterAuthorizationPtrOutputWithContext(ctx) +} + +// VmwareAdminClusterAuthorizationPtrInput is an input type that accepts VmwareAdminClusterAuthorizationArgs, VmwareAdminClusterAuthorizationPtr and VmwareAdminClusterAuthorizationPtrOutput values. +// You can construct a concrete instance of `VmwareAdminClusterAuthorizationPtrInput` via: +// +// VmwareAdminClusterAuthorizationArgs{...} +// +// or: +// +// nil +type VmwareAdminClusterAuthorizationPtrInput interface { + pulumi.Input + + ToVmwareAdminClusterAuthorizationPtrOutput() VmwareAdminClusterAuthorizationPtrOutput + ToVmwareAdminClusterAuthorizationPtrOutputWithContext(context.Context) VmwareAdminClusterAuthorizationPtrOutput +} + +type vmwareAdminClusterAuthorizationPtrType VmwareAdminClusterAuthorizationArgs + +func VmwareAdminClusterAuthorizationPtr(v *VmwareAdminClusterAuthorizationArgs) VmwareAdminClusterAuthorizationPtrInput { + return (*vmwareAdminClusterAuthorizationPtrType)(v) +} + +func (*vmwareAdminClusterAuthorizationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterAuthorization)(nil)).Elem() +} + +func (i *vmwareAdminClusterAuthorizationPtrType) ToVmwareAdminClusterAuthorizationPtrOutput() VmwareAdminClusterAuthorizationPtrOutput { + return i.ToVmwareAdminClusterAuthorizationPtrOutputWithContext(context.Background()) +} + +func (i *vmwareAdminClusterAuthorizationPtrType) ToVmwareAdminClusterAuthorizationPtrOutputWithContext(ctx context.Context) VmwareAdminClusterAuthorizationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterAuthorizationPtrOutput) +} + +type VmwareAdminClusterAuthorizationOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterAuthorizationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterAuthorization)(nil)).Elem() +} + +func (o VmwareAdminClusterAuthorizationOutput) ToVmwareAdminClusterAuthorizationOutput() VmwareAdminClusterAuthorizationOutput { + return o +} + +func (o VmwareAdminClusterAuthorizationOutput) ToVmwareAdminClusterAuthorizationOutputWithContext(ctx context.Context) VmwareAdminClusterAuthorizationOutput { + return o +} + +func (o VmwareAdminClusterAuthorizationOutput) ToVmwareAdminClusterAuthorizationPtrOutput() VmwareAdminClusterAuthorizationPtrOutput { + return o.ToVmwareAdminClusterAuthorizationPtrOutputWithContext(context.Background()) +} + +func (o VmwareAdminClusterAuthorizationOutput) ToVmwareAdminClusterAuthorizationPtrOutputWithContext(ctx context.Context) VmwareAdminClusterAuthorizationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v VmwareAdminClusterAuthorization) *VmwareAdminClusterAuthorization { + return &v + }).(VmwareAdminClusterAuthorizationPtrOutput) +} + +// Users that will be granted the cluster-admin role on the cluster, providing +// full access to the cluster. +// Structure is documented below. +func (o VmwareAdminClusterAuthorizationOutput) ViewerUsers() VmwareAdminClusterAuthorizationViewerUserArrayOutput { + return o.ApplyT(func(v VmwareAdminClusterAuthorization) []VmwareAdminClusterAuthorizationViewerUser { + return v.ViewerUsers + }).(VmwareAdminClusterAuthorizationViewerUserArrayOutput) +} + +type VmwareAdminClusterAuthorizationPtrOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterAuthorizationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterAuthorization)(nil)).Elem() +} + +func (o VmwareAdminClusterAuthorizationPtrOutput) ToVmwareAdminClusterAuthorizationPtrOutput() VmwareAdminClusterAuthorizationPtrOutput { + return o +} + +func (o VmwareAdminClusterAuthorizationPtrOutput) ToVmwareAdminClusterAuthorizationPtrOutputWithContext(ctx context.Context) VmwareAdminClusterAuthorizationPtrOutput { + return o +} + +func (o VmwareAdminClusterAuthorizationPtrOutput) Elem() VmwareAdminClusterAuthorizationOutput { + return o.ApplyT(func(v *VmwareAdminClusterAuthorization) VmwareAdminClusterAuthorization { + if v != nil { + return *v + } + var ret VmwareAdminClusterAuthorization + return ret + }).(VmwareAdminClusterAuthorizationOutput) +} + +// Users that will be granted the cluster-admin role on the cluster, providing +// full access to the cluster. +// Structure is documented below. +func (o VmwareAdminClusterAuthorizationPtrOutput) ViewerUsers() VmwareAdminClusterAuthorizationViewerUserArrayOutput { + return o.ApplyT(func(v *VmwareAdminClusterAuthorization) []VmwareAdminClusterAuthorizationViewerUser { + if v == nil { + return nil + } + return v.ViewerUsers + }).(VmwareAdminClusterAuthorizationViewerUserArrayOutput) +} + +type VmwareAdminClusterAuthorizationViewerUser struct { + // The name of the user, e.g. `my-gcp-id@gmail.com`. + Username string `pulumi:"username"` +} + +// VmwareAdminClusterAuthorizationViewerUserInput is an input type that accepts VmwareAdminClusterAuthorizationViewerUserArgs and VmwareAdminClusterAuthorizationViewerUserOutput values. +// You can construct a concrete instance of `VmwareAdminClusterAuthorizationViewerUserInput` via: +// +// VmwareAdminClusterAuthorizationViewerUserArgs{...} +type VmwareAdminClusterAuthorizationViewerUserInput interface { + pulumi.Input + + ToVmwareAdminClusterAuthorizationViewerUserOutput() VmwareAdminClusterAuthorizationViewerUserOutput + ToVmwareAdminClusterAuthorizationViewerUserOutputWithContext(context.Context) VmwareAdminClusterAuthorizationViewerUserOutput +} + +type VmwareAdminClusterAuthorizationViewerUserArgs struct { + // The name of the user, e.g. `my-gcp-id@gmail.com`. + Username pulumi.StringInput `pulumi:"username"` +} + +func (VmwareAdminClusterAuthorizationViewerUserArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterAuthorizationViewerUser)(nil)).Elem() +} + +func (i VmwareAdminClusterAuthorizationViewerUserArgs) ToVmwareAdminClusterAuthorizationViewerUserOutput() VmwareAdminClusterAuthorizationViewerUserOutput { + return i.ToVmwareAdminClusterAuthorizationViewerUserOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterAuthorizationViewerUserArgs) ToVmwareAdminClusterAuthorizationViewerUserOutputWithContext(ctx context.Context) VmwareAdminClusterAuthorizationViewerUserOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterAuthorizationViewerUserOutput) +} + +// VmwareAdminClusterAuthorizationViewerUserArrayInput is an input type that accepts VmwareAdminClusterAuthorizationViewerUserArray and VmwareAdminClusterAuthorizationViewerUserArrayOutput values. +// You can construct a concrete instance of `VmwareAdminClusterAuthorizationViewerUserArrayInput` via: +// +// VmwareAdminClusterAuthorizationViewerUserArray{ VmwareAdminClusterAuthorizationViewerUserArgs{...} } +type VmwareAdminClusterAuthorizationViewerUserArrayInput interface { + pulumi.Input + + ToVmwareAdminClusterAuthorizationViewerUserArrayOutput() VmwareAdminClusterAuthorizationViewerUserArrayOutput + ToVmwareAdminClusterAuthorizationViewerUserArrayOutputWithContext(context.Context) VmwareAdminClusterAuthorizationViewerUserArrayOutput +} + +type VmwareAdminClusterAuthorizationViewerUserArray []VmwareAdminClusterAuthorizationViewerUserInput + +func (VmwareAdminClusterAuthorizationViewerUserArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]VmwareAdminClusterAuthorizationViewerUser)(nil)).Elem() +} + +func (i VmwareAdminClusterAuthorizationViewerUserArray) ToVmwareAdminClusterAuthorizationViewerUserArrayOutput() VmwareAdminClusterAuthorizationViewerUserArrayOutput { + return i.ToVmwareAdminClusterAuthorizationViewerUserArrayOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterAuthorizationViewerUserArray) ToVmwareAdminClusterAuthorizationViewerUserArrayOutputWithContext(ctx context.Context) VmwareAdminClusterAuthorizationViewerUserArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterAuthorizationViewerUserArrayOutput) +} + +type VmwareAdminClusterAuthorizationViewerUserOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterAuthorizationViewerUserOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterAuthorizationViewerUser)(nil)).Elem() +} + +func (o VmwareAdminClusterAuthorizationViewerUserOutput) ToVmwareAdminClusterAuthorizationViewerUserOutput() VmwareAdminClusterAuthorizationViewerUserOutput { + return o +} + +func (o VmwareAdminClusterAuthorizationViewerUserOutput) ToVmwareAdminClusterAuthorizationViewerUserOutputWithContext(ctx context.Context) VmwareAdminClusterAuthorizationViewerUserOutput { + return o +} + +// The name of the user, e.g. `my-gcp-id@gmail.com`. +func (o VmwareAdminClusterAuthorizationViewerUserOutput) Username() pulumi.StringOutput { + return o.ApplyT(func(v VmwareAdminClusterAuthorizationViewerUser) string { return v.Username }).(pulumi.StringOutput) +} + +type VmwareAdminClusterAuthorizationViewerUserArrayOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterAuthorizationViewerUserArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]VmwareAdminClusterAuthorizationViewerUser)(nil)).Elem() +} + +func (o VmwareAdminClusterAuthorizationViewerUserArrayOutput) ToVmwareAdminClusterAuthorizationViewerUserArrayOutput() VmwareAdminClusterAuthorizationViewerUserArrayOutput { + return o +} + +func (o VmwareAdminClusterAuthorizationViewerUserArrayOutput) ToVmwareAdminClusterAuthorizationViewerUserArrayOutputWithContext(ctx context.Context) VmwareAdminClusterAuthorizationViewerUserArrayOutput { + return o +} + +func (o VmwareAdminClusterAuthorizationViewerUserArrayOutput) Index(i pulumi.IntInput) VmwareAdminClusterAuthorizationViewerUserOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) VmwareAdminClusterAuthorizationViewerUser { + return vs[0].([]VmwareAdminClusterAuthorizationViewerUser)[vs[1].(int)] + }).(VmwareAdminClusterAuthorizationViewerUserOutput) +} + +type VmwareAdminClusterAutoRepairConfig struct { + // Whether auto repair is enabled. + Enabled bool `pulumi:"enabled"` +} + +// VmwareAdminClusterAutoRepairConfigInput is an input type that accepts VmwareAdminClusterAutoRepairConfigArgs and VmwareAdminClusterAutoRepairConfigOutput values. +// You can construct a concrete instance of `VmwareAdminClusterAutoRepairConfigInput` via: +// +// VmwareAdminClusterAutoRepairConfigArgs{...} +type VmwareAdminClusterAutoRepairConfigInput interface { + pulumi.Input + + ToVmwareAdminClusterAutoRepairConfigOutput() VmwareAdminClusterAutoRepairConfigOutput + ToVmwareAdminClusterAutoRepairConfigOutputWithContext(context.Context) VmwareAdminClusterAutoRepairConfigOutput +} + +type VmwareAdminClusterAutoRepairConfigArgs struct { + // Whether auto repair is enabled. + Enabled pulumi.BoolInput `pulumi:"enabled"` +} + +func (VmwareAdminClusterAutoRepairConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterAutoRepairConfig)(nil)).Elem() +} + +func (i VmwareAdminClusterAutoRepairConfigArgs) ToVmwareAdminClusterAutoRepairConfigOutput() VmwareAdminClusterAutoRepairConfigOutput { + return i.ToVmwareAdminClusterAutoRepairConfigOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterAutoRepairConfigArgs) ToVmwareAdminClusterAutoRepairConfigOutputWithContext(ctx context.Context) VmwareAdminClusterAutoRepairConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterAutoRepairConfigOutput) +} + +func (i VmwareAdminClusterAutoRepairConfigArgs) ToVmwareAdminClusterAutoRepairConfigPtrOutput() VmwareAdminClusterAutoRepairConfigPtrOutput { + return i.ToVmwareAdminClusterAutoRepairConfigPtrOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterAutoRepairConfigArgs) ToVmwareAdminClusterAutoRepairConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterAutoRepairConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterAutoRepairConfigOutput).ToVmwareAdminClusterAutoRepairConfigPtrOutputWithContext(ctx) +} + +// VmwareAdminClusterAutoRepairConfigPtrInput is an input type that accepts VmwareAdminClusterAutoRepairConfigArgs, VmwareAdminClusterAutoRepairConfigPtr and VmwareAdminClusterAutoRepairConfigPtrOutput values. +// You can construct a concrete instance of `VmwareAdminClusterAutoRepairConfigPtrInput` via: +// +// VmwareAdminClusterAutoRepairConfigArgs{...} +// +// or: +// +// nil +type VmwareAdminClusterAutoRepairConfigPtrInput interface { + pulumi.Input + + ToVmwareAdminClusterAutoRepairConfigPtrOutput() VmwareAdminClusterAutoRepairConfigPtrOutput + ToVmwareAdminClusterAutoRepairConfigPtrOutputWithContext(context.Context) VmwareAdminClusterAutoRepairConfigPtrOutput +} + +type vmwareAdminClusterAutoRepairConfigPtrType VmwareAdminClusterAutoRepairConfigArgs + +func VmwareAdminClusterAutoRepairConfigPtr(v *VmwareAdminClusterAutoRepairConfigArgs) VmwareAdminClusterAutoRepairConfigPtrInput { + return (*vmwareAdminClusterAutoRepairConfigPtrType)(v) +} + +func (*vmwareAdminClusterAutoRepairConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterAutoRepairConfig)(nil)).Elem() +} + +func (i *vmwareAdminClusterAutoRepairConfigPtrType) ToVmwareAdminClusterAutoRepairConfigPtrOutput() VmwareAdminClusterAutoRepairConfigPtrOutput { + return i.ToVmwareAdminClusterAutoRepairConfigPtrOutputWithContext(context.Background()) +} + +func (i *vmwareAdminClusterAutoRepairConfigPtrType) ToVmwareAdminClusterAutoRepairConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterAutoRepairConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterAutoRepairConfigPtrOutput) +} + +type VmwareAdminClusterAutoRepairConfigOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterAutoRepairConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterAutoRepairConfig)(nil)).Elem() +} + +func (o VmwareAdminClusterAutoRepairConfigOutput) ToVmwareAdminClusterAutoRepairConfigOutput() VmwareAdminClusterAutoRepairConfigOutput { + return o +} + +func (o VmwareAdminClusterAutoRepairConfigOutput) ToVmwareAdminClusterAutoRepairConfigOutputWithContext(ctx context.Context) VmwareAdminClusterAutoRepairConfigOutput { + return o +} + +func (o VmwareAdminClusterAutoRepairConfigOutput) ToVmwareAdminClusterAutoRepairConfigPtrOutput() VmwareAdminClusterAutoRepairConfigPtrOutput { + return o.ToVmwareAdminClusterAutoRepairConfigPtrOutputWithContext(context.Background()) +} + +func (o VmwareAdminClusterAutoRepairConfigOutput) ToVmwareAdminClusterAutoRepairConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterAutoRepairConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v VmwareAdminClusterAutoRepairConfig) *VmwareAdminClusterAutoRepairConfig { + return &v + }).(VmwareAdminClusterAutoRepairConfigPtrOutput) +} + +// Whether auto repair is enabled. +func (o VmwareAdminClusterAutoRepairConfigOutput) Enabled() pulumi.BoolOutput { + return o.ApplyT(func(v VmwareAdminClusterAutoRepairConfig) bool { return v.Enabled }).(pulumi.BoolOutput) +} + +type VmwareAdminClusterAutoRepairConfigPtrOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterAutoRepairConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterAutoRepairConfig)(nil)).Elem() +} + +func (o VmwareAdminClusterAutoRepairConfigPtrOutput) ToVmwareAdminClusterAutoRepairConfigPtrOutput() VmwareAdminClusterAutoRepairConfigPtrOutput { + return o +} + +func (o VmwareAdminClusterAutoRepairConfigPtrOutput) ToVmwareAdminClusterAutoRepairConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterAutoRepairConfigPtrOutput { + return o +} + +func (o VmwareAdminClusterAutoRepairConfigPtrOutput) Elem() VmwareAdminClusterAutoRepairConfigOutput { + return o.ApplyT(func(v *VmwareAdminClusterAutoRepairConfig) VmwareAdminClusterAutoRepairConfig { + if v != nil { + return *v + } + var ret VmwareAdminClusterAutoRepairConfig + return ret + }).(VmwareAdminClusterAutoRepairConfigOutput) +} + +// Whether auto repair is enabled. +func (o VmwareAdminClusterAutoRepairConfigPtrOutput) Enabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterAutoRepairConfig) *bool { + if v == nil { + return nil + } + return &v.Enabled + }).(pulumi.BoolPtrOutput) +} + +type VmwareAdminClusterControlPlaneNode struct { + // The number of vCPUs for the control-plane node of the admin cluster. + Cpus *int `pulumi:"cpus"` + // The number of mebibytes of memory for the control-plane node of the admin cluster. + Memory *int `pulumi:"memory"` + // The number of control plane nodes for this VMware admin cluster. + Replicas *int `pulumi:"replicas"` +} + +// VmwareAdminClusterControlPlaneNodeInput is an input type that accepts VmwareAdminClusterControlPlaneNodeArgs and VmwareAdminClusterControlPlaneNodeOutput values. +// You can construct a concrete instance of `VmwareAdminClusterControlPlaneNodeInput` via: +// +// VmwareAdminClusterControlPlaneNodeArgs{...} +type VmwareAdminClusterControlPlaneNodeInput interface { + pulumi.Input + + ToVmwareAdminClusterControlPlaneNodeOutput() VmwareAdminClusterControlPlaneNodeOutput + ToVmwareAdminClusterControlPlaneNodeOutputWithContext(context.Context) VmwareAdminClusterControlPlaneNodeOutput +} + +type VmwareAdminClusterControlPlaneNodeArgs struct { + // The number of vCPUs for the control-plane node of the admin cluster. + Cpus pulumi.IntPtrInput `pulumi:"cpus"` + // The number of mebibytes of memory for the control-plane node of the admin cluster. + Memory pulumi.IntPtrInput `pulumi:"memory"` + // The number of control plane nodes for this VMware admin cluster. + Replicas pulumi.IntPtrInput `pulumi:"replicas"` +} + +func (VmwareAdminClusterControlPlaneNodeArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterControlPlaneNode)(nil)).Elem() +} + +func (i VmwareAdminClusterControlPlaneNodeArgs) ToVmwareAdminClusterControlPlaneNodeOutput() VmwareAdminClusterControlPlaneNodeOutput { + return i.ToVmwareAdminClusterControlPlaneNodeOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterControlPlaneNodeArgs) ToVmwareAdminClusterControlPlaneNodeOutputWithContext(ctx context.Context) VmwareAdminClusterControlPlaneNodeOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterControlPlaneNodeOutput) +} + +func (i VmwareAdminClusterControlPlaneNodeArgs) ToVmwareAdminClusterControlPlaneNodePtrOutput() VmwareAdminClusterControlPlaneNodePtrOutput { + return i.ToVmwareAdminClusterControlPlaneNodePtrOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterControlPlaneNodeArgs) ToVmwareAdminClusterControlPlaneNodePtrOutputWithContext(ctx context.Context) VmwareAdminClusterControlPlaneNodePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterControlPlaneNodeOutput).ToVmwareAdminClusterControlPlaneNodePtrOutputWithContext(ctx) +} + +// VmwareAdminClusterControlPlaneNodePtrInput is an input type that accepts VmwareAdminClusterControlPlaneNodeArgs, VmwareAdminClusterControlPlaneNodePtr and VmwareAdminClusterControlPlaneNodePtrOutput values. +// You can construct a concrete instance of `VmwareAdminClusterControlPlaneNodePtrInput` via: +// +// VmwareAdminClusterControlPlaneNodeArgs{...} +// +// or: +// +// nil +type VmwareAdminClusterControlPlaneNodePtrInput interface { + pulumi.Input + + ToVmwareAdminClusterControlPlaneNodePtrOutput() VmwareAdminClusterControlPlaneNodePtrOutput + ToVmwareAdminClusterControlPlaneNodePtrOutputWithContext(context.Context) VmwareAdminClusterControlPlaneNodePtrOutput +} + +type vmwareAdminClusterControlPlaneNodePtrType VmwareAdminClusterControlPlaneNodeArgs + +func VmwareAdminClusterControlPlaneNodePtr(v *VmwareAdminClusterControlPlaneNodeArgs) VmwareAdminClusterControlPlaneNodePtrInput { + return (*vmwareAdminClusterControlPlaneNodePtrType)(v) +} + +func (*vmwareAdminClusterControlPlaneNodePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterControlPlaneNode)(nil)).Elem() +} + +func (i *vmwareAdminClusterControlPlaneNodePtrType) ToVmwareAdminClusterControlPlaneNodePtrOutput() VmwareAdminClusterControlPlaneNodePtrOutput { + return i.ToVmwareAdminClusterControlPlaneNodePtrOutputWithContext(context.Background()) +} + +func (i *vmwareAdminClusterControlPlaneNodePtrType) ToVmwareAdminClusterControlPlaneNodePtrOutputWithContext(ctx context.Context) VmwareAdminClusterControlPlaneNodePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterControlPlaneNodePtrOutput) +} + +type VmwareAdminClusterControlPlaneNodeOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterControlPlaneNodeOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterControlPlaneNode)(nil)).Elem() +} + +func (o VmwareAdminClusterControlPlaneNodeOutput) ToVmwareAdminClusterControlPlaneNodeOutput() VmwareAdminClusterControlPlaneNodeOutput { + return o +} + +func (o VmwareAdminClusterControlPlaneNodeOutput) ToVmwareAdminClusterControlPlaneNodeOutputWithContext(ctx context.Context) VmwareAdminClusterControlPlaneNodeOutput { + return o +} + +func (o VmwareAdminClusterControlPlaneNodeOutput) ToVmwareAdminClusterControlPlaneNodePtrOutput() VmwareAdminClusterControlPlaneNodePtrOutput { + return o.ToVmwareAdminClusterControlPlaneNodePtrOutputWithContext(context.Background()) +} + +func (o VmwareAdminClusterControlPlaneNodeOutput) ToVmwareAdminClusterControlPlaneNodePtrOutputWithContext(ctx context.Context) VmwareAdminClusterControlPlaneNodePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v VmwareAdminClusterControlPlaneNode) *VmwareAdminClusterControlPlaneNode { + return &v + }).(VmwareAdminClusterControlPlaneNodePtrOutput) +} + +// The number of vCPUs for the control-plane node of the admin cluster. +func (o VmwareAdminClusterControlPlaneNodeOutput) Cpus() pulumi.IntPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterControlPlaneNode) *int { return v.Cpus }).(pulumi.IntPtrOutput) +} + +// The number of mebibytes of memory for the control-plane node of the admin cluster. +func (o VmwareAdminClusterControlPlaneNodeOutput) Memory() pulumi.IntPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterControlPlaneNode) *int { return v.Memory }).(pulumi.IntPtrOutput) +} + +// The number of control plane nodes for this VMware admin cluster. +func (o VmwareAdminClusterControlPlaneNodeOutput) Replicas() pulumi.IntPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterControlPlaneNode) *int { return v.Replicas }).(pulumi.IntPtrOutput) +} + +type VmwareAdminClusterControlPlaneNodePtrOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterControlPlaneNodePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterControlPlaneNode)(nil)).Elem() +} + +func (o VmwareAdminClusterControlPlaneNodePtrOutput) ToVmwareAdminClusterControlPlaneNodePtrOutput() VmwareAdminClusterControlPlaneNodePtrOutput { + return o +} + +func (o VmwareAdminClusterControlPlaneNodePtrOutput) ToVmwareAdminClusterControlPlaneNodePtrOutputWithContext(ctx context.Context) VmwareAdminClusterControlPlaneNodePtrOutput { + return o +} + +func (o VmwareAdminClusterControlPlaneNodePtrOutput) Elem() VmwareAdminClusterControlPlaneNodeOutput { + return o.ApplyT(func(v *VmwareAdminClusterControlPlaneNode) VmwareAdminClusterControlPlaneNode { + if v != nil { + return *v + } + var ret VmwareAdminClusterControlPlaneNode + return ret + }).(VmwareAdminClusterControlPlaneNodeOutput) +} + +// The number of vCPUs for the control-plane node of the admin cluster. +func (o VmwareAdminClusterControlPlaneNodePtrOutput) Cpus() pulumi.IntPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterControlPlaneNode) *int { + if v == nil { + return nil + } + return v.Cpus + }).(pulumi.IntPtrOutput) +} + +// The number of mebibytes of memory for the control-plane node of the admin cluster. +func (o VmwareAdminClusterControlPlaneNodePtrOutput) Memory() pulumi.IntPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterControlPlaneNode) *int { + if v == nil { + return nil + } + return v.Memory + }).(pulumi.IntPtrOutput) +} + +// The number of control plane nodes for this VMware admin cluster. +func (o VmwareAdminClusterControlPlaneNodePtrOutput) Replicas() pulumi.IntPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterControlPlaneNode) *int { + if v == nil { + return nil + } + return v.Replicas + }).(pulumi.IntPtrOutput) +} + +type VmwareAdminClusterFleet struct { + // (Output) + // The name of the managed Fleet Membership resource associated to this cluster. + // Membership names are formatted as + // `projects//locations//memberships/`. + Membership *string `pulumi:"membership"` +} + +// VmwareAdminClusterFleetInput is an input type that accepts VmwareAdminClusterFleetArgs and VmwareAdminClusterFleetOutput values. +// You can construct a concrete instance of `VmwareAdminClusterFleetInput` via: +// +// VmwareAdminClusterFleetArgs{...} +type VmwareAdminClusterFleetInput interface { + pulumi.Input + + ToVmwareAdminClusterFleetOutput() VmwareAdminClusterFleetOutput + ToVmwareAdminClusterFleetOutputWithContext(context.Context) VmwareAdminClusterFleetOutput +} + +type VmwareAdminClusterFleetArgs struct { + // (Output) + // The name of the managed Fleet Membership resource associated to this cluster. + // Membership names are formatted as + // `projects//locations//memberships/`. + Membership pulumi.StringPtrInput `pulumi:"membership"` +} + +func (VmwareAdminClusterFleetArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterFleet)(nil)).Elem() +} + +func (i VmwareAdminClusterFleetArgs) ToVmwareAdminClusterFleetOutput() VmwareAdminClusterFleetOutput { + return i.ToVmwareAdminClusterFleetOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterFleetArgs) ToVmwareAdminClusterFleetOutputWithContext(ctx context.Context) VmwareAdminClusterFleetOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterFleetOutput) +} + +// VmwareAdminClusterFleetArrayInput is an input type that accepts VmwareAdminClusterFleetArray and VmwareAdminClusterFleetArrayOutput values. +// You can construct a concrete instance of `VmwareAdminClusterFleetArrayInput` via: +// +// VmwareAdminClusterFleetArray{ VmwareAdminClusterFleetArgs{...} } +type VmwareAdminClusterFleetArrayInput interface { + pulumi.Input + + ToVmwareAdminClusterFleetArrayOutput() VmwareAdminClusterFleetArrayOutput + ToVmwareAdminClusterFleetArrayOutputWithContext(context.Context) VmwareAdminClusterFleetArrayOutput +} + +type VmwareAdminClusterFleetArray []VmwareAdminClusterFleetInput + +func (VmwareAdminClusterFleetArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]VmwareAdminClusterFleet)(nil)).Elem() +} + +func (i VmwareAdminClusterFleetArray) ToVmwareAdminClusterFleetArrayOutput() VmwareAdminClusterFleetArrayOutput { + return i.ToVmwareAdminClusterFleetArrayOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterFleetArray) ToVmwareAdminClusterFleetArrayOutputWithContext(ctx context.Context) VmwareAdminClusterFleetArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterFleetArrayOutput) +} + +type VmwareAdminClusterFleetOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterFleetOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterFleet)(nil)).Elem() +} + +func (o VmwareAdminClusterFleetOutput) ToVmwareAdminClusterFleetOutput() VmwareAdminClusterFleetOutput { + return o +} + +func (o VmwareAdminClusterFleetOutput) ToVmwareAdminClusterFleetOutputWithContext(ctx context.Context) VmwareAdminClusterFleetOutput { + return o +} + +// (Output) +// The name of the managed Fleet Membership resource associated to this cluster. +// Membership names are formatted as +// `projects//locations//memberships/`. +func (o VmwareAdminClusterFleetOutput) Membership() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterFleet) *string { return v.Membership }).(pulumi.StringPtrOutput) +} + +type VmwareAdminClusterFleetArrayOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterFleetArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]VmwareAdminClusterFleet)(nil)).Elem() +} + +func (o VmwareAdminClusterFleetArrayOutput) ToVmwareAdminClusterFleetArrayOutput() VmwareAdminClusterFleetArrayOutput { + return o +} + +func (o VmwareAdminClusterFleetArrayOutput) ToVmwareAdminClusterFleetArrayOutputWithContext(ctx context.Context) VmwareAdminClusterFleetArrayOutput { + return o +} + +func (o VmwareAdminClusterFleetArrayOutput) Index(i pulumi.IntInput) VmwareAdminClusterFleetOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) VmwareAdminClusterFleet { + return vs[0].([]VmwareAdminClusterFleet)[vs[1].(int)] + }).(VmwareAdminClusterFleetOutput) +} + +type VmwareAdminClusterLoadBalancer struct { + // Configuration for F5 Big IP typed load balancers. + // Structure is documented below. + F5Config *VmwareAdminClusterLoadBalancerF5Config `pulumi:"f5Config"` + // Manually configured load balancers. + // Structure is documented below. + ManualLbConfig *VmwareAdminClusterLoadBalancerManualLbConfig `pulumi:"manualLbConfig"` + // Metal LB load balancers. + // Structure is documented below. + MetalLbConfig *VmwareAdminClusterLoadBalancerMetalLbConfig `pulumi:"metalLbConfig"` + // Specified the VMware Load Balancer Config + // Structure is documented below. + VipConfig VmwareAdminClusterLoadBalancerVipConfig `pulumi:"vipConfig"` +} + +// VmwareAdminClusterLoadBalancerInput is an input type that accepts VmwareAdminClusterLoadBalancerArgs and VmwareAdminClusterLoadBalancerOutput values. +// You can construct a concrete instance of `VmwareAdminClusterLoadBalancerInput` via: +// +// VmwareAdminClusterLoadBalancerArgs{...} +type VmwareAdminClusterLoadBalancerInput interface { + pulumi.Input + + ToVmwareAdminClusterLoadBalancerOutput() VmwareAdminClusterLoadBalancerOutput + ToVmwareAdminClusterLoadBalancerOutputWithContext(context.Context) VmwareAdminClusterLoadBalancerOutput +} + +type VmwareAdminClusterLoadBalancerArgs struct { + // Configuration for F5 Big IP typed load balancers. + // Structure is documented below. + F5Config VmwareAdminClusterLoadBalancerF5ConfigPtrInput `pulumi:"f5Config"` + // Manually configured load balancers. + // Structure is documented below. + ManualLbConfig VmwareAdminClusterLoadBalancerManualLbConfigPtrInput `pulumi:"manualLbConfig"` + // Metal LB load balancers. + // Structure is documented below. + MetalLbConfig VmwareAdminClusterLoadBalancerMetalLbConfigPtrInput `pulumi:"metalLbConfig"` + // Specified the VMware Load Balancer Config + // Structure is documented below. + VipConfig VmwareAdminClusterLoadBalancerVipConfigInput `pulumi:"vipConfig"` +} + +func (VmwareAdminClusterLoadBalancerArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterLoadBalancer)(nil)).Elem() +} + +func (i VmwareAdminClusterLoadBalancerArgs) ToVmwareAdminClusterLoadBalancerOutput() VmwareAdminClusterLoadBalancerOutput { + return i.ToVmwareAdminClusterLoadBalancerOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterLoadBalancerArgs) ToVmwareAdminClusterLoadBalancerOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterLoadBalancerOutput) +} + +func (i VmwareAdminClusterLoadBalancerArgs) ToVmwareAdminClusterLoadBalancerPtrOutput() VmwareAdminClusterLoadBalancerPtrOutput { + return i.ToVmwareAdminClusterLoadBalancerPtrOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterLoadBalancerArgs) ToVmwareAdminClusterLoadBalancerPtrOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterLoadBalancerOutput).ToVmwareAdminClusterLoadBalancerPtrOutputWithContext(ctx) +} + +// VmwareAdminClusterLoadBalancerPtrInput is an input type that accepts VmwareAdminClusterLoadBalancerArgs, VmwareAdminClusterLoadBalancerPtr and VmwareAdminClusterLoadBalancerPtrOutput values. +// You can construct a concrete instance of `VmwareAdminClusterLoadBalancerPtrInput` via: +// +// VmwareAdminClusterLoadBalancerArgs{...} +// +// or: +// +// nil +type VmwareAdminClusterLoadBalancerPtrInput interface { + pulumi.Input + + ToVmwareAdminClusterLoadBalancerPtrOutput() VmwareAdminClusterLoadBalancerPtrOutput + ToVmwareAdminClusterLoadBalancerPtrOutputWithContext(context.Context) VmwareAdminClusterLoadBalancerPtrOutput +} + +type vmwareAdminClusterLoadBalancerPtrType VmwareAdminClusterLoadBalancerArgs + +func VmwareAdminClusterLoadBalancerPtr(v *VmwareAdminClusterLoadBalancerArgs) VmwareAdminClusterLoadBalancerPtrInput { + return (*vmwareAdminClusterLoadBalancerPtrType)(v) +} + +func (*vmwareAdminClusterLoadBalancerPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterLoadBalancer)(nil)).Elem() +} + +func (i *vmwareAdminClusterLoadBalancerPtrType) ToVmwareAdminClusterLoadBalancerPtrOutput() VmwareAdminClusterLoadBalancerPtrOutput { + return i.ToVmwareAdminClusterLoadBalancerPtrOutputWithContext(context.Background()) +} + +func (i *vmwareAdminClusterLoadBalancerPtrType) ToVmwareAdminClusterLoadBalancerPtrOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterLoadBalancerPtrOutput) +} + +type VmwareAdminClusterLoadBalancerOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterLoadBalancerOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterLoadBalancer)(nil)).Elem() +} + +func (o VmwareAdminClusterLoadBalancerOutput) ToVmwareAdminClusterLoadBalancerOutput() VmwareAdminClusterLoadBalancerOutput { + return o +} + +func (o VmwareAdminClusterLoadBalancerOutput) ToVmwareAdminClusterLoadBalancerOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerOutput { + return o +} + +func (o VmwareAdminClusterLoadBalancerOutput) ToVmwareAdminClusterLoadBalancerPtrOutput() VmwareAdminClusterLoadBalancerPtrOutput { + return o.ToVmwareAdminClusterLoadBalancerPtrOutputWithContext(context.Background()) +} + +func (o VmwareAdminClusterLoadBalancerOutput) ToVmwareAdminClusterLoadBalancerPtrOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v VmwareAdminClusterLoadBalancer) *VmwareAdminClusterLoadBalancer { + return &v + }).(VmwareAdminClusterLoadBalancerPtrOutput) +} + +// Configuration for F5 Big IP typed load balancers. +// Structure is documented below. +func (o VmwareAdminClusterLoadBalancerOutput) F5Config() VmwareAdminClusterLoadBalancerF5ConfigPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterLoadBalancer) *VmwareAdminClusterLoadBalancerF5Config { return v.F5Config }).(VmwareAdminClusterLoadBalancerF5ConfigPtrOutput) +} + +// Manually configured load balancers. +// Structure is documented below. +func (o VmwareAdminClusterLoadBalancerOutput) ManualLbConfig() VmwareAdminClusterLoadBalancerManualLbConfigPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterLoadBalancer) *VmwareAdminClusterLoadBalancerManualLbConfig { + return v.ManualLbConfig + }).(VmwareAdminClusterLoadBalancerManualLbConfigPtrOutput) +} + +// Metal LB load balancers. +// Structure is documented below. +func (o VmwareAdminClusterLoadBalancerOutput) MetalLbConfig() VmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterLoadBalancer) *VmwareAdminClusterLoadBalancerMetalLbConfig { + return v.MetalLbConfig + }).(VmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput) +} + +// Specified the VMware Load Balancer Config +// Structure is documented below. +func (o VmwareAdminClusterLoadBalancerOutput) VipConfig() VmwareAdminClusterLoadBalancerVipConfigOutput { + return o.ApplyT(func(v VmwareAdminClusterLoadBalancer) VmwareAdminClusterLoadBalancerVipConfig { return v.VipConfig }).(VmwareAdminClusterLoadBalancerVipConfigOutput) +} + +type VmwareAdminClusterLoadBalancerPtrOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterLoadBalancerPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterLoadBalancer)(nil)).Elem() +} + +func (o VmwareAdminClusterLoadBalancerPtrOutput) ToVmwareAdminClusterLoadBalancerPtrOutput() VmwareAdminClusterLoadBalancerPtrOutput { + return o +} + +func (o VmwareAdminClusterLoadBalancerPtrOutput) ToVmwareAdminClusterLoadBalancerPtrOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerPtrOutput { + return o +} + +func (o VmwareAdminClusterLoadBalancerPtrOutput) Elem() VmwareAdminClusterLoadBalancerOutput { + return o.ApplyT(func(v *VmwareAdminClusterLoadBalancer) VmwareAdminClusterLoadBalancer { + if v != nil { + return *v + } + var ret VmwareAdminClusterLoadBalancer + return ret + }).(VmwareAdminClusterLoadBalancerOutput) +} + +// Configuration for F5 Big IP typed load balancers. +// Structure is documented below. +func (o VmwareAdminClusterLoadBalancerPtrOutput) F5Config() VmwareAdminClusterLoadBalancerF5ConfigPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterLoadBalancer) *VmwareAdminClusterLoadBalancerF5Config { + if v == nil { + return nil + } + return v.F5Config + }).(VmwareAdminClusterLoadBalancerF5ConfigPtrOutput) +} + +// Manually configured load balancers. +// Structure is documented below. +func (o VmwareAdminClusterLoadBalancerPtrOutput) ManualLbConfig() VmwareAdminClusterLoadBalancerManualLbConfigPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterLoadBalancer) *VmwareAdminClusterLoadBalancerManualLbConfig { + if v == nil { + return nil + } + return v.ManualLbConfig + }).(VmwareAdminClusterLoadBalancerManualLbConfigPtrOutput) +} + +// Metal LB load balancers. +// Structure is documented below. +func (o VmwareAdminClusterLoadBalancerPtrOutput) MetalLbConfig() VmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterLoadBalancer) *VmwareAdminClusterLoadBalancerMetalLbConfig { + if v == nil { + return nil + } + return v.MetalLbConfig + }).(VmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput) +} + +// Specified the VMware Load Balancer Config +// Structure is documented below. +func (o VmwareAdminClusterLoadBalancerPtrOutput) VipConfig() VmwareAdminClusterLoadBalancerVipConfigPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterLoadBalancer) *VmwareAdminClusterLoadBalancerVipConfig { + if v == nil { + return nil + } + return &v.VipConfig + }).(VmwareAdminClusterLoadBalancerVipConfigPtrOutput) +} + +type VmwareAdminClusterLoadBalancerF5Config struct { + // The load balancer's IP address. + Address *string `pulumi:"address"` + // 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'. + Partition *string `pulumi:"partition"` + // The pool name. Only necessary, if using SNAT. + SnatPool *string `pulumi:"snatPool"` +} + +// VmwareAdminClusterLoadBalancerF5ConfigInput is an input type that accepts VmwareAdminClusterLoadBalancerF5ConfigArgs and VmwareAdminClusterLoadBalancerF5ConfigOutput values. +// You can construct a concrete instance of `VmwareAdminClusterLoadBalancerF5ConfigInput` via: +// +// VmwareAdminClusterLoadBalancerF5ConfigArgs{...} +type VmwareAdminClusterLoadBalancerF5ConfigInput interface { + pulumi.Input + + ToVmwareAdminClusterLoadBalancerF5ConfigOutput() VmwareAdminClusterLoadBalancerF5ConfigOutput + ToVmwareAdminClusterLoadBalancerF5ConfigOutputWithContext(context.Context) VmwareAdminClusterLoadBalancerF5ConfigOutput +} + +type VmwareAdminClusterLoadBalancerF5ConfigArgs struct { + // The load balancer's IP address. + Address pulumi.StringPtrInput `pulumi:"address"` + // 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'. + Partition pulumi.StringPtrInput `pulumi:"partition"` + // The pool name. Only necessary, if using SNAT. + SnatPool pulumi.StringPtrInput `pulumi:"snatPool"` +} + +func (VmwareAdminClusterLoadBalancerF5ConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterLoadBalancerF5Config)(nil)).Elem() +} + +func (i VmwareAdminClusterLoadBalancerF5ConfigArgs) ToVmwareAdminClusterLoadBalancerF5ConfigOutput() VmwareAdminClusterLoadBalancerF5ConfigOutput { + return i.ToVmwareAdminClusterLoadBalancerF5ConfigOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterLoadBalancerF5ConfigArgs) ToVmwareAdminClusterLoadBalancerF5ConfigOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerF5ConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterLoadBalancerF5ConfigOutput) +} + +func (i VmwareAdminClusterLoadBalancerF5ConfigArgs) ToVmwareAdminClusterLoadBalancerF5ConfigPtrOutput() VmwareAdminClusterLoadBalancerF5ConfigPtrOutput { + return i.ToVmwareAdminClusterLoadBalancerF5ConfigPtrOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterLoadBalancerF5ConfigArgs) ToVmwareAdminClusterLoadBalancerF5ConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerF5ConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterLoadBalancerF5ConfigOutput).ToVmwareAdminClusterLoadBalancerF5ConfigPtrOutputWithContext(ctx) +} + +// VmwareAdminClusterLoadBalancerF5ConfigPtrInput is an input type that accepts VmwareAdminClusterLoadBalancerF5ConfigArgs, VmwareAdminClusterLoadBalancerF5ConfigPtr and VmwareAdminClusterLoadBalancerF5ConfigPtrOutput values. +// You can construct a concrete instance of `VmwareAdminClusterLoadBalancerF5ConfigPtrInput` via: +// +// VmwareAdminClusterLoadBalancerF5ConfigArgs{...} +// +// or: +// +// nil +type VmwareAdminClusterLoadBalancerF5ConfigPtrInput interface { + pulumi.Input + + ToVmwareAdminClusterLoadBalancerF5ConfigPtrOutput() VmwareAdminClusterLoadBalancerF5ConfigPtrOutput + ToVmwareAdminClusterLoadBalancerF5ConfigPtrOutputWithContext(context.Context) VmwareAdminClusterLoadBalancerF5ConfigPtrOutput +} + +type vmwareAdminClusterLoadBalancerF5ConfigPtrType VmwareAdminClusterLoadBalancerF5ConfigArgs + +func VmwareAdminClusterLoadBalancerF5ConfigPtr(v *VmwareAdminClusterLoadBalancerF5ConfigArgs) VmwareAdminClusterLoadBalancerF5ConfigPtrInput { + return (*vmwareAdminClusterLoadBalancerF5ConfigPtrType)(v) +} + +func (*vmwareAdminClusterLoadBalancerF5ConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterLoadBalancerF5Config)(nil)).Elem() +} + +func (i *vmwareAdminClusterLoadBalancerF5ConfigPtrType) ToVmwareAdminClusterLoadBalancerF5ConfigPtrOutput() VmwareAdminClusterLoadBalancerF5ConfigPtrOutput { + return i.ToVmwareAdminClusterLoadBalancerF5ConfigPtrOutputWithContext(context.Background()) +} + +func (i *vmwareAdminClusterLoadBalancerF5ConfigPtrType) ToVmwareAdminClusterLoadBalancerF5ConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerF5ConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterLoadBalancerF5ConfigPtrOutput) +} + +type VmwareAdminClusterLoadBalancerF5ConfigOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterLoadBalancerF5ConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterLoadBalancerF5Config)(nil)).Elem() +} + +func (o VmwareAdminClusterLoadBalancerF5ConfigOutput) ToVmwareAdminClusterLoadBalancerF5ConfigOutput() VmwareAdminClusterLoadBalancerF5ConfigOutput { + return o +} + +func (o VmwareAdminClusterLoadBalancerF5ConfigOutput) ToVmwareAdminClusterLoadBalancerF5ConfigOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerF5ConfigOutput { + return o +} + +func (o VmwareAdminClusterLoadBalancerF5ConfigOutput) ToVmwareAdminClusterLoadBalancerF5ConfigPtrOutput() VmwareAdminClusterLoadBalancerF5ConfigPtrOutput { + return o.ToVmwareAdminClusterLoadBalancerF5ConfigPtrOutputWithContext(context.Background()) +} + +func (o VmwareAdminClusterLoadBalancerF5ConfigOutput) ToVmwareAdminClusterLoadBalancerF5ConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerF5ConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v VmwareAdminClusterLoadBalancerF5Config) *VmwareAdminClusterLoadBalancerF5Config { + return &v + }).(VmwareAdminClusterLoadBalancerF5ConfigPtrOutput) +} + +// The load balancer's IP address. +func (o VmwareAdminClusterLoadBalancerF5ConfigOutput) Address() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterLoadBalancerF5Config) *string { return v.Address }).(pulumi.StringPtrOutput) +} + +// 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'. +func (o VmwareAdminClusterLoadBalancerF5ConfigOutput) Partition() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterLoadBalancerF5Config) *string { return v.Partition }).(pulumi.StringPtrOutput) +} + +// The pool name. Only necessary, if using SNAT. +func (o VmwareAdminClusterLoadBalancerF5ConfigOutput) SnatPool() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterLoadBalancerF5Config) *string { return v.SnatPool }).(pulumi.StringPtrOutput) +} + +type VmwareAdminClusterLoadBalancerF5ConfigPtrOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterLoadBalancerF5ConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterLoadBalancerF5Config)(nil)).Elem() +} + +func (o VmwareAdminClusterLoadBalancerF5ConfigPtrOutput) ToVmwareAdminClusterLoadBalancerF5ConfigPtrOutput() VmwareAdminClusterLoadBalancerF5ConfigPtrOutput { + return o +} + +func (o VmwareAdminClusterLoadBalancerF5ConfigPtrOutput) ToVmwareAdminClusterLoadBalancerF5ConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerF5ConfigPtrOutput { + return o +} + +func (o VmwareAdminClusterLoadBalancerF5ConfigPtrOutput) Elem() VmwareAdminClusterLoadBalancerF5ConfigOutput { + return o.ApplyT(func(v *VmwareAdminClusterLoadBalancerF5Config) VmwareAdminClusterLoadBalancerF5Config { + if v != nil { + return *v + } + var ret VmwareAdminClusterLoadBalancerF5Config + return ret + }).(VmwareAdminClusterLoadBalancerF5ConfigOutput) +} + +// The load balancer's IP address. +func (o VmwareAdminClusterLoadBalancerF5ConfigPtrOutput) Address() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterLoadBalancerF5Config) *string { + if v == nil { + return nil + } + return v.Address + }).(pulumi.StringPtrOutput) +} + +// 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'. +func (o VmwareAdminClusterLoadBalancerF5ConfigPtrOutput) Partition() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterLoadBalancerF5Config) *string { + if v == nil { + return nil + } + return v.Partition + }).(pulumi.StringPtrOutput) +} + +// The pool name. Only necessary, if using SNAT. +func (o VmwareAdminClusterLoadBalancerF5ConfigPtrOutput) SnatPool() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterLoadBalancerF5Config) *string { + if v == nil { + return nil + } + return v.SnatPool + }).(pulumi.StringPtrOutput) +} + +type VmwareAdminClusterLoadBalancerManualLbConfig struct { + // NodePort for add-ons server in the admin cluster. + AddonsNodePort *int `pulumi:"addonsNodePort"` + // NodePort for control plane service. The Kubernetes API server in the admin + // cluster is implemented as a Service of type NodePort (ex. 30968). + ControlPlaneNodePort *int `pulumi:"controlPlaneNodePort"` + // NodePort for ingress service's http. The ingress service in the admin + // cluster is implemented as a Service of type NodePort (ex. 32527). + IngressHttpNodePort *int `pulumi:"ingressHttpNodePort"` + // NodePort for ingress service's https. The ingress service in the admin + // cluster is implemented as a Service of type NodePort (ex. 30139). + IngressHttpsNodePort *int `pulumi:"ingressHttpsNodePort"` + // NodePort for konnectivity server service running as a sidecar in each + // kube-apiserver pod (ex. 30564). + KonnectivityServerNodePort *int `pulumi:"konnectivityServerNodePort"` +} + +// VmwareAdminClusterLoadBalancerManualLbConfigInput is an input type that accepts VmwareAdminClusterLoadBalancerManualLbConfigArgs and VmwareAdminClusterLoadBalancerManualLbConfigOutput values. +// You can construct a concrete instance of `VmwareAdminClusterLoadBalancerManualLbConfigInput` via: +// +// VmwareAdminClusterLoadBalancerManualLbConfigArgs{...} +type VmwareAdminClusterLoadBalancerManualLbConfigInput interface { + pulumi.Input + + ToVmwareAdminClusterLoadBalancerManualLbConfigOutput() VmwareAdminClusterLoadBalancerManualLbConfigOutput + ToVmwareAdminClusterLoadBalancerManualLbConfigOutputWithContext(context.Context) VmwareAdminClusterLoadBalancerManualLbConfigOutput +} + +type VmwareAdminClusterLoadBalancerManualLbConfigArgs struct { + // NodePort for add-ons server in the admin cluster. + AddonsNodePort pulumi.IntPtrInput `pulumi:"addonsNodePort"` + // NodePort for control plane service. The Kubernetes API server in the admin + // cluster is implemented as a Service of type NodePort (ex. 30968). + ControlPlaneNodePort pulumi.IntPtrInput `pulumi:"controlPlaneNodePort"` + // NodePort for ingress service's http. The ingress service in the admin + // cluster is implemented as a Service of type NodePort (ex. 32527). + IngressHttpNodePort pulumi.IntPtrInput `pulumi:"ingressHttpNodePort"` + // NodePort for ingress service's https. The ingress service in the admin + // cluster is implemented as a Service of type NodePort (ex. 30139). + IngressHttpsNodePort pulumi.IntPtrInput `pulumi:"ingressHttpsNodePort"` + // NodePort for konnectivity server service running as a sidecar in each + // kube-apiserver pod (ex. 30564). + KonnectivityServerNodePort pulumi.IntPtrInput `pulumi:"konnectivityServerNodePort"` +} + +func (VmwareAdminClusterLoadBalancerManualLbConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterLoadBalancerManualLbConfig)(nil)).Elem() +} + +func (i VmwareAdminClusterLoadBalancerManualLbConfigArgs) ToVmwareAdminClusterLoadBalancerManualLbConfigOutput() VmwareAdminClusterLoadBalancerManualLbConfigOutput { + return i.ToVmwareAdminClusterLoadBalancerManualLbConfigOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterLoadBalancerManualLbConfigArgs) ToVmwareAdminClusterLoadBalancerManualLbConfigOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerManualLbConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterLoadBalancerManualLbConfigOutput) +} + +func (i VmwareAdminClusterLoadBalancerManualLbConfigArgs) ToVmwareAdminClusterLoadBalancerManualLbConfigPtrOutput() VmwareAdminClusterLoadBalancerManualLbConfigPtrOutput { + return i.ToVmwareAdminClusterLoadBalancerManualLbConfigPtrOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterLoadBalancerManualLbConfigArgs) ToVmwareAdminClusterLoadBalancerManualLbConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerManualLbConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterLoadBalancerManualLbConfigOutput).ToVmwareAdminClusterLoadBalancerManualLbConfigPtrOutputWithContext(ctx) +} + +// VmwareAdminClusterLoadBalancerManualLbConfigPtrInput is an input type that accepts VmwareAdminClusterLoadBalancerManualLbConfigArgs, VmwareAdminClusterLoadBalancerManualLbConfigPtr and VmwareAdminClusterLoadBalancerManualLbConfigPtrOutput values. +// You can construct a concrete instance of `VmwareAdminClusterLoadBalancerManualLbConfigPtrInput` via: +// +// VmwareAdminClusterLoadBalancerManualLbConfigArgs{...} +// +// or: +// +// nil +type VmwareAdminClusterLoadBalancerManualLbConfigPtrInput interface { + pulumi.Input + + ToVmwareAdminClusterLoadBalancerManualLbConfigPtrOutput() VmwareAdminClusterLoadBalancerManualLbConfigPtrOutput + ToVmwareAdminClusterLoadBalancerManualLbConfigPtrOutputWithContext(context.Context) VmwareAdminClusterLoadBalancerManualLbConfigPtrOutput +} + +type vmwareAdminClusterLoadBalancerManualLbConfigPtrType VmwareAdminClusterLoadBalancerManualLbConfigArgs + +func VmwareAdminClusterLoadBalancerManualLbConfigPtr(v *VmwareAdminClusterLoadBalancerManualLbConfigArgs) VmwareAdminClusterLoadBalancerManualLbConfigPtrInput { + return (*vmwareAdminClusterLoadBalancerManualLbConfigPtrType)(v) +} + +func (*vmwareAdminClusterLoadBalancerManualLbConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterLoadBalancerManualLbConfig)(nil)).Elem() +} + +func (i *vmwareAdminClusterLoadBalancerManualLbConfigPtrType) ToVmwareAdminClusterLoadBalancerManualLbConfigPtrOutput() VmwareAdminClusterLoadBalancerManualLbConfigPtrOutput { + return i.ToVmwareAdminClusterLoadBalancerManualLbConfigPtrOutputWithContext(context.Background()) +} + +func (i *vmwareAdminClusterLoadBalancerManualLbConfigPtrType) ToVmwareAdminClusterLoadBalancerManualLbConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerManualLbConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterLoadBalancerManualLbConfigPtrOutput) +} + +type VmwareAdminClusterLoadBalancerManualLbConfigOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterLoadBalancerManualLbConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterLoadBalancerManualLbConfig)(nil)).Elem() +} + +func (o VmwareAdminClusterLoadBalancerManualLbConfigOutput) ToVmwareAdminClusterLoadBalancerManualLbConfigOutput() VmwareAdminClusterLoadBalancerManualLbConfigOutput { + return o +} + +func (o VmwareAdminClusterLoadBalancerManualLbConfigOutput) ToVmwareAdminClusterLoadBalancerManualLbConfigOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerManualLbConfigOutput { + return o +} + +func (o VmwareAdminClusterLoadBalancerManualLbConfigOutput) ToVmwareAdminClusterLoadBalancerManualLbConfigPtrOutput() VmwareAdminClusterLoadBalancerManualLbConfigPtrOutput { + return o.ToVmwareAdminClusterLoadBalancerManualLbConfigPtrOutputWithContext(context.Background()) +} + +func (o VmwareAdminClusterLoadBalancerManualLbConfigOutput) ToVmwareAdminClusterLoadBalancerManualLbConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerManualLbConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v VmwareAdminClusterLoadBalancerManualLbConfig) *VmwareAdminClusterLoadBalancerManualLbConfig { + return &v + }).(VmwareAdminClusterLoadBalancerManualLbConfigPtrOutput) +} + +// NodePort for add-ons server in the admin cluster. +func (o VmwareAdminClusterLoadBalancerManualLbConfigOutput) AddonsNodePort() pulumi.IntPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterLoadBalancerManualLbConfig) *int { return v.AddonsNodePort }).(pulumi.IntPtrOutput) +} + +// NodePort for control plane service. The Kubernetes API server in the admin +// cluster is implemented as a Service of type NodePort (ex. 30968). +func (o VmwareAdminClusterLoadBalancerManualLbConfigOutput) ControlPlaneNodePort() pulumi.IntPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterLoadBalancerManualLbConfig) *int { return v.ControlPlaneNodePort }).(pulumi.IntPtrOutput) +} + +// NodePort for ingress service's http. The ingress service in the admin +// cluster is implemented as a Service of type NodePort (ex. 32527). +func (o VmwareAdminClusterLoadBalancerManualLbConfigOutput) IngressHttpNodePort() pulumi.IntPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterLoadBalancerManualLbConfig) *int { return v.IngressHttpNodePort }).(pulumi.IntPtrOutput) +} + +// NodePort for ingress service's https. The ingress service in the admin +// cluster is implemented as a Service of type NodePort (ex. 30139). +func (o VmwareAdminClusterLoadBalancerManualLbConfigOutput) IngressHttpsNodePort() pulumi.IntPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterLoadBalancerManualLbConfig) *int { return v.IngressHttpsNodePort }).(pulumi.IntPtrOutput) +} + +// NodePort for konnectivity server service running as a sidecar in each +// kube-apiserver pod (ex. 30564). +func (o VmwareAdminClusterLoadBalancerManualLbConfigOutput) KonnectivityServerNodePort() pulumi.IntPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterLoadBalancerManualLbConfig) *int { return v.KonnectivityServerNodePort }).(pulumi.IntPtrOutput) +} + +type VmwareAdminClusterLoadBalancerManualLbConfigPtrOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterLoadBalancerManualLbConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterLoadBalancerManualLbConfig)(nil)).Elem() +} + +func (o VmwareAdminClusterLoadBalancerManualLbConfigPtrOutput) ToVmwareAdminClusterLoadBalancerManualLbConfigPtrOutput() VmwareAdminClusterLoadBalancerManualLbConfigPtrOutput { + return o +} + +func (o VmwareAdminClusterLoadBalancerManualLbConfigPtrOutput) ToVmwareAdminClusterLoadBalancerManualLbConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerManualLbConfigPtrOutput { + return o +} + +func (o VmwareAdminClusterLoadBalancerManualLbConfigPtrOutput) Elem() VmwareAdminClusterLoadBalancerManualLbConfigOutput { + return o.ApplyT(func(v *VmwareAdminClusterLoadBalancerManualLbConfig) VmwareAdminClusterLoadBalancerManualLbConfig { + if v != nil { + return *v + } + var ret VmwareAdminClusterLoadBalancerManualLbConfig + return ret + }).(VmwareAdminClusterLoadBalancerManualLbConfigOutput) +} + +// NodePort for add-ons server in the admin cluster. +func (o VmwareAdminClusterLoadBalancerManualLbConfigPtrOutput) AddonsNodePort() pulumi.IntPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterLoadBalancerManualLbConfig) *int { + if v == nil { + return nil + } + return v.AddonsNodePort + }).(pulumi.IntPtrOutput) +} + +// NodePort for control plane service. The Kubernetes API server in the admin +// cluster is implemented as a Service of type NodePort (ex. 30968). +func (o VmwareAdminClusterLoadBalancerManualLbConfigPtrOutput) ControlPlaneNodePort() pulumi.IntPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterLoadBalancerManualLbConfig) *int { + if v == nil { + return nil + } + return v.ControlPlaneNodePort + }).(pulumi.IntPtrOutput) +} + +// NodePort for ingress service's http. The ingress service in the admin +// cluster is implemented as a Service of type NodePort (ex. 32527). +func (o VmwareAdminClusterLoadBalancerManualLbConfigPtrOutput) IngressHttpNodePort() pulumi.IntPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterLoadBalancerManualLbConfig) *int { + if v == nil { + return nil + } + return v.IngressHttpNodePort + }).(pulumi.IntPtrOutput) +} + +// NodePort for ingress service's https. The ingress service in the admin +// cluster is implemented as a Service of type NodePort (ex. 30139). +func (o VmwareAdminClusterLoadBalancerManualLbConfigPtrOutput) IngressHttpsNodePort() pulumi.IntPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterLoadBalancerManualLbConfig) *int { + if v == nil { + return nil + } + return v.IngressHttpsNodePort + }).(pulumi.IntPtrOutput) +} + +// NodePort for konnectivity server service running as a sidecar in each +// kube-apiserver pod (ex. 30564). +func (o VmwareAdminClusterLoadBalancerManualLbConfigPtrOutput) KonnectivityServerNodePort() pulumi.IntPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterLoadBalancerManualLbConfig) *int { + if v == nil { + return nil + } + return v.KonnectivityServerNodePort + }).(pulumi.IntPtrOutput) +} + +type VmwareAdminClusterLoadBalancerMetalLbConfig struct { + // Metal LB is enabled. + Enabled *bool `pulumi:"enabled"` +} + +// VmwareAdminClusterLoadBalancerMetalLbConfigInput is an input type that accepts VmwareAdminClusterLoadBalancerMetalLbConfigArgs and VmwareAdminClusterLoadBalancerMetalLbConfigOutput values. +// You can construct a concrete instance of `VmwareAdminClusterLoadBalancerMetalLbConfigInput` via: +// +// VmwareAdminClusterLoadBalancerMetalLbConfigArgs{...} +type VmwareAdminClusterLoadBalancerMetalLbConfigInput interface { + pulumi.Input + + ToVmwareAdminClusterLoadBalancerMetalLbConfigOutput() VmwareAdminClusterLoadBalancerMetalLbConfigOutput + ToVmwareAdminClusterLoadBalancerMetalLbConfigOutputWithContext(context.Context) VmwareAdminClusterLoadBalancerMetalLbConfigOutput +} + +type VmwareAdminClusterLoadBalancerMetalLbConfigArgs struct { + // Metal LB is enabled. + Enabled pulumi.BoolPtrInput `pulumi:"enabled"` +} + +func (VmwareAdminClusterLoadBalancerMetalLbConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterLoadBalancerMetalLbConfig)(nil)).Elem() +} + +func (i VmwareAdminClusterLoadBalancerMetalLbConfigArgs) ToVmwareAdminClusterLoadBalancerMetalLbConfigOutput() VmwareAdminClusterLoadBalancerMetalLbConfigOutput { + return i.ToVmwareAdminClusterLoadBalancerMetalLbConfigOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterLoadBalancerMetalLbConfigArgs) ToVmwareAdminClusterLoadBalancerMetalLbConfigOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerMetalLbConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterLoadBalancerMetalLbConfigOutput) +} + +func (i VmwareAdminClusterLoadBalancerMetalLbConfigArgs) ToVmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput() VmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput { + return i.ToVmwareAdminClusterLoadBalancerMetalLbConfigPtrOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterLoadBalancerMetalLbConfigArgs) ToVmwareAdminClusterLoadBalancerMetalLbConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterLoadBalancerMetalLbConfigOutput).ToVmwareAdminClusterLoadBalancerMetalLbConfigPtrOutputWithContext(ctx) +} + +// VmwareAdminClusterLoadBalancerMetalLbConfigPtrInput is an input type that accepts VmwareAdminClusterLoadBalancerMetalLbConfigArgs, VmwareAdminClusterLoadBalancerMetalLbConfigPtr and VmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput values. +// You can construct a concrete instance of `VmwareAdminClusterLoadBalancerMetalLbConfigPtrInput` via: +// +// VmwareAdminClusterLoadBalancerMetalLbConfigArgs{...} +// +// or: +// +// nil +type VmwareAdminClusterLoadBalancerMetalLbConfigPtrInput interface { + pulumi.Input + + ToVmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput() VmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput + ToVmwareAdminClusterLoadBalancerMetalLbConfigPtrOutputWithContext(context.Context) VmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput +} + +type vmwareAdminClusterLoadBalancerMetalLbConfigPtrType VmwareAdminClusterLoadBalancerMetalLbConfigArgs + +func VmwareAdminClusterLoadBalancerMetalLbConfigPtr(v *VmwareAdminClusterLoadBalancerMetalLbConfigArgs) VmwareAdminClusterLoadBalancerMetalLbConfigPtrInput { + return (*vmwareAdminClusterLoadBalancerMetalLbConfigPtrType)(v) +} + +func (*vmwareAdminClusterLoadBalancerMetalLbConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterLoadBalancerMetalLbConfig)(nil)).Elem() +} + +func (i *vmwareAdminClusterLoadBalancerMetalLbConfigPtrType) ToVmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput() VmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput { + return i.ToVmwareAdminClusterLoadBalancerMetalLbConfigPtrOutputWithContext(context.Background()) +} + +func (i *vmwareAdminClusterLoadBalancerMetalLbConfigPtrType) ToVmwareAdminClusterLoadBalancerMetalLbConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput) +} + +type VmwareAdminClusterLoadBalancerMetalLbConfigOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterLoadBalancerMetalLbConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterLoadBalancerMetalLbConfig)(nil)).Elem() +} + +func (o VmwareAdminClusterLoadBalancerMetalLbConfigOutput) ToVmwareAdminClusterLoadBalancerMetalLbConfigOutput() VmwareAdminClusterLoadBalancerMetalLbConfigOutput { + return o +} + +func (o VmwareAdminClusterLoadBalancerMetalLbConfigOutput) ToVmwareAdminClusterLoadBalancerMetalLbConfigOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerMetalLbConfigOutput { + return o +} + +func (o VmwareAdminClusterLoadBalancerMetalLbConfigOutput) ToVmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput() VmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput { + return o.ToVmwareAdminClusterLoadBalancerMetalLbConfigPtrOutputWithContext(context.Background()) +} + +func (o VmwareAdminClusterLoadBalancerMetalLbConfigOutput) ToVmwareAdminClusterLoadBalancerMetalLbConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v VmwareAdminClusterLoadBalancerMetalLbConfig) *VmwareAdminClusterLoadBalancerMetalLbConfig { + return &v + }).(VmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput) +} + +// Metal LB is enabled. +func (o VmwareAdminClusterLoadBalancerMetalLbConfigOutput) Enabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterLoadBalancerMetalLbConfig) *bool { return v.Enabled }).(pulumi.BoolPtrOutput) +} + +type VmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterLoadBalancerMetalLbConfig)(nil)).Elem() +} + +func (o VmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput) ToVmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput() VmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput { + return o +} + +func (o VmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput) ToVmwareAdminClusterLoadBalancerMetalLbConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput { + return o +} + +func (o VmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput) Elem() VmwareAdminClusterLoadBalancerMetalLbConfigOutput { + return o.ApplyT(func(v *VmwareAdminClusterLoadBalancerMetalLbConfig) VmwareAdminClusterLoadBalancerMetalLbConfig { + if v != nil { + return *v + } + var ret VmwareAdminClusterLoadBalancerMetalLbConfig + return ret + }).(VmwareAdminClusterLoadBalancerMetalLbConfigOutput) +} + +// Metal LB is enabled. +func (o VmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput) Enabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterLoadBalancerMetalLbConfig) *bool { + if v == nil { + return nil + } + return v.Enabled + }).(pulumi.BoolPtrOutput) +} + +type VmwareAdminClusterLoadBalancerVipConfig struct { + // The VIP to configure the load balancer for add-ons. + // + // The `f5Config` block supports: + AddonsVip *string `pulumi:"addonsVip"` + // The VIP which you previously set aside for the Kubernetes + // API of this VMware Admin Cluster. + ControlPlaneVip string `pulumi:"controlPlaneVip"` +} + +// VmwareAdminClusterLoadBalancerVipConfigInput is an input type that accepts VmwareAdminClusterLoadBalancerVipConfigArgs and VmwareAdminClusterLoadBalancerVipConfigOutput values. +// You can construct a concrete instance of `VmwareAdminClusterLoadBalancerVipConfigInput` via: +// +// VmwareAdminClusterLoadBalancerVipConfigArgs{...} +type VmwareAdminClusterLoadBalancerVipConfigInput interface { + pulumi.Input + + ToVmwareAdminClusterLoadBalancerVipConfigOutput() VmwareAdminClusterLoadBalancerVipConfigOutput + ToVmwareAdminClusterLoadBalancerVipConfigOutputWithContext(context.Context) VmwareAdminClusterLoadBalancerVipConfigOutput +} + +type VmwareAdminClusterLoadBalancerVipConfigArgs struct { + // The VIP to configure the load balancer for add-ons. + // + // The `f5Config` block supports: + AddonsVip pulumi.StringPtrInput `pulumi:"addonsVip"` + // The VIP which you previously set aside for the Kubernetes + // API of this VMware Admin Cluster. + ControlPlaneVip pulumi.StringInput `pulumi:"controlPlaneVip"` +} + +func (VmwareAdminClusterLoadBalancerVipConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterLoadBalancerVipConfig)(nil)).Elem() +} + +func (i VmwareAdminClusterLoadBalancerVipConfigArgs) ToVmwareAdminClusterLoadBalancerVipConfigOutput() VmwareAdminClusterLoadBalancerVipConfigOutput { + return i.ToVmwareAdminClusterLoadBalancerVipConfigOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterLoadBalancerVipConfigArgs) ToVmwareAdminClusterLoadBalancerVipConfigOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerVipConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterLoadBalancerVipConfigOutput) +} + +func (i VmwareAdminClusterLoadBalancerVipConfigArgs) ToVmwareAdminClusterLoadBalancerVipConfigPtrOutput() VmwareAdminClusterLoadBalancerVipConfigPtrOutput { + return i.ToVmwareAdminClusterLoadBalancerVipConfigPtrOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterLoadBalancerVipConfigArgs) ToVmwareAdminClusterLoadBalancerVipConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerVipConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterLoadBalancerVipConfigOutput).ToVmwareAdminClusterLoadBalancerVipConfigPtrOutputWithContext(ctx) +} + +// VmwareAdminClusterLoadBalancerVipConfigPtrInput is an input type that accepts VmwareAdminClusterLoadBalancerVipConfigArgs, VmwareAdminClusterLoadBalancerVipConfigPtr and VmwareAdminClusterLoadBalancerVipConfigPtrOutput values. +// You can construct a concrete instance of `VmwareAdminClusterLoadBalancerVipConfigPtrInput` via: +// +// VmwareAdminClusterLoadBalancerVipConfigArgs{...} +// +// or: +// +// nil +type VmwareAdminClusterLoadBalancerVipConfigPtrInput interface { + pulumi.Input + + ToVmwareAdminClusterLoadBalancerVipConfigPtrOutput() VmwareAdminClusterLoadBalancerVipConfigPtrOutput + ToVmwareAdminClusterLoadBalancerVipConfigPtrOutputWithContext(context.Context) VmwareAdminClusterLoadBalancerVipConfigPtrOutput +} + +type vmwareAdminClusterLoadBalancerVipConfigPtrType VmwareAdminClusterLoadBalancerVipConfigArgs + +func VmwareAdminClusterLoadBalancerVipConfigPtr(v *VmwareAdminClusterLoadBalancerVipConfigArgs) VmwareAdminClusterLoadBalancerVipConfigPtrInput { + return (*vmwareAdminClusterLoadBalancerVipConfigPtrType)(v) +} + +func (*vmwareAdminClusterLoadBalancerVipConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterLoadBalancerVipConfig)(nil)).Elem() +} + +func (i *vmwareAdminClusterLoadBalancerVipConfigPtrType) ToVmwareAdminClusterLoadBalancerVipConfigPtrOutput() VmwareAdminClusterLoadBalancerVipConfigPtrOutput { + return i.ToVmwareAdminClusterLoadBalancerVipConfigPtrOutputWithContext(context.Background()) +} + +func (i *vmwareAdminClusterLoadBalancerVipConfigPtrType) ToVmwareAdminClusterLoadBalancerVipConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerVipConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterLoadBalancerVipConfigPtrOutput) +} + +type VmwareAdminClusterLoadBalancerVipConfigOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterLoadBalancerVipConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterLoadBalancerVipConfig)(nil)).Elem() +} + +func (o VmwareAdminClusterLoadBalancerVipConfigOutput) ToVmwareAdminClusterLoadBalancerVipConfigOutput() VmwareAdminClusterLoadBalancerVipConfigOutput { + return o +} + +func (o VmwareAdminClusterLoadBalancerVipConfigOutput) ToVmwareAdminClusterLoadBalancerVipConfigOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerVipConfigOutput { + return o +} + +func (o VmwareAdminClusterLoadBalancerVipConfigOutput) ToVmwareAdminClusterLoadBalancerVipConfigPtrOutput() VmwareAdminClusterLoadBalancerVipConfigPtrOutput { + return o.ToVmwareAdminClusterLoadBalancerVipConfigPtrOutputWithContext(context.Background()) +} + +func (o VmwareAdminClusterLoadBalancerVipConfigOutput) ToVmwareAdminClusterLoadBalancerVipConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerVipConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v VmwareAdminClusterLoadBalancerVipConfig) *VmwareAdminClusterLoadBalancerVipConfig { + return &v + }).(VmwareAdminClusterLoadBalancerVipConfigPtrOutput) +} + +// The VIP to configure the load balancer for add-ons. +// +// The `f5Config` block supports: +func (o VmwareAdminClusterLoadBalancerVipConfigOutput) AddonsVip() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterLoadBalancerVipConfig) *string { return v.AddonsVip }).(pulumi.StringPtrOutput) +} + +// The VIP which you previously set aside for the Kubernetes +// API of this VMware Admin Cluster. +func (o VmwareAdminClusterLoadBalancerVipConfigOutput) ControlPlaneVip() pulumi.StringOutput { + return o.ApplyT(func(v VmwareAdminClusterLoadBalancerVipConfig) string { return v.ControlPlaneVip }).(pulumi.StringOutput) +} + +type VmwareAdminClusterLoadBalancerVipConfigPtrOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterLoadBalancerVipConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterLoadBalancerVipConfig)(nil)).Elem() +} + +func (o VmwareAdminClusterLoadBalancerVipConfigPtrOutput) ToVmwareAdminClusterLoadBalancerVipConfigPtrOutput() VmwareAdminClusterLoadBalancerVipConfigPtrOutput { + return o +} + +func (o VmwareAdminClusterLoadBalancerVipConfigPtrOutput) ToVmwareAdminClusterLoadBalancerVipConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterLoadBalancerVipConfigPtrOutput { + return o +} + +func (o VmwareAdminClusterLoadBalancerVipConfigPtrOutput) Elem() VmwareAdminClusterLoadBalancerVipConfigOutput { + return o.ApplyT(func(v *VmwareAdminClusterLoadBalancerVipConfig) VmwareAdminClusterLoadBalancerVipConfig { + if v != nil { + return *v + } + var ret VmwareAdminClusterLoadBalancerVipConfig + return ret + }).(VmwareAdminClusterLoadBalancerVipConfigOutput) +} + +// The VIP to configure the load balancer for add-ons. +// +// The `f5Config` block supports: +func (o VmwareAdminClusterLoadBalancerVipConfigPtrOutput) AddonsVip() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterLoadBalancerVipConfig) *string { + if v == nil { + return nil + } + return v.AddonsVip + }).(pulumi.StringPtrOutput) +} + +// The VIP which you previously set aside for the Kubernetes +// API of this VMware Admin Cluster. +func (o VmwareAdminClusterLoadBalancerVipConfigPtrOutput) ControlPlaneVip() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterLoadBalancerVipConfig) *string { + if v == nil { + return nil + } + return &v.ControlPlaneVip + }).(pulumi.StringPtrOutput) +} + +type VmwareAdminClusterNetworkConfig struct { + // Configuration settings for a DHCP IP configuration. + // Structure is documented below. + DhcpIpConfig *VmwareAdminClusterNetworkConfigDhcpIpConfig `pulumi:"dhcpIpConfig"` + // Configuration for HA admin cluster control plane. + // Structure is documented below. + HaControlPlaneConfig *VmwareAdminClusterNetworkConfigHaControlPlaneConfig `pulumi:"haControlPlaneConfig"` + // Represents common network settings irrespective of the host's IP address. + // Structure is documented below. + HostConfig *VmwareAdminClusterNetworkConfigHostConfig `pulumi:"hostConfig"` + // 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. + PodAddressCidrBlocks []string `pulumi:"podAddressCidrBlocks"` + // 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. + ServiceAddressCidrBlocks []string `pulumi:"serviceAddressCidrBlocks"` + // Configuration settings for a static IP configuration. + // Structure is documented below. + StaticIpConfig *VmwareAdminClusterNetworkConfigStaticIpConfig `pulumi:"staticIpConfig"` + // vcenter_network specifies vCenter network name. + VcenterNetwork *string `pulumi:"vcenterNetwork"` +} + +// VmwareAdminClusterNetworkConfigInput is an input type that accepts VmwareAdminClusterNetworkConfigArgs and VmwareAdminClusterNetworkConfigOutput values. +// You can construct a concrete instance of `VmwareAdminClusterNetworkConfigInput` via: +// +// VmwareAdminClusterNetworkConfigArgs{...} +type VmwareAdminClusterNetworkConfigInput interface { + pulumi.Input + + ToVmwareAdminClusterNetworkConfigOutput() VmwareAdminClusterNetworkConfigOutput + ToVmwareAdminClusterNetworkConfigOutputWithContext(context.Context) VmwareAdminClusterNetworkConfigOutput +} + +type VmwareAdminClusterNetworkConfigArgs struct { + // Configuration settings for a DHCP IP configuration. + // Structure is documented below. + DhcpIpConfig VmwareAdminClusterNetworkConfigDhcpIpConfigPtrInput `pulumi:"dhcpIpConfig"` + // Configuration for HA admin cluster control plane. + // Structure is documented below. + HaControlPlaneConfig VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrInput `pulumi:"haControlPlaneConfig"` + // Represents common network settings irrespective of the host's IP address. + // Structure is documented below. + HostConfig VmwareAdminClusterNetworkConfigHostConfigPtrInput `pulumi:"hostConfig"` + // 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. + PodAddressCidrBlocks pulumi.StringArrayInput `pulumi:"podAddressCidrBlocks"` + // 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. + ServiceAddressCidrBlocks pulumi.StringArrayInput `pulumi:"serviceAddressCidrBlocks"` + // Configuration settings for a static IP configuration. + // Structure is documented below. + StaticIpConfig VmwareAdminClusterNetworkConfigStaticIpConfigPtrInput `pulumi:"staticIpConfig"` + // vcenter_network specifies vCenter network name. + VcenterNetwork pulumi.StringPtrInput `pulumi:"vcenterNetwork"` +} + +func (VmwareAdminClusterNetworkConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterNetworkConfig)(nil)).Elem() +} + +func (i VmwareAdminClusterNetworkConfigArgs) ToVmwareAdminClusterNetworkConfigOutput() VmwareAdminClusterNetworkConfigOutput { + return i.ToVmwareAdminClusterNetworkConfigOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterNetworkConfigArgs) ToVmwareAdminClusterNetworkConfigOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterNetworkConfigOutput) +} + +func (i VmwareAdminClusterNetworkConfigArgs) ToVmwareAdminClusterNetworkConfigPtrOutput() VmwareAdminClusterNetworkConfigPtrOutput { + return i.ToVmwareAdminClusterNetworkConfigPtrOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterNetworkConfigArgs) ToVmwareAdminClusterNetworkConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterNetworkConfigOutput).ToVmwareAdminClusterNetworkConfigPtrOutputWithContext(ctx) +} + +// VmwareAdminClusterNetworkConfigPtrInput is an input type that accepts VmwareAdminClusterNetworkConfigArgs, VmwareAdminClusterNetworkConfigPtr and VmwareAdminClusterNetworkConfigPtrOutput values. +// You can construct a concrete instance of `VmwareAdminClusterNetworkConfigPtrInput` via: +// +// VmwareAdminClusterNetworkConfigArgs{...} +// +// or: +// +// nil +type VmwareAdminClusterNetworkConfigPtrInput interface { + pulumi.Input + + ToVmwareAdminClusterNetworkConfigPtrOutput() VmwareAdminClusterNetworkConfigPtrOutput + ToVmwareAdminClusterNetworkConfigPtrOutputWithContext(context.Context) VmwareAdminClusterNetworkConfigPtrOutput +} + +type vmwareAdminClusterNetworkConfigPtrType VmwareAdminClusterNetworkConfigArgs + +func VmwareAdminClusterNetworkConfigPtr(v *VmwareAdminClusterNetworkConfigArgs) VmwareAdminClusterNetworkConfigPtrInput { + return (*vmwareAdminClusterNetworkConfigPtrType)(v) +} + +func (*vmwareAdminClusterNetworkConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterNetworkConfig)(nil)).Elem() +} + +func (i *vmwareAdminClusterNetworkConfigPtrType) ToVmwareAdminClusterNetworkConfigPtrOutput() VmwareAdminClusterNetworkConfigPtrOutput { + return i.ToVmwareAdminClusterNetworkConfigPtrOutputWithContext(context.Background()) +} + +func (i *vmwareAdminClusterNetworkConfigPtrType) ToVmwareAdminClusterNetworkConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterNetworkConfigPtrOutput) +} + +type VmwareAdminClusterNetworkConfigOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterNetworkConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterNetworkConfig)(nil)).Elem() +} + +func (o VmwareAdminClusterNetworkConfigOutput) ToVmwareAdminClusterNetworkConfigOutput() VmwareAdminClusterNetworkConfigOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigOutput) ToVmwareAdminClusterNetworkConfigOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigOutput) ToVmwareAdminClusterNetworkConfigPtrOutput() VmwareAdminClusterNetworkConfigPtrOutput { + return o.ToVmwareAdminClusterNetworkConfigPtrOutputWithContext(context.Background()) +} + +func (o VmwareAdminClusterNetworkConfigOutput) ToVmwareAdminClusterNetworkConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v VmwareAdminClusterNetworkConfig) *VmwareAdminClusterNetworkConfig { + return &v + }).(VmwareAdminClusterNetworkConfigPtrOutput) +} + +// Configuration settings for a DHCP IP configuration. +// Structure is documented below. +func (o VmwareAdminClusterNetworkConfigOutput) DhcpIpConfig() VmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterNetworkConfig) *VmwareAdminClusterNetworkConfigDhcpIpConfig { + return v.DhcpIpConfig + }).(VmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutput) +} + +// Configuration for HA admin cluster control plane. +// Structure is documented below. +func (o VmwareAdminClusterNetworkConfigOutput) HaControlPlaneConfig() VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterNetworkConfig) *VmwareAdminClusterNetworkConfigHaControlPlaneConfig { + return v.HaControlPlaneConfig + }).(VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutput) +} + +// Represents common network settings irrespective of the host's IP address. +// Structure is documented below. +func (o VmwareAdminClusterNetworkConfigOutput) HostConfig() VmwareAdminClusterNetworkConfigHostConfigPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterNetworkConfig) *VmwareAdminClusterNetworkConfigHostConfig { + return v.HostConfig + }).(VmwareAdminClusterNetworkConfigHostConfigPtrOutput) +} + +// 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. +func (o VmwareAdminClusterNetworkConfigOutput) PodAddressCidrBlocks() pulumi.StringArrayOutput { + return o.ApplyT(func(v VmwareAdminClusterNetworkConfig) []string { return v.PodAddressCidrBlocks }).(pulumi.StringArrayOutput) +} + +// 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. +func (o VmwareAdminClusterNetworkConfigOutput) ServiceAddressCidrBlocks() pulumi.StringArrayOutput { + return o.ApplyT(func(v VmwareAdminClusterNetworkConfig) []string { return v.ServiceAddressCidrBlocks }).(pulumi.StringArrayOutput) +} + +// Configuration settings for a static IP configuration. +// Structure is documented below. +func (o VmwareAdminClusterNetworkConfigOutput) StaticIpConfig() VmwareAdminClusterNetworkConfigStaticIpConfigPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterNetworkConfig) *VmwareAdminClusterNetworkConfigStaticIpConfig { + return v.StaticIpConfig + }).(VmwareAdminClusterNetworkConfigStaticIpConfigPtrOutput) +} + +// vcenter_network specifies vCenter network name. +func (o VmwareAdminClusterNetworkConfigOutput) VcenterNetwork() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterNetworkConfig) *string { return v.VcenterNetwork }).(pulumi.StringPtrOutput) +} + +type VmwareAdminClusterNetworkConfigPtrOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterNetworkConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterNetworkConfig)(nil)).Elem() +} + +func (o VmwareAdminClusterNetworkConfigPtrOutput) ToVmwareAdminClusterNetworkConfigPtrOutput() VmwareAdminClusterNetworkConfigPtrOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigPtrOutput) ToVmwareAdminClusterNetworkConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigPtrOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigPtrOutput) Elem() VmwareAdminClusterNetworkConfigOutput { + return o.ApplyT(func(v *VmwareAdminClusterNetworkConfig) VmwareAdminClusterNetworkConfig { + if v != nil { + return *v + } + var ret VmwareAdminClusterNetworkConfig + return ret + }).(VmwareAdminClusterNetworkConfigOutput) +} + +// Configuration settings for a DHCP IP configuration. +// Structure is documented below. +func (o VmwareAdminClusterNetworkConfigPtrOutput) DhcpIpConfig() VmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterNetworkConfig) *VmwareAdminClusterNetworkConfigDhcpIpConfig { + if v == nil { + return nil + } + return v.DhcpIpConfig + }).(VmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutput) +} + +// Configuration for HA admin cluster control plane. +// Structure is documented below. +func (o VmwareAdminClusterNetworkConfigPtrOutput) HaControlPlaneConfig() VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterNetworkConfig) *VmwareAdminClusterNetworkConfigHaControlPlaneConfig { + if v == nil { + return nil + } + return v.HaControlPlaneConfig + }).(VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutput) +} + +// Represents common network settings irrespective of the host's IP address. +// Structure is documented below. +func (o VmwareAdminClusterNetworkConfigPtrOutput) HostConfig() VmwareAdminClusterNetworkConfigHostConfigPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterNetworkConfig) *VmwareAdminClusterNetworkConfigHostConfig { + if v == nil { + return nil + } + return v.HostConfig + }).(VmwareAdminClusterNetworkConfigHostConfigPtrOutput) +} + +// 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. +func (o VmwareAdminClusterNetworkConfigPtrOutput) PodAddressCidrBlocks() pulumi.StringArrayOutput { + return o.ApplyT(func(v *VmwareAdminClusterNetworkConfig) []string { + if v == nil { + return nil + } + return v.PodAddressCidrBlocks + }).(pulumi.StringArrayOutput) +} + +// 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. +func (o VmwareAdminClusterNetworkConfigPtrOutput) ServiceAddressCidrBlocks() pulumi.StringArrayOutput { + return o.ApplyT(func(v *VmwareAdminClusterNetworkConfig) []string { + if v == nil { + return nil + } + return v.ServiceAddressCidrBlocks + }).(pulumi.StringArrayOutput) +} + +// Configuration settings for a static IP configuration. +// Structure is documented below. +func (o VmwareAdminClusterNetworkConfigPtrOutput) StaticIpConfig() VmwareAdminClusterNetworkConfigStaticIpConfigPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterNetworkConfig) *VmwareAdminClusterNetworkConfigStaticIpConfig { + if v == nil { + return nil + } + return v.StaticIpConfig + }).(VmwareAdminClusterNetworkConfigStaticIpConfigPtrOutput) +} + +// vcenter_network specifies vCenter network name. +func (o VmwareAdminClusterNetworkConfigPtrOutput) VcenterNetwork() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterNetworkConfig) *string { + if v == nil { + return nil + } + return v.VcenterNetwork + }).(pulumi.StringPtrOutput) +} + +type VmwareAdminClusterNetworkConfigDhcpIpConfig struct { + // enabled is a flag to mark if DHCP IP allocation is + // used for VMware admin clusters. + Enabled bool `pulumi:"enabled"` +} + +// VmwareAdminClusterNetworkConfigDhcpIpConfigInput is an input type that accepts VmwareAdminClusterNetworkConfigDhcpIpConfigArgs and VmwareAdminClusterNetworkConfigDhcpIpConfigOutput values. +// You can construct a concrete instance of `VmwareAdminClusterNetworkConfigDhcpIpConfigInput` via: +// +// VmwareAdminClusterNetworkConfigDhcpIpConfigArgs{...} +type VmwareAdminClusterNetworkConfigDhcpIpConfigInput interface { + pulumi.Input + + ToVmwareAdminClusterNetworkConfigDhcpIpConfigOutput() VmwareAdminClusterNetworkConfigDhcpIpConfigOutput + ToVmwareAdminClusterNetworkConfigDhcpIpConfigOutputWithContext(context.Context) VmwareAdminClusterNetworkConfigDhcpIpConfigOutput +} + +type VmwareAdminClusterNetworkConfigDhcpIpConfigArgs struct { + // enabled is a flag to mark if DHCP IP allocation is + // used for VMware admin clusters. + Enabled pulumi.BoolInput `pulumi:"enabled"` +} + +func (VmwareAdminClusterNetworkConfigDhcpIpConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterNetworkConfigDhcpIpConfig)(nil)).Elem() +} + +func (i VmwareAdminClusterNetworkConfigDhcpIpConfigArgs) ToVmwareAdminClusterNetworkConfigDhcpIpConfigOutput() VmwareAdminClusterNetworkConfigDhcpIpConfigOutput { + return i.ToVmwareAdminClusterNetworkConfigDhcpIpConfigOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterNetworkConfigDhcpIpConfigArgs) ToVmwareAdminClusterNetworkConfigDhcpIpConfigOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigDhcpIpConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterNetworkConfigDhcpIpConfigOutput) +} + +func (i VmwareAdminClusterNetworkConfigDhcpIpConfigArgs) ToVmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutput() VmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutput { + return i.ToVmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterNetworkConfigDhcpIpConfigArgs) ToVmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterNetworkConfigDhcpIpConfigOutput).ToVmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutputWithContext(ctx) +} + +// VmwareAdminClusterNetworkConfigDhcpIpConfigPtrInput is an input type that accepts VmwareAdminClusterNetworkConfigDhcpIpConfigArgs, VmwareAdminClusterNetworkConfigDhcpIpConfigPtr and VmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutput values. +// You can construct a concrete instance of `VmwareAdminClusterNetworkConfigDhcpIpConfigPtrInput` via: +// +// VmwareAdminClusterNetworkConfigDhcpIpConfigArgs{...} +// +// or: +// +// nil +type VmwareAdminClusterNetworkConfigDhcpIpConfigPtrInput interface { + pulumi.Input + + ToVmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutput() VmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutput + ToVmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutputWithContext(context.Context) VmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutput +} + +type vmwareAdminClusterNetworkConfigDhcpIpConfigPtrType VmwareAdminClusterNetworkConfigDhcpIpConfigArgs + +func VmwareAdminClusterNetworkConfigDhcpIpConfigPtr(v *VmwareAdminClusterNetworkConfigDhcpIpConfigArgs) VmwareAdminClusterNetworkConfigDhcpIpConfigPtrInput { + return (*vmwareAdminClusterNetworkConfigDhcpIpConfigPtrType)(v) +} + +func (*vmwareAdminClusterNetworkConfigDhcpIpConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterNetworkConfigDhcpIpConfig)(nil)).Elem() +} + +func (i *vmwareAdminClusterNetworkConfigDhcpIpConfigPtrType) ToVmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutput() VmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutput { + return i.ToVmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutputWithContext(context.Background()) +} + +func (i *vmwareAdminClusterNetworkConfigDhcpIpConfigPtrType) ToVmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutput) +} + +type VmwareAdminClusterNetworkConfigDhcpIpConfigOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterNetworkConfigDhcpIpConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterNetworkConfigDhcpIpConfig)(nil)).Elem() +} + +func (o VmwareAdminClusterNetworkConfigDhcpIpConfigOutput) ToVmwareAdminClusterNetworkConfigDhcpIpConfigOutput() VmwareAdminClusterNetworkConfigDhcpIpConfigOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigDhcpIpConfigOutput) ToVmwareAdminClusterNetworkConfigDhcpIpConfigOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigDhcpIpConfigOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigDhcpIpConfigOutput) ToVmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutput() VmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutput { + return o.ToVmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutputWithContext(context.Background()) +} + +func (o VmwareAdminClusterNetworkConfigDhcpIpConfigOutput) ToVmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v VmwareAdminClusterNetworkConfigDhcpIpConfig) *VmwareAdminClusterNetworkConfigDhcpIpConfig { + return &v + }).(VmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutput) +} + +// enabled is a flag to mark if DHCP IP allocation is +// used for VMware admin clusters. +func (o VmwareAdminClusterNetworkConfigDhcpIpConfigOutput) Enabled() pulumi.BoolOutput { + return o.ApplyT(func(v VmwareAdminClusterNetworkConfigDhcpIpConfig) bool { return v.Enabled }).(pulumi.BoolOutput) +} + +type VmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterNetworkConfigDhcpIpConfig)(nil)).Elem() +} + +func (o VmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutput) ToVmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutput() VmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutput) ToVmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutput) Elem() VmwareAdminClusterNetworkConfigDhcpIpConfigOutput { + return o.ApplyT(func(v *VmwareAdminClusterNetworkConfigDhcpIpConfig) VmwareAdminClusterNetworkConfigDhcpIpConfig { + if v != nil { + return *v + } + var ret VmwareAdminClusterNetworkConfigDhcpIpConfig + return ret + }).(VmwareAdminClusterNetworkConfigDhcpIpConfigOutput) +} + +// enabled is a flag to mark if DHCP IP allocation is +// used for VMware admin clusters. +func (o VmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutput) Enabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterNetworkConfigDhcpIpConfig) *bool { + if v == nil { + return nil + } + return &v.Enabled + }).(pulumi.BoolPtrOutput) +} + +type VmwareAdminClusterNetworkConfigHaControlPlaneConfig struct { + // Static IP addresses for the control plane nodes. + // Structure is documented below. + ControlPlaneIpBlock *VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock `pulumi:"controlPlaneIpBlock"` +} + +// VmwareAdminClusterNetworkConfigHaControlPlaneConfigInput is an input type that accepts VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs and VmwareAdminClusterNetworkConfigHaControlPlaneConfigOutput values. +// You can construct a concrete instance of `VmwareAdminClusterNetworkConfigHaControlPlaneConfigInput` via: +// +// VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs{...} +type VmwareAdminClusterNetworkConfigHaControlPlaneConfigInput interface { + pulumi.Input + + ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigOutput() VmwareAdminClusterNetworkConfigHaControlPlaneConfigOutput + ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigOutputWithContext(context.Context) VmwareAdminClusterNetworkConfigHaControlPlaneConfigOutput +} + +type VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs struct { + // Static IP addresses for the control plane nodes. + // Structure is documented below. + ControlPlaneIpBlock VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrInput `pulumi:"controlPlaneIpBlock"` +} + +func (VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterNetworkConfigHaControlPlaneConfig)(nil)).Elem() +} + +func (i VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigOutput() VmwareAdminClusterNetworkConfigHaControlPlaneConfigOutput { + return i.ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigHaControlPlaneConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterNetworkConfigHaControlPlaneConfigOutput) +} + +func (i VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutput() VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutput { + return i.ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterNetworkConfigHaControlPlaneConfigOutput).ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutputWithContext(ctx) +} + +// VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrInput is an input type that accepts VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs, VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtr and VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutput values. +// You can construct a concrete instance of `VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrInput` via: +// +// VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs{...} +// +// or: +// +// nil +type VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrInput interface { + pulumi.Input + + ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutput() VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutput + ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutputWithContext(context.Context) VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutput +} + +type vmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrType VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs + +func VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtr(v *VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs) VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrInput { + return (*vmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrType)(v) +} + +func (*vmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterNetworkConfigHaControlPlaneConfig)(nil)).Elem() +} + +func (i *vmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrType) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutput() VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutput { + return i.ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutputWithContext(context.Background()) +} + +func (i *vmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrType) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutput) +} + +type VmwareAdminClusterNetworkConfigHaControlPlaneConfigOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterNetworkConfigHaControlPlaneConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterNetworkConfigHaControlPlaneConfig)(nil)).Elem() +} + +func (o VmwareAdminClusterNetworkConfigHaControlPlaneConfigOutput) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigOutput() VmwareAdminClusterNetworkConfigHaControlPlaneConfigOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigHaControlPlaneConfigOutput) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigHaControlPlaneConfigOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigHaControlPlaneConfigOutput) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutput() VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutput { + return o.ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutputWithContext(context.Background()) +} + +func (o VmwareAdminClusterNetworkConfigHaControlPlaneConfigOutput) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v VmwareAdminClusterNetworkConfigHaControlPlaneConfig) *VmwareAdminClusterNetworkConfigHaControlPlaneConfig { + return &v + }).(VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutput) +} + +// Static IP addresses for the control plane nodes. +// Structure is documented below. +func (o VmwareAdminClusterNetworkConfigHaControlPlaneConfigOutput) ControlPlaneIpBlock() VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterNetworkConfigHaControlPlaneConfig) *VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock { + return v.ControlPlaneIpBlock + }).(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput) +} + +type VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterNetworkConfigHaControlPlaneConfig)(nil)).Elem() +} + +func (o VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutput) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutput() VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutput) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutput) Elem() VmwareAdminClusterNetworkConfigHaControlPlaneConfigOutput { + return o.ApplyT(func(v *VmwareAdminClusterNetworkConfigHaControlPlaneConfig) VmwareAdminClusterNetworkConfigHaControlPlaneConfig { + if v != nil { + return *v + } + var ret VmwareAdminClusterNetworkConfigHaControlPlaneConfig + return ret + }).(VmwareAdminClusterNetworkConfigHaControlPlaneConfigOutput) +} + +// Static IP addresses for the control plane nodes. +// Structure is documented below. +func (o VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutput) ControlPlaneIpBlock() VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterNetworkConfigHaControlPlaneConfig) *VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock { + if v == nil { + return nil + } + return v.ControlPlaneIpBlock + }).(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput) +} + +type VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock struct { + // The network gateway used by the VMware Admin Cluster. + Gateway string `pulumi:"gateway"` + // The node's network configurations used by the VMware Admin Cluster. + // Structure is documented below. + Ips []VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp `pulumi:"ips"` + // The netmask used by the VMware Admin Cluster. + Netmask string `pulumi:"netmask"` +} + +// VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockInput is an input type that accepts VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs and VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockOutput values. +// You can construct a concrete instance of `VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockInput` via: +// +// VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs{...} +type VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockInput interface { + pulumi.Input + + ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockOutput() VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockOutput + ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockOutputWithContext(context.Context) VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockOutput +} + +type VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs struct { + // The network gateway used by the VMware Admin Cluster. + Gateway pulumi.StringInput `pulumi:"gateway"` + // The node's network configurations used by the VMware Admin Cluster. + // Structure is documented below. + Ips VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayInput `pulumi:"ips"` + // The netmask used by the VMware Admin Cluster. + Netmask pulumi.StringInput `pulumi:"netmask"` +} + +func (VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock)(nil)).Elem() +} + +func (i VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockOutput() VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockOutput { + return i.ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockOutput) +} + +func (i VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput() VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput { + return i.ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockOutput).ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutputWithContext(ctx) +} + +// VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrInput is an input type that accepts VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs, VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtr and VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput values. +// You can construct a concrete instance of `VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrInput` via: +// +// VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs{...} +// +// or: +// +// nil +type VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrInput interface { + pulumi.Input + + ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput() VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput + ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutputWithContext(context.Context) VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput +} + +type vmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrType VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs + +func VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtr(v *VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs) VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrInput { + return (*vmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrType)(v) +} + +func (*vmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock)(nil)).Elem() +} + +func (i *vmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrType) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput() VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput { + return i.ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutputWithContext(context.Background()) +} + +func (i *vmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrType) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput) +} + +type VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock)(nil)).Elem() +} + +func (o VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockOutput) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockOutput() VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockOutput) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockOutput) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput() VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput { + return o.ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutputWithContext(context.Background()) +} + +func (o VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockOutput) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock) *VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock { + return &v + }).(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput) +} + +// The network gateway used by the VMware Admin Cluster. +func (o VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockOutput) Gateway() pulumi.StringOutput { + return o.ApplyT(func(v VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock) string { + return v.Gateway + }).(pulumi.StringOutput) +} + +// The node's network configurations used by the VMware Admin Cluster. +// Structure is documented below. +func (o VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockOutput) Ips() VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayOutput { + return o.ApplyT(func(v VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock) []VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp { + return v.Ips + }).(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayOutput) +} + +// The netmask used by the VMware Admin Cluster. +func (o VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockOutput) Netmask() pulumi.StringOutput { + return o.ApplyT(func(v VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock) string { + return v.Netmask + }).(pulumi.StringOutput) +} + +type VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock)(nil)).Elem() +} + +func (o VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput() VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput) Elem() VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockOutput { + return o.ApplyT(func(v *VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock) VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock { + if v != nil { + return *v + } + var ret VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock + return ret + }).(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockOutput) +} + +// The network gateway used by the VMware Admin Cluster. +func (o VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput) Gateway() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock) *string { + if v == nil { + return nil + } + return &v.Gateway + }).(pulumi.StringPtrOutput) +} + +// The node's network configurations used by the VMware Admin Cluster. +// Structure is documented below. +func (o VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput) Ips() VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayOutput { + return o.ApplyT(func(v *VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock) []VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp { + if v == nil { + return nil + } + return v.Ips + }).(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayOutput) +} + +// The netmask used by the VMware Admin Cluster. +func (o VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput) Netmask() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock) *string { + if v == nil { + return nil + } + return &v.Netmask + }).(pulumi.StringPtrOutput) +} + +type VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp struct { + // Hostname of the machine. VM's name will be used if this field is empty. + // + // *** + Hostname *string `pulumi:"hostname"` + // IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + Ip string `pulumi:"ip"` +} + +// VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpInput is an input type that accepts VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs and VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpOutput values. +// You can construct a concrete instance of `VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpInput` via: +// +// VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs{...} +type VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpInput interface { + pulumi.Input + + ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpOutput() VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpOutput + ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpOutputWithContext(context.Context) VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpOutput +} + +type VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs struct { + // Hostname of the machine. VM's name will be used if this field is empty. + // + // *** + Hostname pulumi.StringPtrInput `pulumi:"hostname"` + // IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + Ip pulumi.StringInput `pulumi:"ip"` +} + +func (VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp)(nil)).Elem() +} + +func (i VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpOutput() VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpOutput { + return i.ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpOutput) +} + +// VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayInput is an input type that accepts VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArray and VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayOutput values. +// You can construct a concrete instance of `VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayInput` via: +// +// VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArray{ VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs{...} } +type VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayInput interface { + pulumi.Input + + ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayOutput() VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayOutput + ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayOutputWithContext(context.Context) VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayOutput +} + +type VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArray []VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpInput + +func (VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp)(nil)).Elem() +} + +func (i VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArray) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayOutput() VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayOutput { + return i.ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArray) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayOutput) +} + +type VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp)(nil)).Elem() +} + +func (o VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpOutput) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpOutput() VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpOutput) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpOutput { + return o +} + +// Hostname of the machine. VM's name will be used if this field is empty. +// +// *** +func (o VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpOutput) Hostname() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp) *string { + return v.Hostname + }).(pulumi.StringPtrOutput) +} + +// IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). +func (o VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpOutput) Ip() pulumi.StringOutput { + return o.ApplyT(func(v VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp) string { return v.Ip }).(pulumi.StringOutput) +} + +type VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp)(nil)).Elem() +} + +func (o VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayOutput) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayOutput() VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayOutput) ToVmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayOutput) Index(i pulumi.IntInput) VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp { + return vs[0].([]VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp)[vs[1].(int)] + }).(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpOutput) +} + +type VmwareAdminClusterNetworkConfigHostConfig struct { + // DNS search domains. + DnsSearchDomains []string `pulumi:"dnsSearchDomains"` + // DNS servers. + DnsServers []string `pulumi:"dnsServers"` + // NTP servers. + NtpServers []string `pulumi:"ntpServers"` +} + +// VmwareAdminClusterNetworkConfigHostConfigInput is an input type that accepts VmwareAdminClusterNetworkConfigHostConfigArgs and VmwareAdminClusterNetworkConfigHostConfigOutput values. +// You can construct a concrete instance of `VmwareAdminClusterNetworkConfigHostConfigInput` via: +// +// VmwareAdminClusterNetworkConfigHostConfigArgs{...} +type VmwareAdminClusterNetworkConfigHostConfigInput interface { + pulumi.Input + + ToVmwareAdminClusterNetworkConfigHostConfigOutput() VmwareAdminClusterNetworkConfigHostConfigOutput + ToVmwareAdminClusterNetworkConfigHostConfigOutputWithContext(context.Context) VmwareAdminClusterNetworkConfigHostConfigOutput +} + +type VmwareAdminClusterNetworkConfigHostConfigArgs struct { + // DNS search domains. + DnsSearchDomains pulumi.StringArrayInput `pulumi:"dnsSearchDomains"` + // DNS servers. + DnsServers pulumi.StringArrayInput `pulumi:"dnsServers"` + // NTP servers. + NtpServers pulumi.StringArrayInput `pulumi:"ntpServers"` +} + +func (VmwareAdminClusterNetworkConfigHostConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterNetworkConfigHostConfig)(nil)).Elem() +} + +func (i VmwareAdminClusterNetworkConfigHostConfigArgs) ToVmwareAdminClusterNetworkConfigHostConfigOutput() VmwareAdminClusterNetworkConfigHostConfigOutput { + return i.ToVmwareAdminClusterNetworkConfigHostConfigOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterNetworkConfigHostConfigArgs) ToVmwareAdminClusterNetworkConfigHostConfigOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigHostConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterNetworkConfigHostConfigOutput) +} + +func (i VmwareAdminClusterNetworkConfigHostConfigArgs) ToVmwareAdminClusterNetworkConfigHostConfigPtrOutput() VmwareAdminClusterNetworkConfigHostConfigPtrOutput { + return i.ToVmwareAdminClusterNetworkConfigHostConfigPtrOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterNetworkConfigHostConfigArgs) ToVmwareAdminClusterNetworkConfigHostConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigHostConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterNetworkConfigHostConfigOutput).ToVmwareAdminClusterNetworkConfigHostConfigPtrOutputWithContext(ctx) +} + +// VmwareAdminClusterNetworkConfigHostConfigPtrInput is an input type that accepts VmwareAdminClusterNetworkConfigHostConfigArgs, VmwareAdminClusterNetworkConfigHostConfigPtr and VmwareAdminClusterNetworkConfigHostConfigPtrOutput values. +// You can construct a concrete instance of `VmwareAdminClusterNetworkConfigHostConfigPtrInput` via: +// +// VmwareAdminClusterNetworkConfigHostConfigArgs{...} +// +// or: +// +// nil +type VmwareAdminClusterNetworkConfigHostConfigPtrInput interface { + pulumi.Input + + ToVmwareAdminClusterNetworkConfigHostConfigPtrOutput() VmwareAdminClusterNetworkConfigHostConfigPtrOutput + ToVmwareAdminClusterNetworkConfigHostConfigPtrOutputWithContext(context.Context) VmwareAdminClusterNetworkConfigHostConfigPtrOutput +} + +type vmwareAdminClusterNetworkConfigHostConfigPtrType VmwareAdminClusterNetworkConfigHostConfigArgs + +func VmwareAdminClusterNetworkConfigHostConfigPtr(v *VmwareAdminClusterNetworkConfigHostConfigArgs) VmwareAdminClusterNetworkConfigHostConfigPtrInput { + return (*vmwareAdminClusterNetworkConfigHostConfigPtrType)(v) +} + +func (*vmwareAdminClusterNetworkConfigHostConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterNetworkConfigHostConfig)(nil)).Elem() +} + +func (i *vmwareAdminClusterNetworkConfigHostConfigPtrType) ToVmwareAdminClusterNetworkConfigHostConfigPtrOutput() VmwareAdminClusterNetworkConfigHostConfigPtrOutput { + return i.ToVmwareAdminClusterNetworkConfigHostConfigPtrOutputWithContext(context.Background()) +} + +func (i *vmwareAdminClusterNetworkConfigHostConfigPtrType) ToVmwareAdminClusterNetworkConfigHostConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigHostConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterNetworkConfigHostConfigPtrOutput) +} + +type VmwareAdminClusterNetworkConfigHostConfigOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterNetworkConfigHostConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterNetworkConfigHostConfig)(nil)).Elem() +} + +func (o VmwareAdminClusterNetworkConfigHostConfigOutput) ToVmwareAdminClusterNetworkConfigHostConfigOutput() VmwareAdminClusterNetworkConfigHostConfigOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigHostConfigOutput) ToVmwareAdminClusterNetworkConfigHostConfigOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigHostConfigOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigHostConfigOutput) ToVmwareAdminClusterNetworkConfigHostConfigPtrOutput() VmwareAdminClusterNetworkConfigHostConfigPtrOutput { + return o.ToVmwareAdminClusterNetworkConfigHostConfigPtrOutputWithContext(context.Background()) +} + +func (o VmwareAdminClusterNetworkConfigHostConfigOutput) ToVmwareAdminClusterNetworkConfigHostConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigHostConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v VmwareAdminClusterNetworkConfigHostConfig) *VmwareAdminClusterNetworkConfigHostConfig { + return &v + }).(VmwareAdminClusterNetworkConfigHostConfigPtrOutput) +} + +// DNS search domains. +func (o VmwareAdminClusterNetworkConfigHostConfigOutput) DnsSearchDomains() pulumi.StringArrayOutput { + return o.ApplyT(func(v VmwareAdminClusterNetworkConfigHostConfig) []string { return v.DnsSearchDomains }).(pulumi.StringArrayOutput) +} + +// DNS servers. +func (o VmwareAdminClusterNetworkConfigHostConfigOutput) DnsServers() pulumi.StringArrayOutput { + return o.ApplyT(func(v VmwareAdminClusterNetworkConfigHostConfig) []string { return v.DnsServers }).(pulumi.StringArrayOutput) +} + +// NTP servers. +func (o VmwareAdminClusterNetworkConfigHostConfigOutput) NtpServers() pulumi.StringArrayOutput { + return o.ApplyT(func(v VmwareAdminClusterNetworkConfigHostConfig) []string { return v.NtpServers }).(pulumi.StringArrayOutput) +} + +type VmwareAdminClusterNetworkConfigHostConfigPtrOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterNetworkConfigHostConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterNetworkConfigHostConfig)(nil)).Elem() +} + +func (o VmwareAdminClusterNetworkConfigHostConfigPtrOutput) ToVmwareAdminClusterNetworkConfigHostConfigPtrOutput() VmwareAdminClusterNetworkConfigHostConfigPtrOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigHostConfigPtrOutput) ToVmwareAdminClusterNetworkConfigHostConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigHostConfigPtrOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigHostConfigPtrOutput) Elem() VmwareAdminClusterNetworkConfigHostConfigOutput { + return o.ApplyT(func(v *VmwareAdminClusterNetworkConfigHostConfig) VmwareAdminClusterNetworkConfigHostConfig { + if v != nil { + return *v + } + var ret VmwareAdminClusterNetworkConfigHostConfig + return ret + }).(VmwareAdminClusterNetworkConfigHostConfigOutput) +} + +// DNS search domains. +func (o VmwareAdminClusterNetworkConfigHostConfigPtrOutput) DnsSearchDomains() pulumi.StringArrayOutput { + return o.ApplyT(func(v *VmwareAdminClusterNetworkConfigHostConfig) []string { + if v == nil { + return nil + } + return v.DnsSearchDomains + }).(pulumi.StringArrayOutput) +} + +// DNS servers. +func (o VmwareAdminClusterNetworkConfigHostConfigPtrOutput) DnsServers() pulumi.StringArrayOutput { + return o.ApplyT(func(v *VmwareAdminClusterNetworkConfigHostConfig) []string { + if v == nil { + return nil + } + return v.DnsServers + }).(pulumi.StringArrayOutput) +} + +// NTP servers. +func (o VmwareAdminClusterNetworkConfigHostConfigPtrOutput) NtpServers() pulumi.StringArrayOutput { + return o.ApplyT(func(v *VmwareAdminClusterNetworkConfigHostConfig) []string { + if v == nil { + return nil + } + return v.NtpServers + }).(pulumi.StringArrayOutput) +} + +type VmwareAdminClusterNetworkConfigStaticIpConfig struct { + // Represents the configuration values for static IP allocation to nodes. + // Structure is documented below. + IpBlocks []VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock `pulumi:"ipBlocks"` +} + +// VmwareAdminClusterNetworkConfigStaticIpConfigInput is an input type that accepts VmwareAdminClusterNetworkConfigStaticIpConfigArgs and VmwareAdminClusterNetworkConfigStaticIpConfigOutput values. +// You can construct a concrete instance of `VmwareAdminClusterNetworkConfigStaticIpConfigInput` via: +// +// VmwareAdminClusterNetworkConfigStaticIpConfigArgs{...} +type VmwareAdminClusterNetworkConfigStaticIpConfigInput interface { + pulumi.Input + + ToVmwareAdminClusterNetworkConfigStaticIpConfigOutput() VmwareAdminClusterNetworkConfigStaticIpConfigOutput + ToVmwareAdminClusterNetworkConfigStaticIpConfigOutputWithContext(context.Context) VmwareAdminClusterNetworkConfigStaticIpConfigOutput +} + +type VmwareAdminClusterNetworkConfigStaticIpConfigArgs struct { + // Represents the configuration values for static IP allocation to nodes. + // Structure is documented below. + IpBlocks VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayInput `pulumi:"ipBlocks"` +} + +func (VmwareAdminClusterNetworkConfigStaticIpConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterNetworkConfigStaticIpConfig)(nil)).Elem() +} + +func (i VmwareAdminClusterNetworkConfigStaticIpConfigArgs) ToVmwareAdminClusterNetworkConfigStaticIpConfigOutput() VmwareAdminClusterNetworkConfigStaticIpConfigOutput { + return i.ToVmwareAdminClusterNetworkConfigStaticIpConfigOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterNetworkConfigStaticIpConfigArgs) ToVmwareAdminClusterNetworkConfigStaticIpConfigOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigStaticIpConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterNetworkConfigStaticIpConfigOutput) +} + +func (i VmwareAdminClusterNetworkConfigStaticIpConfigArgs) ToVmwareAdminClusterNetworkConfigStaticIpConfigPtrOutput() VmwareAdminClusterNetworkConfigStaticIpConfigPtrOutput { + return i.ToVmwareAdminClusterNetworkConfigStaticIpConfigPtrOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterNetworkConfigStaticIpConfigArgs) ToVmwareAdminClusterNetworkConfigStaticIpConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigStaticIpConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterNetworkConfigStaticIpConfigOutput).ToVmwareAdminClusterNetworkConfigStaticIpConfigPtrOutputWithContext(ctx) +} + +// VmwareAdminClusterNetworkConfigStaticIpConfigPtrInput is an input type that accepts VmwareAdminClusterNetworkConfigStaticIpConfigArgs, VmwareAdminClusterNetworkConfigStaticIpConfigPtr and VmwareAdminClusterNetworkConfigStaticIpConfigPtrOutput values. +// You can construct a concrete instance of `VmwareAdminClusterNetworkConfigStaticIpConfigPtrInput` via: +// +// VmwareAdminClusterNetworkConfigStaticIpConfigArgs{...} +// +// or: +// +// nil +type VmwareAdminClusterNetworkConfigStaticIpConfigPtrInput interface { + pulumi.Input + + ToVmwareAdminClusterNetworkConfigStaticIpConfigPtrOutput() VmwareAdminClusterNetworkConfigStaticIpConfigPtrOutput + ToVmwareAdminClusterNetworkConfigStaticIpConfigPtrOutputWithContext(context.Context) VmwareAdminClusterNetworkConfigStaticIpConfigPtrOutput +} + +type vmwareAdminClusterNetworkConfigStaticIpConfigPtrType VmwareAdminClusterNetworkConfigStaticIpConfigArgs + +func VmwareAdminClusterNetworkConfigStaticIpConfigPtr(v *VmwareAdminClusterNetworkConfigStaticIpConfigArgs) VmwareAdminClusterNetworkConfigStaticIpConfigPtrInput { + return (*vmwareAdminClusterNetworkConfigStaticIpConfigPtrType)(v) +} + +func (*vmwareAdminClusterNetworkConfigStaticIpConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterNetworkConfigStaticIpConfig)(nil)).Elem() +} + +func (i *vmwareAdminClusterNetworkConfigStaticIpConfigPtrType) ToVmwareAdminClusterNetworkConfigStaticIpConfigPtrOutput() VmwareAdminClusterNetworkConfigStaticIpConfigPtrOutput { + return i.ToVmwareAdminClusterNetworkConfigStaticIpConfigPtrOutputWithContext(context.Background()) +} + +func (i *vmwareAdminClusterNetworkConfigStaticIpConfigPtrType) ToVmwareAdminClusterNetworkConfigStaticIpConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigStaticIpConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterNetworkConfigStaticIpConfigPtrOutput) +} + +type VmwareAdminClusterNetworkConfigStaticIpConfigOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterNetworkConfigStaticIpConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterNetworkConfigStaticIpConfig)(nil)).Elem() +} + +func (o VmwareAdminClusterNetworkConfigStaticIpConfigOutput) ToVmwareAdminClusterNetworkConfigStaticIpConfigOutput() VmwareAdminClusterNetworkConfigStaticIpConfigOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigStaticIpConfigOutput) ToVmwareAdminClusterNetworkConfigStaticIpConfigOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigStaticIpConfigOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigStaticIpConfigOutput) ToVmwareAdminClusterNetworkConfigStaticIpConfigPtrOutput() VmwareAdminClusterNetworkConfigStaticIpConfigPtrOutput { + return o.ToVmwareAdminClusterNetworkConfigStaticIpConfigPtrOutputWithContext(context.Background()) +} + +func (o VmwareAdminClusterNetworkConfigStaticIpConfigOutput) ToVmwareAdminClusterNetworkConfigStaticIpConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigStaticIpConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v VmwareAdminClusterNetworkConfigStaticIpConfig) *VmwareAdminClusterNetworkConfigStaticIpConfig { + return &v + }).(VmwareAdminClusterNetworkConfigStaticIpConfigPtrOutput) +} + +// Represents the configuration values for static IP allocation to nodes. +// Structure is documented below. +func (o VmwareAdminClusterNetworkConfigStaticIpConfigOutput) IpBlocks() VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayOutput { + return o.ApplyT(func(v VmwareAdminClusterNetworkConfigStaticIpConfig) []VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock { + return v.IpBlocks + }).(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayOutput) +} + +type VmwareAdminClusterNetworkConfigStaticIpConfigPtrOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterNetworkConfigStaticIpConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterNetworkConfigStaticIpConfig)(nil)).Elem() +} + +func (o VmwareAdminClusterNetworkConfigStaticIpConfigPtrOutput) ToVmwareAdminClusterNetworkConfigStaticIpConfigPtrOutput() VmwareAdminClusterNetworkConfigStaticIpConfigPtrOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigStaticIpConfigPtrOutput) ToVmwareAdminClusterNetworkConfigStaticIpConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigStaticIpConfigPtrOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigStaticIpConfigPtrOutput) Elem() VmwareAdminClusterNetworkConfigStaticIpConfigOutput { + return o.ApplyT(func(v *VmwareAdminClusterNetworkConfigStaticIpConfig) VmwareAdminClusterNetworkConfigStaticIpConfig { + if v != nil { + return *v + } + var ret VmwareAdminClusterNetworkConfigStaticIpConfig + return ret + }).(VmwareAdminClusterNetworkConfigStaticIpConfigOutput) +} + +// Represents the configuration values for static IP allocation to nodes. +// Structure is documented below. +func (o VmwareAdminClusterNetworkConfigStaticIpConfigPtrOutput) IpBlocks() VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayOutput { + return o.ApplyT(func(v *VmwareAdminClusterNetworkConfigStaticIpConfig) []VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock { + if v == nil { + return nil + } + return v.IpBlocks + }).(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayOutput) +} + +type VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock struct { + // The network gateway used by the VMware Admin Cluster. + Gateway string `pulumi:"gateway"` + // The node's network configurations used by the VMware Admin Cluster. + // Structure is documented below. + Ips []VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp `pulumi:"ips"` + // The netmask used by the VMware Admin Cluster. + Netmask string `pulumi:"netmask"` +} + +// VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockInput is an input type that accepts VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs and VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockOutput values. +// You can construct a concrete instance of `VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockInput` via: +// +// VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs{...} +type VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockInput interface { + pulumi.Input + + ToVmwareAdminClusterNetworkConfigStaticIpConfigIpBlockOutput() VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockOutput + ToVmwareAdminClusterNetworkConfigStaticIpConfigIpBlockOutputWithContext(context.Context) VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockOutput +} + +type VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs struct { + // The network gateway used by the VMware Admin Cluster. + Gateway pulumi.StringInput `pulumi:"gateway"` + // The node's network configurations used by the VMware Admin Cluster. + // Structure is documented below. + Ips VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArrayInput `pulumi:"ips"` + // The netmask used by the VMware Admin Cluster. + Netmask pulumi.StringInput `pulumi:"netmask"` +} + +func (VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock)(nil)).Elem() +} + +func (i VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs) ToVmwareAdminClusterNetworkConfigStaticIpConfigIpBlockOutput() VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockOutput { + return i.ToVmwareAdminClusterNetworkConfigStaticIpConfigIpBlockOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs) ToVmwareAdminClusterNetworkConfigStaticIpConfigIpBlockOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockOutput) +} + +// VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayInput is an input type that accepts VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArray and VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayOutput values. +// You can construct a concrete instance of `VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayInput` via: +// +// VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArray{ VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs{...} } +type VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayInput interface { + pulumi.Input + + ToVmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayOutput() VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayOutput + ToVmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayOutputWithContext(context.Context) VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayOutput +} + +type VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArray []VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockInput + +func (VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock)(nil)).Elem() +} + +func (i VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArray) ToVmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayOutput() VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayOutput { + return i.ToVmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArray) ToVmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayOutput) +} + +type VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock)(nil)).Elem() +} + +func (o VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockOutput) ToVmwareAdminClusterNetworkConfigStaticIpConfigIpBlockOutput() VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockOutput) ToVmwareAdminClusterNetworkConfigStaticIpConfigIpBlockOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockOutput { + return o +} + +// The network gateway used by the VMware Admin Cluster. +func (o VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockOutput) Gateway() pulumi.StringOutput { + return o.ApplyT(func(v VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock) string { return v.Gateway }).(pulumi.StringOutput) +} + +// The node's network configurations used by the VMware Admin Cluster. +// Structure is documented below. +func (o VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockOutput) Ips() VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArrayOutput { + return o.ApplyT(func(v VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock) []VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp { + return v.Ips + }).(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArrayOutput) +} + +// The netmask used by the VMware Admin Cluster. +func (o VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockOutput) Netmask() pulumi.StringOutput { + return o.ApplyT(func(v VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock) string { return v.Netmask }).(pulumi.StringOutput) +} + +type VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock)(nil)).Elem() +} + +func (o VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayOutput) ToVmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayOutput() VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayOutput) ToVmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayOutput) Index(i pulumi.IntInput) VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock { + return vs[0].([]VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock)[vs[1].(int)] + }).(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockOutput) +} + +type VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp struct { + // Hostname of the machine. VM's name will be used if this field is empty. + // + // *** + Hostname *string `pulumi:"hostname"` + // IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + Ip string `pulumi:"ip"` +} + +// VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpInput is an input type that accepts VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs and VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpOutput values. +// You can construct a concrete instance of `VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpInput` via: +// +// VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs{...} +type VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpInput interface { + pulumi.Input + + ToVmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpOutput() VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpOutput + ToVmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpOutputWithContext(context.Context) VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpOutput +} + +type VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs struct { + // Hostname of the machine. VM's name will be used if this field is empty. + // + // *** + Hostname pulumi.StringPtrInput `pulumi:"hostname"` + // IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + Ip pulumi.StringInput `pulumi:"ip"` +} + +func (VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp)(nil)).Elem() +} + +func (i VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs) ToVmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpOutput() VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpOutput { + return i.ToVmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs) ToVmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpOutput) +} + +// VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArrayInput is an input type that accepts VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArray and VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArrayOutput values. +// You can construct a concrete instance of `VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArrayInput` via: +// +// VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArray{ VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs{...} } +type VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArrayInput interface { + pulumi.Input + + ToVmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArrayOutput() VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArrayOutput + ToVmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArrayOutputWithContext(context.Context) VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArrayOutput +} + +type VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArray []VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpInput + +func (VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp)(nil)).Elem() +} + +func (i VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArray) ToVmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArrayOutput() VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArrayOutput { + return i.ToVmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArrayOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArray) ToVmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArrayOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArrayOutput) +} + +type VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp)(nil)).Elem() +} + +func (o VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpOutput) ToVmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpOutput() VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpOutput) ToVmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpOutput { + return o +} + +// Hostname of the machine. VM's name will be used if this field is empty. +// +// *** +func (o VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpOutput) Hostname() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp) *string { return v.Hostname }).(pulumi.StringPtrOutput) +} + +// IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). +func (o VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpOutput) Ip() pulumi.StringOutput { + return o.ApplyT(func(v VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp) string { return v.Ip }).(pulumi.StringOutput) +} + +type VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArrayOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp)(nil)).Elem() +} + +func (o VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArrayOutput) ToVmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArrayOutput() VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArrayOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArrayOutput) ToVmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArrayOutputWithContext(ctx context.Context) VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArrayOutput { + return o +} + +func (o VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArrayOutput) Index(i pulumi.IntInput) VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp { + return vs[0].([]VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp)[vs[1].(int)] + }).(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpOutput) +} + +type VmwareAdminClusterPlatformConfig struct { + // (Output) + // The list of bundles installed in the admin cluster. + // Structure is documented below. + Bundles []VmwareAdminClusterPlatformConfigBundle `pulumi:"bundles"` + // (Output) + // The platform version e.g. 1.13.2. + PlatformVersion *string `pulumi:"platformVersion"` + // The required platform version e.g. 1.13.1. + // If the current platform version is lower than the target version, + // the platform version will be updated to the target version. + // If the target version is not installed in the platform + // (bundle versions), download the target version bundle. + RequiredPlatformVersion *string `pulumi:"requiredPlatformVersion"` + // (Output) + // ResourceStatus representing detailed cluster state. + // Structure is documented below. + // + // The `status` block contains: + Statuses []VmwareAdminClusterPlatformConfigStatus `pulumi:"statuses"` +} + +// VmwareAdminClusterPlatformConfigInput is an input type that accepts VmwareAdminClusterPlatformConfigArgs and VmwareAdminClusterPlatformConfigOutput values. +// You can construct a concrete instance of `VmwareAdminClusterPlatformConfigInput` via: +// +// VmwareAdminClusterPlatformConfigArgs{...} +type VmwareAdminClusterPlatformConfigInput interface { + pulumi.Input + + ToVmwareAdminClusterPlatformConfigOutput() VmwareAdminClusterPlatformConfigOutput + ToVmwareAdminClusterPlatformConfigOutputWithContext(context.Context) VmwareAdminClusterPlatformConfigOutput +} + +type VmwareAdminClusterPlatformConfigArgs struct { + // (Output) + // The list of bundles installed in the admin cluster. + // Structure is documented below. + Bundles VmwareAdminClusterPlatformConfigBundleArrayInput `pulumi:"bundles"` + // (Output) + // The platform version e.g. 1.13.2. + PlatformVersion pulumi.StringPtrInput `pulumi:"platformVersion"` + // The required platform version e.g. 1.13.1. + // If the current platform version is lower than the target version, + // the platform version will be updated to the target version. + // If the target version is not installed in the platform + // (bundle versions), download the target version bundle. + RequiredPlatformVersion pulumi.StringPtrInput `pulumi:"requiredPlatformVersion"` + // (Output) + // ResourceStatus representing detailed cluster state. + // Structure is documented below. + // + // The `status` block contains: + Statuses VmwareAdminClusterPlatformConfigStatusArrayInput `pulumi:"statuses"` +} + +func (VmwareAdminClusterPlatformConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterPlatformConfig)(nil)).Elem() +} + +func (i VmwareAdminClusterPlatformConfigArgs) ToVmwareAdminClusterPlatformConfigOutput() VmwareAdminClusterPlatformConfigOutput { + return i.ToVmwareAdminClusterPlatformConfigOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterPlatformConfigArgs) ToVmwareAdminClusterPlatformConfigOutputWithContext(ctx context.Context) VmwareAdminClusterPlatformConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterPlatformConfigOutput) +} + +func (i VmwareAdminClusterPlatformConfigArgs) ToVmwareAdminClusterPlatformConfigPtrOutput() VmwareAdminClusterPlatformConfigPtrOutput { + return i.ToVmwareAdminClusterPlatformConfigPtrOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterPlatformConfigArgs) ToVmwareAdminClusterPlatformConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterPlatformConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterPlatformConfigOutput).ToVmwareAdminClusterPlatformConfigPtrOutputWithContext(ctx) +} + +// VmwareAdminClusterPlatformConfigPtrInput is an input type that accepts VmwareAdminClusterPlatformConfigArgs, VmwareAdminClusterPlatformConfigPtr and VmwareAdminClusterPlatformConfigPtrOutput values. +// You can construct a concrete instance of `VmwareAdminClusterPlatformConfigPtrInput` via: +// +// VmwareAdminClusterPlatformConfigArgs{...} +// +// or: +// +// nil +type VmwareAdminClusterPlatformConfigPtrInput interface { + pulumi.Input + + ToVmwareAdminClusterPlatformConfigPtrOutput() VmwareAdminClusterPlatformConfigPtrOutput + ToVmwareAdminClusterPlatformConfigPtrOutputWithContext(context.Context) VmwareAdminClusterPlatformConfigPtrOutput +} + +type vmwareAdminClusterPlatformConfigPtrType VmwareAdminClusterPlatformConfigArgs + +func VmwareAdminClusterPlatformConfigPtr(v *VmwareAdminClusterPlatformConfigArgs) VmwareAdminClusterPlatformConfigPtrInput { + return (*vmwareAdminClusterPlatformConfigPtrType)(v) +} + +func (*vmwareAdminClusterPlatformConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterPlatformConfig)(nil)).Elem() +} + +func (i *vmwareAdminClusterPlatformConfigPtrType) ToVmwareAdminClusterPlatformConfigPtrOutput() VmwareAdminClusterPlatformConfigPtrOutput { + return i.ToVmwareAdminClusterPlatformConfigPtrOutputWithContext(context.Background()) +} + +func (i *vmwareAdminClusterPlatformConfigPtrType) ToVmwareAdminClusterPlatformConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterPlatformConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterPlatformConfigPtrOutput) +} + +type VmwareAdminClusterPlatformConfigOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterPlatformConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterPlatformConfig)(nil)).Elem() +} + +func (o VmwareAdminClusterPlatformConfigOutput) ToVmwareAdminClusterPlatformConfigOutput() VmwareAdminClusterPlatformConfigOutput { + return o +} + +func (o VmwareAdminClusterPlatformConfigOutput) ToVmwareAdminClusterPlatformConfigOutputWithContext(ctx context.Context) VmwareAdminClusterPlatformConfigOutput { + return o +} + +func (o VmwareAdminClusterPlatformConfigOutput) ToVmwareAdminClusterPlatformConfigPtrOutput() VmwareAdminClusterPlatformConfigPtrOutput { + return o.ToVmwareAdminClusterPlatformConfigPtrOutputWithContext(context.Background()) +} + +func (o VmwareAdminClusterPlatformConfigOutput) ToVmwareAdminClusterPlatformConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterPlatformConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v VmwareAdminClusterPlatformConfig) *VmwareAdminClusterPlatformConfig { + return &v + }).(VmwareAdminClusterPlatformConfigPtrOutput) +} + +// (Output) +// The list of bundles installed in the admin cluster. +// Structure is documented below. +func (o VmwareAdminClusterPlatformConfigOutput) Bundles() VmwareAdminClusterPlatformConfigBundleArrayOutput { + return o.ApplyT(func(v VmwareAdminClusterPlatformConfig) []VmwareAdminClusterPlatformConfigBundle { return v.Bundles }).(VmwareAdminClusterPlatformConfigBundleArrayOutput) +} + +// (Output) +// The platform version e.g. 1.13.2. +func (o VmwareAdminClusterPlatformConfigOutput) PlatformVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterPlatformConfig) *string { return v.PlatformVersion }).(pulumi.StringPtrOutput) +} + +// The required platform version e.g. 1.13.1. +// If the current platform version is lower than the target version, +// the platform version will be updated to the target version. +// If the target version is not installed in the platform +// (bundle versions), download the target version bundle. +func (o VmwareAdminClusterPlatformConfigOutput) RequiredPlatformVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterPlatformConfig) *string { return v.RequiredPlatformVersion }).(pulumi.StringPtrOutput) +} + +// (Output) +// ResourceStatus representing detailed cluster state. +// Structure is documented below. +// +// The `status` block contains: +func (o VmwareAdminClusterPlatformConfigOutput) Statuses() VmwareAdminClusterPlatformConfigStatusArrayOutput { + return o.ApplyT(func(v VmwareAdminClusterPlatformConfig) []VmwareAdminClusterPlatformConfigStatus { return v.Statuses }).(VmwareAdminClusterPlatformConfigStatusArrayOutput) +} + +type VmwareAdminClusterPlatformConfigPtrOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterPlatformConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterPlatformConfig)(nil)).Elem() +} + +func (o VmwareAdminClusterPlatformConfigPtrOutput) ToVmwareAdminClusterPlatformConfigPtrOutput() VmwareAdminClusterPlatformConfigPtrOutput { + return o +} + +func (o VmwareAdminClusterPlatformConfigPtrOutput) ToVmwareAdminClusterPlatformConfigPtrOutputWithContext(ctx context.Context) VmwareAdminClusterPlatformConfigPtrOutput { + return o +} + +func (o VmwareAdminClusterPlatformConfigPtrOutput) Elem() VmwareAdminClusterPlatformConfigOutput { + return o.ApplyT(func(v *VmwareAdminClusterPlatformConfig) VmwareAdminClusterPlatformConfig { + if v != nil { + return *v + } + var ret VmwareAdminClusterPlatformConfig + return ret + }).(VmwareAdminClusterPlatformConfigOutput) +} + +// (Output) +// The list of bundles installed in the admin cluster. +// Structure is documented below. +func (o VmwareAdminClusterPlatformConfigPtrOutput) Bundles() VmwareAdminClusterPlatformConfigBundleArrayOutput { + return o.ApplyT(func(v *VmwareAdminClusterPlatformConfig) []VmwareAdminClusterPlatformConfigBundle { + if v == nil { + return nil + } + return v.Bundles + }).(VmwareAdminClusterPlatformConfigBundleArrayOutput) +} + +// (Output) +// The platform version e.g. 1.13.2. +func (o VmwareAdminClusterPlatformConfigPtrOutput) PlatformVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterPlatformConfig) *string { + if v == nil { + return nil + } + return v.PlatformVersion + }).(pulumi.StringPtrOutput) +} + +// The required platform version e.g. 1.13.1. +// If the current platform version is lower than the target version, +// the platform version will be updated to the target version. +// If the target version is not installed in the platform +// (bundle versions), download the target version bundle. +func (o VmwareAdminClusterPlatformConfigPtrOutput) RequiredPlatformVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterPlatformConfig) *string { + if v == nil { + return nil + } + return v.RequiredPlatformVersion + }).(pulumi.StringPtrOutput) +} + +// (Output) +// ResourceStatus representing detailed cluster state. +// Structure is documented below. +// +// The `status` block contains: +func (o VmwareAdminClusterPlatformConfigPtrOutput) Statuses() VmwareAdminClusterPlatformConfigStatusArrayOutput { + return o.ApplyT(func(v *VmwareAdminClusterPlatformConfig) []VmwareAdminClusterPlatformConfigStatus { + if v == nil { + return nil + } + return v.Statuses + }).(VmwareAdminClusterPlatformConfigStatusArrayOutput) +} + +type VmwareAdminClusterPlatformConfigBundle struct { + // ResourceStatus representing detailed cluster state. + // Structure is documented below. + Statuses []VmwareAdminClusterPlatformConfigBundleStatus `pulumi:"statuses"` + // The version of the bundle. + Version *string `pulumi:"version"` +} + +// VmwareAdminClusterPlatformConfigBundleInput is an input type that accepts VmwareAdminClusterPlatformConfigBundleArgs and VmwareAdminClusterPlatformConfigBundleOutput values. +// You can construct a concrete instance of `VmwareAdminClusterPlatformConfigBundleInput` via: +// +// VmwareAdminClusterPlatformConfigBundleArgs{...} +type VmwareAdminClusterPlatformConfigBundleInput interface { + pulumi.Input + + ToVmwareAdminClusterPlatformConfigBundleOutput() VmwareAdminClusterPlatformConfigBundleOutput + ToVmwareAdminClusterPlatformConfigBundleOutputWithContext(context.Context) VmwareAdminClusterPlatformConfigBundleOutput +} + +type VmwareAdminClusterPlatformConfigBundleArgs struct { + // ResourceStatus representing detailed cluster state. + // Structure is documented below. + Statuses VmwareAdminClusterPlatformConfigBundleStatusArrayInput `pulumi:"statuses"` + // The version of the bundle. + Version pulumi.StringPtrInput `pulumi:"version"` +} + +func (VmwareAdminClusterPlatformConfigBundleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterPlatformConfigBundle)(nil)).Elem() +} + +func (i VmwareAdminClusterPlatformConfigBundleArgs) ToVmwareAdminClusterPlatformConfigBundleOutput() VmwareAdminClusterPlatformConfigBundleOutput { + return i.ToVmwareAdminClusterPlatformConfigBundleOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterPlatformConfigBundleArgs) ToVmwareAdminClusterPlatformConfigBundleOutputWithContext(ctx context.Context) VmwareAdminClusterPlatformConfigBundleOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterPlatformConfigBundleOutput) +} + +// VmwareAdminClusterPlatformConfigBundleArrayInput is an input type that accepts VmwareAdminClusterPlatformConfigBundleArray and VmwareAdminClusterPlatformConfigBundleArrayOutput values. +// You can construct a concrete instance of `VmwareAdminClusterPlatformConfigBundleArrayInput` via: +// +// VmwareAdminClusterPlatformConfigBundleArray{ VmwareAdminClusterPlatformConfigBundleArgs{...} } +type VmwareAdminClusterPlatformConfigBundleArrayInput interface { + pulumi.Input + + ToVmwareAdminClusterPlatformConfigBundleArrayOutput() VmwareAdminClusterPlatformConfigBundleArrayOutput + ToVmwareAdminClusterPlatformConfigBundleArrayOutputWithContext(context.Context) VmwareAdminClusterPlatformConfigBundleArrayOutput +} + +type VmwareAdminClusterPlatformConfigBundleArray []VmwareAdminClusterPlatformConfigBundleInput + +func (VmwareAdminClusterPlatformConfigBundleArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]VmwareAdminClusterPlatformConfigBundle)(nil)).Elem() +} + +func (i VmwareAdminClusterPlatformConfigBundleArray) ToVmwareAdminClusterPlatformConfigBundleArrayOutput() VmwareAdminClusterPlatformConfigBundleArrayOutput { + return i.ToVmwareAdminClusterPlatformConfigBundleArrayOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterPlatformConfigBundleArray) ToVmwareAdminClusterPlatformConfigBundleArrayOutputWithContext(ctx context.Context) VmwareAdminClusterPlatformConfigBundleArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterPlatformConfigBundleArrayOutput) +} + +type VmwareAdminClusterPlatformConfigBundleOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterPlatformConfigBundleOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterPlatformConfigBundle)(nil)).Elem() +} + +func (o VmwareAdminClusterPlatformConfigBundleOutput) ToVmwareAdminClusterPlatformConfigBundleOutput() VmwareAdminClusterPlatformConfigBundleOutput { + return o +} + +func (o VmwareAdminClusterPlatformConfigBundleOutput) ToVmwareAdminClusterPlatformConfigBundleOutputWithContext(ctx context.Context) VmwareAdminClusterPlatformConfigBundleOutput { + return o +} + +// ResourceStatus representing detailed cluster state. +// Structure is documented below. +func (o VmwareAdminClusterPlatformConfigBundleOutput) Statuses() VmwareAdminClusterPlatformConfigBundleStatusArrayOutput { + return o.ApplyT(func(v VmwareAdminClusterPlatformConfigBundle) []VmwareAdminClusterPlatformConfigBundleStatus { + return v.Statuses + }).(VmwareAdminClusterPlatformConfigBundleStatusArrayOutput) +} + +// The version of the bundle. +func (o VmwareAdminClusterPlatformConfigBundleOutput) Version() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterPlatformConfigBundle) *string { return v.Version }).(pulumi.StringPtrOutput) +} + +type VmwareAdminClusterPlatformConfigBundleArrayOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterPlatformConfigBundleArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]VmwareAdminClusterPlatformConfigBundle)(nil)).Elem() +} + +func (o VmwareAdminClusterPlatformConfigBundleArrayOutput) ToVmwareAdminClusterPlatformConfigBundleArrayOutput() VmwareAdminClusterPlatformConfigBundleArrayOutput { + return o +} + +func (o VmwareAdminClusterPlatformConfigBundleArrayOutput) ToVmwareAdminClusterPlatformConfigBundleArrayOutputWithContext(ctx context.Context) VmwareAdminClusterPlatformConfigBundleArrayOutput { + return o +} + +func (o VmwareAdminClusterPlatformConfigBundleArrayOutput) Index(i pulumi.IntInput) VmwareAdminClusterPlatformConfigBundleOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) VmwareAdminClusterPlatformConfigBundle { + return vs[0].([]VmwareAdminClusterPlatformConfigBundle)[vs[1].(int)] + }).(VmwareAdminClusterPlatformConfigBundleOutput) +} + +type VmwareAdminClusterPlatformConfigBundleStatus struct { + // (Output) + // ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + // Structure is documented below. + Conditions []VmwareAdminClusterPlatformConfigBundleStatusCondition `pulumi:"conditions"` + // (Output) + // Human-friendly representation of the error message from the admin cluster + // controller. The error message can be temporary as the admin cluster + // controller creates a cluster or node pool. If the error message persists + // for a longer period of time, it can be used to surface error message to + // indicate real problems requiring user intervention. + ErrorMessage *string `pulumi:"errorMessage"` +} + +// VmwareAdminClusterPlatformConfigBundleStatusInput is an input type that accepts VmwareAdminClusterPlatformConfigBundleStatusArgs and VmwareAdminClusterPlatformConfigBundleStatusOutput values. +// You can construct a concrete instance of `VmwareAdminClusterPlatformConfigBundleStatusInput` via: +// +// VmwareAdminClusterPlatformConfigBundleStatusArgs{...} +type VmwareAdminClusterPlatformConfigBundleStatusInput interface { + pulumi.Input + + ToVmwareAdminClusterPlatformConfigBundleStatusOutput() VmwareAdminClusterPlatformConfigBundleStatusOutput + ToVmwareAdminClusterPlatformConfigBundleStatusOutputWithContext(context.Context) VmwareAdminClusterPlatformConfigBundleStatusOutput +} + +type VmwareAdminClusterPlatformConfigBundleStatusArgs struct { + // (Output) + // ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + // Structure is documented below. + Conditions VmwareAdminClusterPlatformConfigBundleStatusConditionArrayInput `pulumi:"conditions"` + // (Output) + // Human-friendly representation of the error message from the admin cluster + // controller. The error message can be temporary as the admin cluster + // controller creates a cluster or node pool. If the error message persists + // for a longer period of time, it can be used to surface error message to + // indicate real problems requiring user intervention. + ErrorMessage pulumi.StringPtrInput `pulumi:"errorMessage"` +} + +func (VmwareAdminClusterPlatformConfigBundleStatusArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterPlatformConfigBundleStatus)(nil)).Elem() +} + +func (i VmwareAdminClusterPlatformConfigBundleStatusArgs) ToVmwareAdminClusterPlatformConfigBundleStatusOutput() VmwareAdminClusterPlatformConfigBundleStatusOutput { + return i.ToVmwareAdminClusterPlatformConfigBundleStatusOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterPlatformConfigBundleStatusArgs) ToVmwareAdminClusterPlatformConfigBundleStatusOutputWithContext(ctx context.Context) VmwareAdminClusterPlatformConfigBundleStatusOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterPlatformConfigBundleStatusOutput) +} + +// VmwareAdminClusterPlatformConfigBundleStatusArrayInput is an input type that accepts VmwareAdminClusterPlatformConfigBundleStatusArray and VmwareAdminClusterPlatformConfigBundleStatusArrayOutput values. +// You can construct a concrete instance of `VmwareAdminClusterPlatformConfigBundleStatusArrayInput` via: +// +// VmwareAdminClusterPlatformConfigBundleStatusArray{ VmwareAdminClusterPlatformConfigBundleStatusArgs{...} } +type VmwareAdminClusterPlatformConfigBundleStatusArrayInput interface { + pulumi.Input + + ToVmwareAdminClusterPlatformConfigBundleStatusArrayOutput() VmwareAdminClusterPlatformConfigBundleStatusArrayOutput + ToVmwareAdminClusterPlatformConfigBundleStatusArrayOutputWithContext(context.Context) VmwareAdminClusterPlatformConfigBundleStatusArrayOutput +} + +type VmwareAdminClusterPlatformConfigBundleStatusArray []VmwareAdminClusterPlatformConfigBundleStatusInput + +func (VmwareAdminClusterPlatformConfigBundleStatusArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]VmwareAdminClusterPlatformConfigBundleStatus)(nil)).Elem() +} + +func (i VmwareAdminClusterPlatformConfigBundleStatusArray) ToVmwareAdminClusterPlatformConfigBundleStatusArrayOutput() VmwareAdminClusterPlatformConfigBundleStatusArrayOutput { + return i.ToVmwareAdminClusterPlatformConfigBundleStatusArrayOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterPlatformConfigBundleStatusArray) ToVmwareAdminClusterPlatformConfigBundleStatusArrayOutputWithContext(ctx context.Context) VmwareAdminClusterPlatformConfigBundleStatusArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterPlatformConfigBundleStatusArrayOutput) +} + +type VmwareAdminClusterPlatformConfigBundleStatusOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterPlatformConfigBundleStatusOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterPlatformConfigBundleStatus)(nil)).Elem() +} + +func (o VmwareAdminClusterPlatformConfigBundleStatusOutput) ToVmwareAdminClusterPlatformConfigBundleStatusOutput() VmwareAdminClusterPlatformConfigBundleStatusOutput { + return o +} + +func (o VmwareAdminClusterPlatformConfigBundleStatusOutput) ToVmwareAdminClusterPlatformConfigBundleStatusOutputWithContext(ctx context.Context) VmwareAdminClusterPlatformConfigBundleStatusOutput { + return o +} + +// (Output) +// ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. +// Structure is documented below. +func (o VmwareAdminClusterPlatformConfigBundleStatusOutput) Conditions() VmwareAdminClusterPlatformConfigBundleStatusConditionArrayOutput { + return o.ApplyT(func(v VmwareAdminClusterPlatformConfigBundleStatus) []VmwareAdminClusterPlatformConfigBundleStatusCondition { + return v.Conditions + }).(VmwareAdminClusterPlatformConfigBundleStatusConditionArrayOutput) +} + +// (Output) +// Human-friendly representation of the error message from the admin cluster +// controller. The error message can be temporary as the admin cluster +// controller creates a cluster or node pool. If the error message persists +// for a longer period of time, it can be used to surface error message to +// indicate real problems requiring user intervention. +func (o VmwareAdminClusterPlatformConfigBundleStatusOutput) ErrorMessage() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterPlatformConfigBundleStatus) *string { return v.ErrorMessage }).(pulumi.StringPtrOutput) +} + +type VmwareAdminClusterPlatformConfigBundleStatusArrayOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterPlatformConfigBundleStatusArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]VmwareAdminClusterPlatformConfigBundleStatus)(nil)).Elem() +} + +func (o VmwareAdminClusterPlatformConfigBundleStatusArrayOutput) ToVmwareAdminClusterPlatformConfigBundleStatusArrayOutput() VmwareAdminClusterPlatformConfigBundleStatusArrayOutput { + return o +} + +func (o VmwareAdminClusterPlatformConfigBundleStatusArrayOutput) ToVmwareAdminClusterPlatformConfigBundleStatusArrayOutputWithContext(ctx context.Context) VmwareAdminClusterPlatformConfigBundleStatusArrayOutput { + return o +} + +func (o VmwareAdminClusterPlatformConfigBundleStatusArrayOutput) Index(i pulumi.IntInput) VmwareAdminClusterPlatformConfigBundleStatusOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) VmwareAdminClusterPlatformConfigBundleStatus { + return vs[0].([]VmwareAdminClusterPlatformConfigBundleStatus)[vs[1].(int)] + }).(VmwareAdminClusterPlatformConfigBundleStatusOutput) +} + +type VmwareAdminClusterPlatformConfigBundleStatusCondition struct { + // (Output) + // Last time the condition transit from one status to another. + LastTransitionTime *string `pulumi:"lastTransitionTime"` + // (Output) + // Human-readable message indicating details about last transition. + Message *string `pulumi:"message"` + // (Output) + // Machine-readable message indicating details about last transition. + Reason *string `pulumi:"reason"` + // (Output) + // The lifecycle state of the condition. + State *string `pulumi:"state"` + // (Output) + // Type of the condition. + // (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + Type *string `pulumi:"type"` +} + +// VmwareAdminClusterPlatformConfigBundleStatusConditionInput is an input type that accepts VmwareAdminClusterPlatformConfigBundleStatusConditionArgs and VmwareAdminClusterPlatformConfigBundleStatusConditionOutput values. +// You can construct a concrete instance of `VmwareAdminClusterPlatformConfigBundleStatusConditionInput` via: +// +// VmwareAdminClusterPlatformConfigBundleStatusConditionArgs{...} +type VmwareAdminClusterPlatformConfigBundleStatusConditionInput interface { + pulumi.Input + + ToVmwareAdminClusterPlatformConfigBundleStatusConditionOutput() VmwareAdminClusterPlatformConfigBundleStatusConditionOutput + ToVmwareAdminClusterPlatformConfigBundleStatusConditionOutputWithContext(context.Context) VmwareAdminClusterPlatformConfigBundleStatusConditionOutput +} + +type VmwareAdminClusterPlatformConfigBundleStatusConditionArgs struct { + // (Output) + // Last time the condition transit from one status to another. + LastTransitionTime pulumi.StringPtrInput `pulumi:"lastTransitionTime"` + // (Output) + // Human-readable message indicating details about last transition. + Message pulumi.StringPtrInput `pulumi:"message"` + // (Output) + // Machine-readable message indicating details about last transition. + Reason pulumi.StringPtrInput `pulumi:"reason"` + // (Output) + // The lifecycle state of the condition. + State pulumi.StringPtrInput `pulumi:"state"` + // (Output) + // Type of the condition. + // (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + Type pulumi.StringPtrInput `pulumi:"type"` +} + +func (VmwareAdminClusterPlatformConfigBundleStatusConditionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterPlatformConfigBundleStatusCondition)(nil)).Elem() +} + +func (i VmwareAdminClusterPlatformConfigBundleStatusConditionArgs) ToVmwareAdminClusterPlatformConfigBundleStatusConditionOutput() VmwareAdminClusterPlatformConfigBundleStatusConditionOutput { + return i.ToVmwareAdminClusterPlatformConfigBundleStatusConditionOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterPlatformConfigBundleStatusConditionArgs) ToVmwareAdminClusterPlatformConfigBundleStatusConditionOutputWithContext(ctx context.Context) VmwareAdminClusterPlatformConfigBundleStatusConditionOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterPlatformConfigBundleStatusConditionOutput) +} + +// VmwareAdminClusterPlatformConfigBundleStatusConditionArrayInput is an input type that accepts VmwareAdminClusterPlatformConfigBundleStatusConditionArray and VmwareAdminClusterPlatformConfigBundleStatusConditionArrayOutput values. +// You can construct a concrete instance of `VmwareAdminClusterPlatformConfigBundleStatusConditionArrayInput` via: +// +// VmwareAdminClusterPlatformConfigBundleStatusConditionArray{ VmwareAdminClusterPlatformConfigBundleStatusConditionArgs{...} } +type VmwareAdminClusterPlatformConfigBundleStatusConditionArrayInput interface { + pulumi.Input + + ToVmwareAdminClusterPlatformConfigBundleStatusConditionArrayOutput() VmwareAdminClusterPlatformConfigBundleStatusConditionArrayOutput + ToVmwareAdminClusterPlatformConfigBundleStatusConditionArrayOutputWithContext(context.Context) VmwareAdminClusterPlatformConfigBundleStatusConditionArrayOutput +} + +type VmwareAdminClusterPlatformConfigBundleStatusConditionArray []VmwareAdminClusterPlatformConfigBundleStatusConditionInput + +func (VmwareAdminClusterPlatformConfigBundleStatusConditionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]VmwareAdminClusterPlatformConfigBundleStatusCondition)(nil)).Elem() +} + +func (i VmwareAdminClusterPlatformConfigBundleStatusConditionArray) ToVmwareAdminClusterPlatformConfigBundleStatusConditionArrayOutput() VmwareAdminClusterPlatformConfigBundleStatusConditionArrayOutput { + return i.ToVmwareAdminClusterPlatformConfigBundleStatusConditionArrayOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterPlatformConfigBundleStatusConditionArray) ToVmwareAdminClusterPlatformConfigBundleStatusConditionArrayOutputWithContext(ctx context.Context) VmwareAdminClusterPlatformConfigBundleStatusConditionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterPlatformConfigBundleStatusConditionArrayOutput) +} + +type VmwareAdminClusterPlatformConfigBundleStatusConditionOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterPlatformConfigBundleStatusConditionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterPlatformConfigBundleStatusCondition)(nil)).Elem() +} + +func (o VmwareAdminClusterPlatformConfigBundleStatusConditionOutput) ToVmwareAdminClusterPlatformConfigBundleStatusConditionOutput() VmwareAdminClusterPlatformConfigBundleStatusConditionOutput { + return o +} + +func (o VmwareAdminClusterPlatformConfigBundleStatusConditionOutput) ToVmwareAdminClusterPlatformConfigBundleStatusConditionOutputWithContext(ctx context.Context) VmwareAdminClusterPlatformConfigBundleStatusConditionOutput { + return o +} + +// (Output) +// Last time the condition transit from one status to another. +func (o VmwareAdminClusterPlatformConfigBundleStatusConditionOutput) LastTransitionTime() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterPlatformConfigBundleStatusCondition) *string { return v.LastTransitionTime }).(pulumi.StringPtrOutput) +} + +// (Output) +// Human-readable message indicating details about last transition. +func (o VmwareAdminClusterPlatformConfigBundleStatusConditionOutput) Message() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterPlatformConfigBundleStatusCondition) *string { return v.Message }).(pulumi.StringPtrOutput) +} + +// (Output) +// Machine-readable message indicating details about last transition. +func (o VmwareAdminClusterPlatformConfigBundleStatusConditionOutput) Reason() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterPlatformConfigBundleStatusCondition) *string { return v.Reason }).(pulumi.StringPtrOutput) +} + +// (Output) +// The lifecycle state of the condition. +func (o VmwareAdminClusterPlatformConfigBundleStatusConditionOutput) State() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterPlatformConfigBundleStatusCondition) *string { return v.State }).(pulumi.StringPtrOutput) +} + +// (Output) +// Type of the condition. +// (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) +func (o VmwareAdminClusterPlatformConfigBundleStatusConditionOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterPlatformConfigBundleStatusCondition) *string { return v.Type }).(pulumi.StringPtrOutput) +} + +type VmwareAdminClusterPlatformConfigBundleStatusConditionArrayOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterPlatformConfigBundleStatusConditionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]VmwareAdminClusterPlatformConfigBundleStatusCondition)(nil)).Elem() +} + +func (o VmwareAdminClusterPlatformConfigBundleStatusConditionArrayOutput) ToVmwareAdminClusterPlatformConfigBundleStatusConditionArrayOutput() VmwareAdminClusterPlatformConfigBundleStatusConditionArrayOutput { + return o +} + +func (o VmwareAdminClusterPlatformConfigBundleStatusConditionArrayOutput) ToVmwareAdminClusterPlatformConfigBundleStatusConditionArrayOutputWithContext(ctx context.Context) VmwareAdminClusterPlatformConfigBundleStatusConditionArrayOutput { + return o +} + +func (o VmwareAdminClusterPlatformConfigBundleStatusConditionArrayOutput) Index(i pulumi.IntInput) VmwareAdminClusterPlatformConfigBundleStatusConditionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) VmwareAdminClusterPlatformConfigBundleStatusCondition { + return vs[0].([]VmwareAdminClusterPlatformConfigBundleStatusCondition)[vs[1].(int)] + }).(VmwareAdminClusterPlatformConfigBundleStatusConditionOutput) +} + +type VmwareAdminClusterPlatformConfigStatus struct { + // (Output) + // ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + // Structure is documented below. + Conditions []VmwareAdminClusterPlatformConfigStatusCondition `pulumi:"conditions"` + // (Output) + // Human-friendly representation of the error message from the admin cluster + // controller. The error message can be temporary as the admin cluster + // controller creates a cluster or node pool. If the error message persists + // for a longer period of time, it can be used to surface error message to + // indicate real problems requiring user intervention. + ErrorMessage *string `pulumi:"errorMessage"` +} + +// VmwareAdminClusterPlatformConfigStatusInput is an input type that accepts VmwareAdminClusterPlatformConfigStatusArgs and VmwareAdminClusterPlatformConfigStatusOutput values. +// You can construct a concrete instance of `VmwareAdminClusterPlatformConfigStatusInput` via: +// +// VmwareAdminClusterPlatformConfigStatusArgs{...} +type VmwareAdminClusterPlatformConfigStatusInput interface { + pulumi.Input + + ToVmwareAdminClusterPlatformConfigStatusOutput() VmwareAdminClusterPlatformConfigStatusOutput + ToVmwareAdminClusterPlatformConfigStatusOutputWithContext(context.Context) VmwareAdminClusterPlatformConfigStatusOutput +} + +type VmwareAdminClusterPlatformConfigStatusArgs struct { + // (Output) + // ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + // Structure is documented below. + Conditions VmwareAdminClusterPlatformConfigStatusConditionArrayInput `pulumi:"conditions"` + // (Output) + // Human-friendly representation of the error message from the admin cluster + // controller. The error message can be temporary as the admin cluster + // controller creates a cluster or node pool. If the error message persists + // for a longer period of time, it can be used to surface error message to + // indicate real problems requiring user intervention. + ErrorMessage pulumi.StringPtrInput `pulumi:"errorMessage"` +} + +func (VmwareAdminClusterPlatformConfigStatusArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterPlatformConfigStatus)(nil)).Elem() +} + +func (i VmwareAdminClusterPlatformConfigStatusArgs) ToVmwareAdminClusterPlatformConfigStatusOutput() VmwareAdminClusterPlatformConfigStatusOutput { + return i.ToVmwareAdminClusterPlatformConfigStatusOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterPlatformConfigStatusArgs) ToVmwareAdminClusterPlatformConfigStatusOutputWithContext(ctx context.Context) VmwareAdminClusterPlatformConfigStatusOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterPlatformConfigStatusOutput) +} + +// VmwareAdminClusterPlatformConfigStatusArrayInput is an input type that accepts VmwareAdminClusterPlatformConfigStatusArray and VmwareAdminClusterPlatformConfigStatusArrayOutput values. +// You can construct a concrete instance of `VmwareAdminClusterPlatformConfigStatusArrayInput` via: +// +// VmwareAdminClusterPlatformConfigStatusArray{ VmwareAdminClusterPlatformConfigStatusArgs{...} } +type VmwareAdminClusterPlatformConfigStatusArrayInput interface { + pulumi.Input + + ToVmwareAdminClusterPlatformConfigStatusArrayOutput() VmwareAdminClusterPlatformConfigStatusArrayOutput + ToVmwareAdminClusterPlatformConfigStatusArrayOutputWithContext(context.Context) VmwareAdminClusterPlatformConfigStatusArrayOutput +} + +type VmwareAdminClusterPlatformConfigStatusArray []VmwareAdminClusterPlatformConfigStatusInput + +func (VmwareAdminClusterPlatformConfigStatusArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]VmwareAdminClusterPlatformConfigStatus)(nil)).Elem() +} + +func (i VmwareAdminClusterPlatformConfigStatusArray) ToVmwareAdminClusterPlatformConfigStatusArrayOutput() VmwareAdminClusterPlatformConfigStatusArrayOutput { + return i.ToVmwareAdminClusterPlatformConfigStatusArrayOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterPlatformConfigStatusArray) ToVmwareAdminClusterPlatformConfigStatusArrayOutputWithContext(ctx context.Context) VmwareAdminClusterPlatformConfigStatusArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterPlatformConfigStatusArrayOutput) +} + +type VmwareAdminClusterPlatformConfigStatusOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterPlatformConfigStatusOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterPlatformConfigStatus)(nil)).Elem() +} + +func (o VmwareAdminClusterPlatformConfigStatusOutput) ToVmwareAdminClusterPlatformConfigStatusOutput() VmwareAdminClusterPlatformConfigStatusOutput { + return o +} + +func (o VmwareAdminClusterPlatformConfigStatusOutput) ToVmwareAdminClusterPlatformConfigStatusOutputWithContext(ctx context.Context) VmwareAdminClusterPlatformConfigStatusOutput { + return o +} + +// (Output) +// ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. +// Structure is documented below. +func (o VmwareAdminClusterPlatformConfigStatusOutput) Conditions() VmwareAdminClusterPlatformConfigStatusConditionArrayOutput { + return o.ApplyT(func(v VmwareAdminClusterPlatformConfigStatus) []VmwareAdminClusterPlatformConfigStatusCondition { + return v.Conditions + }).(VmwareAdminClusterPlatformConfigStatusConditionArrayOutput) +} + +// (Output) +// Human-friendly representation of the error message from the admin cluster +// controller. The error message can be temporary as the admin cluster +// controller creates a cluster or node pool. If the error message persists +// for a longer period of time, it can be used to surface error message to +// indicate real problems requiring user intervention. +func (o VmwareAdminClusterPlatformConfigStatusOutput) ErrorMessage() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterPlatformConfigStatus) *string { return v.ErrorMessage }).(pulumi.StringPtrOutput) +} + +type VmwareAdminClusterPlatformConfigStatusArrayOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterPlatformConfigStatusArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]VmwareAdminClusterPlatformConfigStatus)(nil)).Elem() +} + +func (o VmwareAdminClusterPlatformConfigStatusArrayOutput) ToVmwareAdminClusterPlatformConfigStatusArrayOutput() VmwareAdminClusterPlatformConfigStatusArrayOutput { + return o +} + +func (o VmwareAdminClusterPlatformConfigStatusArrayOutput) ToVmwareAdminClusterPlatformConfigStatusArrayOutputWithContext(ctx context.Context) VmwareAdminClusterPlatformConfigStatusArrayOutput { + return o +} + +func (o VmwareAdminClusterPlatformConfigStatusArrayOutput) Index(i pulumi.IntInput) VmwareAdminClusterPlatformConfigStatusOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) VmwareAdminClusterPlatformConfigStatus { + return vs[0].([]VmwareAdminClusterPlatformConfigStatus)[vs[1].(int)] + }).(VmwareAdminClusterPlatformConfigStatusOutput) +} + +type VmwareAdminClusterPlatformConfigStatusCondition struct { + // (Output) + // Last time the condition transit from one status to another. + LastTransitionTime *string `pulumi:"lastTransitionTime"` + // (Output) + // Human-readable message indicating details about last transition. + Message *string `pulumi:"message"` + // (Output) + // Machine-readable message indicating details about last transition. + Reason *string `pulumi:"reason"` + // (Output) + // The lifecycle state of the condition. + State *string `pulumi:"state"` + // (Output) + // Type of the condition. + // (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + Type *string `pulumi:"type"` +} + +// VmwareAdminClusterPlatformConfigStatusConditionInput is an input type that accepts VmwareAdminClusterPlatformConfigStatusConditionArgs and VmwareAdminClusterPlatformConfigStatusConditionOutput values. +// You can construct a concrete instance of `VmwareAdminClusterPlatformConfigStatusConditionInput` via: +// +// VmwareAdminClusterPlatformConfigStatusConditionArgs{...} +type VmwareAdminClusterPlatformConfigStatusConditionInput interface { + pulumi.Input + + ToVmwareAdminClusterPlatformConfigStatusConditionOutput() VmwareAdminClusterPlatformConfigStatusConditionOutput + ToVmwareAdminClusterPlatformConfigStatusConditionOutputWithContext(context.Context) VmwareAdminClusterPlatformConfigStatusConditionOutput +} + +type VmwareAdminClusterPlatformConfigStatusConditionArgs struct { + // (Output) + // Last time the condition transit from one status to another. + LastTransitionTime pulumi.StringPtrInput `pulumi:"lastTransitionTime"` + // (Output) + // Human-readable message indicating details about last transition. + Message pulumi.StringPtrInput `pulumi:"message"` + // (Output) + // Machine-readable message indicating details about last transition. + Reason pulumi.StringPtrInput `pulumi:"reason"` + // (Output) + // The lifecycle state of the condition. + State pulumi.StringPtrInput `pulumi:"state"` + // (Output) + // Type of the condition. + // (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + Type pulumi.StringPtrInput `pulumi:"type"` +} + +func (VmwareAdminClusterPlatformConfigStatusConditionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterPlatformConfigStatusCondition)(nil)).Elem() +} + +func (i VmwareAdminClusterPlatformConfigStatusConditionArgs) ToVmwareAdminClusterPlatformConfigStatusConditionOutput() VmwareAdminClusterPlatformConfigStatusConditionOutput { + return i.ToVmwareAdminClusterPlatformConfigStatusConditionOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterPlatformConfigStatusConditionArgs) ToVmwareAdminClusterPlatformConfigStatusConditionOutputWithContext(ctx context.Context) VmwareAdminClusterPlatformConfigStatusConditionOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterPlatformConfigStatusConditionOutput) +} + +// VmwareAdminClusterPlatformConfigStatusConditionArrayInput is an input type that accepts VmwareAdminClusterPlatformConfigStatusConditionArray and VmwareAdminClusterPlatformConfigStatusConditionArrayOutput values. +// You can construct a concrete instance of `VmwareAdminClusterPlatformConfigStatusConditionArrayInput` via: +// +// VmwareAdminClusterPlatformConfigStatusConditionArray{ VmwareAdminClusterPlatformConfigStatusConditionArgs{...} } +type VmwareAdminClusterPlatformConfigStatusConditionArrayInput interface { + pulumi.Input + + ToVmwareAdminClusterPlatformConfigStatusConditionArrayOutput() VmwareAdminClusterPlatformConfigStatusConditionArrayOutput + ToVmwareAdminClusterPlatformConfigStatusConditionArrayOutputWithContext(context.Context) VmwareAdminClusterPlatformConfigStatusConditionArrayOutput +} + +type VmwareAdminClusterPlatformConfigStatusConditionArray []VmwareAdminClusterPlatformConfigStatusConditionInput + +func (VmwareAdminClusterPlatformConfigStatusConditionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]VmwareAdminClusterPlatformConfigStatusCondition)(nil)).Elem() +} + +func (i VmwareAdminClusterPlatformConfigStatusConditionArray) ToVmwareAdminClusterPlatformConfigStatusConditionArrayOutput() VmwareAdminClusterPlatformConfigStatusConditionArrayOutput { + return i.ToVmwareAdminClusterPlatformConfigStatusConditionArrayOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterPlatformConfigStatusConditionArray) ToVmwareAdminClusterPlatformConfigStatusConditionArrayOutputWithContext(ctx context.Context) VmwareAdminClusterPlatformConfigStatusConditionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterPlatformConfigStatusConditionArrayOutput) +} + +type VmwareAdminClusterPlatformConfigStatusConditionOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterPlatformConfigStatusConditionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterPlatformConfigStatusCondition)(nil)).Elem() +} + +func (o VmwareAdminClusterPlatformConfigStatusConditionOutput) ToVmwareAdminClusterPlatformConfigStatusConditionOutput() VmwareAdminClusterPlatformConfigStatusConditionOutput { + return o +} + +func (o VmwareAdminClusterPlatformConfigStatusConditionOutput) ToVmwareAdminClusterPlatformConfigStatusConditionOutputWithContext(ctx context.Context) VmwareAdminClusterPlatformConfigStatusConditionOutput { + return o +} + +// (Output) +// Last time the condition transit from one status to another. +func (o VmwareAdminClusterPlatformConfigStatusConditionOutput) LastTransitionTime() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterPlatformConfigStatusCondition) *string { return v.LastTransitionTime }).(pulumi.StringPtrOutput) +} + +// (Output) +// Human-readable message indicating details about last transition. +func (o VmwareAdminClusterPlatformConfigStatusConditionOutput) Message() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterPlatformConfigStatusCondition) *string { return v.Message }).(pulumi.StringPtrOutput) +} + +// (Output) +// Machine-readable message indicating details about last transition. +func (o VmwareAdminClusterPlatformConfigStatusConditionOutput) Reason() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterPlatformConfigStatusCondition) *string { return v.Reason }).(pulumi.StringPtrOutput) +} + +// (Output) +// The lifecycle state of the condition. +func (o VmwareAdminClusterPlatformConfigStatusConditionOutput) State() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterPlatformConfigStatusCondition) *string { return v.State }).(pulumi.StringPtrOutput) +} + +// (Output) +// Type of the condition. +// (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) +func (o VmwareAdminClusterPlatformConfigStatusConditionOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterPlatformConfigStatusCondition) *string { return v.Type }).(pulumi.StringPtrOutput) +} + +type VmwareAdminClusterPlatformConfigStatusConditionArrayOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterPlatformConfigStatusConditionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]VmwareAdminClusterPlatformConfigStatusCondition)(nil)).Elem() +} + +func (o VmwareAdminClusterPlatformConfigStatusConditionArrayOutput) ToVmwareAdminClusterPlatformConfigStatusConditionArrayOutput() VmwareAdminClusterPlatformConfigStatusConditionArrayOutput { + return o +} + +func (o VmwareAdminClusterPlatformConfigStatusConditionArrayOutput) ToVmwareAdminClusterPlatformConfigStatusConditionArrayOutputWithContext(ctx context.Context) VmwareAdminClusterPlatformConfigStatusConditionArrayOutput { + return o +} + +func (o VmwareAdminClusterPlatformConfigStatusConditionArrayOutput) Index(i pulumi.IntInput) VmwareAdminClusterPlatformConfigStatusConditionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) VmwareAdminClusterPlatformConfigStatusCondition { + return vs[0].([]VmwareAdminClusterPlatformConfigStatusCondition)[vs[1].(int)] + }).(VmwareAdminClusterPlatformConfigStatusConditionOutput) +} + +type VmwareAdminClusterStatus struct { + // (Output) + // ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + // Structure is documented below. + Conditions []VmwareAdminClusterStatusCondition `pulumi:"conditions"` + // (Output) + // Human-friendly representation of the error message from the admin cluster + // controller. The error message can be temporary as the admin cluster + // controller creates a cluster or node pool. If the error message persists + // for a longer period of time, it can be used to surface error message to + // indicate real problems requiring user intervention. + ErrorMessage *string `pulumi:"errorMessage"` +} + +// VmwareAdminClusterStatusInput is an input type that accepts VmwareAdminClusterStatusArgs and VmwareAdminClusterStatusOutput values. +// You can construct a concrete instance of `VmwareAdminClusterStatusInput` via: +// +// VmwareAdminClusterStatusArgs{...} +type VmwareAdminClusterStatusInput interface { + pulumi.Input + + ToVmwareAdminClusterStatusOutput() VmwareAdminClusterStatusOutput + ToVmwareAdminClusterStatusOutputWithContext(context.Context) VmwareAdminClusterStatusOutput +} + +type VmwareAdminClusterStatusArgs struct { + // (Output) + // ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + // Structure is documented below. + Conditions VmwareAdminClusterStatusConditionArrayInput `pulumi:"conditions"` + // (Output) + // Human-friendly representation of the error message from the admin cluster + // controller. The error message can be temporary as the admin cluster + // controller creates a cluster or node pool. If the error message persists + // for a longer period of time, it can be used to surface error message to + // indicate real problems requiring user intervention. + ErrorMessage pulumi.StringPtrInput `pulumi:"errorMessage"` +} + +func (VmwareAdminClusterStatusArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterStatus)(nil)).Elem() +} + +func (i VmwareAdminClusterStatusArgs) ToVmwareAdminClusterStatusOutput() VmwareAdminClusterStatusOutput { + return i.ToVmwareAdminClusterStatusOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterStatusArgs) ToVmwareAdminClusterStatusOutputWithContext(ctx context.Context) VmwareAdminClusterStatusOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterStatusOutput) +} + +// VmwareAdminClusterStatusArrayInput is an input type that accepts VmwareAdminClusterStatusArray and VmwareAdminClusterStatusArrayOutput values. +// You can construct a concrete instance of `VmwareAdminClusterStatusArrayInput` via: +// +// VmwareAdminClusterStatusArray{ VmwareAdminClusterStatusArgs{...} } +type VmwareAdminClusterStatusArrayInput interface { + pulumi.Input + + ToVmwareAdminClusterStatusArrayOutput() VmwareAdminClusterStatusArrayOutput + ToVmwareAdminClusterStatusArrayOutputWithContext(context.Context) VmwareAdminClusterStatusArrayOutput +} + +type VmwareAdminClusterStatusArray []VmwareAdminClusterStatusInput + +func (VmwareAdminClusterStatusArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]VmwareAdminClusterStatus)(nil)).Elem() +} + +func (i VmwareAdminClusterStatusArray) ToVmwareAdminClusterStatusArrayOutput() VmwareAdminClusterStatusArrayOutput { + return i.ToVmwareAdminClusterStatusArrayOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterStatusArray) ToVmwareAdminClusterStatusArrayOutputWithContext(ctx context.Context) VmwareAdminClusterStatusArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterStatusArrayOutput) +} + +type VmwareAdminClusterStatusOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterStatusOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterStatus)(nil)).Elem() +} + +func (o VmwareAdminClusterStatusOutput) ToVmwareAdminClusterStatusOutput() VmwareAdminClusterStatusOutput { + return o +} + +func (o VmwareAdminClusterStatusOutput) ToVmwareAdminClusterStatusOutputWithContext(ctx context.Context) VmwareAdminClusterStatusOutput { + return o +} + +// (Output) +// ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. +// Structure is documented below. +func (o VmwareAdminClusterStatusOutput) Conditions() VmwareAdminClusterStatusConditionArrayOutput { + return o.ApplyT(func(v VmwareAdminClusterStatus) []VmwareAdminClusterStatusCondition { return v.Conditions }).(VmwareAdminClusterStatusConditionArrayOutput) +} + +// (Output) +// Human-friendly representation of the error message from the admin cluster +// controller. The error message can be temporary as the admin cluster +// controller creates a cluster or node pool. If the error message persists +// for a longer period of time, it can be used to surface error message to +// indicate real problems requiring user intervention. +func (o VmwareAdminClusterStatusOutput) ErrorMessage() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterStatus) *string { return v.ErrorMessage }).(pulumi.StringPtrOutput) +} + +type VmwareAdminClusterStatusArrayOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterStatusArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]VmwareAdminClusterStatus)(nil)).Elem() +} + +func (o VmwareAdminClusterStatusArrayOutput) ToVmwareAdminClusterStatusArrayOutput() VmwareAdminClusterStatusArrayOutput { + return o +} + +func (o VmwareAdminClusterStatusArrayOutput) ToVmwareAdminClusterStatusArrayOutputWithContext(ctx context.Context) VmwareAdminClusterStatusArrayOutput { + return o +} + +func (o VmwareAdminClusterStatusArrayOutput) Index(i pulumi.IntInput) VmwareAdminClusterStatusOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) VmwareAdminClusterStatus { + return vs[0].([]VmwareAdminClusterStatus)[vs[1].(int)] + }).(VmwareAdminClusterStatusOutput) +} + +type VmwareAdminClusterStatusCondition struct { + // (Output) + // Last time the condition transit from one status to another. + LastTransitionTime *string `pulumi:"lastTransitionTime"` + // (Output) + // Human-readable message indicating details about last transition. + Message *string `pulumi:"message"` + // (Output) + // Machine-readable message indicating details about last transition. + Reason *string `pulumi:"reason"` + // (Output) + // The lifecycle state of the condition. + State *string `pulumi:"state"` + // (Output) + // Type of the condition. + // (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + Type *string `pulumi:"type"` +} + +// VmwareAdminClusterStatusConditionInput is an input type that accepts VmwareAdminClusterStatusConditionArgs and VmwareAdminClusterStatusConditionOutput values. +// You can construct a concrete instance of `VmwareAdminClusterStatusConditionInput` via: +// +// VmwareAdminClusterStatusConditionArgs{...} +type VmwareAdminClusterStatusConditionInput interface { + pulumi.Input + + ToVmwareAdminClusterStatusConditionOutput() VmwareAdminClusterStatusConditionOutput + ToVmwareAdminClusterStatusConditionOutputWithContext(context.Context) VmwareAdminClusterStatusConditionOutput +} + +type VmwareAdminClusterStatusConditionArgs struct { + // (Output) + // Last time the condition transit from one status to another. + LastTransitionTime pulumi.StringPtrInput `pulumi:"lastTransitionTime"` + // (Output) + // Human-readable message indicating details about last transition. + Message pulumi.StringPtrInput `pulumi:"message"` + // (Output) + // Machine-readable message indicating details about last transition. + Reason pulumi.StringPtrInput `pulumi:"reason"` + // (Output) + // The lifecycle state of the condition. + State pulumi.StringPtrInput `pulumi:"state"` + // (Output) + // Type of the condition. + // (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + Type pulumi.StringPtrInput `pulumi:"type"` +} + +func (VmwareAdminClusterStatusConditionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterStatusCondition)(nil)).Elem() +} + +func (i VmwareAdminClusterStatusConditionArgs) ToVmwareAdminClusterStatusConditionOutput() VmwareAdminClusterStatusConditionOutput { + return i.ToVmwareAdminClusterStatusConditionOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterStatusConditionArgs) ToVmwareAdminClusterStatusConditionOutputWithContext(ctx context.Context) VmwareAdminClusterStatusConditionOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterStatusConditionOutput) +} + +// VmwareAdminClusterStatusConditionArrayInput is an input type that accepts VmwareAdminClusterStatusConditionArray and VmwareAdminClusterStatusConditionArrayOutput values. +// You can construct a concrete instance of `VmwareAdminClusterStatusConditionArrayInput` via: +// +// VmwareAdminClusterStatusConditionArray{ VmwareAdminClusterStatusConditionArgs{...} } +type VmwareAdminClusterStatusConditionArrayInput interface { + pulumi.Input + + ToVmwareAdminClusterStatusConditionArrayOutput() VmwareAdminClusterStatusConditionArrayOutput + ToVmwareAdminClusterStatusConditionArrayOutputWithContext(context.Context) VmwareAdminClusterStatusConditionArrayOutput +} + +type VmwareAdminClusterStatusConditionArray []VmwareAdminClusterStatusConditionInput + +func (VmwareAdminClusterStatusConditionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]VmwareAdminClusterStatusCondition)(nil)).Elem() +} + +func (i VmwareAdminClusterStatusConditionArray) ToVmwareAdminClusterStatusConditionArrayOutput() VmwareAdminClusterStatusConditionArrayOutput { + return i.ToVmwareAdminClusterStatusConditionArrayOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterStatusConditionArray) ToVmwareAdminClusterStatusConditionArrayOutputWithContext(ctx context.Context) VmwareAdminClusterStatusConditionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterStatusConditionArrayOutput) +} + +type VmwareAdminClusterStatusConditionOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterStatusConditionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterStatusCondition)(nil)).Elem() +} + +func (o VmwareAdminClusterStatusConditionOutput) ToVmwareAdminClusterStatusConditionOutput() VmwareAdminClusterStatusConditionOutput { + return o +} + +func (o VmwareAdminClusterStatusConditionOutput) ToVmwareAdminClusterStatusConditionOutputWithContext(ctx context.Context) VmwareAdminClusterStatusConditionOutput { + return o +} + +// (Output) +// Last time the condition transit from one status to another. +func (o VmwareAdminClusterStatusConditionOutput) LastTransitionTime() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterStatusCondition) *string { return v.LastTransitionTime }).(pulumi.StringPtrOutput) +} + +// (Output) +// Human-readable message indicating details about last transition. +func (o VmwareAdminClusterStatusConditionOutput) Message() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterStatusCondition) *string { return v.Message }).(pulumi.StringPtrOutput) +} + +// (Output) +// Machine-readable message indicating details about last transition. +func (o VmwareAdminClusterStatusConditionOutput) Reason() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterStatusCondition) *string { return v.Reason }).(pulumi.StringPtrOutput) +} + +// (Output) +// The lifecycle state of the condition. +func (o VmwareAdminClusterStatusConditionOutput) State() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterStatusCondition) *string { return v.State }).(pulumi.StringPtrOutput) +} + +// (Output) +// Type of the condition. +// (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) +func (o VmwareAdminClusterStatusConditionOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterStatusCondition) *string { return v.Type }).(pulumi.StringPtrOutput) +} + +type VmwareAdminClusterStatusConditionArrayOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterStatusConditionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]VmwareAdminClusterStatusCondition)(nil)).Elem() +} + +func (o VmwareAdminClusterStatusConditionArrayOutput) ToVmwareAdminClusterStatusConditionArrayOutput() VmwareAdminClusterStatusConditionArrayOutput { + return o +} + +func (o VmwareAdminClusterStatusConditionArrayOutput) ToVmwareAdminClusterStatusConditionArrayOutputWithContext(ctx context.Context) VmwareAdminClusterStatusConditionArrayOutput { + return o +} + +func (o VmwareAdminClusterStatusConditionArrayOutput) Index(i pulumi.IntInput) VmwareAdminClusterStatusConditionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) VmwareAdminClusterStatusCondition { + return vs[0].([]VmwareAdminClusterStatusCondition)[vs[1].(int)] + }).(VmwareAdminClusterStatusConditionOutput) +} + +type VmwareAdminClusterVcenter struct { + // The vCenter IP address. + Address *string `pulumi:"address"` + // Contains the vCenter CA certificate public key for SSL verification. + CaCertData *string `pulumi:"caCertData"` + // The name of the vCenter cluster for the admin cluster. + Cluster *string `pulumi:"cluster"` + // The name of the virtual machine disk (VMDK) for the admin cluster. + DataDisk *string `pulumi:"dataDisk"` + // The name of the vCenter datacenter for the admin cluster. + Datacenter *string `pulumi:"datacenter"` + // The name of the vCenter datastore for the admin cluster. + Datastore *string `pulumi:"datastore"` + // The name of the vCenter folder for the admin cluster. + Folder *string `pulumi:"folder"` + // The name of the vCenter resource pool for the admin cluster. + ResourcePool *string `pulumi:"resourcePool"` + // The name of the vCenter storage policy for the user cluster. + StoragePolicyName *string `pulumi:"storagePolicyName"` +} + +// VmwareAdminClusterVcenterInput is an input type that accepts VmwareAdminClusterVcenterArgs and VmwareAdminClusterVcenterOutput values. +// You can construct a concrete instance of `VmwareAdminClusterVcenterInput` via: +// +// VmwareAdminClusterVcenterArgs{...} +type VmwareAdminClusterVcenterInput interface { + pulumi.Input + + ToVmwareAdminClusterVcenterOutput() VmwareAdminClusterVcenterOutput + ToVmwareAdminClusterVcenterOutputWithContext(context.Context) VmwareAdminClusterVcenterOutput +} + +type VmwareAdminClusterVcenterArgs struct { + // The vCenter IP address. + Address pulumi.StringPtrInput `pulumi:"address"` + // Contains the vCenter CA certificate public key for SSL verification. + CaCertData pulumi.StringPtrInput `pulumi:"caCertData"` + // The name of the vCenter cluster for the admin cluster. + Cluster pulumi.StringPtrInput `pulumi:"cluster"` + // The name of the virtual machine disk (VMDK) for the admin cluster. + DataDisk pulumi.StringPtrInput `pulumi:"dataDisk"` + // The name of the vCenter datacenter for the admin cluster. + Datacenter pulumi.StringPtrInput `pulumi:"datacenter"` + // The name of the vCenter datastore for the admin cluster. + Datastore pulumi.StringPtrInput `pulumi:"datastore"` + // The name of the vCenter folder for the admin cluster. + Folder pulumi.StringPtrInput `pulumi:"folder"` + // The name of the vCenter resource pool for the admin cluster. + ResourcePool pulumi.StringPtrInput `pulumi:"resourcePool"` + // The name of the vCenter storage policy for the user cluster. + StoragePolicyName pulumi.StringPtrInput `pulumi:"storagePolicyName"` +} + +func (VmwareAdminClusterVcenterArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterVcenter)(nil)).Elem() +} + +func (i VmwareAdminClusterVcenterArgs) ToVmwareAdminClusterVcenterOutput() VmwareAdminClusterVcenterOutput { + return i.ToVmwareAdminClusterVcenterOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterVcenterArgs) ToVmwareAdminClusterVcenterOutputWithContext(ctx context.Context) VmwareAdminClusterVcenterOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterVcenterOutput) +} + +func (i VmwareAdminClusterVcenterArgs) ToVmwareAdminClusterVcenterPtrOutput() VmwareAdminClusterVcenterPtrOutput { + return i.ToVmwareAdminClusterVcenterPtrOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterVcenterArgs) ToVmwareAdminClusterVcenterPtrOutputWithContext(ctx context.Context) VmwareAdminClusterVcenterPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterVcenterOutput).ToVmwareAdminClusterVcenterPtrOutputWithContext(ctx) +} + +// VmwareAdminClusterVcenterPtrInput is an input type that accepts VmwareAdminClusterVcenterArgs, VmwareAdminClusterVcenterPtr and VmwareAdminClusterVcenterPtrOutput values. +// You can construct a concrete instance of `VmwareAdminClusterVcenterPtrInput` via: +// +// VmwareAdminClusterVcenterArgs{...} +// +// or: +// +// nil +type VmwareAdminClusterVcenterPtrInput interface { + pulumi.Input + + ToVmwareAdminClusterVcenterPtrOutput() VmwareAdminClusterVcenterPtrOutput + ToVmwareAdminClusterVcenterPtrOutputWithContext(context.Context) VmwareAdminClusterVcenterPtrOutput +} + +type vmwareAdminClusterVcenterPtrType VmwareAdminClusterVcenterArgs + +func VmwareAdminClusterVcenterPtr(v *VmwareAdminClusterVcenterArgs) VmwareAdminClusterVcenterPtrInput { + return (*vmwareAdminClusterVcenterPtrType)(v) +} + +func (*vmwareAdminClusterVcenterPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterVcenter)(nil)).Elem() +} + +func (i *vmwareAdminClusterVcenterPtrType) ToVmwareAdminClusterVcenterPtrOutput() VmwareAdminClusterVcenterPtrOutput { + return i.ToVmwareAdminClusterVcenterPtrOutputWithContext(context.Background()) +} + +func (i *vmwareAdminClusterVcenterPtrType) ToVmwareAdminClusterVcenterPtrOutputWithContext(ctx context.Context) VmwareAdminClusterVcenterPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterVcenterPtrOutput) +} + +type VmwareAdminClusterVcenterOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterVcenterOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VmwareAdminClusterVcenter)(nil)).Elem() +} + +func (o VmwareAdminClusterVcenterOutput) ToVmwareAdminClusterVcenterOutput() VmwareAdminClusterVcenterOutput { + return o +} + +func (o VmwareAdminClusterVcenterOutput) ToVmwareAdminClusterVcenterOutputWithContext(ctx context.Context) VmwareAdminClusterVcenterOutput { + return o +} + +func (o VmwareAdminClusterVcenterOutput) ToVmwareAdminClusterVcenterPtrOutput() VmwareAdminClusterVcenterPtrOutput { + return o.ToVmwareAdminClusterVcenterPtrOutputWithContext(context.Background()) +} + +func (o VmwareAdminClusterVcenterOutput) ToVmwareAdminClusterVcenterPtrOutputWithContext(ctx context.Context) VmwareAdminClusterVcenterPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v VmwareAdminClusterVcenter) *VmwareAdminClusterVcenter { + return &v + }).(VmwareAdminClusterVcenterPtrOutput) +} + +// The vCenter IP address. +func (o VmwareAdminClusterVcenterOutput) Address() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterVcenter) *string { return v.Address }).(pulumi.StringPtrOutput) +} + +// Contains the vCenter CA certificate public key for SSL verification. +func (o VmwareAdminClusterVcenterOutput) CaCertData() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterVcenter) *string { return v.CaCertData }).(pulumi.StringPtrOutput) +} + +// The name of the vCenter cluster for the admin cluster. +func (o VmwareAdminClusterVcenterOutput) Cluster() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterVcenter) *string { return v.Cluster }).(pulumi.StringPtrOutput) +} + +// The name of the virtual machine disk (VMDK) for the admin cluster. +func (o VmwareAdminClusterVcenterOutput) DataDisk() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterVcenter) *string { return v.DataDisk }).(pulumi.StringPtrOutput) +} + +// The name of the vCenter datacenter for the admin cluster. +func (o VmwareAdminClusterVcenterOutput) Datacenter() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterVcenter) *string { return v.Datacenter }).(pulumi.StringPtrOutput) +} + +// The name of the vCenter datastore for the admin cluster. +func (o VmwareAdminClusterVcenterOutput) Datastore() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterVcenter) *string { return v.Datastore }).(pulumi.StringPtrOutput) +} + +// The name of the vCenter folder for the admin cluster. +func (o VmwareAdminClusterVcenterOutput) Folder() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterVcenter) *string { return v.Folder }).(pulumi.StringPtrOutput) +} + +// The name of the vCenter resource pool for the admin cluster. +func (o VmwareAdminClusterVcenterOutput) ResourcePool() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterVcenter) *string { return v.ResourcePool }).(pulumi.StringPtrOutput) +} + +// The name of the vCenter storage policy for the user cluster. +func (o VmwareAdminClusterVcenterOutput) StoragePolicyName() pulumi.StringPtrOutput { + return o.ApplyT(func(v VmwareAdminClusterVcenter) *string { return v.StoragePolicyName }).(pulumi.StringPtrOutput) +} + +type VmwareAdminClusterVcenterPtrOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterVcenterPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminClusterVcenter)(nil)).Elem() +} + +func (o VmwareAdminClusterVcenterPtrOutput) ToVmwareAdminClusterVcenterPtrOutput() VmwareAdminClusterVcenterPtrOutput { + return o +} + +func (o VmwareAdminClusterVcenterPtrOutput) ToVmwareAdminClusterVcenterPtrOutputWithContext(ctx context.Context) VmwareAdminClusterVcenterPtrOutput { + return o +} + +func (o VmwareAdminClusterVcenterPtrOutput) Elem() VmwareAdminClusterVcenterOutput { + return o.ApplyT(func(v *VmwareAdminClusterVcenter) VmwareAdminClusterVcenter { + if v != nil { + return *v + } + var ret VmwareAdminClusterVcenter + return ret + }).(VmwareAdminClusterVcenterOutput) +} + +// The vCenter IP address. +func (o VmwareAdminClusterVcenterPtrOutput) Address() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterVcenter) *string { + if v == nil { + return nil + } + return v.Address + }).(pulumi.StringPtrOutput) +} + +// Contains the vCenter CA certificate public key for SSL verification. +func (o VmwareAdminClusterVcenterPtrOutput) CaCertData() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterVcenter) *string { + if v == nil { + return nil + } + return v.CaCertData + }).(pulumi.StringPtrOutput) +} + +// The name of the vCenter cluster for the admin cluster. +func (o VmwareAdminClusterVcenterPtrOutput) Cluster() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterVcenter) *string { + if v == nil { + return nil + } + return v.Cluster + }).(pulumi.StringPtrOutput) +} + +// The name of the virtual machine disk (VMDK) for the admin cluster. +func (o VmwareAdminClusterVcenterPtrOutput) DataDisk() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterVcenter) *string { + if v == nil { + return nil + } + return v.DataDisk + }).(pulumi.StringPtrOutput) +} + +// The name of the vCenter datacenter for the admin cluster. +func (o VmwareAdminClusterVcenterPtrOutput) Datacenter() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterVcenter) *string { + if v == nil { + return nil + } + return v.Datacenter + }).(pulumi.StringPtrOutput) +} + +// The name of the vCenter datastore for the admin cluster. +func (o VmwareAdminClusterVcenterPtrOutput) Datastore() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterVcenter) *string { + if v == nil { + return nil + } + return v.Datastore + }).(pulumi.StringPtrOutput) +} + +// The name of the vCenter folder for the admin cluster. +func (o VmwareAdminClusterVcenterPtrOutput) Folder() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterVcenter) *string { + if v == nil { + return nil + } + return v.Folder + }).(pulumi.StringPtrOutput) +} + +// The name of the vCenter resource pool for the admin cluster. +func (o VmwareAdminClusterVcenterPtrOutput) ResourcePool() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterVcenter) *string { + if v == nil { + return nil + } + return v.ResourcePool + }).(pulumi.StringPtrOutput) +} + +// The name of the vCenter storage policy for the user cluster. +func (o VmwareAdminClusterVcenterPtrOutput) StoragePolicyName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VmwareAdminClusterVcenter) *string { + if v == nil { + return nil + } + return v.StoragePolicyName + }).(pulumi.StringPtrOutput) +} + func init() { pulumi.RegisterInputType(reflect.TypeOf((*BareMetalAdminClusterClusterOperationsInput)(nil)).Elem(), BareMetalAdminClusterClusterOperationsArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*BareMetalAdminClusterClusterOperationsPtrInput)(nil)).Elem(), BareMetalAdminClusterClusterOperationsArgs{}) @@ -19196,6 +24110,68 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*VMwareNodePoolStatusArrayInput)(nil)).Elem(), VMwareNodePoolStatusArray{}) pulumi.RegisterInputType(reflect.TypeOf((*VMwareNodePoolStatusConditionInput)(nil)).Elem(), VMwareNodePoolStatusConditionArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*VMwareNodePoolStatusConditionArrayInput)(nil)).Elem(), VMwareNodePoolStatusConditionArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterAddonNodeInput)(nil)).Elem(), VmwareAdminClusterAddonNodeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterAddonNodePtrInput)(nil)).Elem(), VmwareAdminClusterAddonNodeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterAddonNodeAutoResizeConfigInput)(nil)).Elem(), VmwareAdminClusterAddonNodeAutoResizeConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterAddonNodeAutoResizeConfigPtrInput)(nil)).Elem(), VmwareAdminClusterAddonNodeAutoResizeConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterAntiAffinityGroupsInput)(nil)).Elem(), VmwareAdminClusterAntiAffinityGroupsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterAntiAffinityGroupsPtrInput)(nil)).Elem(), VmwareAdminClusterAntiAffinityGroupsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterAuthorizationInput)(nil)).Elem(), VmwareAdminClusterAuthorizationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterAuthorizationPtrInput)(nil)).Elem(), VmwareAdminClusterAuthorizationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterAuthorizationViewerUserInput)(nil)).Elem(), VmwareAdminClusterAuthorizationViewerUserArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterAuthorizationViewerUserArrayInput)(nil)).Elem(), VmwareAdminClusterAuthorizationViewerUserArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterAutoRepairConfigInput)(nil)).Elem(), VmwareAdminClusterAutoRepairConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterAutoRepairConfigPtrInput)(nil)).Elem(), VmwareAdminClusterAutoRepairConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterControlPlaneNodeInput)(nil)).Elem(), VmwareAdminClusterControlPlaneNodeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterControlPlaneNodePtrInput)(nil)).Elem(), VmwareAdminClusterControlPlaneNodeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterFleetInput)(nil)).Elem(), VmwareAdminClusterFleetArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterFleetArrayInput)(nil)).Elem(), VmwareAdminClusterFleetArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterLoadBalancerInput)(nil)).Elem(), VmwareAdminClusterLoadBalancerArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterLoadBalancerPtrInput)(nil)).Elem(), VmwareAdminClusterLoadBalancerArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterLoadBalancerF5ConfigInput)(nil)).Elem(), VmwareAdminClusterLoadBalancerF5ConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterLoadBalancerF5ConfigPtrInput)(nil)).Elem(), VmwareAdminClusterLoadBalancerF5ConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterLoadBalancerManualLbConfigInput)(nil)).Elem(), VmwareAdminClusterLoadBalancerManualLbConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterLoadBalancerManualLbConfigPtrInput)(nil)).Elem(), VmwareAdminClusterLoadBalancerManualLbConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterLoadBalancerMetalLbConfigInput)(nil)).Elem(), VmwareAdminClusterLoadBalancerMetalLbConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterLoadBalancerMetalLbConfigPtrInput)(nil)).Elem(), VmwareAdminClusterLoadBalancerMetalLbConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterLoadBalancerVipConfigInput)(nil)).Elem(), VmwareAdminClusterLoadBalancerVipConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterLoadBalancerVipConfigPtrInput)(nil)).Elem(), VmwareAdminClusterLoadBalancerVipConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterNetworkConfigInput)(nil)).Elem(), VmwareAdminClusterNetworkConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterNetworkConfigPtrInput)(nil)).Elem(), VmwareAdminClusterNetworkConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterNetworkConfigDhcpIpConfigInput)(nil)).Elem(), VmwareAdminClusterNetworkConfigDhcpIpConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterNetworkConfigDhcpIpConfigPtrInput)(nil)).Elem(), VmwareAdminClusterNetworkConfigDhcpIpConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterNetworkConfigHaControlPlaneConfigInput)(nil)).Elem(), VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrInput)(nil)).Elem(), VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockInput)(nil)).Elem(), VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrInput)(nil)).Elem(), VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpInput)(nil)).Elem(), VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayInput)(nil)).Elem(), VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterNetworkConfigHostConfigInput)(nil)).Elem(), VmwareAdminClusterNetworkConfigHostConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterNetworkConfigHostConfigPtrInput)(nil)).Elem(), VmwareAdminClusterNetworkConfigHostConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterNetworkConfigStaticIpConfigInput)(nil)).Elem(), VmwareAdminClusterNetworkConfigStaticIpConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterNetworkConfigStaticIpConfigPtrInput)(nil)).Elem(), VmwareAdminClusterNetworkConfigStaticIpConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockInput)(nil)).Elem(), VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayInput)(nil)).Elem(), VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpInput)(nil)).Elem(), VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArrayInput)(nil)).Elem(), VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterPlatformConfigInput)(nil)).Elem(), VmwareAdminClusterPlatformConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterPlatformConfigPtrInput)(nil)).Elem(), VmwareAdminClusterPlatformConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterPlatformConfigBundleInput)(nil)).Elem(), VmwareAdminClusterPlatformConfigBundleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterPlatformConfigBundleArrayInput)(nil)).Elem(), VmwareAdminClusterPlatformConfigBundleArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterPlatformConfigBundleStatusInput)(nil)).Elem(), VmwareAdminClusterPlatformConfigBundleStatusArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterPlatformConfigBundleStatusArrayInput)(nil)).Elem(), VmwareAdminClusterPlatformConfigBundleStatusArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterPlatformConfigBundleStatusConditionInput)(nil)).Elem(), VmwareAdminClusterPlatformConfigBundleStatusConditionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterPlatformConfigBundleStatusConditionArrayInput)(nil)).Elem(), VmwareAdminClusterPlatformConfigBundleStatusConditionArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterPlatformConfigStatusInput)(nil)).Elem(), VmwareAdminClusterPlatformConfigStatusArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterPlatformConfigStatusArrayInput)(nil)).Elem(), VmwareAdminClusterPlatformConfigStatusArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterPlatformConfigStatusConditionInput)(nil)).Elem(), VmwareAdminClusterPlatformConfigStatusConditionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterPlatformConfigStatusConditionArrayInput)(nil)).Elem(), VmwareAdminClusterPlatformConfigStatusConditionArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterStatusInput)(nil)).Elem(), VmwareAdminClusterStatusArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterStatusArrayInput)(nil)).Elem(), VmwareAdminClusterStatusArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterStatusConditionInput)(nil)).Elem(), VmwareAdminClusterStatusConditionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterStatusConditionArrayInput)(nil)).Elem(), VmwareAdminClusterStatusConditionArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterVcenterInput)(nil)).Elem(), VmwareAdminClusterVcenterArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterVcenterPtrInput)(nil)).Elem(), VmwareAdminClusterVcenterArgs{}) pulumi.RegisterOutputType(BareMetalAdminClusterClusterOperationsOutput{}) pulumi.RegisterOutputType(BareMetalAdminClusterClusterOperationsPtrOutput{}) pulumi.RegisterOutputType(BareMetalAdminClusterControlPlaneOutput{}) @@ -19442,4 +24418,66 @@ func init() { pulumi.RegisterOutputType(VMwareNodePoolStatusArrayOutput{}) pulumi.RegisterOutputType(VMwareNodePoolStatusConditionOutput{}) pulumi.RegisterOutputType(VMwareNodePoolStatusConditionArrayOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterAddonNodeOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterAddonNodePtrOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterAddonNodeAutoResizeConfigOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterAddonNodeAutoResizeConfigPtrOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterAntiAffinityGroupsOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterAntiAffinityGroupsPtrOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterAuthorizationOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterAuthorizationPtrOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterAuthorizationViewerUserOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterAuthorizationViewerUserArrayOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterAutoRepairConfigOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterAutoRepairConfigPtrOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterControlPlaneNodeOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterControlPlaneNodePtrOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterFleetOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterFleetArrayOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterLoadBalancerOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterLoadBalancerPtrOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterLoadBalancerF5ConfigOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterLoadBalancerF5ConfigPtrOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterLoadBalancerManualLbConfigOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterLoadBalancerManualLbConfigPtrOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterLoadBalancerMetalLbConfigOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterLoadBalancerVipConfigOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterLoadBalancerVipConfigPtrOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterNetworkConfigOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterNetworkConfigPtrOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterNetworkConfigDhcpIpConfigOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterNetworkConfigDhcpIpConfigPtrOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterNetworkConfigHaControlPlaneConfigOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterNetworkConfigHaControlPlaneConfigPtrOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockPtrOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArrayOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterNetworkConfigHostConfigOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterNetworkConfigHostConfigPtrOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterNetworkConfigStaticIpConfigOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterNetworkConfigStaticIpConfigPtrOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArrayOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArrayOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterPlatformConfigOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterPlatformConfigPtrOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterPlatformConfigBundleOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterPlatformConfigBundleArrayOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterPlatformConfigBundleStatusOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterPlatformConfigBundleStatusArrayOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterPlatformConfigBundleStatusConditionOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterPlatformConfigBundleStatusConditionArrayOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterPlatformConfigStatusOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterPlatformConfigStatusArrayOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterPlatformConfigStatusConditionOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterPlatformConfigStatusConditionArrayOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterStatusOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterStatusArrayOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterStatusConditionOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterStatusConditionArrayOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterVcenterOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterVcenterPtrOutput{}) } diff --git a/sdk/go/gcp/gkeonprem/vmwareAdminCluster.go b/sdk/go/gcp/gkeonprem/vmwareAdminCluster.go new file mode 100644 index 0000000000..5820bed560 --- /dev/null +++ b/sdk/go/gcp/gkeonprem/vmwareAdminCluster.go @@ -0,0 +1,955 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package gkeonprem + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// ## Example Usage +// +// ### Gkeonprem Vmware Admin Cluster Basic +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkeonprem" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := gkeonprem.NewVmwareAdminCluster(ctx, "admin-cluster-basic", &gkeonprem.VmwareAdminClusterArgs{ +// Name: pulumi.String("basic"), +// Location: pulumi.String("us-west1"), +// Description: pulumi.String("test admin cluster"), +// BootstrapClusterMembership: pulumi.String("projects/870316890899/locations/global/memberships/gkeonprem-terraform-test"), +// OnPremVersion: pulumi.String("1.31.0-gke.35"), +// ImageType: pulumi.String("ubuntu_containerd"), +// Vcenter: &gkeonprem.VmwareAdminClusterVcenterArgs{ +// ResourcePool: pulumi.String("test resource pool"), +// Datastore: pulumi.String("test data store"), +// Datacenter: pulumi.String("test data center"), +// Cluster: pulumi.String("test cluster"), +// Folder: pulumi.String("test folder"), +// CaCertData: pulumi.String("test ca cert data"), +// Address: pulumi.String("10.0.0.1"), +// DataDisk: pulumi.String("test data disk"), +// }, +// NetworkConfig: &gkeonprem.VmwareAdminClusterNetworkConfigArgs{ +// ServiceAddressCidrBlocks: pulumi.StringArray{ +// pulumi.String("10.96.0.0/12"), +// }, +// PodAddressCidrBlocks: pulumi.StringArray{ +// pulumi.String("192.168.0.0/16"), +// }, +// DhcpIpConfig: &gkeonprem.VmwareAdminClusterNetworkConfigDhcpIpConfigArgs{ +// Enabled: pulumi.Bool(true), +// }, +// }, +// ControlPlaneNode: &gkeonprem.VmwareAdminClusterControlPlaneNodeArgs{ +// Cpus: pulumi.Int(4), +// Memory: pulumi.Int(8192), +// }, +// LoadBalancer: &gkeonprem.VmwareAdminClusterLoadBalancerArgs{ +// VipConfig: &gkeonprem.VmwareAdminClusterLoadBalancerVipConfigArgs{ +// ControlPlaneVip: pulumi.String("10.251.133.5"), +// AddonsVip: pulumi.String("10.251.135.19"), +// }, +// F5Config: &gkeonprem.VmwareAdminClusterLoadBalancerF5ConfigArgs{ +// Address: pulumi.String("10.251.135.22"), +// Partition: pulumi.String("test-parition"), +// SnatPool: pulumi.String("test-snat-pool"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// ### Gkeonprem Vmware Admin Cluster Full +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkeonprem" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := gkeonprem.NewVmwareAdminCluster(ctx, "admin-cluster-full", &gkeonprem.VmwareAdminClusterArgs{ +// Name: pulumi.String("full"), +// Location: pulumi.String("us-west1"), +// Description: pulumi.String("test admin cluster"), +// BootstrapClusterMembership: pulumi.String("projects/870316890899/locations/global/memberships/gkeonprem-terraform-test"), +// OnPremVersion: pulumi.String("1.31.0-gke.35"), +// ImageType: pulumi.String("ubuntu_containerd"), +// Annotations: pulumi.StringMap{}, +// Vcenter: &gkeonprem.VmwareAdminClusterVcenterArgs{ +// ResourcePool: pulumi.String("test resource pool"), +// Datastore: pulumi.String("test data store"), +// Datacenter: pulumi.String("test data center"), +// Cluster: pulumi.String("test cluster"), +// Folder: pulumi.String("test folder"), +// CaCertData: pulumi.String("test ca cert data"), +// Address: pulumi.String("10.0.0.1"), +// DataDisk: pulumi.String("test data disk"), +// StoragePolicyName: pulumi.String("storage_policy_name"), +// }, +// NetworkConfig: &gkeonprem.VmwareAdminClusterNetworkConfigArgs{ +// ServiceAddressCidrBlocks: pulumi.StringArray{ +// pulumi.String("10.96.0.0/12"), +// }, +// PodAddressCidrBlocks: pulumi.StringArray{ +// pulumi.String("192.168.0.0/16"), +// }, +// HaControlPlaneConfig: &gkeonprem.VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs{ +// ControlPlaneIpBlock: &gkeonprem.VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs{ +// Gateway: pulumi.String("10.0.0.3"), +// Ips: gkeonprem.VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArray{ +// &gkeonprem.VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs{ +// Hostname: pulumi.String("hostname"), +// Ip: pulumi.String("10.0.0.4"), +// }, +// }, +// Netmask: pulumi.String("10.0.0.3/32"), +// }, +// }, +// HostConfig: &gkeonprem.VmwareAdminClusterNetworkConfigHostConfigArgs{ +// DnsServers: pulumi.StringArray{ +// pulumi.String("10.254.41.1"), +// }, +// NtpServers: pulumi.StringArray{ +// pulumi.String("216.239.35.8"), +// }, +// DnsSearchDomains: pulumi.StringArray{ +// pulumi.String("test-domain"), +// }, +// }, +// StaticIpConfig: &gkeonprem.VmwareAdminClusterNetworkConfigStaticIpConfigArgs{ +// IpBlocks: gkeonprem.VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArray{ +// &gkeonprem.VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs{ +// Gateway: pulumi.String("10.0.0.1"), +// Ips: gkeonprem.VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArray{ +// &gkeonprem.VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs{ +// Hostname: pulumi.String("hostname"), +// Ip: pulumi.String("10.0.0.2"), +// }, +// }, +// Netmask: pulumi.String("10.0.0.3/32"), +// }, +// }, +// }, +// VcenterNetwork: pulumi.String("test-vcenter-network"), +// }, +// ControlPlaneNode: &gkeonprem.VmwareAdminClusterControlPlaneNodeArgs{ +// Cpus: pulumi.Int(4), +// Memory: pulumi.Int(8192), +// Replicas: pulumi.Int(3), +// }, +// LoadBalancer: &gkeonprem.VmwareAdminClusterLoadBalancerArgs{ +// VipConfig: &gkeonprem.VmwareAdminClusterLoadBalancerVipConfigArgs{ +// ControlPlaneVip: pulumi.String("10.251.133.5"), +// AddonsVip: pulumi.String("10.251.135.19"), +// }, +// ManualLbConfig: &gkeonprem.VmwareAdminClusterLoadBalancerManualLbConfigArgs{ +// AddonsNodePort: pulumi.Int(30005), +// ControlPlaneNodePort: pulumi.Int(30006), +// IngressHttpNodePort: pulumi.Int(30007), +// IngressHttpsNodePort: pulumi.Int(30008), +// KonnectivityServerNodePort: pulumi.Int(30009), +// }, +// }, +// AddonNode: &gkeonprem.VmwareAdminClusterAddonNodeArgs{ +// AutoResizeConfig: &gkeonprem.VmwareAdminClusterAddonNodeAutoResizeConfigArgs{ +// Enabled: pulumi.Bool(true), +// }, +// }, +// AntiAffinityGroups: &gkeonprem.VmwareAdminClusterAntiAffinityGroupsArgs{ +// AagConfigDisabled: pulumi.Bool(true), +// }, +// Authorization: &gkeonprem.VmwareAdminClusterAuthorizationArgs{ +// ViewerUsers: gkeonprem.VmwareAdminClusterAuthorizationViewerUserArray{ +// &gkeonprem.VmwareAdminClusterAuthorizationViewerUserArgs{ +// Username: pulumi.String("user1@gmail.com"), +// }, +// }, +// }, +// AutoRepairConfig: &gkeonprem.VmwareAdminClusterAutoRepairConfigArgs{ +// Enabled: pulumi.Bool(true), +// }, +// PlatformConfig: &gkeonprem.VmwareAdminClusterPlatformConfigArgs{ +// RequiredPlatformVersion: pulumi.String("1.31.0"), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// ### Gkeonprem Vmware Admin Cluster Metallb +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkeonprem" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := gkeonprem.NewVmwareAdminCluster(ctx, "admin-cluster-metallb", &gkeonprem.VmwareAdminClusterArgs{ +// Name: pulumi.String("metallb"), +// Location: pulumi.String("us-west1"), +// Description: pulumi.String("test admin cluster"), +// BootstrapClusterMembership: pulumi.String("projects/870316890899/locations/global/memberships/gkeonprem-terraform-test"), +// OnPremVersion: pulumi.String("1.31.0-gke.35"), +// ImageType: pulumi.String("ubuntu_containerd"), +// Vcenter: &gkeonprem.VmwareAdminClusterVcenterArgs{ +// ResourcePool: pulumi.String("test resource pool"), +// Datastore: pulumi.String("test data store"), +// Datacenter: pulumi.String("test data center"), +// Cluster: pulumi.String("test cluster"), +// Folder: pulumi.String("test folder"), +// CaCertData: pulumi.String("test ca cert data"), +// Address: pulumi.String("10.0.0.1"), +// DataDisk: pulumi.String("test data disk"), +// }, +// NetworkConfig: &gkeonprem.VmwareAdminClusterNetworkConfigArgs{ +// ServiceAddressCidrBlocks: pulumi.StringArray{ +// pulumi.String("10.96.0.0/12"), +// }, +// PodAddressCidrBlocks: pulumi.StringArray{ +// pulumi.String("192.168.0.0/16"), +// }, +// DhcpIpConfig: &gkeonprem.VmwareAdminClusterNetworkConfigDhcpIpConfigArgs{ +// Enabled: pulumi.Bool(true), +// }, +// }, +// ControlPlaneNode: &gkeonprem.VmwareAdminClusterControlPlaneNodeArgs{ +// Cpus: pulumi.Int(4), +// Memory: pulumi.Int(8192), +// }, +// LoadBalancer: &gkeonprem.VmwareAdminClusterLoadBalancerArgs{ +// VipConfig: &gkeonprem.VmwareAdminClusterLoadBalancerVipConfigArgs{ +// ControlPlaneVip: pulumi.String("10.251.133.5"), +// AddonsVip: pulumi.String("10.251.135.19"), +// }, +// MetalLbConfig: &gkeonprem.VmwareAdminClusterLoadBalancerMetalLbConfigArgs{ +// Enabled: pulumi.Bool(true), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// VmwareAdminCluster can be imported using any of these accepted formats: +// +// * `projects/{{project}}/locations/{{location}}/vmwareAdminClusters/{{name}}` +// +// * `{{project}}/{{location}}/{{name}}` +// +// * `{{location}}/{{name}}` +// +// When using the `pulumi import` command, VmwareAdminCluster can be imported using one of the formats above. For example: +// +// ```sh +// $ pulumi import gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster default projects/{{project}}/locations/{{location}}/vmwareAdminClusters/{{name}} +// ``` +// +// ```sh +// $ pulumi import gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster default {{project}}/{{location}}/{{name}} +// ``` +// +// ```sh +// $ pulumi import gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster default {{location}}/{{name}} +// ``` +type VmwareAdminCluster struct { + pulumi.CustomResourceState + + // The VMware admin cluster addon node configuration. + AddonNode VmwareAdminClusterAddonNodeOutput `pulumi:"addonNode"` + // Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size + // of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), + // separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with + // alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is + // non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field + // 'effective_annotations' for all of the annotations present on the resource. + Annotations pulumi.StringMapOutput `pulumi:"annotations"` + // AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter. + AntiAffinityGroups VmwareAdminClusterAntiAffinityGroupsOutput `pulumi:"antiAffinityGroups"` + // The VMware admin cluster authorization configuration. + Authorization VmwareAdminClusterAuthorizationPtrOutput `pulumi:"authorization"` + // Configuration for auto repairing. + AutoRepairConfig VmwareAdminClusterAutoRepairConfigOutput `pulumi:"autoRepairConfig"` + // The bootstrap cluster this VMware admin cluster belongs to. + BootstrapClusterMembership pulumi.StringOutput `pulumi:"bootstrapClusterMembership"` + // The VMware admin cluster control plane node configuration. + ControlPlaneNode VmwareAdminClusterControlPlaneNodePtrOutput `pulumi:"controlPlaneNode"` + // The time the cluster was created, in RFC3339 text format. + CreateTime pulumi.StringOutput `pulumi:"createTime"` + // A human readable description of this VMware admin cluster. + Description pulumi.StringOutput `pulumi:"description"` + EffectiveAnnotations pulumi.StringMapOutput `pulumi:"effectiveAnnotations"` + // The DNS name of VMware admin cluster's API server. + Endpoint pulumi.StringOutput `pulumi:"endpoint"` + // This checksum is computed by the server based on the value of other + // fields, and may be sent on update and delete requests to ensure the + // client has an up-to-date value before proceeding. + // Allows clients to perform consistent read-modify-writes + // through optimistic concurrency control. + Etag pulumi.StringOutput `pulumi:"etag"` + // Fleet configuration for the cluster. + // Structure is documented below. + Fleets VmwareAdminClusterFleetArrayOutput `pulumi:"fleets"` + // The OS image type for the VMware admin cluster. + ImageType pulumi.StringOutput `pulumi:"imageType"` + // Specifies the load balancer configuration for VMware admin cluster. + LoadBalancer VmwareAdminClusterLoadBalancerPtrOutput `pulumi:"loadBalancer"` + // The object name of the VMwareAdminCluster custom resource on the + // associated admin cluster. This field is used to support conflicting + // names when enrolling existing clusters to the API. When used as a part of + // cluster enrollment, this field will differ from the ID in the resource + // name. For new clusters, this field will match the user provided cluster ID + // and be visible in the last component of the resource name. It is not + // modifiable. + // All users should use this name to access their cluster using gkectl or + // kubectl and should expect to see the local name when viewing admin + // cluster controller logs. + LocalName pulumi.StringOutput `pulumi:"localName"` + // The location of the resource. + Location pulumi.StringOutput `pulumi:"location"` + // The VMware admin cluster resource name. + Name pulumi.StringOutput `pulumi:"name"` + // The VMware admin cluster network configuration. + // Structure is documented below. + NetworkConfig VmwareAdminClusterNetworkConfigOutput `pulumi:"networkConfig"` + // The Anthos clusters on the VMware version for the admin cluster. + OnPremVersion pulumi.StringPtrOutput `pulumi:"onPremVersion"` + // The VMware platform configuration. + PlatformConfig VmwareAdminClusterPlatformConfigPtrOutput `pulumi:"platformConfig"` + Project pulumi.StringOutput `pulumi:"project"` + // If set, there are currently changes in flight to the VMware admin cluster. + Reconciling pulumi.BoolOutput `pulumi:"reconciling"` + // (Output) + // The lifecycle state of the condition. + State pulumi.StringOutput `pulumi:"state"` + // ResourceStatus representing detailed cluster state. + // Structure is documented below. + Statuses VmwareAdminClusterStatusArrayOutput `pulumi:"statuses"` + // The unique identifier of the VMware Admin Cluster. + Uid pulumi.StringOutput `pulumi:"uid"` + // The time the cluster was last updated, in RFC3339 text format. + UpdateTime pulumi.StringOutput `pulumi:"updateTime"` + // Specifies vCenter config for the admin cluster. + Vcenter VmwareAdminClusterVcenterPtrOutput `pulumi:"vcenter"` +} + +// NewVmwareAdminCluster registers a new resource with the given unique name, arguments, and options. +func NewVmwareAdminCluster(ctx *pulumi.Context, + name string, args *VmwareAdminClusterArgs, opts ...pulumi.ResourceOption) (*VmwareAdminCluster, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Location == nil { + return nil, errors.New("invalid value for required argument 'Location'") + } + if args.NetworkConfig == nil { + return nil, errors.New("invalid value for required argument 'NetworkConfig'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource VmwareAdminCluster + err := ctx.RegisterResource("gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetVmwareAdminCluster gets an existing VmwareAdminCluster resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetVmwareAdminCluster(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *VmwareAdminClusterState, opts ...pulumi.ResourceOption) (*VmwareAdminCluster, error) { + var resource VmwareAdminCluster + err := ctx.ReadResource("gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering VmwareAdminCluster resources. +type vmwareAdminClusterState struct { + // The VMware admin cluster addon node configuration. + AddonNode *VmwareAdminClusterAddonNode `pulumi:"addonNode"` + // Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size + // of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), + // separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with + // alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is + // non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field + // 'effective_annotations' for all of the annotations present on the resource. + Annotations map[string]string `pulumi:"annotations"` + // AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter. + AntiAffinityGroups *VmwareAdminClusterAntiAffinityGroups `pulumi:"antiAffinityGroups"` + // The VMware admin cluster authorization configuration. + Authorization *VmwareAdminClusterAuthorization `pulumi:"authorization"` + // Configuration for auto repairing. + AutoRepairConfig *VmwareAdminClusterAutoRepairConfig `pulumi:"autoRepairConfig"` + // The bootstrap cluster this VMware admin cluster belongs to. + BootstrapClusterMembership *string `pulumi:"bootstrapClusterMembership"` + // The VMware admin cluster control plane node configuration. + ControlPlaneNode *VmwareAdminClusterControlPlaneNode `pulumi:"controlPlaneNode"` + // The time the cluster was created, in RFC3339 text format. + CreateTime *string `pulumi:"createTime"` + // A human readable description of this VMware admin cluster. + Description *string `pulumi:"description"` + EffectiveAnnotations map[string]string `pulumi:"effectiveAnnotations"` + // The DNS name of VMware admin cluster's API server. + Endpoint *string `pulumi:"endpoint"` + // This checksum is computed by the server based on the value of other + // fields, and may be sent on update and delete requests to ensure the + // client has an up-to-date value before proceeding. + // Allows clients to perform consistent read-modify-writes + // through optimistic concurrency control. + Etag *string `pulumi:"etag"` + // Fleet configuration for the cluster. + // Structure is documented below. + Fleets []VmwareAdminClusterFleet `pulumi:"fleets"` + // The OS image type for the VMware admin cluster. + ImageType *string `pulumi:"imageType"` + // Specifies the load balancer configuration for VMware admin cluster. + LoadBalancer *VmwareAdminClusterLoadBalancer `pulumi:"loadBalancer"` + // The object name of the VMwareAdminCluster custom resource on the + // associated admin cluster. This field is used to support conflicting + // names when enrolling existing clusters to the API. When used as a part of + // cluster enrollment, this field will differ from the ID in the resource + // name. For new clusters, this field will match the user provided cluster ID + // and be visible in the last component of the resource name. It is not + // modifiable. + // All users should use this name to access their cluster using gkectl or + // kubectl and should expect to see the local name when viewing admin + // cluster controller logs. + LocalName *string `pulumi:"localName"` + // The location of the resource. + Location *string `pulumi:"location"` + // The VMware admin cluster resource name. + Name *string `pulumi:"name"` + // The VMware admin cluster network configuration. + // Structure is documented below. + NetworkConfig *VmwareAdminClusterNetworkConfig `pulumi:"networkConfig"` + // The Anthos clusters on the VMware version for the admin cluster. + OnPremVersion *string `pulumi:"onPremVersion"` + // The VMware platform configuration. + PlatformConfig *VmwareAdminClusterPlatformConfig `pulumi:"platformConfig"` + Project *string `pulumi:"project"` + // If set, there are currently changes in flight to the VMware admin cluster. + Reconciling *bool `pulumi:"reconciling"` + // (Output) + // The lifecycle state of the condition. + State *string `pulumi:"state"` + // ResourceStatus representing detailed cluster state. + // Structure is documented below. + Statuses []VmwareAdminClusterStatus `pulumi:"statuses"` + // The unique identifier of the VMware Admin Cluster. + Uid *string `pulumi:"uid"` + // The time the cluster was last updated, in RFC3339 text format. + UpdateTime *string `pulumi:"updateTime"` + // Specifies vCenter config for the admin cluster. + Vcenter *VmwareAdminClusterVcenter `pulumi:"vcenter"` +} + +type VmwareAdminClusterState struct { + // The VMware admin cluster addon node configuration. + AddonNode VmwareAdminClusterAddonNodePtrInput + // Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size + // of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), + // separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with + // alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is + // non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field + // 'effective_annotations' for all of the annotations present on the resource. + Annotations pulumi.StringMapInput + // AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter. + AntiAffinityGroups VmwareAdminClusterAntiAffinityGroupsPtrInput + // The VMware admin cluster authorization configuration. + Authorization VmwareAdminClusterAuthorizationPtrInput + // Configuration for auto repairing. + AutoRepairConfig VmwareAdminClusterAutoRepairConfigPtrInput + // The bootstrap cluster this VMware admin cluster belongs to. + BootstrapClusterMembership pulumi.StringPtrInput + // The VMware admin cluster control plane node configuration. + ControlPlaneNode VmwareAdminClusterControlPlaneNodePtrInput + // The time the cluster was created, in RFC3339 text format. + CreateTime pulumi.StringPtrInput + // A human readable description of this VMware admin cluster. + Description pulumi.StringPtrInput + EffectiveAnnotations pulumi.StringMapInput + // The DNS name of VMware admin cluster's API server. + Endpoint pulumi.StringPtrInput + // This checksum is computed by the server based on the value of other + // fields, and may be sent on update and delete requests to ensure the + // client has an up-to-date value before proceeding. + // Allows clients to perform consistent read-modify-writes + // through optimistic concurrency control. + Etag pulumi.StringPtrInput + // Fleet configuration for the cluster. + // Structure is documented below. + Fleets VmwareAdminClusterFleetArrayInput + // The OS image type for the VMware admin cluster. + ImageType pulumi.StringPtrInput + // Specifies the load balancer configuration for VMware admin cluster. + LoadBalancer VmwareAdminClusterLoadBalancerPtrInput + // The object name of the VMwareAdminCluster custom resource on the + // associated admin cluster. This field is used to support conflicting + // names when enrolling existing clusters to the API. When used as a part of + // cluster enrollment, this field will differ from the ID in the resource + // name. For new clusters, this field will match the user provided cluster ID + // and be visible in the last component of the resource name. It is not + // modifiable. + // All users should use this name to access their cluster using gkectl or + // kubectl and should expect to see the local name when viewing admin + // cluster controller logs. + LocalName pulumi.StringPtrInput + // The location of the resource. + Location pulumi.StringPtrInput + // The VMware admin cluster resource name. + Name pulumi.StringPtrInput + // The VMware admin cluster network configuration. + // Structure is documented below. + NetworkConfig VmwareAdminClusterNetworkConfigPtrInput + // The Anthos clusters on the VMware version for the admin cluster. + OnPremVersion pulumi.StringPtrInput + // The VMware platform configuration. + PlatformConfig VmwareAdminClusterPlatformConfigPtrInput + Project pulumi.StringPtrInput + // If set, there are currently changes in flight to the VMware admin cluster. + Reconciling pulumi.BoolPtrInput + // (Output) + // The lifecycle state of the condition. + State pulumi.StringPtrInput + // ResourceStatus representing detailed cluster state. + // Structure is documented below. + Statuses VmwareAdminClusterStatusArrayInput + // The unique identifier of the VMware Admin Cluster. + Uid pulumi.StringPtrInput + // The time the cluster was last updated, in RFC3339 text format. + UpdateTime pulumi.StringPtrInput + // Specifies vCenter config for the admin cluster. + Vcenter VmwareAdminClusterVcenterPtrInput +} + +func (VmwareAdminClusterState) ElementType() reflect.Type { + return reflect.TypeOf((*vmwareAdminClusterState)(nil)).Elem() +} + +type vmwareAdminClusterArgs struct { + // The VMware admin cluster addon node configuration. + AddonNode *VmwareAdminClusterAddonNode `pulumi:"addonNode"` + // Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size + // of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), + // separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with + // alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is + // non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field + // 'effective_annotations' for all of the annotations present on the resource. + Annotations map[string]string `pulumi:"annotations"` + // AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter. + AntiAffinityGroups *VmwareAdminClusterAntiAffinityGroups `pulumi:"antiAffinityGroups"` + // The VMware admin cluster authorization configuration. + Authorization *VmwareAdminClusterAuthorization `pulumi:"authorization"` + // Configuration for auto repairing. + AutoRepairConfig *VmwareAdminClusterAutoRepairConfig `pulumi:"autoRepairConfig"` + // The bootstrap cluster this VMware admin cluster belongs to. + BootstrapClusterMembership *string `pulumi:"bootstrapClusterMembership"` + // The VMware admin cluster control plane node configuration. + ControlPlaneNode *VmwareAdminClusterControlPlaneNode `pulumi:"controlPlaneNode"` + // A human readable description of this VMware admin cluster. + Description *string `pulumi:"description"` + // The OS image type for the VMware admin cluster. + ImageType *string `pulumi:"imageType"` + // Specifies the load balancer configuration for VMware admin cluster. + LoadBalancer *VmwareAdminClusterLoadBalancer `pulumi:"loadBalancer"` + // The location of the resource. + Location string `pulumi:"location"` + // The VMware admin cluster resource name. + Name *string `pulumi:"name"` + // The VMware admin cluster network configuration. + // Structure is documented below. + NetworkConfig VmwareAdminClusterNetworkConfig `pulumi:"networkConfig"` + // The Anthos clusters on the VMware version for the admin cluster. + OnPremVersion *string `pulumi:"onPremVersion"` + // The VMware platform configuration. + PlatformConfig *VmwareAdminClusterPlatformConfig `pulumi:"platformConfig"` + Project *string `pulumi:"project"` + // Specifies vCenter config for the admin cluster. + Vcenter *VmwareAdminClusterVcenter `pulumi:"vcenter"` +} + +// The set of arguments for constructing a VmwareAdminCluster resource. +type VmwareAdminClusterArgs struct { + // The VMware admin cluster addon node configuration. + AddonNode VmwareAdminClusterAddonNodePtrInput + // Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size + // of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), + // separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with + // alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is + // non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field + // 'effective_annotations' for all of the annotations present on the resource. + Annotations pulumi.StringMapInput + // AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter. + AntiAffinityGroups VmwareAdminClusterAntiAffinityGroupsPtrInput + // The VMware admin cluster authorization configuration. + Authorization VmwareAdminClusterAuthorizationPtrInput + // Configuration for auto repairing. + AutoRepairConfig VmwareAdminClusterAutoRepairConfigPtrInput + // The bootstrap cluster this VMware admin cluster belongs to. + BootstrapClusterMembership pulumi.StringPtrInput + // The VMware admin cluster control plane node configuration. + ControlPlaneNode VmwareAdminClusterControlPlaneNodePtrInput + // A human readable description of this VMware admin cluster. + Description pulumi.StringPtrInput + // The OS image type for the VMware admin cluster. + ImageType pulumi.StringPtrInput + // Specifies the load balancer configuration for VMware admin cluster. + LoadBalancer VmwareAdminClusterLoadBalancerPtrInput + // The location of the resource. + Location pulumi.StringInput + // The VMware admin cluster resource name. + Name pulumi.StringPtrInput + // The VMware admin cluster network configuration. + // Structure is documented below. + NetworkConfig VmwareAdminClusterNetworkConfigInput + // The Anthos clusters on the VMware version for the admin cluster. + OnPremVersion pulumi.StringPtrInput + // The VMware platform configuration. + PlatformConfig VmwareAdminClusterPlatformConfigPtrInput + Project pulumi.StringPtrInput + // Specifies vCenter config for the admin cluster. + Vcenter VmwareAdminClusterVcenterPtrInput +} + +func (VmwareAdminClusterArgs) ElementType() reflect.Type { + return reflect.TypeOf((*vmwareAdminClusterArgs)(nil)).Elem() +} + +type VmwareAdminClusterInput interface { + pulumi.Input + + ToVmwareAdminClusterOutput() VmwareAdminClusterOutput + ToVmwareAdminClusterOutputWithContext(ctx context.Context) VmwareAdminClusterOutput +} + +func (*VmwareAdminCluster) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminCluster)(nil)).Elem() +} + +func (i *VmwareAdminCluster) ToVmwareAdminClusterOutput() VmwareAdminClusterOutput { + return i.ToVmwareAdminClusterOutputWithContext(context.Background()) +} + +func (i *VmwareAdminCluster) ToVmwareAdminClusterOutputWithContext(ctx context.Context) VmwareAdminClusterOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterOutput) +} + +// VmwareAdminClusterArrayInput is an input type that accepts VmwareAdminClusterArray and VmwareAdminClusterArrayOutput values. +// You can construct a concrete instance of `VmwareAdminClusterArrayInput` via: +// +// VmwareAdminClusterArray{ VmwareAdminClusterArgs{...} } +type VmwareAdminClusterArrayInput interface { + pulumi.Input + + ToVmwareAdminClusterArrayOutput() VmwareAdminClusterArrayOutput + ToVmwareAdminClusterArrayOutputWithContext(context.Context) VmwareAdminClusterArrayOutput +} + +type VmwareAdminClusterArray []VmwareAdminClusterInput + +func (VmwareAdminClusterArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*VmwareAdminCluster)(nil)).Elem() +} + +func (i VmwareAdminClusterArray) ToVmwareAdminClusterArrayOutput() VmwareAdminClusterArrayOutput { + return i.ToVmwareAdminClusterArrayOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterArray) ToVmwareAdminClusterArrayOutputWithContext(ctx context.Context) VmwareAdminClusterArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterArrayOutput) +} + +// VmwareAdminClusterMapInput is an input type that accepts VmwareAdminClusterMap and VmwareAdminClusterMapOutput values. +// You can construct a concrete instance of `VmwareAdminClusterMapInput` via: +// +// VmwareAdminClusterMap{ "key": VmwareAdminClusterArgs{...} } +type VmwareAdminClusterMapInput interface { + pulumi.Input + + ToVmwareAdminClusterMapOutput() VmwareAdminClusterMapOutput + ToVmwareAdminClusterMapOutputWithContext(context.Context) VmwareAdminClusterMapOutput +} + +type VmwareAdminClusterMap map[string]VmwareAdminClusterInput + +func (VmwareAdminClusterMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*VmwareAdminCluster)(nil)).Elem() +} + +func (i VmwareAdminClusterMap) ToVmwareAdminClusterMapOutput() VmwareAdminClusterMapOutput { + return i.ToVmwareAdminClusterMapOutputWithContext(context.Background()) +} + +func (i VmwareAdminClusterMap) ToVmwareAdminClusterMapOutputWithContext(ctx context.Context) VmwareAdminClusterMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(VmwareAdminClusterMapOutput) +} + +type VmwareAdminClusterOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterOutput) ElementType() reflect.Type { + return reflect.TypeOf((**VmwareAdminCluster)(nil)).Elem() +} + +func (o VmwareAdminClusterOutput) ToVmwareAdminClusterOutput() VmwareAdminClusterOutput { + return o +} + +func (o VmwareAdminClusterOutput) ToVmwareAdminClusterOutputWithContext(ctx context.Context) VmwareAdminClusterOutput { + return o +} + +// The VMware admin cluster addon node configuration. +func (o VmwareAdminClusterOutput) AddonNode() VmwareAdminClusterAddonNodeOutput { + return o.ApplyT(func(v *VmwareAdminCluster) VmwareAdminClusterAddonNodeOutput { return v.AddonNode }).(VmwareAdminClusterAddonNodeOutput) +} + +// Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size +// of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), +// separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with +// alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is +// non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field +// 'effective_annotations' for all of the annotations present on the resource. +func (o VmwareAdminClusterOutput) Annotations() pulumi.StringMapOutput { + return o.ApplyT(func(v *VmwareAdminCluster) pulumi.StringMapOutput { return v.Annotations }).(pulumi.StringMapOutput) +} + +// AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter. +func (o VmwareAdminClusterOutput) AntiAffinityGroups() VmwareAdminClusterAntiAffinityGroupsOutput { + return o.ApplyT(func(v *VmwareAdminCluster) VmwareAdminClusterAntiAffinityGroupsOutput { return v.AntiAffinityGroups }).(VmwareAdminClusterAntiAffinityGroupsOutput) +} + +// The VMware admin cluster authorization configuration. +func (o VmwareAdminClusterOutput) Authorization() VmwareAdminClusterAuthorizationPtrOutput { + return o.ApplyT(func(v *VmwareAdminCluster) VmwareAdminClusterAuthorizationPtrOutput { return v.Authorization }).(VmwareAdminClusterAuthorizationPtrOutput) +} + +// Configuration for auto repairing. +func (o VmwareAdminClusterOutput) AutoRepairConfig() VmwareAdminClusterAutoRepairConfigOutput { + return o.ApplyT(func(v *VmwareAdminCluster) VmwareAdminClusterAutoRepairConfigOutput { return v.AutoRepairConfig }).(VmwareAdminClusterAutoRepairConfigOutput) +} + +// The bootstrap cluster this VMware admin cluster belongs to. +func (o VmwareAdminClusterOutput) BootstrapClusterMembership() pulumi.StringOutput { + return o.ApplyT(func(v *VmwareAdminCluster) pulumi.StringOutput { return v.BootstrapClusterMembership }).(pulumi.StringOutput) +} + +// The VMware admin cluster control plane node configuration. +func (o VmwareAdminClusterOutput) ControlPlaneNode() VmwareAdminClusterControlPlaneNodePtrOutput { + return o.ApplyT(func(v *VmwareAdminCluster) VmwareAdminClusterControlPlaneNodePtrOutput { return v.ControlPlaneNode }).(VmwareAdminClusterControlPlaneNodePtrOutput) +} + +// The time the cluster was created, in RFC3339 text format. +func (o VmwareAdminClusterOutput) CreateTime() pulumi.StringOutput { + return o.ApplyT(func(v *VmwareAdminCluster) pulumi.StringOutput { return v.CreateTime }).(pulumi.StringOutput) +} + +// A human readable description of this VMware admin cluster. +func (o VmwareAdminClusterOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v *VmwareAdminCluster) pulumi.StringOutput { return v.Description }).(pulumi.StringOutput) +} + +func (o VmwareAdminClusterOutput) EffectiveAnnotations() pulumi.StringMapOutput { + return o.ApplyT(func(v *VmwareAdminCluster) pulumi.StringMapOutput { return v.EffectiveAnnotations }).(pulumi.StringMapOutput) +} + +// The DNS name of VMware admin cluster's API server. +func (o VmwareAdminClusterOutput) Endpoint() pulumi.StringOutput { + return o.ApplyT(func(v *VmwareAdminCluster) pulumi.StringOutput { return v.Endpoint }).(pulumi.StringOutput) +} + +// This checksum is computed by the server based on the value of other +// fields, and may be sent on update and delete requests to ensure the +// client has an up-to-date value before proceeding. +// Allows clients to perform consistent read-modify-writes +// through optimistic concurrency control. +func (o VmwareAdminClusterOutput) Etag() pulumi.StringOutput { + return o.ApplyT(func(v *VmwareAdminCluster) pulumi.StringOutput { return v.Etag }).(pulumi.StringOutput) +} + +// Fleet configuration for the cluster. +// Structure is documented below. +func (o VmwareAdminClusterOutput) Fleets() VmwareAdminClusterFleetArrayOutput { + return o.ApplyT(func(v *VmwareAdminCluster) VmwareAdminClusterFleetArrayOutput { return v.Fleets }).(VmwareAdminClusterFleetArrayOutput) +} + +// The OS image type for the VMware admin cluster. +func (o VmwareAdminClusterOutput) ImageType() pulumi.StringOutput { + return o.ApplyT(func(v *VmwareAdminCluster) pulumi.StringOutput { return v.ImageType }).(pulumi.StringOutput) +} + +// Specifies the load balancer configuration for VMware admin cluster. +func (o VmwareAdminClusterOutput) LoadBalancer() VmwareAdminClusterLoadBalancerPtrOutput { + return o.ApplyT(func(v *VmwareAdminCluster) VmwareAdminClusterLoadBalancerPtrOutput { return v.LoadBalancer }).(VmwareAdminClusterLoadBalancerPtrOutput) +} + +// The object name of the VMwareAdminCluster custom resource on the +// associated admin cluster. This field is used to support conflicting +// names when enrolling existing clusters to the API. When used as a part of +// cluster enrollment, this field will differ from the ID in the resource +// name. For new clusters, this field will match the user provided cluster ID +// and be visible in the last component of the resource name. It is not +// modifiable. +// All users should use this name to access their cluster using gkectl or +// kubectl and should expect to see the local name when viewing admin +// cluster controller logs. +func (o VmwareAdminClusterOutput) LocalName() pulumi.StringOutput { + return o.ApplyT(func(v *VmwareAdminCluster) pulumi.StringOutput { return v.LocalName }).(pulumi.StringOutput) +} + +// The location of the resource. +func (o VmwareAdminClusterOutput) Location() pulumi.StringOutput { + return o.ApplyT(func(v *VmwareAdminCluster) pulumi.StringOutput { return v.Location }).(pulumi.StringOutput) +} + +// The VMware admin cluster resource name. +func (o VmwareAdminClusterOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *VmwareAdminCluster) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// The VMware admin cluster network configuration. +// Structure is documented below. +func (o VmwareAdminClusterOutput) NetworkConfig() VmwareAdminClusterNetworkConfigOutput { + return o.ApplyT(func(v *VmwareAdminCluster) VmwareAdminClusterNetworkConfigOutput { return v.NetworkConfig }).(VmwareAdminClusterNetworkConfigOutput) +} + +// The Anthos clusters on the VMware version for the admin cluster. +func (o VmwareAdminClusterOutput) OnPremVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VmwareAdminCluster) pulumi.StringPtrOutput { return v.OnPremVersion }).(pulumi.StringPtrOutput) +} + +// The VMware platform configuration. +func (o VmwareAdminClusterOutput) PlatformConfig() VmwareAdminClusterPlatformConfigPtrOutput { + return o.ApplyT(func(v *VmwareAdminCluster) VmwareAdminClusterPlatformConfigPtrOutput { return v.PlatformConfig }).(VmwareAdminClusterPlatformConfigPtrOutput) +} + +func (o VmwareAdminClusterOutput) Project() pulumi.StringOutput { + return o.ApplyT(func(v *VmwareAdminCluster) pulumi.StringOutput { return v.Project }).(pulumi.StringOutput) +} + +// If set, there are currently changes in flight to the VMware admin cluster. +func (o VmwareAdminClusterOutput) Reconciling() pulumi.BoolOutput { + return o.ApplyT(func(v *VmwareAdminCluster) pulumi.BoolOutput { return v.Reconciling }).(pulumi.BoolOutput) +} + +// (Output) +// The lifecycle state of the condition. +func (o VmwareAdminClusterOutput) State() pulumi.StringOutput { + return o.ApplyT(func(v *VmwareAdminCluster) pulumi.StringOutput { return v.State }).(pulumi.StringOutput) +} + +// ResourceStatus representing detailed cluster state. +// Structure is documented below. +func (o VmwareAdminClusterOutput) Statuses() VmwareAdminClusterStatusArrayOutput { + return o.ApplyT(func(v *VmwareAdminCluster) VmwareAdminClusterStatusArrayOutput { return v.Statuses }).(VmwareAdminClusterStatusArrayOutput) +} + +// The unique identifier of the VMware Admin Cluster. +func (o VmwareAdminClusterOutput) Uid() pulumi.StringOutput { + return o.ApplyT(func(v *VmwareAdminCluster) pulumi.StringOutput { return v.Uid }).(pulumi.StringOutput) +} + +// The time the cluster was last updated, in RFC3339 text format. +func (o VmwareAdminClusterOutput) UpdateTime() pulumi.StringOutput { + return o.ApplyT(func(v *VmwareAdminCluster) pulumi.StringOutput { return v.UpdateTime }).(pulumi.StringOutput) +} + +// Specifies vCenter config for the admin cluster. +func (o VmwareAdminClusterOutput) Vcenter() VmwareAdminClusterVcenterPtrOutput { + return o.ApplyT(func(v *VmwareAdminCluster) VmwareAdminClusterVcenterPtrOutput { return v.Vcenter }).(VmwareAdminClusterVcenterPtrOutput) +} + +type VmwareAdminClusterArrayOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*VmwareAdminCluster)(nil)).Elem() +} + +func (o VmwareAdminClusterArrayOutput) ToVmwareAdminClusterArrayOutput() VmwareAdminClusterArrayOutput { + return o +} + +func (o VmwareAdminClusterArrayOutput) ToVmwareAdminClusterArrayOutputWithContext(ctx context.Context) VmwareAdminClusterArrayOutput { + return o +} + +func (o VmwareAdminClusterArrayOutput) Index(i pulumi.IntInput) VmwareAdminClusterOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *VmwareAdminCluster { + return vs[0].([]*VmwareAdminCluster)[vs[1].(int)] + }).(VmwareAdminClusterOutput) +} + +type VmwareAdminClusterMapOutput struct{ *pulumi.OutputState } + +func (VmwareAdminClusterMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*VmwareAdminCluster)(nil)).Elem() +} + +func (o VmwareAdminClusterMapOutput) ToVmwareAdminClusterMapOutput() VmwareAdminClusterMapOutput { + return o +} + +func (o VmwareAdminClusterMapOutput) ToVmwareAdminClusterMapOutputWithContext(ctx context.Context) VmwareAdminClusterMapOutput { + return o +} + +func (o VmwareAdminClusterMapOutput) MapIndex(k pulumi.StringInput) VmwareAdminClusterOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *VmwareAdminCluster { + return vs[0].(map[string]*VmwareAdminCluster)[vs[1].(string)] + }).(VmwareAdminClusterOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterInput)(nil)).Elem(), &VmwareAdminCluster{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterArrayInput)(nil)).Elem(), VmwareAdminClusterArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*VmwareAdminClusterMapInput)(nil)).Elem(), VmwareAdminClusterMap{}) + pulumi.RegisterOutputType(VmwareAdminClusterOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterArrayOutput{}) + pulumi.RegisterOutputType(VmwareAdminClusterMapOutput{}) +} diff --git a/sdk/go/gcp/integrationconnectors/connection.go b/sdk/go/gcp/integrationconnectors/connection.go index be4a73fa31..aab8897273 100644 --- a/sdk/go/gcp/integrationconnectors/connection.go +++ b/sdk/go/gcp/integrationconnectors/connection.go @@ -389,7 +389,7 @@ type Connection struct { ConnectorVersionLaunchStage pulumi.StringOutput `pulumi:"connectorVersionLaunchStage"` // Time the Namespace was created in UTC. CreateTime pulumi.StringOutput `pulumi:"createTime"` - // An arbitrary description for the Conection. + // An arbitrary description for the Connection. Description pulumi.StringPtrOutput `pulumi:"description"` // Define the Connectors target endpoint. // Structure is documented below. @@ -509,7 +509,7 @@ type connectionState struct { ConnectorVersionLaunchStage *string `pulumi:"connectorVersionLaunchStage"` // Time the Namespace was created in UTC. CreateTime *string `pulumi:"createTime"` - // An arbitrary description for the Conection. + // An arbitrary description for the Connection. Description *string `pulumi:"description"` // Define the Connectors target endpoint. // Structure is documented below. @@ -589,7 +589,7 @@ type ConnectionState struct { ConnectorVersionLaunchStage pulumi.StringPtrInput // Time the Namespace was created in UTC. CreateTime pulumi.StringPtrInput - // An arbitrary description for the Conection. + // An arbitrary description for the Connection. Description pulumi.StringPtrInput // Define the Connectors target endpoint. // Structure is documented below. @@ -664,7 +664,7 @@ type connectionArgs struct { ConfigVariables []ConnectionConfigVariable `pulumi:"configVariables"` // connectorVersion of the Connector. ConnectorVersion string `pulumi:"connectorVersion"` - // An arbitrary description for the Conection. + // An arbitrary description for the Connection. Description *string `pulumi:"description"` // Define the Connectors target endpoint. // Structure is documented below. @@ -717,7 +717,7 @@ type ConnectionArgs struct { ConfigVariables ConnectionConfigVariableArrayInput // connectorVersion of the Connector. ConnectorVersion pulumi.StringInput - // An arbitrary description for the Conection. + // An arbitrary description for the Connection. Description pulumi.StringPtrInput // Define the Connectors target endpoint. // Structure is documented below. @@ -887,7 +887,7 @@ func (o ConnectionOutput) CreateTime() pulumi.StringOutput { return o.ApplyT(func(v *Connection) pulumi.StringOutput { return v.CreateTime }).(pulumi.StringOutput) } -// An arbitrary description for the Conection. +// An arbitrary description for the Connection. func (o ConnectionOutput) Description() pulumi.StringPtrOutput { return o.ApplyT(func(v *Connection) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) } diff --git a/sdk/go/gcp/integrationconnectors/pulumiTypes.go b/sdk/go/gcp/integrationconnectors/pulumiTypes.go index 549c6bd965..991bf04d0c 100644 --- a/sdk/go/gcp/integrationconnectors/pulumiTypes.go +++ b/sdk/go/gcp/integrationconnectors/pulumiTypes.go @@ -5524,7 +5524,7 @@ func (o ConnectionEventingRuntimeDataArrayOutput) Index(i pulumi.IntInput) Conne } type ConnectionEventingRuntimeDataStatus struct { - // An arbitrary description for the Conection. + // An arbitrary description for the Connection. Description *string `pulumi:"description"` // (Output) // State of the Eventing @@ -5543,7 +5543,7 @@ type ConnectionEventingRuntimeDataStatusInput interface { } type ConnectionEventingRuntimeDataStatusArgs struct { - // An arbitrary description for the Conection. + // An arbitrary description for the Connection. Description pulumi.StringPtrInput `pulumi:"description"` // (Output) // State of the Eventing @@ -5601,7 +5601,7 @@ func (o ConnectionEventingRuntimeDataStatusOutput) ToConnectionEventingRuntimeDa return o } -// An arbitrary description for the Conection. +// An arbitrary description for the Connection. func (o ConnectionEventingRuntimeDataStatusOutput) Description() pulumi.StringPtrOutput { return o.ApplyT(func(v ConnectionEventingRuntimeDataStatus) *string { return v.Description }).(pulumi.StringPtrOutput) } @@ -7433,7 +7433,7 @@ func (o ConnectionSslConfigPrivateServerCertificatePtrOutput) SecretVersion() pu } type ConnectionStatus struct { - // An arbitrary description for the Conection. + // An arbitrary description for the Connection. Description *string `pulumi:"description"` // (Output) // State of the Eventing @@ -7456,7 +7456,7 @@ type ConnectionStatusInput interface { } type ConnectionStatusArgs struct { - // An arbitrary description for the Conection. + // An arbitrary description for the Connection. Description pulumi.StringPtrInput `pulumi:"description"` // (Output) // State of the Eventing @@ -7518,7 +7518,7 @@ func (o ConnectionStatusOutput) ToConnectionStatusOutputWithContext(ctx context. return o } -// An arbitrary description for the Conection. +// An arbitrary description for the Connection. func (o ConnectionStatusOutput) Description() pulumi.StringPtrOutput { return o.ApplyT(func(v ConnectionStatus) *string { return v.Description }).(pulumi.StringPtrOutput) } diff --git a/sdk/go/gcp/kms/getAutokeyConfig.go b/sdk/go/gcp/kms/getAutokeyConfig.go new file mode 100644 index 0000000000..7f4ba0e90e --- /dev/null +++ b/sdk/go/gcp/kms/getAutokeyConfig.go @@ -0,0 +1,116 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package kms + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := kms.LookupAutokeyConfig(ctx, &kms.LookupAutokeyConfigArgs{ +// Folder: "folders/123", +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func LookupAutokeyConfig(ctx *pulumi.Context, args *LookupAutokeyConfigArgs, opts ...pulumi.InvokeOption) (*LookupAutokeyConfigResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupAutokeyConfigResult + err := ctx.Invoke("gcp:kms/getAutokeyConfig:getAutokeyConfig", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getAutokeyConfig. +type LookupAutokeyConfigArgs struct { + // The folder in which the AutokeyConfig is configured. If it + // is not provided, the provider folder is used. + Folder string `pulumi:"folder"` +} + +// A collection of values returned by getAutokeyConfig. +type LookupAutokeyConfigResult struct { + Folder string `pulumi:"folder"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // The identifier of the project hosting KMS KeyRings and Keys generated by Autokey. Its format is `projects/{projectId}`. + KeyProject string `pulumi:"keyProject"` +} + +func LookupAutokeyConfigOutput(ctx *pulumi.Context, args LookupAutokeyConfigOutputArgs, opts ...pulumi.InvokeOption) LookupAutokeyConfigResultOutput { + return pulumi.ToOutputWithContext(ctx.Context(), args). + ApplyT(func(v interface{}) (LookupAutokeyConfigResultOutput, error) { + args := v.(LookupAutokeyConfigArgs) + options := pulumi.InvokeOutputOptions{InvokeOptions: internal.PkgInvokeDefaultOpts(opts)} + return ctx.InvokeOutput("gcp:kms/getAutokeyConfig:getAutokeyConfig", args, LookupAutokeyConfigResultOutput{}, options).(LookupAutokeyConfigResultOutput), nil + }).(LookupAutokeyConfigResultOutput) +} + +// A collection of arguments for invoking getAutokeyConfig. +type LookupAutokeyConfigOutputArgs struct { + // The folder in which the AutokeyConfig is configured. If it + // is not provided, the provider folder is used. + Folder pulumi.StringInput `pulumi:"folder"` +} + +func (LookupAutokeyConfigOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupAutokeyConfigArgs)(nil)).Elem() +} + +// A collection of values returned by getAutokeyConfig. +type LookupAutokeyConfigResultOutput struct{ *pulumi.OutputState } + +func (LookupAutokeyConfigResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupAutokeyConfigResult)(nil)).Elem() +} + +func (o LookupAutokeyConfigResultOutput) ToLookupAutokeyConfigResultOutput() LookupAutokeyConfigResultOutput { + return o +} + +func (o LookupAutokeyConfigResultOutput) ToLookupAutokeyConfigResultOutputWithContext(ctx context.Context) LookupAutokeyConfigResultOutput { + return o +} + +func (o LookupAutokeyConfigResultOutput) Folder() pulumi.StringOutput { + return o.ApplyT(func(v LookupAutokeyConfigResult) string { return v.Folder }).(pulumi.StringOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o LookupAutokeyConfigResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupAutokeyConfigResult) string { return v.Id }).(pulumi.StringOutput) +} + +// The identifier of the project hosting KMS KeyRings and Keys generated by Autokey. Its format is `projects/{projectId}`. +func (o LookupAutokeyConfigResultOutput) KeyProject() pulumi.StringOutput { + return o.ApplyT(func(v LookupAutokeyConfigResult) string { return v.KeyProject }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupAutokeyConfigResultOutput{}) +} diff --git a/sdk/go/gcp/kms/getKeyHandle.go b/sdk/go/gcp/kms/getKeyHandle.go new file mode 100644 index 0000000000..7e699b6400 --- /dev/null +++ b/sdk/go/gcp/kms/getKeyHandle.go @@ -0,0 +1,154 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package kms + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := kms.LookupKeyHandle(ctx, &kms.LookupKeyHandleArgs{ +// Name: "eed58b7b-20ad-4da8-ad85-ba78a0d5ab87", +// Location: "us-central1", +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func LookupKeyHandle(ctx *pulumi.Context, args *LookupKeyHandleArgs, opts ...pulumi.InvokeOption) (*LookupKeyHandleResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupKeyHandleResult + err := ctx.Invoke("gcp:kms/getKeyHandle:getKeyHandle", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getKeyHandle. +type LookupKeyHandleArgs struct { + // The Google Cloud Platform location for the KeyHandle. + // A full list of valid locations can be found by running `gcloud kms locations list`. + // + // *** + Location string `pulumi:"location"` + // The KeyHandle's name. + // A KeyHandle name must exist within the provided location and must be valid UUID. + Name string `pulumi:"name"` + // The project in which the resource belongs. If it + // is not provided, the provider project is used. + Project *string `pulumi:"project"` +} + +// A collection of values returned by getKeyHandle. +type LookupKeyHandleResult struct { + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // The identifier of the KMS Key created for the KeyHandle. Its format is `projects/{projectId}/locations/{location}/keyRings/{keyRingName}/cryptoKeys/{cryptoKeyName}`. + KmsKey string `pulumi:"kmsKey"` + // The location of the KMS Key and KeyHandle. + Location string `pulumi:"location"` + Name string `pulumi:"name"` + // The identifier of the project where KMS KeyHandle is created. + Project *string `pulumi:"project"` + // Indicates the resource type that the resulting CryptoKey is meant to protect, e.g. {SERVICE}.googleapis.com/{TYPE}. See documentation for supported resource types. + ResourceTypeSelector string `pulumi:"resourceTypeSelector"` +} + +func LookupKeyHandleOutput(ctx *pulumi.Context, args LookupKeyHandleOutputArgs, opts ...pulumi.InvokeOption) LookupKeyHandleResultOutput { + return pulumi.ToOutputWithContext(ctx.Context(), args). + ApplyT(func(v interface{}) (LookupKeyHandleResultOutput, error) { + args := v.(LookupKeyHandleArgs) + options := pulumi.InvokeOutputOptions{InvokeOptions: internal.PkgInvokeDefaultOpts(opts)} + return ctx.InvokeOutput("gcp:kms/getKeyHandle:getKeyHandle", args, LookupKeyHandleResultOutput{}, options).(LookupKeyHandleResultOutput), nil + }).(LookupKeyHandleResultOutput) +} + +// A collection of arguments for invoking getKeyHandle. +type LookupKeyHandleOutputArgs struct { + // The Google Cloud Platform location for the KeyHandle. + // A full list of valid locations can be found by running `gcloud kms locations list`. + // + // *** + Location pulumi.StringInput `pulumi:"location"` + // The KeyHandle's name. + // A KeyHandle name must exist within the provided location and must be valid UUID. + Name pulumi.StringInput `pulumi:"name"` + // The project in which the resource belongs. If it + // is not provided, the provider project is used. + Project pulumi.StringPtrInput `pulumi:"project"` +} + +func (LookupKeyHandleOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupKeyHandleArgs)(nil)).Elem() +} + +// A collection of values returned by getKeyHandle. +type LookupKeyHandleResultOutput struct{ *pulumi.OutputState } + +func (LookupKeyHandleResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupKeyHandleResult)(nil)).Elem() +} + +func (o LookupKeyHandleResultOutput) ToLookupKeyHandleResultOutput() LookupKeyHandleResultOutput { + return o +} + +func (o LookupKeyHandleResultOutput) ToLookupKeyHandleResultOutputWithContext(ctx context.Context) LookupKeyHandleResultOutput { + return o +} + +// The provider-assigned unique ID for this managed resource. +func (o LookupKeyHandleResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupKeyHandleResult) string { return v.Id }).(pulumi.StringOutput) +} + +// The identifier of the KMS Key created for the KeyHandle. Its format is `projects/{projectId}/locations/{location}/keyRings/{keyRingName}/cryptoKeys/{cryptoKeyName}`. +func (o LookupKeyHandleResultOutput) KmsKey() pulumi.StringOutput { + return o.ApplyT(func(v LookupKeyHandleResult) string { return v.KmsKey }).(pulumi.StringOutput) +} + +// The location of the KMS Key and KeyHandle. +func (o LookupKeyHandleResultOutput) Location() pulumi.StringOutput { + return o.ApplyT(func(v LookupKeyHandleResult) string { return v.Location }).(pulumi.StringOutput) +} + +func (o LookupKeyHandleResultOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v LookupKeyHandleResult) string { return v.Name }).(pulumi.StringOutput) +} + +// The identifier of the project where KMS KeyHandle is created. +func (o LookupKeyHandleResultOutput) Project() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupKeyHandleResult) *string { return v.Project }).(pulumi.StringPtrOutput) +} + +// Indicates the resource type that the resulting CryptoKey is meant to protect, e.g. {SERVICE}.googleapis.com/{TYPE}. See documentation for supported resource types. +func (o LookupKeyHandleResultOutput) ResourceTypeSelector() pulumi.StringOutput { + return o.ApplyT(func(v LookupKeyHandleResult) string { return v.ResourceTypeSelector }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupKeyHandleResultOutput{}) +} diff --git a/sdk/go/gcp/netapp/kmsconfig.go b/sdk/go/gcp/netapp/kmsconfig.go index 8c02ce3b64..09113868ab 100644 --- a/sdk/go/gcp/netapp/kmsconfig.go +++ b/sdk/go/gcp/netapp/kmsconfig.go @@ -31,7 +31,6 @@ import ( // // import ( // -// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms" // "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/netapp" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // @@ -39,24 +38,10 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// keyring, err := kms.NewKeyRing(ctx, "keyring", &kms.KeyRingArgs{ -// Name: pulumi.String("key-ring"), -// Location: pulumi.String("us-central1"), -// }) -// if err != nil { -// return err -// } -// cryptoKey, err := kms.NewCryptoKey(ctx, "crypto_key", &kms.CryptoKeyArgs{ -// Name: pulumi.String("crypto-name"), -// KeyRing: keyring.ID(), -// }) -// if err != nil { -// return err -// } -// _, err = netapp.NewKmsconfig(ctx, "kmsConfig", &netapp.KmsconfigArgs{ +// _, err := netapp.NewKmsconfig(ctx, "kmsConfig", &netapp.KmsconfigArgs{ // Name: pulumi.String("kms-test"), // Description: pulumi.String("this is a test description"), -// CryptoKeyName: cryptoKey.ID(), +// CryptoKeyName: pulumi.String("crypto-name"), // Location: pulumi.String("us-central1"), // }) // if err != nil { diff --git a/sdk/go/gcp/networkconnectivity/hub.go b/sdk/go/gcp/networkconnectivity/hub.go index 04f56b28d2..5e4f3c52e8 100644 --- a/sdk/go/gcp/networkconnectivity/hub.go +++ b/sdk/go/gcp/networkconnectivity/hub.go @@ -77,6 +77,65 @@ import ( // } // // ``` +// ### Network Connectivity Hub Mesh Topology +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := networkconnectivity.NewHub(ctx, "primary", &networkconnectivity.HubArgs{ +// Name: pulumi.String("mesh"), +// Description: pulumi.String("A sample mesh hub"), +// Labels: pulumi.StringMap{ +// "label-one": pulumi.String("value-one"), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// ### Network Connectivity Hub Star Topology +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := networkconnectivity.NewHub(ctx, "primary", &networkconnectivity.HubArgs{ +// Name: pulumi.String("star"), +// Description: pulumi.String("A sample star hub"), +// Labels: pulumi.StringMap{ +// "label-one": pulumi.String("value-one"), +// }, +// PresetTopology: pulumi.String("STAR"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` // // ## Import // @@ -120,6 +179,9 @@ type Hub struct { // // *** Name pulumi.StringOutput `pulumi:"name"` + // 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. + // Possible values are: `MESH`, `STAR`. + PresetTopology pulumi.StringOutput `pulumi:"presetTopology"` // The ID of the project in which the resource belongs. // If it is not provided, the provider project is used. Project pulumi.StringOutput `pulumi:"project"` @@ -188,6 +250,9 @@ type hubState struct { // // *** Name *string `pulumi:"name"` + // 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. + // Possible values are: `MESH`, `STAR`. + PresetTopology *string `pulumi:"presetTopology"` // The ID of the project in which the resource belongs. // If it is not provided, the provider project is used. Project *string `pulumi:"project"` @@ -222,6 +287,9 @@ type HubState struct { // // *** Name pulumi.StringPtrInput + // 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. + // Possible values are: `MESH`, `STAR`. + PresetTopology pulumi.StringPtrInput // The ID of the project in which the resource belongs. // If it is not provided, the provider project is used. Project pulumi.StringPtrInput @@ -256,6 +324,9 @@ type hubArgs struct { // // *** Name *string `pulumi:"name"` + // 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. + // Possible values are: `MESH`, `STAR`. + PresetTopology *string `pulumi:"presetTopology"` // The ID of the project in which the resource belongs. // If it is not provided, the provider project is used. Project *string `pulumi:"project"` @@ -275,6 +346,9 @@ type HubArgs struct { // // *** Name pulumi.StringPtrInput + // 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. + // Possible values are: `MESH`, `STAR`. + PresetTopology pulumi.StringPtrInput // The ID of the project in which the resource belongs. // If it is not provided, the provider project is used. Project pulumi.StringPtrInput @@ -401,6 +475,12 @@ func (o HubOutput) Name() pulumi.StringOutput { return o.ApplyT(func(v *Hub) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) } +// 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. +// Possible values are: `MESH`, `STAR`. +func (o HubOutput) PresetTopology() pulumi.StringOutput { + return o.ApplyT(func(v *Hub) pulumi.StringOutput { return v.PresetTopology }).(pulumi.StringOutput) +} + // The ID of the project in which the resource belongs. // If it is not provided, the provider project is used. func (o HubOutput) Project() pulumi.StringOutput { diff --git a/sdk/go/gcp/networkconnectivity/spoke.go b/sdk/go/gcp/networkconnectivity/spoke.go index 7eb7bfa4e3..eb564ec6ee 100644 --- a/sdk/go/gcp/networkconnectivity/spoke.go +++ b/sdk/go/gcp/networkconnectivity/spoke.go @@ -82,6 +82,75 @@ import ( // } // // ``` +// ### Network Connectivity Spoke Linked Vpc Network Group +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute" +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// network, err := compute.NewNetwork(ctx, "network", &compute.NetworkArgs{ +// Name: pulumi.String("net-spoke"), +// AutoCreateSubnetworks: pulumi.Bool(false), +// }) +// if err != nil { +// return err +// } +// basicHub, err := networkconnectivity.NewHub(ctx, "basic_hub", &networkconnectivity.HubArgs{ +// Name: pulumi.String("hub1-spoke"), +// Description: pulumi.String("A sample hub"), +// Labels: pulumi.StringMap{ +// "label-two": pulumi.String("value-one"), +// }, +// }) +// if err != nil { +// return err +// } +// defaultGroup, err := networkconnectivity.NewGroup(ctx, "default_group", &networkconnectivity.GroupArgs{ +// Hub: basicHub.ID(), +// Name: pulumi.String("default"), +// Description: pulumi.String("A sample hub group"), +// }) +// if err != nil { +// return err +// } +// _, err = networkconnectivity.NewSpoke(ctx, "primary", &networkconnectivity.SpokeArgs{ +// Name: pulumi.String("group-spoke1"), +// Location: pulumi.String("global"), +// Description: pulumi.String("A sample spoke with a linked VPC"), +// Labels: pulumi.StringMap{ +// "label-one": pulumi.String("value-one"), +// }, +// Hub: basicHub.ID(), +// LinkedVpcNetwork: &networkconnectivity.SpokeLinkedVpcNetworkArgs{ +// ExcludeExportRanges: pulumi.StringArray{ +// pulumi.String("198.51.100.0/24"), +// pulumi.String("10.10.0.0/16"), +// }, +// IncludeExportRanges: pulumi.StringArray{ +// pulumi.String("198.51.100.0/23"), +// pulumi.String("10.0.0.0/8"), +// }, +// Uri: network.SelfLink, +// }, +// Group: defaultGroup.ID(), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` // ### Network Connectivity Spoke Router Appliance Basic // // ```go @@ -538,6 +607,69 @@ import ( // } // // ``` +// ### Network Connectivity Spoke Center Group +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute" +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// network, err := compute.NewNetwork(ctx, "network", &compute.NetworkArgs{ +// Name: pulumi.String("tf-net"), +// AutoCreateSubnetworks: pulumi.Bool(false), +// }) +// if err != nil { +// return err +// } +// starHub, err := networkconnectivity.NewHub(ctx, "star_hub", &networkconnectivity.HubArgs{ +// Name: pulumi.String("hub-basic"), +// PresetTopology: pulumi.String("STAR"), +// }) +// if err != nil { +// return err +// } +// centerGroup, err := networkconnectivity.NewGroup(ctx, "center_group", &networkconnectivity.GroupArgs{ +// Name: pulumi.String("center"), +// Hub: starHub.ID(), +// AutoAccept: &networkconnectivity.GroupAutoAcceptArgs{ +// AutoAcceptProjects: pulumi.StringArray{ +// pulumi.String("foo_13293"), +// pulumi.String("bar_40289"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// _, err = networkconnectivity.NewSpoke(ctx, "primary", &networkconnectivity.SpokeArgs{ +// Name: pulumi.String("vpc-spoke"), +// Location: pulumi.String("global"), +// Description: pulumi.String("A sample spoke"), +// Labels: pulumi.StringMap{ +// "label-one": pulumi.String("value-one"), +// }, +// Hub: starHub.ID(), +// Group: centerGroup.ID(), +// LinkedVpcNetwork: &networkconnectivity.SpokeLinkedVpcNetworkArgs{ +// Uri: network.SelfLink, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` // // ## Import // @@ -571,6 +703,8 @@ type Spoke struct { Description pulumi.StringPtrOutput `pulumi:"description"` // All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. EffectiveLabels pulumi.StringMapOutput `pulumi:"effectiveLabels"` + // The name of the group that this spoke is associated with. + Group pulumi.StringOutput `pulumi:"group"` // Immutable. The URI of the hub that this spoke is attached to. Hub pulumi.StringOutput `pulumi:"hub"` // Optional labels in key:value format. For more information about labels, see [Requirements for labels](https://cloud.google.com/resource-manager/docs/creating-managing-labels#requirements). @@ -659,6 +793,8 @@ type spokeState struct { Description *string `pulumi:"description"` // All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. EffectiveLabels map[string]string `pulumi:"effectiveLabels"` + // The name of the group that this spoke is associated with. + Group *string `pulumi:"group"` // Immutable. The URI of the hub that this spoke is attached to. Hub *string `pulumi:"hub"` // Optional labels in key:value format. For more information about labels, see [Requirements for labels](https://cloud.google.com/resource-manager/docs/creating-managing-labels#requirements). @@ -707,6 +843,8 @@ type SpokeState struct { Description pulumi.StringPtrInput // All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. EffectiveLabels pulumi.StringMapInput + // The name of the group that this spoke is associated with. + Group pulumi.StringPtrInput // Immutable. The URI of the hub that this spoke is attached to. Hub pulumi.StringPtrInput // Optional labels in key:value format. For more information about labels, see [Requirements for labels](https://cloud.google.com/resource-manager/docs/creating-managing-labels#requirements). @@ -755,6 +893,8 @@ func (SpokeState) ElementType() reflect.Type { type spokeArgs struct { // An optional description of the spoke. Description *string `pulumi:"description"` + // The name of the group that this spoke is associated with. + Group *string `pulumi:"group"` // Immutable. The URI of the hub that this spoke is attached to. Hub string `pulumi:"hub"` // Optional labels in key:value format. For more information about labels, see [Requirements for labels](https://cloud.google.com/resource-manager/docs/creating-managing-labels#requirements). @@ -791,6 +931,8 @@ type spokeArgs struct { type SpokeArgs struct { // An optional description of the spoke. Description pulumi.StringPtrInput + // The name of the group that this spoke is associated with. + Group pulumi.StringPtrInput // Immutable. The URI of the hub that this spoke is attached to. Hub pulumi.StringInput // Optional labels in key:value format. For more information about labels, see [Requirements for labels](https://cloud.google.com/resource-manager/docs/creating-managing-labels#requirements). @@ -925,6 +1067,11 @@ func (o SpokeOutput) EffectiveLabels() pulumi.StringMapOutput { return o.ApplyT(func(v *Spoke) pulumi.StringMapOutput { return v.EffectiveLabels }).(pulumi.StringMapOutput) } +// The name of the group that this spoke is associated with. +func (o SpokeOutput) Group() pulumi.StringOutput { + return o.ApplyT(func(v *Spoke) pulumi.StringOutput { return v.Group }).(pulumi.StringOutput) +} + // Immutable. The URI of the hub that this spoke is attached to. func (o SpokeOutput) Hub() pulumi.StringOutput { return o.ApplyT(func(v *Spoke) pulumi.StringOutput { return v.Hub }).(pulumi.StringOutput) diff --git a/sdk/go/gcp/networkmanagement/vpcFlowLogsConfig.go b/sdk/go/gcp/networkmanagement/vpcFlowLogsConfig.go index 12b2833476..b7130462b8 100644 --- a/sdk/go/gcp/networkmanagement/vpcFlowLogsConfig.go +++ b/sdk/go/gcp/networkmanagement/vpcFlowLogsConfig.go @@ -12,6 +12,8 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) +// VPC Flow Logs Config is a resource that lets you configure Flow Logs for VPC, Interconnect attachments or VPN Tunnels. +// // ## Example Usage // // ### Network Management Vpc Flow Logs Config Interconnect Full diff --git a/sdk/go/gcp/networksecurity/init.go b/sdk/go/gcp/networksecurity/init.go index 9bda5fc181..9f8819b093 100644 --- a/sdk/go/gcp/networksecurity/init.go +++ b/sdk/go/gcp/networksecurity/init.go @@ -47,6 +47,10 @@ func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi r = &InterceptDeployment{} case "gcp:networksecurity/interceptDeploymentGroup:InterceptDeploymentGroup": r = &InterceptDeploymentGroup{} + case "gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup": + r = &InterceptEndpointGroup{} + case "gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation": + r = &InterceptEndpointGroupAssociation{} case "gcp:networksecurity/mirroringDeployment:MirroringDeployment": r = &MirroringDeployment{} case "gcp:networksecurity/mirroringDeploymentGroup:MirroringDeploymentGroup": @@ -143,6 +147,16 @@ func init() { "networksecurity/interceptDeploymentGroup", &module{version}, ) + pulumi.RegisterResourceModule( + "gcp", + "networksecurity/interceptEndpointGroup", + &module{version}, + ) + pulumi.RegisterResourceModule( + "gcp", + "networksecurity/interceptEndpointGroupAssociation", + &module{version}, + ) pulumi.RegisterResourceModule( "gcp", "networksecurity/mirroringDeployment", diff --git a/sdk/go/gcp/networksecurity/interceptEndpointGroup.go b/sdk/go/gcp/networksecurity/interceptEndpointGroup.go new file mode 100644 index 0000000000..bf7f910870 --- /dev/null +++ b/sdk/go/gcp/networksecurity/interceptEndpointGroup.go @@ -0,0 +1,516 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package networksecurity + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// ## Example Usage +// +// ### Network Security Intercept Endpoint Group Basic +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute" +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networksecurity" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// network, err := compute.NewNetwork(ctx, "network", &compute.NetworkArgs{ +// Name: pulumi.String("example-network"), +// AutoCreateSubnetworks: pulumi.Bool(false), +// }) +// if err != nil { +// return err +// } +// deploymentGroup, err := networksecurity.NewInterceptDeploymentGroup(ctx, "deployment_group", &networksecurity.InterceptDeploymentGroupArgs{ +// InterceptDeploymentGroupId: pulumi.String("example-dg"), +// Location: pulumi.String("global"), +// Network: network.ID(), +// }) +// if err != nil { +// return err +// } +// _, err = networksecurity.NewInterceptEndpointGroup(ctx, "default", &networksecurity.InterceptEndpointGroupArgs{ +// InterceptEndpointGroupId: pulumi.String("example-eg"), +// Location: pulumi.String("global"), +// InterceptDeploymentGroup: deploymentGroup.ID(), +// Labels: pulumi.StringMap{ +// "foo": pulumi.String("bar"), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// InterceptEndpointGroup can be imported using any of these accepted formats: +// +// * `projects/{{project}}/locations/{{location}}/interceptEndpointGroups/{{intercept_endpoint_group_id}}` +// +// * `{{project}}/{{location}}/{{intercept_endpoint_group_id}}` +// +// * `{{location}}/{{intercept_endpoint_group_id}}` +// +// When using the `pulumi import` command, InterceptEndpointGroup can be imported using one of the formats above. For example: +// +// ```sh +// $ pulumi import gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup default projects/{{project}}/locations/{{location}}/interceptEndpointGroups/{{intercept_endpoint_group_id}} +// ``` +// +// ```sh +// $ pulumi import gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup default {{project}}/{{location}}/{{intercept_endpoint_group_id}} +// ``` +// +// ```sh +// $ pulumi import gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup default {{location}}/{{intercept_endpoint_group_id}} +// ``` +type InterceptEndpointGroup struct { + pulumi.CustomResourceState + + // Create time stamp. + CreateTime pulumi.StringOutput `pulumi:"createTime"` + // All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + EffectiveLabels pulumi.StringMapOutput `pulumi:"effectiveLabels"` + // Immutable. The Intercept Deployment Group that this resource is connected to. Format + // is: + // `projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}` + InterceptDeploymentGroup pulumi.StringOutput `pulumi:"interceptDeploymentGroup"` + // ID of the Intercept Endpoint Group. + // + // *** + InterceptEndpointGroupId pulumi.StringOutput `pulumi:"interceptEndpointGroupId"` + // Optional. Labels as key value pairs + // **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + // Please refer to the field `effectiveLabels` for all of the labels present on the resource. + Labels pulumi.StringMapOutput `pulumi:"labels"` + // The location of the Intercept Endpoint Group, currently restricted to `global`. + Location pulumi.StringOutput `pulumi:"location"` + // Identifier. The name of the Intercept Endpoint Group. + Name pulumi.StringOutput `pulumi:"name"` + // The ID of the project in which the resource belongs. + // If it is not provided, the provider project is used. + Project pulumi.StringOutput `pulumi:"project"` + // The combination of labels configured directly on the resource + // and default labels configured on the provider. + PulumiLabels pulumi.StringMapOutput `pulumi:"pulumiLabels"` + // Whether reconciling is in progress, recommended per + // https://google.aip.dev/128. + Reconciling pulumi.BoolOutput `pulumi:"reconciling"` + // Current state of the endpoint group. + // Possible values: + // STATE_UNSPECIFIED + // ACTIVE + // CLOSED + // CREATING + // DELETING + // OUT_OF_SYNC + State pulumi.StringOutput `pulumi:"state"` + // Update time stamp. + UpdateTime pulumi.StringOutput `pulumi:"updateTime"` +} + +// NewInterceptEndpointGroup registers a new resource with the given unique name, arguments, and options. +func NewInterceptEndpointGroup(ctx *pulumi.Context, + name string, args *InterceptEndpointGroupArgs, opts ...pulumi.ResourceOption) (*InterceptEndpointGroup, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.InterceptDeploymentGroup == nil { + return nil, errors.New("invalid value for required argument 'InterceptDeploymentGroup'") + } + if args.InterceptEndpointGroupId == nil { + return nil, errors.New("invalid value for required argument 'InterceptEndpointGroupId'") + } + if args.Location == nil { + return nil, errors.New("invalid value for required argument 'Location'") + } + secrets := pulumi.AdditionalSecretOutputs([]string{ + "effectiveLabels", + "pulumiLabels", + }) + opts = append(opts, secrets) + opts = internal.PkgResourceDefaultOpts(opts) + var resource InterceptEndpointGroup + err := ctx.RegisterResource("gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetInterceptEndpointGroup gets an existing InterceptEndpointGroup resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetInterceptEndpointGroup(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *InterceptEndpointGroupState, opts ...pulumi.ResourceOption) (*InterceptEndpointGroup, error) { + var resource InterceptEndpointGroup + err := ctx.ReadResource("gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering InterceptEndpointGroup resources. +type interceptEndpointGroupState struct { + // Create time stamp. + CreateTime *string `pulumi:"createTime"` + // All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + EffectiveLabels map[string]string `pulumi:"effectiveLabels"` + // Immutable. The Intercept Deployment Group that this resource is connected to. Format + // is: + // `projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}` + InterceptDeploymentGroup *string `pulumi:"interceptDeploymentGroup"` + // ID of the Intercept Endpoint Group. + // + // *** + InterceptEndpointGroupId *string `pulumi:"interceptEndpointGroupId"` + // Optional. Labels as key value pairs + // **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + // Please refer to the field `effectiveLabels` for all of the labels present on the resource. + Labels map[string]string `pulumi:"labels"` + // The location of the Intercept Endpoint Group, currently restricted to `global`. + Location *string `pulumi:"location"` + // Identifier. The name of the Intercept Endpoint Group. + Name *string `pulumi:"name"` + // The ID of the project in which the resource belongs. + // If it is not provided, the provider project is used. + Project *string `pulumi:"project"` + // The combination of labels configured directly on the resource + // and default labels configured on the provider. + PulumiLabels map[string]string `pulumi:"pulumiLabels"` + // Whether reconciling is in progress, recommended per + // https://google.aip.dev/128. + Reconciling *bool `pulumi:"reconciling"` + // Current state of the endpoint group. + // Possible values: + // STATE_UNSPECIFIED + // ACTIVE + // CLOSED + // CREATING + // DELETING + // OUT_OF_SYNC + State *string `pulumi:"state"` + // Update time stamp. + UpdateTime *string `pulumi:"updateTime"` +} + +type InterceptEndpointGroupState struct { + // Create time stamp. + CreateTime pulumi.StringPtrInput + // All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + EffectiveLabels pulumi.StringMapInput + // Immutable. The Intercept Deployment Group that this resource is connected to. Format + // is: + // `projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}` + InterceptDeploymentGroup pulumi.StringPtrInput + // ID of the Intercept Endpoint Group. + // + // *** + InterceptEndpointGroupId pulumi.StringPtrInput + // Optional. Labels as key value pairs + // **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + // Please refer to the field `effectiveLabels` for all of the labels present on the resource. + Labels pulumi.StringMapInput + // The location of the Intercept Endpoint Group, currently restricted to `global`. + Location pulumi.StringPtrInput + // Identifier. The name of the Intercept Endpoint Group. + Name pulumi.StringPtrInput + // The ID of the project in which the resource belongs. + // If it is not provided, the provider project is used. + Project pulumi.StringPtrInput + // The combination of labels configured directly on the resource + // and default labels configured on the provider. + PulumiLabels pulumi.StringMapInput + // Whether reconciling is in progress, recommended per + // https://google.aip.dev/128. + Reconciling pulumi.BoolPtrInput + // Current state of the endpoint group. + // Possible values: + // STATE_UNSPECIFIED + // ACTIVE + // CLOSED + // CREATING + // DELETING + // OUT_OF_SYNC + State pulumi.StringPtrInput + // Update time stamp. + UpdateTime pulumi.StringPtrInput +} + +func (InterceptEndpointGroupState) ElementType() reflect.Type { + return reflect.TypeOf((*interceptEndpointGroupState)(nil)).Elem() +} + +type interceptEndpointGroupArgs struct { + // Immutable. The Intercept Deployment Group that this resource is connected to. Format + // is: + // `projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}` + InterceptDeploymentGroup string `pulumi:"interceptDeploymentGroup"` + // ID of the Intercept Endpoint Group. + // + // *** + InterceptEndpointGroupId string `pulumi:"interceptEndpointGroupId"` + // Optional. Labels as key value pairs + // **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + // Please refer to the field `effectiveLabels` for all of the labels present on the resource. + Labels map[string]string `pulumi:"labels"` + // The location of the Intercept Endpoint Group, currently restricted to `global`. + Location string `pulumi:"location"` + // The ID of the project in which the resource belongs. + // If it is not provided, the provider project is used. + Project *string `pulumi:"project"` +} + +// The set of arguments for constructing a InterceptEndpointGroup resource. +type InterceptEndpointGroupArgs struct { + // Immutable. The Intercept Deployment Group that this resource is connected to. Format + // is: + // `projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}` + InterceptDeploymentGroup pulumi.StringInput + // ID of the Intercept Endpoint Group. + // + // *** + InterceptEndpointGroupId pulumi.StringInput + // Optional. Labels as key value pairs + // **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + // Please refer to the field `effectiveLabels` for all of the labels present on the resource. + Labels pulumi.StringMapInput + // The location of the Intercept Endpoint Group, currently restricted to `global`. + Location pulumi.StringInput + // The ID of the project in which the resource belongs. + // If it is not provided, the provider project is used. + Project pulumi.StringPtrInput +} + +func (InterceptEndpointGroupArgs) ElementType() reflect.Type { + return reflect.TypeOf((*interceptEndpointGroupArgs)(nil)).Elem() +} + +type InterceptEndpointGroupInput interface { + pulumi.Input + + ToInterceptEndpointGroupOutput() InterceptEndpointGroupOutput + ToInterceptEndpointGroupOutputWithContext(ctx context.Context) InterceptEndpointGroupOutput +} + +func (*InterceptEndpointGroup) ElementType() reflect.Type { + return reflect.TypeOf((**InterceptEndpointGroup)(nil)).Elem() +} + +func (i *InterceptEndpointGroup) ToInterceptEndpointGroupOutput() InterceptEndpointGroupOutput { + return i.ToInterceptEndpointGroupOutputWithContext(context.Background()) +} + +func (i *InterceptEndpointGroup) ToInterceptEndpointGroupOutputWithContext(ctx context.Context) InterceptEndpointGroupOutput { + return pulumi.ToOutputWithContext(ctx, i).(InterceptEndpointGroupOutput) +} + +// InterceptEndpointGroupArrayInput is an input type that accepts InterceptEndpointGroupArray and InterceptEndpointGroupArrayOutput values. +// You can construct a concrete instance of `InterceptEndpointGroupArrayInput` via: +// +// InterceptEndpointGroupArray{ InterceptEndpointGroupArgs{...} } +type InterceptEndpointGroupArrayInput interface { + pulumi.Input + + ToInterceptEndpointGroupArrayOutput() InterceptEndpointGroupArrayOutput + ToInterceptEndpointGroupArrayOutputWithContext(context.Context) InterceptEndpointGroupArrayOutput +} + +type InterceptEndpointGroupArray []InterceptEndpointGroupInput + +func (InterceptEndpointGroupArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*InterceptEndpointGroup)(nil)).Elem() +} + +func (i InterceptEndpointGroupArray) ToInterceptEndpointGroupArrayOutput() InterceptEndpointGroupArrayOutput { + return i.ToInterceptEndpointGroupArrayOutputWithContext(context.Background()) +} + +func (i InterceptEndpointGroupArray) ToInterceptEndpointGroupArrayOutputWithContext(ctx context.Context) InterceptEndpointGroupArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(InterceptEndpointGroupArrayOutput) +} + +// InterceptEndpointGroupMapInput is an input type that accepts InterceptEndpointGroupMap and InterceptEndpointGroupMapOutput values. +// You can construct a concrete instance of `InterceptEndpointGroupMapInput` via: +// +// InterceptEndpointGroupMap{ "key": InterceptEndpointGroupArgs{...} } +type InterceptEndpointGroupMapInput interface { + pulumi.Input + + ToInterceptEndpointGroupMapOutput() InterceptEndpointGroupMapOutput + ToInterceptEndpointGroupMapOutputWithContext(context.Context) InterceptEndpointGroupMapOutput +} + +type InterceptEndpointGroupMap map[string]InterceptEndpointGroupInput + +func (InterceptEndpointGroupMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*InterceptEndpointGroup)(nil)).Elem() +} + +func (i InterceptEndpointGroupMap) ToInterceptEndpointGroupMapOutput() InterceptEndpointGroupMapOutput { + return i.ToInterceptEndpointGroupMapOutputWithContext(context.Background()) +} + +func (i InterceptEndpointGroupMap) ToInterceptEndpointGroupMapOutputWithContext(ctx context.Context) InterceptEndpointGroupMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(InterceptEndpointGroupMapOutput) +} + +type InterceptEndpointGroupOutput struct{ *pulumi.OutputState } + +func (InterceptEndpointGroupOutput) ElementType() reflect.Type { + return reflect.TypeOf((**InterceptEndpointGroup)(nil)).Elem() +} + +func (o InterceptEndpointGroupOutput) ToInterceptEndpointGroupOutput() InterceptEndpointGroupOutput { + return o +} + +func (o InterceptEndpointGroupOutput) ToInterceptEndpointGroupOutputWithContext(ctx context.Context) InterceptEndpointGroupOutput { + return o +} + +// Create time stamp. +func (o InterceptEndpointGroupOutput) CreateTime() pulumi.StringOutput { + return o.ApplyT(func(v *InterceptEndpointGroup) pulumi.StringOutput { return v.CreateTime }).(pulumi.StringOutput) +} + +// All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. +func (o InterceptEndpointGroupOutput) EffectiveLabels() pulumi.StringMapOutput { + return o.ApplyT(func(v *InterceptEndpointGroup) pulumi.StringMapOutput { return v.EffectiveLabels }).(pulumi.StringMapOutput) +} + +// Immutable. The Intercept Deployment Group that this resource is connected to. Format +// is: +// `projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}` +func (o InterceptEndpointGroupOutput) InterceptDeploymentGroup() pulumi.StringOutput { + return o.ApplyT(func(v *InterceptEndpointGroup) pulumi.StringOutput { return v.InterceptDeploymentGroup }).(pulumi.StringOutput) +} + +// ID of the Intercept Endpoint Group. +// +// *** +func (o InterceptEndpointGroupOutput) InterceptEndpointGroupId() pulumi.StringOutput { + return o.ApplyT(func(v *InterceptEndpointGroup) pulumi.StringOutput { return v.InterceptEndpointGroupId }).(pulumi.StringOutput) +} + +// Optional. Labels as key value pairs +// **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. +// Please refer to the field `effectiveLabels` for all of the labels present on the resource. +func (o InterceptEndpointGroupOutput) Labels() pulumi.StringMapOutput { + return o.ApplyT(func(v *InterceptEndpointGroup) pulumi.StringMapOutput { return v.Labels }).(pulumi.StringMapOutput) +} + +// The location of the Intercept Endpoint Group, currently restricted to `global`. +func (o InterceptEndpointGroupOutput) Location() pulumi.StringOutput { + return o.ApplyT(func(v *InterceptEndpointGroup) pulumi.StringOutput { return v.Location }).(pulumi.StringOutput) +} + +// Identifier. The name of the Intercept Endpoint Group. +func (o InterceptEndpointGroupOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *InterceptEndpointGroup) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// The ID of the project in which the resource belongs. +// If it is not provided, the provider project is used. +func (o InterceptEndpointGroupOutput) Project() pulumi.StringOutput { + return o.ApplyT(func(v *InterceptEndpointGroup) pulumi.StringOutput { return v.Project }).(pulumi.StringOutput) +} + +// The combination of labels configured directly on the resource +// and default labels configured on the provider. +func (o InterceptEndpointGroupOutput) PulumiLabels() pulumi.StringMapOutput { + return o.ApplyT(func(v *InterceptEndpointGroup) pulumi.StringMapOutput { return v.PulumiLabels }).(pulumi.StringMapOutput) +} + +// Whether reconciling is in progress, recommended per +// https://google.aip.dev/128. +func (o InterceptEndpointGroupOutput) Reconciling() pulumi.BoolOutput { + return o.ApplyT(func(v *InterceptEndpointGroup) pulumi.BoolOutput { return v.Reconciling }).(pulumi.BoolOutput) +} + +// Current state of the endpoint group. +// Possible values: +// STATE_UNSPECIFIED +// ACTIVE +// CLOSED +// CREATING +// DELETING +// OUT_OF_SYNC +func (o InterceptEndpointGroupOutput) State() pulumi.StringOutput { + return o.ApplyT(func(v *InterceptEndpointGroup) pulumi.StringOutput { return v.State }).(pulumi.StringOutput) +} + +// Update time stamp. +func (o InterceptEndpointGroupOutput) UpdateTime() pulumi.StringOutput { + return o.ApplyT(func(v *InterceptEndpointGroup) pulumi.StringOutput { return v.UpdateTime }).(pulumi.StringOutput) +} + +type InterceptEndpointGroupArrayOutput struct{ *pulumi.OutputState } + +func (InterceptEndpointGroupArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*InterceptEndpointGroup)(nil)).Elem() +} + +func (o InterceptEndpointGroupArrayOutput) ToInterceptEndpointGroupArrayOutput() InterceptEndpointGroupArrayOutput { + return o +} + +func (o InterceptEndpointGroupArrayOutput) ToInterceptEndpointGroupArrayOutputWithContext(ctx context.Context) InterceptEndpointGroupArrayOutput { + return o +} + +func (o InterceptEndpointGroupArrayOutput) Index(i pulumi.IntInput) InterceptEndpointGroupOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *InterceptEndpointGroup { + return vs[0].([]*InterceptEndpointGroup)[vs[1].(int)] + }).(InterceptEndpointGroupOutput) +} + +type InterceptEndpointGroupMapOutput struct{ *pulumi.OutputState } + +func (InterceptEndpointGroupMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*InterceptEndpointGroup)(nil)).Elem() +} + +func (o InterceptEndpointGroupMapOutput) ToInterceptEndpointGroupMapOutput() InterceptEndpointGroupMapOutput { + return o +} + +func (o InterceptEndpointGroupMapOutput) ToInterceptEndpointGroupMapOutputWithContext(ctx context.Context) InterceptEndpointGroupMapOutput { + return o +} + +func (o InterceptEndpointGroupMapOutput) MapIndex(k pulumi.StringInput) InterceptEndpointGroupOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *InterceptEndpointGroup { + return vs[0].(map[string]*InterceptEndpointGroup)[vs[1].(string)] + }).(InterceptEndpointGroupOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*InterceptEndpointGroupInput)(nil)).Elem(), &InterceptEndpointGroup{}) + pulumi.RegisterInputType(reflect.TypeOf((*InterceptEndpointGroupArrayInput)(nil)).Elem(), InterceptEndpointGroupArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*InterceptEndpointGroupMapInput)(nil)).Elem(), InterceptEndpointGroupMap{}) + pulumi.RegisterOutputType(InterceptEndpointGroupOutput{}) + pulumi.RegisterOutputType(InterceptEndpointGroupArrayOutput{}) + pulumi.RegisterOutputType(InterceptEndpointGroupMapOutput{}) +} diff --git a/sdk/go/gcp/networksecurity/interceptEndpointGroupAssociation.go b/sdk/go/gcp/networksecurity/interceptEndpointGroupAssociation.go new file mode 100644 index 0000000000..d7a46a5069 --- /dev/null +++ b/sdk/go/gcp/networksecurity/interceptEndpointGroupAssociation.go @@ -0,0 +1,560 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package networksecurity + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// ## Example Usage +// +// ### Network Security Intercept Endpoint Group Association Basic +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute" +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networksecurity" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// producerNetwork, err := compute.NewNetwork(ctx, "producer_network", &compute.NetworkArgs{ +// Name: pulumi.String("example-prod-network"), +// AutoCreateSubnetworks: pulumi.Bool(false), +// }) +// if err != nil { +// return err +// } +// consumerNetwork, err := compute.NewNetwork(ctx, "consumer_network", &compute.NetworkArgs{ +// Name: pulumi.String("example-cons-network"), +// AutoCreateSubnetworks: pulumi.Bool(false), +// }) +// if err != nil { +// return err +// } +// deploymentGroup, err := networksecurity.NewInterceptDeploymentGroup(ctx, "deployment_group", &networksecurity.InterceptDeploymentGroupArgs{ +// InterceptDeploymentGroupId: pulumi.String("example-dg"), +// Location: pulumi.String("global"), +// Network: producerNetwork.ID(), +// }) +// if err != nil { +// return err +// } +// endpointGroup, err := networksecurity.NewInterceptEndpointGroup(ctx, "endpoint_group", &networksecurity.InterceptEndpointGroupArgs{ +// InterceptEndpointGroupId: pulumi.String("example-eg"), +// Location: pulumi.String("global"), +// InterceptDeploymentGroup: deploymentGroup.ID(), +// }) +// if err != nil { +// return err +// } +// _, err = networksecurity.NewInterceptEndpointGroupAssociation(ctx, "default", &networksecurity.InterceptEndpointGroupAssociationArgs{ +// InterceptEndpointGroupAssociationId: pulumi.String("example-ega"), +// Location: pulumi.String("global"), +// Network: consumerNetwork.ID(), +// InterceptEndpointGroup: endpointGroup.ID(), +// Labels: pulumi.StringMap{ +// "foo": pulumi.String("bar"), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// InterceptEndpointGroupAssociation can be imported using any of these accepted formats: +// +// * `projects/{{project}}/locations/{{location}}/interceptEndpointGroupAssociations/{{intercept_endpoint_group_association_id}}` +// +// * `{{project}}/{{location}}/{{intercept_endpoint_group_association_id}}` +// +// * `{{location}}/{{intercept_endpoint_group_association_id}}` +// +// When using the `pulumi import` command, InterceptEndpointGroupAssociation can be imported using one of the formats above. For example: +// +// ```sh +// $ pulumi import gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation default projects/{{project}}/locations/{{location}}/interceptEndpointGroupAssociations/{{intercept_endpoint_group_association_id}} +// ``` +// +// ```sh +// $ pulumi import gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation default {{project}}/{{location}}/{{intercept_endpoint_group_association_id}} +// ``` +// +// ```sh +// $ pulumi import gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation default {{location}}/{{intercept_endpoint_group_association_id}} +// ``` +type InterceptEndpointGroupAssociation struct { + pulumi.CustomResourceState + + // Create time stamp. + CreateTime pulumi.StringOutput `pulumi:"createTime"` + // All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + EffectiveLabels pulumi.StringMapOutput `pulumi:"effectiveLabels"` + // Immutable. The Intercept Endpoint Group that this resource is connected to. Format + // is: + // `projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`. + InterceptEndpointGroup pulumi.StringOutput `pulumi:"interceptEndpointGroup"` + // ID of the Intercept Endpoint Group Association. + InterceptEndpointGroupAssociationId pulumi.StringPtrOutput `pulumi:"interceptEndpointGroupAssociationId"` + // Optional. Labels as key value pairs. + // **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + // Please refer to the field `effectiveLabels` for all of the labels present on the resource. + Labels pulumi.StringMapOutput `pulumi:"labels"` + // The location of the Intercept Endpoint Group Association, currently restricted to `global`. + // + // *** + Location pulumi.StringOutput `pulumi:"location"` + // The list of locations that are currently supported by the associated Intercept Deployment Group and their state. + // Structure is documented below. + LocationsDetails InterceptEndpointGroupAssociationLocationsDetailArrayOutput `pulumi:"locationsDetails"` + // Identifier. The name of the Intercept Endpoint Group Association. + Name pulumi.StringOutput `pulumi:"name"` + // Immutable. The VPC network associated. Format: + // `projects/{project}/global/networks/{network}`. + Network pulumi.StringOutput `pulumi:"network"` + // The ID of the project in which the resource belongs. + // If it is not provided, the provider project is used. + Project pulumi.StringOutput `pulumi:"project"` + // The combination of labels configured directly on the resource + // and default labels configured on the provider. + PulumiLabels pulumi.StringMapOutput `pulumi:"pulumiLabels"` + // Whether reconciling is in progress. + Reconciling pulumi.BoolOutput `pulumi:"reconciling"` + // (Output) + // The association state in this location. + // Possible values: + // STATE_UNSPECIFIED + // ACTIVE + // OUT_OF_SYNC + State pulumi.StringOutput `pulumi:"state"` + // Update time stamp. + UpdateTime pulumi.StringOutput `pulumi:"updateTime"` +} + +// NewInterceptEndpointGroupAssociation registers a new resource with the given unique name, arguments, and options. +func NewInterceptEndpointGroupAssociation(ctx *pulumi.Context, + name string, args *InterceptEndpointGroupAssociationArgs, opts ...pulumi.ResourceOption) (*InterceptEndpointGroupAssociation, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.InterceptEndpointGroup == nil { + return nil, errors.New("invalid value for required argument 'InterceptEndpointGroup'") + } + if args.Location == nil { + return nil, errors.New("invalid value for required argument 'Location'") + } + if args.Network == nil { + return nil, errors.New("invalid value for required argument 'Network'") + } + secrets := pulumi.AdditionalSecretOutputs([]string{ + "effectiveLabels", + "pulumiLabels", + }) + opts = append(opts, secrets) + opts = internal.PkgResourceDefaultOpts(opts) + var resource InterceptEndpointGroupAssociation + err := ctx.RegisterResource("gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetInterceptEndpointGroupAssociation gets an existing InterceptEndpointGroupAssociation resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetInterceptEndpointGroupAssociation(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *InterceptEndpointGroupAssociationState, opts ...pulumi.ResourceOption) (*InterceptEndpointGroupAssociation, error) { + var resource InterceptEndpointGroupAssociation + err := ctx.ReadResource("gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering InterceptEndpointGroupAssociation resources. +type interceptEndpointGroupAssociationState struct { + // Create time stamp. + CreateTime *string `pulumi:"createTime"` + // All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + EffectiveLabels map[string]string `pulumi:"effectiveLabels"` + // Immutable. The Intercept Endpoint Group that this resource is connected to. Format + // is: + // `projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`. + InterceptEndpointGroup *string `pulumi:"interceptEndpointGroup"` + // ID of the Intercept Endpoint Group Association. + InterceptEndpointGroupAssociationId *string `pulumi:"interceptEndpointGroupAssociationId"` + // Optional. Labels as key value pairs. + // **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + // Please refer to the field `effectiveLabels` for all of the labels present on the resource. + Labels map[string]string `pulumi:"labels"` + // The location of the Intercept Endpoint Group Association, currently restricted to `global`. + // + // *** + Location *string `pulumi:"location"` + // The list of locations that are currently supported by the associated Intercept Deployment Group and their state. + // Structure is documented below. + LocationsDetails []InterceptEndpointGroupAssociationLocationsDetail `pulumi:"locationsDetails"` + // Identifier. The name of the Intercept Endpoint Group Association. + Name *string `pulumi:"name"` + // Immutable. The VPC network associated. Format: + // `projects/{project}/global/networks/{network}`. + Network *string `pulumi:"network"` + // The ID of the project in which the resource belongs. + // If it is not provided, the provider project is used. + Project *string `pulumi:"project"` + // The combination of labels configured directly on the resource + // and default labels configured on the provider. + PulumiLabels map[string]string `pulumi:"pulumiLabels"` + // Whether reconciling is in progress. + Reconciling *bool `pulumi:"reconciling"` + // (Output) + // The association state in this location. + // Possible values: + // STATE_UNSPECIFIED + // ACTIVE + // OUT_OF_SYNC + State *string `pulumi:"state"` + // Update time stamp. + UpdateTime *string `pulumi:"updateTime"` +} + +type InterceptEndpointGroupAssociationState struct { + // Create time stamp. + CreateTime pulumi.StringPtrInput + // All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + EffectiveLabels pulumi.StringMapInput + // Immutable. The Intercept Endpoint Group that this resource is connected to. Format + // is: + // `projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`. + InterceptEndpointGroup pulumi.StringPtrInput + // ID of the Intercept Endpoint Group Association. + InterceptEndpointGroupAssociationId pulumi.StringPtrInput + // Optional. Labels as key value pairs. + // **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + // Please refer to the field `effectiveLabels` for all of the labels present on the resource. + Labels pulumi.StringMapInput + // The location of the Intercept Endpoint Group Association, currently restricted to `global`. + // + // *** + Location pulumi.StringPtrInput + // The list of locations that are currently supported by the associated Intercept Deployment Group and their state. + // Structure is documented below. + LocationsDetails InterceptEndpointGroupAssociationLocationsDetailArrayInput + // Identifier. The name of the Intercept Endpoint Group Association. + Name pulumi.StringPtrInput + // Immutable. The VPC network associated. Format: + // `projects/{project}/global/networks/{network}`. + Network pulumi.StringPtrInput + // The ID of the project in which the resource belongs. + // If it is not provided, the provider project is used. + Project pulumi.StringPtrInput + // The combination of labels configured directly on the resource + // and default labels configured on the provider. + PulumiLabels pulumi.StringMapInput + // Whether reconciling is in progress. + Reconciling pulumi.BoolPtrInput + // (Output) + // The association state in this location. + // Possible values: + // STATE_UNSPECIFIED + // ACTIVE + // OUT_OF_SYNC + State pulumi.StringPtrInput + // Update time stamp. + UpdateTime pulumi.StringPtrInput +} + +func (InterceptEndpointGroupAssociationState) ElementType() reflect.Type { + return reflect.TypeOf((*interceptEndpointGroupAssociationState)(nil)).Elem() +} + +type interceptEndpointGroupAssociationArgs struct { + // Immutable. The Intercept Endpoint Group that this resource is connected to. Format + // is: + // `projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`. + InterceptEndpointGroup string `pulumi:"interceptEndpointGroup"` + // ID of the Intercept Endpoint Group Association. + InterceptEndpointGroupAssociationId *string `pulumi:"interceptEndpointGroupAssociationId"` + // Optional. Labels as key value pairs. + // **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + // Please refer to the field `effectiveLabels` for all of the labels present on the resource. + Labels map[string]string `pulumi:"labels"` + // The location of the Intercept Endpoint Group Association, currently restricted to `global`. + // + // *** + Location string `pulumi:"location"` + // Immutable. The VPC network associated. Format: + // `projects/{project}/global/networks/{network}`. + Network string `pulumi:"network"` + // The ID of the project in which the resource belongs. + // If it is not provided, the provider project is used. + Project *string `pulumi:"project"` +} + +// The set of arguments for constructing a InterceptEndpointGroupAssociation resource. +type InterceptEndpointGroupAssociationArgs struct { + // Immutable. The Intercept Endpoint Group that this resource is connected to. Format + // is: + // `projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`. + InterceptEndpointGroup pulumi.StringInput + // ID of the Intercept Endpoint Group Association. + InterceptEndpointGroupAssociationId pulumi.StringPtrInput + // Optional. Labels as key value pairs. + // **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + // Please refer to the field `effectiveLabels` for all of the labels present on the resource. + Labels pulumi.StringMapInput + // The location of the Intercept Endpoint Group Association, currently restricted to `global`. + // + // *** + Location pulumi.StringInput + // Immutable. The VPC network associated. Format: + // `projects/{project}/global/networks/{network}`. + Network pulumi.StringInput + // The ID of the project in which the resource belongs. + // If it is not provided, the provider project is used. + Project pulumi.StringPtrInput +} + +func (InterceptEndpointGroupAssociationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*interceptEndpointGroupAssociationArgs)(nil)).Elem() +} + +type InterceptEndpointGroupAssociationInput interface { + pulumi.Input + + ToInterceptEndpointGroupAssociationOutput() InterceptEndpointGroupAssociationOutput + ToInterceptEndpointGroupAssociationOutputWithContext(ctx context.Context) InterceptEndpointGroupAssociationOutput +} + +func (*InterceptEndpointGroupAssociation) ElementType() reflect.Type { + return reflect.TypeOf((**InterceptEndpointGroupAssociation)(nil)).Elem() +} + +func (i *InterceptEndpointGroupAssociation) ToInterceptEndpointGroupAssociationOutput() InterceptEndpointGroupAssociationOutput { + return i.ToInterceptEndpointGroupAssociationOutputWithContext(context.Background()) +} + +func (i *InterceptEndpointGroupAssociation) ToInterceptEndpointGroupAssociationOutputWithContext(ctx context.Context) InterceptEndpointGroupAssociationOutput { + return pulumi.ToOutputWithContext(ctx, i).(InterceptEndpointGroupAssociationOutput) +} + +// InterceptEndpointGroupAssociationArrayInput is an input type that accepts InterceptEndpointGroupAssociationArray and InterceptEndpointGroupAssociationArrayOutput values. +// You can construct a concrete instance of `InterceptEndpointGroupAssociationArrayInput` via: +// +// InterceptEndpointGroupAssociationArray{ InterceptEndpointGroupAssociationArgs{...} } +type InterceptEndpointGroupAssociationArrayInput interface { + pulumi.Input + + ToInterceptEndpointGroupAssociationArrayOutput() InterceptEndpointGroupAssociationArrayOutput + ToInterceptEndpointGroupAssociationArrayOutputWithContext(context.Context) InterceptEndpointGroupAssociationArrayOutput +} + +type InterceptEndpointGroupAssociationArray []InterceptEndpointGroupAssociationInput + +func (InterceptEndpointGroupAssociationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*InterceptEndpointGroupAssociation)(nil)).Elem() +} + +func (i InterceptEndpointGroupAssociationArray) ToInterceptEndpointGroupAssociationArrayOutput() InterceptEndpointGroupAssociationArrayOutput { + return i.ToInterceptEndpointGroupAssociationArrayOutputWithContext(context.Background()) +} + +func (i InterceptEndpointGroupAssociationArray) ToInterceptEndpointGroupAssociationArrayOutputWithContext(ctx context.Context) InterceptEndpointGroupAssociationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(InterceptEndpointGroupAssociationArrayOutput) +} + +// InterceptEndpointGroupAssociationMapInput is an input type that accepts InterceptEndpointGroupAssociationMap and InterceptEndpointGroupAssociationMapOutput values. +// You can construct a concrete instance of `InterceptEndpointGroupAssociationMapInput` via: +// +// InterceptEndpointGroupAssociationMap{ "key": InterceptEndpointGroupAssociationArgs{...} } +type InterceptEndpointGroupAssociationMapInput interface { + pulumi.Input + + ToInterceptEndpointGroupAssociationMapOutput() InterceptEndpointGroupAssociationMapOutput + ToInterceptEndpointGroupAssociationMapOutputWithContext(context.Context) InterceptEndpointGroupAssociationMapOutput +} + +type InterceptEndpointGroupAssociationMap map[string]InterceptEndpointGroupAssociationInput + +func (InterceptEndpointGroupAssociationMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*InterceptEndpointGroupAssociation)(nil)).Elem() +} + +func (i InterceptEndpointGroupAssociationMap) ToInterceptEndpointGroupAssociationMapOutput() InterceptEndpointGroupAssociationMapOutput { + return i.ToInterceptEndpointGroupAssociationMapOutputWithContext(context.Background()) +} + +func (i InterceptEndpointGroupAssociationMap) ToInterceptEndpointGroupAssociationMapOutputWithContext(ctx context.Context) InterceptEndpointGroupAssociationMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(InterceptEndpointGroupAssociationMapOutput) +} + +type InterceptEndpointGroupAssociationOutput struct{ *pulumi.OutputState } + +func (InterceptEndpointGroupAssociationOutput) ElementType() reflect.Type { + return reflect.TypeOf((**InterceptEndpointGroupAssociation)(nil)).Elem() +} + +func (o InterceptEndpointGroupAssociationOutput) ToInterceptEndpointGroupAssociationOutput() InterceptEndpointGroupAssociationOutput { + return o +} + +func (o InterceptEndpointGroupAssociationOutput) ToInterceptEndpointGroupAssociationOutputWithContext(ctx context.Context) InterceptEndpointGroupAssociationOutput { + return o +} + +// Create time stamp. +func (o InterceptEndpointGroupAssociationOutput) CreateTime() pulumi.StringOutput { + return o.ApplyT(func(v *InterceptEndpointGroupAssociation) pulumi.StringOutput { return v.CreateTime }).(pulumi.StringOutput) +} + +// All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. +func (o InterceptEndpointGroupAssociationOutput) EffectiveLabels() pulumi.StringMapOutput { + return o.ApplyT(func(v *InterceptEndpointGroupAssociation) pulumi.StringMapOutput { return v.EffectiveLabels }).(pulumi.StringMapOutput) +} + +// Immutable. The Intercept Endpoint Group that this resource is connected to. Format +// is: +// `projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`. +func (o InterceptEndpointGroupAssociationOutput) InterceptEndpointGroup() pulumi.StringOutput { + return o.ApplyT(func(v *InterceptEndpointGroupAssociation) pulumi.StringOutput { return v.InterceptEndpointGroup }).(pulumi.StringOutput) +} + +// ID of the Intercept Endpoint Group Association. +func (o InterceptEndpointGroupAssociationOutput) InterceptEndpointGroupAssociationId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *InterceptEndpointGroupAssociation) pulumi.StringPtrOutput { + return v.InterceptEndpointGroupAssociationId + }).(pulumi.StringPtrOutput) +} + +// Optional. Labels as key value pairs. +// **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. +// Please refer to the field `effectiveLabels` for all of the labels present on the resource. +func (o InterceptEndpointGroupAssociationOutput) Labels() pulumi.StringMapOutput { + return o.ApplyT(func(v *InterceptEndpointGroupAssociation) pulumi.StringMapOutput { return v.Labels }).(pulumi.StringMapOutput) +} + +// The location of the Intercept Endpoint Group Association, currently restricted to `global`. +// +// *** +func (o InterceptEndpointGroupAssociationOutput) Location() pulumi.StringOutput { + return o.ApplyT(func(v *InterceptEndpointGroupAssociation) pulumi.StringOutput { return v.Location }).(pulumi.StringOutput) +} + +// The list of locations that are currently supported by the associated Intercept Deployment Group and their state. +// Structure is documented below. +func (o InterceptEndpointGroupAssociationOutput) LocationsDetails() InterceptEndpointGroupAssociationLocationsDetailArrayOutput { + return o.ApplyT(func(v *InterceptEndpointGroupAssociation) InterceptEndpointGroupAssociationLocationsDetailArrayOutput { + return v.LocationsDetails + }).(InterceptEndpointGroupAssociationLocationsDetailArrayOutput) +} + +// Identifier. The name of the Intercept Endpoint Group Association. +func (o InterceptEndpointGroupAssociationOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *InterceptEndpointGroupAssociation) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Immutable. The VPC network associated. Format: +// `projects/{project}/global/networks/{network}`. +func (o InterceptEndpointGroupAssociationOutput) Network() pulumi.StringOutput { + return o.ApplyT(func(v *InterceptEndpointGroupAssociation) pulumi.StringOutput { return v.Network }).(pulumi.StringOutput) +} + +// The ID of the project in which the resource belongs. +// If it is not provided, the provider project is used. +func (o InterceptEndpointGroupAssociationOutput) Project() pulumi.StringOutput { + return o.ApplyT(func(v *InterceptEndpointGroupAssociation) pulumi.StringOutput { return v.Project }).(pulumi.StringOutput) +} + +// The combination of labels configured directly on the resource +// and default labels configured on the provider. +func (o InterceptEndpointGroupAssociationOutput) PulumiLabels() pulumi.StringMapOutput { + return o.ApplyT(func(v *InterceptEndpointGroupAssociation) pulumi.StringMapOutput { return v.PulumiLabels }).(pulumi.StringMapOutput) +} + +// Whether reconciling is in progress. +func (o InterceptEndpointGroupAssociationOutput) Reconciling() pulumi.BoolOutput { + return o.ApplyT(func(v *InterceptEndpointGroupAssociation) pulumi.BoolOutput { return v.Reconciling }).(pulumi.BoolOutput) +} + +// (Output) +// The association state in this location. +// Possible values: +// STATE_UNSPECIFIED +// ACTIVE +// OUT_OF_SYNC +func (o InterceptEndpointGroupAssociationOutput) State() pulumi.StringOutput { + return o.ApplyT(func(v *InterceptEndpointGroupAssociation) pulumi.StringOutput { return v.State }).(pulumi.StringOutput) +} + +// Update time stamp. +func (o InterceptEndpointGroupAssociationOutput) UpdateTime() pulumi.StringOutput { + return o.ApplyT(func(v *InterceptEndpointGroupAssociation) pulumi.StringOutput { return v.UpdateTime }).(pulumi.StringOutput) +} + +type InterceptEndpointGroupAssociationArrayOutput struct{ *pulumi.OutputState } + +func (InterceptEndpointGroupAssociationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*InterceptEndpointGroupAssociation)(nil)).Elem() +} + +func (o InterceptEndpointGroupAssociationArrayOutput) ToInterceptEndpointGroupAssociationArrayOutput() InterceptEndpointGroupAssociationArrayOutput { + return o +} + +func (o InterceptEndpointGroupAssociationArrayOutput) ToInterceptEndpointGroupAssociationArrayOutputWithContext(ctx context.Context) InterceptEndpointGroupAssociationArrayOutput { + return o +} + +func (o InterceptEndpointGroupAssociationArrayOutput) Index(i pulumi.IntInput) InterceptEndpointGroupAssociationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *InterceptEndpointGroupAssociation { + return vs[0].([]*InterceptEndpointGroupAssociation)[vs[1].(int)] + }).(InterceptEndpointGroupAssociationOutput) +} + +type InterceptEndpointGroupAssociationMapOutput struct{ *pulumi.OutputState } + +func (InterceptEndpointGroupAssociationMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*InterceptEndpointGroupAssociation)(nil)).Elem() +} + +func (o InterceptEndpointGroupAssociationMapOutput) ToInterceptEndpointGroupAssociationMapOutput() InterceptEndpointGroupAssociationMapOutput { + return o +} + +func (o InterceptEndpointGroupAssociationMapOutput) ToInterceptEndpointGroupAssociationMapOutputWithContext(ctx context.Context) InterceptEndpointGroupAssociationMapOutput { + return o +} + +func (o InterceptEndpointGroupAssociationMapOutput) MapIndex(k pulumi.StringInput) InterceptEndpointGroupAssociationOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *InterceptEndpointGroupAssociation { + return vs[0].(map[string]*InterceptEndpointGroupAssociation)[vs[1].(string)] + }).(InterceptEndpointGroupAssociationOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*InterceptEndpointGroupAssociationInput)(nil)).Elem(), &InterceptEndpointGroupAssociation{}) + pulumi.RegisterInputType(reflect.TypeOf((*InterceptEndpointGroupAssociationArrayInput)(nil)).Elem(), InterceptEndpointGroupAssociationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*InterceptEndpointGroupAssociationMapInput)(nil)).Elem(), InterceptEndpointGroupAssociationMap{}) + pulumi.RegisterOutputType(InterceptEndpointGroupAssociationOutput{}) + pulumi.RegisterOutputType(InterceptEndpointGroupAssociationArrayOutput{}) + pulumi.RegisterOutputType(InterceptEndpointGroupAssociationMapOutput{}) +} diff --git a/sdk/go/gcp/networksecurity/pulumiTypes.go b/sdk/go/gcp/networksecurity/pulumiTypes.go index e1c70b4b3c..f73d3b7751 100644 --- a/sdk/go/gcp/networksecurity/pulumiTypes.go +++ b/sdk/go/gcp/networksecurity/pulumiTypes.go @@ -5338,6 +5338,133 @@ func (o InterceptDeploymentGroupConnectedEndpointGroupArrayOutput) Index(i pulum }).(InterceptDeploymentGroupConnectedEndpointGroupOutput) } +type InterceptEndpointGroupAssociationLocationsDetail struct { + // The location of the Intercept Endpoint Group Association, currently restricted to `global`. + // + // *** + Location *string `pulumi:"location"` + // (Output) + // The association state in this location. + // Possible values: + // STATE_UNSPECIFIED + // ACTIVE + // OUT_OF_SYNC + State *string `pulumi:"state"` +} + +// InterceptEndpointGroupAssociationLocationsDetailInput is an input type that accepts InterceptEndpointGroupAssociationLocationsDetailArgs and InterceptEndpointGroupAssociationLocationsDetailOutput values. +// You can construct a concrete instance of `InterceptEndpointGroupAssociationLocationsDetailInput` via: +// +// InterceptEndpointGroupAssociationLocationsDetailArgs{...} +type InterceptEndpointGroupAssociationLocationsDetailInput interface { + pulumi.Input + + ToInterceptEndpointGroupAssociationLocationsDetailOutput() InterceptEndpointGroupAssociationLocationsDetailOutput + ToInterceptEndpointGroupAssociationLocationsDetailOutputWithContext(context.Context) InterceptEndpointGroupAssociationLocationsDetailOutput +} + +type InterceptEndpointGroupAssociationLocationsDetailArgs struct { + // The location of the Intercept Endpoint Group Association, currently restricted to `global`. + // + // *** + Location pulumi.StringPtrInput `pulumi:"location"` + // (Output) + // The association state in this location. + // Possible values: + // STATE_UNSPECIFIED + // ACTIVE + // OUT_OF_SYNC + State pulumi.StringPtrInput `pulumi:"state"` +} + +func (InterceptEndpointGroupAssociationLocationsDetailArgs) ElementType() reflect.Type { + return reflect.TypeOf((*InterceptEndpointGroupAssociationLocationsDetail)(nil)).Elem() +} + +func (i InterceptEndpointGroupAssociationLocationsDetailArgs) ToInterceptEndpointGroupAssociationLocationsDetailOutput() InterceptEndpointGroupAssociationLocationsDetailOutput { + return i.ToInterceptEndpointGroupAssociationLocationsDetailOutputWithContext(context.Background()) +} + +func (i InterceptEndpointGroupAssociationLocationsDetailArgs) ToInterceptEndpointGroupAssociationLocationsDetailOutputWithContext(ctx context.Context) InterceptEndpointGroupAssociationLocationsDetailOutput { + return pulumi.ToOutputWithContext(ctx, i).(InterceptEndpointGroupAssociationLocationsDetailOutput) +} + +// InterceptEndpointGroupAssociationLocationsDetailArrayInput is an input type that accepts InterceptEndpointGroupAssociationLocationsDetailArray and InterceptEndpointGroupAssociationLocationsDetailArrayOutput values. +// You can construct a concrete instance of `InterceptEndpointGroupAssociationLocationsDetailArrayInput` via: +// +// InterceptEndpointGroupAssociationLocationsDetailArray{ InterceptEndpointGroupAssociationLocationsDetailArgs{...} } +type InterceptEndpointGroupAssociationLocationsDetailArrayInput interface { + pulumi.Input + + ToInterceptEndpointGroupAssociationLocationsDetailArrayOutput() InterceptEndpointGroupAssociationLocationsDetailArrayOutput + ToInterceptEndpointGroupAssociationLocationsDetailArrayOutputWithContext(context.Context) InterceptEndpointGroupAssociationLocationsDetailArrayOutput +} + +type InterceptEndpointGroupAssociationLocationsDetailArray []InterceptEndpointGroupAssociationLocationsDetailInput + +func (InterceptEndpointGroupAssociationLocationsDetailArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]InterceptEndpointGroupAssociationLocationsDetail)(nil)).Elem() +} + +func (i InterceptEndpointGroupAssociationLocationsDetailArray) ToInterceptEndpointGroupAssociationLocationsDetailArrayOutput() InterceptEndpointGroupAssociationLocationsDetailArrayOutput { + return i.ToInterceptEndpointGroupAssociationLocationsDetailArrayOutputWithContext(context.Background()) +} + +func (i InterceptEndpointGroupAssociationLocationsDetailArray) ToInterceptEndpointGroupAssociationLocationsDetailArrayOutputWithContext(ctx context.Context) InterceptEndpointGroupAssociationLocationsDetailArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(InterceptEndpointGroupAssociationLocationsDetailArrayOutput) +} + +type InterceptEndpointGroupAssociationLocationsDetailOutput struct{ *pulumi.OutputState } + +func (InterceptEndpointGroupAssociationLocationsDetailOutput) ElementType() reflect.Type { + return reflect.TypeOf((*InterceptEndpointGroupAssociationLocationsDetail)(nil)).Elem() +} + +func (o InterceptEndpointGroupAssociationLocationsDetailOutput) ToInterceptEndpointGroupAssociationLocationsDetailOutput() InterceptEndpointGroupAssociationLocationsDetailOutput { + return o +} + +func (o InterceptEndpointGroupAssociationLocationsDetailOutput) ToInterceptEndpointGroupAssociationLocationsDetailOutputWithContext(ctx context.Context) InterceptEndpointGroupAssociationLocationsDetailOutput { + return o +} + +// The location of the Intercept Endpoint Group Association, currently restricted to `global`. +// +// *** +func (o InterceptEndpointGroupAssociationLocationsDetailOutput) Location() pulumi.StringPtrOutput { + return o.ApplyT(func(v InterceptEndpointGroupAssociationLocationsDetail) *string { return v.Location }).(pulumi.StringPtrOutput) +} + +// (Output) +// The association state in this location. +// Possible values: +// STATE_UNSPECIFIED +// ACTIVE +// OUT_OF_SYNC +func (o InterceptEndpointGroupAssociationLocationsDetailOutput) State() pulumi.StringPtrOutput { + return o.ApplyT(func(v InterceptEndpointGroupAssociationLocationsDetail) *string { return v.State }).(pulumi.StringPtrOutput) +} + +type InterceptEndpointGroupAssociationLocationsDetailArrayOutput struct{ *pulumi.OutputState } + +func (InterceptEndpointGroupAssociationLocationsDetailArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]InterceptEndpointGroupAssociationLocationsDetail)(nil)).Elem() +} + +func (o InterceptEndpointGroupAssociationLocationsDetailArrayOutput) ToInterceptEndpointGroupAssociationLocationsDetailArrayOutput() InterceptEndpointGroupAssociationLocationsDetailArrayOutput { + return o +} + +func (o InterceptEndpointGroupAssociationLocationsDetailArrayOutput) ToInterceptEndpointGroupAssociationLocationsDetailArrayOutputWithContext(ctx context.Context) InterceptEndpointGroupAssociationLocationsDetailArrayOutput { + return o +} + +func (o InterceptEndpointGroupAssociationLocationsDetailArrayOutput) Index(i pulumi.IntInput) InterceptEndpointGroupAssociationLocationsDetailOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) InterceptEndpointGroupAssociationLocationsDetail { + return vs[0].([]InterceptEndpointGroupAssociationLocationsDetail)[vs[1].(int)] + }).(InterceptEndpointGroupAssociationLocationsDetailOutput) +} + type MirroringDeploymentGroupConnectedEndpointGroup struct { // (Output) // Output only. A connected mirroring endpoint group. @@ -7089,6 +7216,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*ClientTlsPolicyServerValidationCaGrpcEndpointPtrInput)(nil)).Elem(), ClientTlsPolicyServerValidationCaGrpcEndpointArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*InterceptDeploymentGroupConnectedEndpointGroupInput)(nil)).Elem(), InterceptDeploymentGroupConnectedEndpointGroupArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*InterceptDeploymentGroupConnectedEndpointGroupArrayInput)(nil)).Elem(), InterceptDeploymentGroupConnectedEndpointGroupArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*InterceptEndpointGroupAssociationLocationsDetailInput)(nil)).Elem(), InterceptEndpointGroupAssociationLocationsDetailArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*InterceptEndpointGroupAssociationLocationsDetailArrayInput)(nil)).Elem(), InterceptEndpointGroupAssociationLocationsDetailArray{}) pulumi.RegisterInputType(reflect.TypeOf((*MirroringDeploymentGroupConnectedEndpointGroupInput)(nil)).Elem(), MirroringDeploymentGroupConnectedEndpointGroupArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*MirroringDeploymentGroupConnectedEndpointGroupArrayInput)(nil)).Elem(), MirroringDeploymentGroupConnectedEndpointGroupArray{}) pulumi.RegisterInputType(reflect.TypeOf((*MirroringEndpointGroupAssociationLocationsDetailInput)(nil)).Elem(), MirroringEndpointGroupAssociationLocationsDetailArgs{}) @@ -7185,6 +7314,8 @@ func init() { pulumi.RegisterOutputType(ClientTlsPolicyServerValidationCaGrpcEndpointPtrOutput{}) pulumi.RegisterOutputType(InterceptDeploymentGroupConnectedEndpointGroupOutput{}) pulumi.RegisterOutputType(InterceptDeploymentGroupConnectedEndpointGroupArrayOutput{}) + pulumi.RegisterOutputType(InterceptEndpointGroupAssociationLocationsDetailOutput{}) + pulumi.RegisterOutputType(InterceptEndpointGroupAssociationLocationsDetailArrayOutput{}) pulumi.RegisterOutputType(MirroringDeploymentGroupConnectedEndpointGroupOutput{}) pulumi.RegisterOutputType(MirroringDeploymentGroupConnectedEndpointGroupArrayOutput{}) pulumi.RegisterOutputType(MirroringEndpointGroupAssociationLocationsDetailOutput{}) diff --git a/sdk/go/gcp/oracledatabase/autonomousDatabase.go b/sdk/go/gcp/oracledatabase/autonomousDatabase.go index 5dfb20ddb7..fda2dfda80 100644 --- a/sdk/go/gcp/oracledatabase/autonomousDatabase.go +++ b/sdk/go/gcp/oracledatabase/autonomousDatabase.go @@ -124,7 +124,7 @@ import ( // }, // }, // PrivateEndpointIp: pulumi.String("10.5.0.11"), -// PrivateEndpointLabel: pulumi.String("testhost"), +// PrivateEndpointLabel: pulumi.String("myendpoint"), // }, // DeletionProtection: pulumi.Bool(true), // }) diff --git a/sdk/go/gcp/orgpolicy/policy.go b/sdk/go/gcp/orgpolicy/policy.go index c4c7c3407b..6bc20be781 100644 --- a/sdk/go/gcp/orgpolicy/policy.go +++ b/sdk/go/gcp/orgpolicy/policy.go @@ -230,7 +230,7 @@ import ( // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // constraint, err := orgpolicy.NewCustomConstraint(ctx, "constraint", &orgpolicy.CustomConstraintArgs{ -// Name: pulumi.String("custom.disableGkeAutoUpgrade_40289"), +// Name: pulumi.String("custom.disableGkeAutoUpgrade_76044"), // Parent: pulumi.String("organizations/123456789"), // DisplayName: pulumi.String("Disable GKE auto upgrade"), // Description: pulumi.String("Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced."), diff --git a/sdk/go/gcp/parallelstore/instance.go b/sdk/go/gcp/parallelstore/instance.go index ec77de534f..8da99cef8b 100644 --- a/sdk/go/gcp/parallelstore/instance.go +++ b/sdk/go/gcp/parallelstore/instance.go @@ -16,6 +16,75 @@ import ( // // ## Example Usage // +// ### Parallelstore Instance Basic Beta +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute" +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/parallelstore" +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// network, err := compute.NewNetwork(ctx, "network", &compute.NetworkArgs{ +// Name: pulumi.String("network"), +// AutoCreateSubnetworks: pulumi.Bool(true), +// Mtu: pulumi.Int(8896), +// }) +// if err != nil { +// return err +// } +// // Create an IP address +// privateIpAlloc, err := compute.NewGlobalAddress(ctx, "private_ip_alloc", &compute.GlobalAddressArgs{ +// Name: pulumi.String("address"), +// Purpose: pulumi.String("VPC_PEERING"), +// AddressType: pulumi.String("INTERNAL"), +// PrefixLength: pulumi.Int(24), +// Network: network.ID(), +// }) +// if err != nil { +// return err +// } +// // Create a private connection +// _, err = servicenetworking.NewConnection(ctx, "default", &servicenetworking.ConnectionArgs{ +// Network: network.ID(), +// Service: pulumi.String("servicenetworking.googleapis.com"), +// ReservedPeeringRanges: pulumi.StringArray{ +// privateIpAlloc.Name, +// }, +// }) +// if err != nil { +// return err +// } +// _, err = parallelstore.NewInstance(ctx, "instance", ¶llelstore.InstanceArgs{ +// InstanceId: pulumi.String("instance"), +// Location: pulumi.String("us-central1-a"), +// Description: pulumi.String("test instance"), +// CapacityGib: pulumi.String("12000"), +// Network: network.Name, +// FileStripeLevel: pulumi.String("FILE_STRIPE_LEVEL_MIN"), +// DirectoryStripeLevel: pulumi.String("DIRECTORY_STRIPE_LEVEL_MIN"), +// DeploymentType: pulumi.String("SCRATCH"), +// Labels: pulumi.StringMap{ +// "test": pulumi.String("value"), +// }, +// }, pulumi.DependsOn([]pulumi.Resource{ +// _default, +// })) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` // ### Parallelstore Instance Basic // // ```go @@ -70,6 +139,7 @@ import ( // Network: network.Name, // FileStripeLevel: pulumi.String("FILE_STRIPE_LEVEL_MIN"), // DirectoryStripeLevel: pulumi.String("DIRECTORY_STRIPE_LEVEL_MIN"), +// DeploymentType: pulumi.String("SCRATCH"), // Labels: pulumi.StringMap{ // "test": pulumi.String("value"), // }, @@ -120,6 +190,12 @@ type Instance struct { CreateTime pulumi.StringOutput `pulumi:"createTime"` // The version of DAOS software running in the instance. DaosVersion pulumi.StringOutput `pulumi:"daosVersion"` + // Parallelstore Instance deployment type. + // Possible values: + // DEPLOYMENT_TYPE_UNSPECIFIED + // SCRATCH + // PERSISTENT + DeploymentType pulumi.StringPtrOutput `pulumi:"deploymentType"` // The description of the instance. 2048 characters or less. Description pulumi.StringPtrOutput `pulumi:"description"` // Stripe level for directories. @@ -263,6 +339,12 @@ type instanceState struct { CreateTime *string `pulumi:"createTime"` // The version of DAOS software running in the instance. DaosVersion *string `pulumi:"daosVersion"` + // Parallelstore Instance deployment type. + // Possible values: + // DEPLOYMENT_TYPE_UNSPECIFIED + // SCRATCH + // PERSISTENT + DeploymentType *string `pulumi:"deploymentType"` // The description of the instance. 2048 characters or less. Description *string `pulumi:"description"` // Stripe level for directories. @@ -363,6 +445,12 @@ type InstanceState struct { CreateTime pulumi.StringPtrInput // The version of DAOS software running in the instance. DaosVersion pulumi.StringPtrInput + // Parallelstore Instance deployment type. + // Possible values: + // DEPLOYMENT_TYPE_UNSPECIFIED + // SCRATCH + // PERSISTENT + DeploymentType pulumi.StringPtrInput // The description of the instance. 2048 characters or less. Description pulumi.StringPtrInput // Stripe level for directories. @@ -460,6 +548,12 @@ func (InstanceState) ElementType() reflect.Type { type instanceArgs struct { // Required. Immutable. Storage capacity of Parallelstore instance in Gibibytes (GiB). CapacityGib string `pulumi:"capacityGib"` + // Parallelstore Instance deployment type. + // Possible values: + // DEPLOYMENT_TYPE_UNSPECIFIED + // SCRATCH + // PERSISTENT + DeploymentType *string `pulumi:"deploymentType"` // The description of the instance. 2048 characters or less. Description *string `pulumi:"description"` // Stripe level for directories. @@ -530,6 +624,12 @@ type instanceArgs struct { type InstanceArgs struct { // Required. Immutable. Storage capacity of Parallelstore instance in Gibibytes (GiB). CapacityGib pulumi.StringInput + // Parallelstore Instance deployment type. + // Possible values: + // DEPLOYMENT_TYPE_UNSPECIFIED + // SCRATCH + // PERSISTENT + DeploymentType pulumi.StringPtrInput // The description of the instance. 2048 characters or less. Description pulumi.StringPtrInput // Stripe level for directories. @@ -704,6 +804,15 @@ func (o InstanceOutput) DaosVersion() pulumi.StringOutput { return o.ApplyT(func(v *Instance) pulumi.StringOutput { return v.DaosVersion }).(pulumi.StringOutput) } +// Parallelstore Instance deployment type. +// Possible values: +// DEPLOYMENT_TYPE_UNSPECIFIED +// SCRATCH +// PERSISTENT +func (o InstanceOutput) DeploymentType() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Instance) pulumi.StringPtrOutput { return v.DeploymentType }).(pulumi.StringPtrOutput) +} + // The description of the instance. 2048 characters or less. func (o InstanceOutput) Description() pulumi.StringPtrOutput { return o.ApplyT(func(v *Instance) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) diff --git a/sdk/go/gcp/projects/usageExportBucket.go b/sdk/go/gcp/projects/usageExportBucket.go index 085324da6f..48f686494c 100644 --- a/sdk/go/gcp/projects/usageExportBucket.go +++ b/sdk/go/gcp/projects/usageExportBucket.go @@ -12,27 +12,17 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) -// Allows creation and management of a Google Cloud Platform project. +// Sets up a usage export bucket for a particular project. A usage export bucket +// is a pre-configured GCS bucket which is set up to receive daily and monthly +// reports of the GCE resources used. // -// Projects created with this resource must be associated with an Organization. -// See the [Organization documentation](https://cloud.google.com/resource-manager/docs/quickstarts) for more details. +// For more information see the [Docs](https://cloud.google.com/compute/docs/usage-export) +// and for further details, the +// [API Documentation](https://cloud.google.com/compute/docs/reference/rest/beta/projects/setUsageExportBucket). // -// The user or service account that is running this provider when creating a `organizations.Project` -// resource must have `roles/resourcemanager.projectCreator` on the specified organization. See the -// [Access Control for Organizations Using IAM](https://cloud.google.com/resource-manager/docs/access-control-org) -// doc for more information. -// -// > This resource reads the specified billing account on every pulumi up and plan operation so you must have permissions on the specified billing account. -// -// > 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 `autoCreateNetwork` to false, when possible. -// -// > It may take a while for the attached tag bindings to be deleted after the project is scheduled to be deleted. -// -// To get more information about projects, see: -// -// * [API documentation](https://cloud.google.com/resource-manager/reference/rest/v1/projects) -// * How-to Guides -// - [Creating and managing projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects) +// > **Note:** You should specify only one of these per project. If there are two or more +// they will fight over which bucket the reports should be stored in. It is +// safe to have multiple resources with the same backing bucket. // // ## Example Usage // @@ -41,83 +31,16 @@ import ( // // import ( // -// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := organizations.NewProject(ctx, "my_project", &organizations.ProjectArgs{ -// Name: pulumi.String("My Project"), -// ProjectId: pulumi.String("your-project-id"), -// OrgId: pulumi.String("1234567"), -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// -// ``` -// -// # To create a project under a specific folder -// -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations" +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects" // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" // // ) // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// department1, err := organizations.NewFolder(ctx, "department1", &organizations.FolderArgs{ -// DisplayName: pulumi.String("Department 1"), -// Parent: pulumi.String("organizations/1234567"), -// }) -// if err != nil { -// return err -// } -// _, err = organizations.NewProject(ctx, "my_project-in-a-folder", &organizations.ProjectArgs{ -// Name: pulumi.String("My Project"), -// ProjectId: pulumi.String("your-project-id"), -// FolderId: department1.Name, -// }) -// if err != nil { -// return err -// } -// return nil -// }) -// } -// -// ``` -// -// # To create a project with a tag -// -// ```go -// package main -// -// import ( -// -// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations" -// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" -// -// ) -// -// func main() { -// pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := organizations.NewProject(ctx, "my_project", &organizations.ProjectArgs{ -// Name: pulumi.String("My Project"), -// ProjectId: pulumi.String("your-project-id"), -// OrgId: pulumi.String("1234567"), -// Tags: pulumi.StringMap{ -// "1234567/env": pulumi.String("staging"), -// }, +// _, err := projects.NewUsageExportBucket(ctx, "usage_export", &projects.UsageExportBucketArgs{ +// Project: pulumi.String("development-project"), +// BucketName: pulumi.String("usage-tracking-bucket"), // }) // if err != nil { // return err @@ -130,11 +53,11 @@ import ( // // ## Import // -// Projects can be imported using the `project_id`, e.g. +// A project's Usage Export Bucket can be imported using this format: // // * `{{project_id}}` // -// When using the `pulumi import` command, Projects can be imported using one of the formats above. For example: +// When using the `pulumi import` command, NAME_HERE can be imported using one of the formats above. For example: // // ```sh // $ pulumi import gcp:projects/usageExportBucket:UsageExportBucket default {{project_id}} @@ -143,6 +66,8 @@ type UsageExportBucket struct { pulumi.CustomResourceState // The bucket to store reports in. + // + // *** BucketName pulumi.StringOutput `pulumi:"bucketName"` // A prefix for the reports, for instance, the project name. Prefix pulumi.StringPtrOutput `pulumi:"prefix"` @@ -184,6 +109,8 @@ func GetUsageExportBucket(ctx *pulumi.Context, // Input properties used for looking up and filtering UsageExportBucket resources. type usageExportBucketState struct { // The bucket to store reports in. + // + // *** BucketName *string `pulumi:"bucketName"` // A prefix for the reports, for instance, the project name. Prefix *string `pulumi:"prefix"` @@ -193,6 +120,8 @@ type usageExportBucketState struct { type UsageExportBucketState struct { // The bucket to store reports in. + // + // *** BucketName pulumi.StringPtrInput // A prefix for the reports, for instance, the project name. Prefix pulumi.StringPtrInput @@ -206,6 +135,8 @@ func (UsageExportBucketState) ElementType() reflect.Type { type usageExportBucketArgs struct { // The bucket to store reports in. + // + // *** BucketName string `pulumi:"bucketName"` // A prefix for the reports, for instance, the project name. Prefix *string `pulumi:"prefix"` @@ -216,6 +147,8 @@ type usageExportBucketArgs struct { // The set of arguments for constructing a UsageExportBucket resource. type UsageExportBucketArgs struct { // The bucket to store reports in. + // + // *** BucketName pulumi.StringInput // A prefix for the reports, for instance, the project name. Prefix pulumi.StringPtrInput @@ -311,6 +244,8 @@ func (o UsageExportBucketOutput) ToUsageExportBucketOutputWithContext(ctx contex } // The bucket to store reports in. +// +// *** func (o UsageExportBucketOutput) BucketName() pulumi.StringOutput { return o.ApplyT(func(v *UsageExportBucket) pulumi.StringOutput { return v.BucketName }).(pulumi.StringOutput) } diff --git a/sdk/go/gcp/provider.go b/sdk/go/gcp/provider.go index 0900d0d5fa..9913f9e0f5 100644 --- a/sdk/go/gcp/provider.go +++ b/sdk/go/gcp/provider.go @@ -45,6 +45,7 @@ type Provider struct { BinaryAuthorizationCustomEndpoint pulumi.StringPtrOutput `pulumi:"binaryAuthorizationCustomEndpoint"` BlockchainNodeEngineCustomEndpoint pulumi.StringPtrOutput `pulumi:"blockchainNodeEngineCustomEndpoint"` CertificateManagerCustomEndpoint pulumi.StringPtrOutput `pulumi:"certificateManagerCustomEndpoint"` + ChronicleCustomEndpoint pulumi.StringPtrOutput `pulumi:"chronicleCustomEndpoint"` CloudAssetCustomEndpoint pulumi.StringPtrOutput `pulumi:"cloudAssetCustomEndpoint"` CloudBillingCustomEndpoint pulumi.StringPtrOutput `pulumi:"cloudBillingCustomEndpoint"` CloudBuildCustomEndpoint pulumi.StringPtrOutput `pulumi:"cloudBuildCustomEndpoint"` @@ -261,6 +262,7 @@ type providerArgs struct { BinaryAuthorizationCustomEndpoint *string `pulumi:"binaryAuthorizationCustomEndpoint"` BlockchainNodeEngineCustomEndpoint *string `pulumi:"blockchainNodeEngineCustomEndpoint"` CertificateManagerCustomEndpoint *string `pulumi:"certificateManagerCustomEndpoint"` + ChronicleCustomEndpoint *string `pulumi:"chronicleCustomEndpoint"` CloudAssetCustomEndpoint *string `pulumi:"cloudAssetCustomEndpoint"` CloudBillingCustomEndpoint *string `pulumi:"cloudBillingCustomEndpoint"` CloudBuildCustomEndpoint *string `pulumi:"cloudBuildCustomEndpoint"` @@ -445,6 +447,7 @@ type ProviderArgs struct { BinaryAuthorizationCustomEndpoint pulumi.StringPtrInput BlockchainNodeEngineCustomEndpoint pulumi.StringPtrInput CertificateManagerCustomEndpoint pulumi.StringPtrInput + ChronicleCustomEndpoint pulumi.StringPtrInput CloudAssetCustomEndpoint pulumi.StringPtrInput CloudBillingCustomEndpoint pulumi.StringPtrInput CloudBuildCustomEndpoint pulumi.StringPtrInput @@ -743,6 +746,10 @@ func (o ProviderOutput) CertificateManagerCustomEndpoint() pulumi.StringPtrOutpu return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.CertificateManagerCustomEndpoint }).(pulumi.StringPtrOutput) } +func (o ProviderOutput) ChronicleCustomEndpoint() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.ChronicleCustomEndpoint }).(pulumi.StringPtrOutput) +} + func (o ProviderOutput) CloudAssetCustomEndpoint() pulumi.StringPtrOutput { return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.CloudAssetCustomEndpoint }).(pulumi.StringPtrOutput) } diff --git a/sdk/go/gcp/pubsub/subscription.go b/sdk/go/gcp/pubsub/subscription.go index dd9c183e42..6a435ffd60 100644 --- a/sdk/go/gcp/pubsub/subscription.go +++ b/sdk/go/gcp/pubsub/subscription.go @@ -496,7 +496,7 @@ import ( // CloudStorageConfig: &pubsub.SubscriptionCloudStorageConfigArgs{ // Bucket: example.Name, // FilenamePrefix: pulumi.String("pre-"), -// FilenameSuffix: pulumi.String("-_33395"), +// FilenameSuffix: pulumi.String("-_69391"), // FilenameDatetimeFormat: pulumi.String("YYYY-MM-DD/hh_mm_ssZ"), // MaxBytes: pulumi.Int(1000), // MaxDuration: pulumi.String("300s"), @@ -564,7 +564,7 @@ import ( // CloudStorageConfig: &pubsub.SubscriptionCloudStorageConfigArgs{ // Bucket: example.Name, // FilenamePrefix: pulumi.String("pre-"), -// FilenameSuffix: pulumi.String("-_76044"), +// FilenameSuffix: pulumi.String("-_8270"), // FilenameDatetimeFormat: pulumi.String("YYYY-MM-DD/hh_mm_ssZ"), // MaxBytes: pulumi.Int(1000), // MaxDuration: pulumi.String("300s"), @@ -642,7 +642,7 @@ import ( // CloudStorageConfig: &pubsub.SubscriptionCloudStorageConfigArgs{ // Bucket: example.Name, // FilenamePrefix: pulumi.String("pre-"), -// FilenameSuffix: pulumi.String("-_69391"), +// FilenameSuffix: pulumi.String("-_41150"), // FilenameDatetimeFormat: pulumi.String("YYYY-MM-DD/hh_mm_ssZ"), // MaxBytes: pulumi.Int(1000), // MaxDuration: pulumi.String("300s"), diff --git a/sdk/go/gcp/securesourcemanager/instance.go b/sdk/go/gcp/securesourcemanager/instance.go index ebf3ce4540..bcfc2643a5 100644 --- a/sdk/go/gcp/securesourcemanager/instance.go +++ b/sdk/go/gcp/securesourcemanager/instance.go @@ -69,26 +69,12 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// keyRing, err := kms.NewKeyRing(ctx, "key_ring", &kms.KeyRingArgs{ -// Name: pulumi.String("my-keyring"), -// Location: pulumi.String("us-central1"), -// }) -// if err != nil { -// return err -// } -// cryptoKey, err := kms.NewCryptoKey(ctx, "crypto_key", &kms.CryptoKeyArgs{ -// Name: pulumi.String("my-key"), -// KeyRing: keyRing.ID(), -// }) -// if err != nil { -// return err -// } // project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } // cryptoKeyBinding, err := kms.NewCryptoKeyIAMMember(ctx, "crypto_key_binding", &kms.CryptoKeyIAMMemberArgs{ -// CryptoKeyId: cryptoKey.ID(), +// CryptoKeyId: pulumi.String("my-key"), // Role: pulumi.String("roles/cloudkms.cryptoKeyEncrypterDecrypter"), // Member: pulumi.Sprintf("serviceAccount:service-%v@gcp-sa-sourcemanager.iam.gserviceaccount.com", project.Number), // }) @@ -98,7 +84,7 @@ import ( // _, err = securesourcemanager.NewInstance(ctx, "default", &securesourcemanager.InstanceArgs{ // Location: pulumi.String("us-central1"), // InstanceId: pulumi.String("my-instance"), -// KmsKey: cryptoKey.ID(), +// KmsKey: pulumi.String("my-key"), // }, pulumi.DependsOn([]pulumi.Resource{ // cryptoKeyBinding, // })) diff --git a/sdk/go/gcp/spanner/instanceIAMBinding.go b/sdk/go/gcp/spanner/instanceIAMBinding.go index c4de8262fd..4278db80e8 100644 --- a/sdk/go/gcp/spanner/instanceIAMBinding.go +++ b/sdk/go/gcp/spanner/instanceIAMBinding.go @@ -221,6 +221,8 @@ type InstanceIAMBinding struct { // * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. // * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. // * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + // * **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 + // * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE // * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. // * **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. Members pulumi.StringArrayOutput `pulumi:"members"` @@ -283,6 +285,8 @@ type instanceIAMBindingState struct { // * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. // * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. // * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + // * **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 + // * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE // * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. // * **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. Members []string `pulumi:"members"` @@ -307,6 +311,8 @@ type InstanceIAMBindingState struct { // * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. // * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. // * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + // * **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 + // * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE // * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. // * **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. Members pulumi.StringArrayInput @@ -333,6 +339,8 @@ type instanceIAMBindingArgs struct { // * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. // * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. // * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + // * **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 + // * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE // * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. // * **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. Members []string `pulumi:"members"` @@ -356,6 +364,8 @@ type InstanceIAMBindingArgs struct { // * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. // * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. // * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + // * **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 + // * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE // * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. // * **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. Members pulumi.StringArrayInput @@ -475,6 +485,8 @@ func (o InstanceIAMBindingOutput) Instance() pulumi.StringOutput { // * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. // * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. // * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. +// * **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 +// * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE // * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. // * **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. func (o InstanceIAMBindingOutput) Members() pulumi.StringArrayOutput { diff --git a/sdk/go/gcp/spanner/instanceIAMMember.go b/sdk/go/gcp/spanner/instanceIAMMember.go index 0a7fa15c09..d4863e8012 100644 --- a/sdk/go/gcp/spanner/instanceIAMMember.go +++ b/sdk/go/gcp/spanner/instanceIAMMember.go @@ -221,6 +221,8 @@ type InstanceIAMMember struct { // * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. // * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. // * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + // * **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 + // * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE // * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. // * **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. Member pulumi.StringOutput `pulumi:"member"` @@ -283,6 +285,8 @@ type instanceIAMMemberState struct { // * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. // * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. // * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + // * **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 + // * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE // * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. // * **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. Member *string `pulumi:"member"` @@ -307,6 +311,8 @@ type InstanceIAMMemberState struct { // * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. // * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. // * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + // * **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 + // * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE // * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. // * **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. Member pulumi.StringPtrInput @@ -333,6 +339,8 @@ type instanceIAMMemberArgs struct { // * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. // * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. // * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + // * **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 + // * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE // * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. // * **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. Member string `pulumi:"member"` @@ -356,6 +364,8 @@ type InstanceIAMMemberArgs struct { // * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. // * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. // * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + // * **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 + // * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE // * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. // * **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. Member pulumi.StringInput @@ -475,6 +485,8 @@ func (o InstanceIAMMemberOutput) Instance() pulumi.StringOutput { // * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. // * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. // * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. +// * **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 +// * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE // * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. // * **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. func (o InstanceIAMMemberOutput) Member() pulumi.StringOutput { diff --git a/sdk/go/gcp/sql/databaseInstance.go b/sdk/go/gcp/sql/databaseInstance.go index e54bb28180..aa6d2d092e 100644 --- a/sdk/go/gcp/sql/databaseInstance.go +++ b/sdk/go/gcp/sql/databaseInstance.go @@ -343,7 +343,7 @@ type DatabaseInstance struct { ConnectionName pulumi.StringOutput `pulumi:"connectionName"` // The MySQL, PostgreSQL or // SQL Server version to use. Supported values include `MYSQL_5_6`, - // `MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, + // `MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, // `POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`, // `SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`. // `SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`, @@ -474,7 +474,7 @@ type databaseInstanceState struct { ConnectionName *string `pulumi:"connectionName"` // The MySQL, PostgreSQL or // SQL Server version to use. Supported values include `MYSQL_5_6`, - // `MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, + // `MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, // `POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`, // `SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`. // `SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`, @@ -561,7 +561,7 @@ type DatabaseInstanceState struct { ConnectionName pulumi.StringPtrInput // The MySQL, PostgreSQL or // SQL Server version to use. Supported values include `MYSQL_5_6`, - // `MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, + // `MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, // `POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`, // `SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`. // `SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`, @@ -647,7 +647,7 @@ type databaseInstanceArgs struct { Clone *DatabaseInstanceClone `pulumi:"clone"` // The MySQL, PostgreSQL or // SQL Server version to use. Supported values include `MYSQL_5_6`, - // `MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, + // `MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, // `POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`, // `SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`. // `SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`, @@ -713,7 +713,7 @@ type DatabaseInstanceArgs struct { Clone DatabaseInstanceClonePtrInput // The MySQL, PostgreSQL or // SQL Server version to use. Supported values include `MYSQL_5_6`, - // `MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, + // `MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, // `POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`, // `SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`. // `SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`, @@ -878,7 +878,7 @@ func (o DatabaseInstanceOutput) ConnectionName() pulumi.StringOutput { // The MySQL, PostgreSQL or // SQL Server version to use. Supported values include `MYSQL_5_6`, -// `MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, +// `MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, // `POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`, // `SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`. // `SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`, diff --git a/sdk/go/gcp/storage/folder.go b/sdk/go/gcp/storage/folder.go new file mode 100644 index 0000000000..79fcc1924e --- /dev/null +++ b/sdk/go/gcp/storage/folder.go @@ -0,0 +1,388 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package storage + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// A Google Cloud Storage Folder. +// +// # The Folder resource represents a folder in a Cloud Storage bucket with hierarchical namespace enabled +// +// To get more information about Folder, see: +// +// * [API documentation](https://cloud.google.com/storage/docs/json_api/v1/folders) +// * How-to Guides +// - [Official Documentation](https://cloud.google.com/storage/docs/folders-overview) +// +// ## Example Usage +// +// ### Storage Folder Basic +// +// ```go +// package main +// +// import ( +// +// "fmt" +// +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// bucket, err := storage.NewBucket(ctx, "bucket", &storage.BucketArgs{ +// Name: pulumi.String("my-bucket"), +// Location: pulumi.String("EU"), +// UniformBucketLevelAccess: pulumi.Bool(true), +// HierarchicalNamespace: &storage.BucketHierarchicalNamespaceArgs{ +// Enabled: pulumi.Bool(true), +// }, +// }) +// if err != nil { +// return err +// } +// folder, err := storage.NewFolder(ctx, "folder", &storage.FolderArgs{ +// Bucket: bucket.Name, +// Name: pulumi.String("parent-folder/"), +// }) +// if err != nil { +// return err +// } +// _, err = storage.NewFolder(ctx, "subfolder", &storage.FolderArgs{ +// Bucket: bucket.Name, +// Name: folder.Name.ApplyT(func(name string) (string, error) { +// return fmt.Sprintf("%vsubfolder/", name), nil +// }).(pulumi.StringOutput), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Folder can be imported using any of these accepted formats: +// +// * `{{bucket}}/folders/{{name}}` +// +// * `{{bucket}}/{{name}}` +// +// When using the `pulumi import` command, Folder can be imported using one of the formats above. For example: +// +// ```sh +// $ pulumi import gcp:storage/folder:Folder default {{bucket}}/folders/{{name}} +// ``` +// +// ```sh +// $ pulumi import gcp:storage/folder:Folder default {{bucket}}/{{name}} +// ``` +type Folder struct { + pulumi.CustomResourceState + + // The name of the bucket that contains the folder. + Bucket pulumi.StringOutput `pulumi:"bucket"` + // The timestamp at which this folder was created. + CreateTime pulumi.StringOutput `pulumi:"createTime"` + // If set to true, items within folder if any will be force destroyed. + ForceDestroy pulumi.BoolPtrOutput `pulumi:"forceDestroy"` + // The metadata generation of the folder. + Metageneration pulumi.StringOutput `pulumi:"metageneration"` + // The name of the folder expressed as a path. Must include + // trailing '/'. For example, `example_dir/example_dir2/`, `example@#/`, `a-b/d-f/`. + // + // *** + Name pulumi.StringOutput `pulumi:"name"` + // The URI of the created resource. + SelfLink pulumi.StringOutput `pulumi:"selfLink"` + // The timestamp at which this folder was most recently updated. + UpdateTime pulumi.StringOutput `pulumi:"updateTime"` +} + +// NewFolder registers a new resource with the given unique name, arguments, and options. +func NewFolder(ctx *pulumi.Context, + name string, args *FolderArgs, opts ...pulumi.ResourceOption) (*Folder, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Bucket == nil { + return nil, errors.New("invalid value for required argument 'Bucket'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource Folder + err := ctx.RegisterResource("gcp:storage/folder:Folder", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetFolder gets an existing Folder resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetFolder(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *FolderState, opts ...pulumi.ResourceOption) (*Folder, error) { + var resource Folder + err := ctx.ReadResource("gcp:storage/folder:Folder", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Folder resources. +type folderState struct { + // The name of the bucket that contains the folder. + Bucket *string `pulumi:"bucket"` + // The timestamp at which this folder was created. + CreateTime *string `pulumi:"createTime"` + // If set to true, items within folder if any will be force destroyed. + ForceDestroy *bool `pulumi:"forceDestroy"` + // The metadata generation of the folder. + Metageneration *string `pulumi:"metageneration"` + // The name of the folder expressed as a path. Must include + // trailing '/'. For example, `example_dir/example_dir2/`, `example@#/`, `a-b/d-f/`. + // + // *** + Name *string `pulumi:"name"` + // The URI of the created resource. + SelfLink *string `pulumi:"selfLink"` + // The timestamp at which this folder was most recently updated. + UpdateTime *string `pulumi:"updateTime"` +} + +type FolderState struct { + // The name of the bucket that contains the folder. + Bucket pulumi.StringPtrInput + // The timestamp at which this folder was created. + CreateTime pulumi.StringPtrInput + // If set to true, items within folder if any will be force destroyed. + ForceDestroy pulumi.BoolPtrInput + // The metadata generation of the folder. + Metageneration pulumi.StringPtrInput + // The name of the folder expressed as a path. Must include + // trailing '/'. For example, `example_dir/example_dir2/`, `example@#/`, `a-b/d-f/`. + // + // *** + Name pulumi.StringPtrInput + // The URI of the created resource. + SelfLink pulumi.StringPtrInput + // The timestamp at which this folder was most recently updated. + UpdateTime pulumi.StringPtrInput +} + +func (FolderState) ElementType() reflect.Type { + return reflect.TypeOf((*folderState)(nil)).Elem() +} + +type folderArgs struct { + // The name of the bucket that contains the folder. + Bucket string `pulumi:"bucket"` + // If set to true, items within folder if any will be force destroyed. + ForceDestroy *bool `pulumi:"forceDestroy"` + // The name of the folder expressed as a path. Must include + // trailing '/'. For example, `example_dir/example_dir2/`, `example@#/`, `a-b/d-f/`. + // + // *** + Name *string `pulumi:"name"` +} + +// The set of arguments for constructing a Folder resource. +type FolderArgs struct { + // The name of the bucket that contains the folder. + Bucket pulumi.StringInput + // If set to true, items within folder if any will be force destroyed. + ForceDestroy pulumi.BoolPtrInput + // The name of the folder expressed as a path. Must include + // trailing '/'. For example, `example_dir/example_dir2/`, `example@#/`, `a-b/d-f/`. + // + // *** + Name pulumi.StringPtrInput +} + +func (FolderArgs) ElementType() reflect.Type { + return reflect.TypeOf((*folderArgs)(nil)).Elem() +} + +type FolderInput interface { + pulumi.Input + + ToFolderOutput() FolderOutput + ToFolderOutputWithContext(ctx context.Context) FolderOutput +} + +func (*Folder) ElementType() reflect.Type { + return reflect.TypeOf((**Folder)(nil)).Elem() +} + +func (i *Folder) ToFolderOutput() FolderOutput { + return i.ToFolderOutputWithContext(context.Background()) +} + +func (i *Folder) ToFolderOutputWithContext(ctx context.Context) FolderOutput { + return pulumi.ToOutputWithContext(ctx, i).(FolderOutput) +} + +// FolderArrayInput is an input type that accepts FolderArray and FolderArrayOutput values. +// You can construct a concrete instance of `FolderArrayInput` via: +// +// FolderArray{ FolderArgs{...} } +type FolderArrayInput interface { + pulumi.Input + + ToFolderArrayOutput() FolderArrayOutput + ToFolderArrayOutputWithContext(context.Context) FolderArrayOutput +} + +type FolderArray []FolderInput + +func (FolderArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Folder)(nil)).Elem() +} + +func (i FolderArray) ToFolderArrayOutput() FolderArrayOutput { + return i.ToFolderArrayOutputWithContext(context.Background()) +} + +func (i FolderArray) ToFolderArrayOutputWithContext(ctx context.Context) FolderArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(FolderArrayOutput) +} + +// FolderMapInput is an input type that accepts FolderMap and FolderMapOutput values. +// You can construct a concrete instance of `FolderMapInput` via: +// +// FolderMap{ "key": FolderArgs{...} } +type FolderMapInput interface { + pulumi.Input + + ToFolderMapOutput() FolderMapOutput + ToFolderMapOutputWithContext(context.Context) FolderMapOutput +} + +type FolderMap map[string]FolderInput + +func (FolderMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Folder)(nil)).Elem() +} + +func (i FolderMap) ToFolderMapOutput() FolderMapOutput { + return i.ToFolderMapOutputWithContext(context.Background()) +} + +func (i FolderMap) ToFolderMapOutputWithContext(ctx context.Context) FolderMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(FolderMapOutput) +} + +type FolderOutput struct{ *pulumi.OutputState } + +func (FolderOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Folder)(nil)).Elem() +} + +func (o FolderOutput) ToFolderOutput() FolderOutput { + return o +} + +func (o FolderOutput) ToFolderOutputWithContext(ctx context.Context) FolderOutput { + return o +} + +// The name of the bucket that contains the folder. +func (o FolderOutput) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v *Folder) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) +} + +// The timestamp at which this folder was created. +func (o FolderOutput) CreateTime() pulumi.StringOutput { + return o.ApplyT(func(v *Folder) pulumi.StringOutput { return v.CreateTime }).(pulumi.StringOutput) +} + +// If set to true, items within folder if any will be force destroyed. +func (o FolderOutput) ForceDestroy() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Folder) pulumi.BoolPtrOutput { return v.ForceDestroy }).(pulumi.BoolPtrOutput) +} + +// The metadata generation of the folder. +func (o FolderOutput) Metageneration() pulumi.StringOutput { + return o.ApplyT(func(v *Folder) pulumi.StringOutput { return v.Metageneration }).(pulumi.StringOutput) +} + +// The name of the folder expressed as a path. Must include +// trailing '/'. For example, `example_dir/example_dir2/`, `example@#/`, `a-b/d-f/`. +// +// *** +func (o FolderOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *Folder) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// The URI of the created resource. +func (o FolderOutput) SelfLink() pulumi.StringOutput { + return o.ApplyT(func(v *Folder) pulumi.StringOutput { return v.SelfLink }).(pulumi.StringOutput) +} + +// The timestamp at which this folder was most recently updated. +func (o FolderOutput) UpdateTime() pulumi.StringOutput { + return o.ApplyT(func(v *Folder) pulumi.StringOutput { return v.UpdateTime }).(pulumi.StringOutput) +} + +type FolderArrayOutput struct{ *pulumi.OutputState } + +func (FolderArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Folder)(nil)).Elem() +} + +func (o FolderArrayOutput) ToFolderArrayOutput() FolderArrayOutput { + return o +} + +func (o FolderArrayOutput) ToFolderArrayOutputWithContext(ctx context.Context) FolderArrayOutput { + return o +} + +func (o FolderArrayOutput) Index(i pulumi.IntInput) FolderOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Folder { + return vs[0].([]*Folder)[vs[1].(int)] + }).(FolderOutput) +} + +type FolderMapOutput struct{ *pulumi.OutputState } + +func (FolderMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Folder)(nil)).Elem() +} + +func (o FolderMapOutput) ToFolderMapOutput() FolderMapOutput { + return o +} + +func (o FolderMapOutput) ToFolderMapOutputWithContext(ctx context.Context) FolderMapOutput { + return o +} + +func (o FolderMapOutput) MapIndex(k pulumi.StringInput) FolderOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Folder { + return vs[0].(map[string]*Folder)[vs[1].(string)] + }).(FolderOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*FolderInput)(nil)).Elem(), &Folder{}) + pulumi.RegisterInputType(reflect.TypeOf((*FolderArrayInput)(nil)).Elem(), FolderArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*FolderMapInput)(nil)).Elem(), FolderMap{}) + pulumi.RegisterOutputType(FolderOutput{}) + pulumi.RegisterOutputType(FolderArrayOutput{}) + pulumi.RegisterOutputType(FolderMapOutput{}) +} diff --git a/sdk/go/gcp/storage/init.go b/sdk/go/gcp/storage/init.go index d5087ce406..605860e60e 100644 --- a/sdk/go/gcp/storage/init.go +++ b/sdk/go/gcp/storage/init.go @@ -39,6 +39,8 @@ func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi r = &DefaultObjectACL{} case "gcp:storage/defaultObjectAccessControl:DefaultObjectAccessControl": r = &DefaultObjectAccessControl{} + case "gcp:storage/folder:Folder": + r = &Folder{} case "gcp:storage/hmacKey:HmacKey": r = &HmacKey{} case "gcp:storage/insightsReportConfig:InsightsReportConfig": @@ -119,6 +121,11 @@ func init() { "storage/defaultObjectAccessControl", &module{version}, ) + pulumi.RegisterResourceModule( + "gcp", + "storage/folder", + &module{version}, + ) pulumi.RegisterResourceModule( "gcp", "storage/hmacKey", diff --git a/sdk/go/gcp/storage/pulumiTypes.go b/sdk/go/gcp/storage/pulumiTypes.go index 6e22dddf75..0f9ec7e78e 100644 --- a/sdk/go/gcp/storage/pulumiTypes.go +++ b/sdk/go/gcp/storage/pulumiTypes.go @@ -4835,6 +4835,952 @@ func (o TransferJobNotificationConfigPtrOutput) PubsubTopic() pulumi.StringPtrOu }).(pulumi.StringPtrOutput) } +type TransferJobReplicationSpec struct { + // A Google Cloud Storage data sink. Structure documented below. + GcsDataSink *TransferJobReplicationSpecGcsDataSink `pulumi:"gcsDataSink"` + // A Google Cloud Storage data source. Structure documented below. + GcsDataSource *TransferJobReplicationSpecGcsDataSource `pulumi:"gcsDataSource"` + // Only objects that satisfy these object conditions are included in the set of data source and data sink objects. Object conditions based on objects' `lastModificationTime` do not exclude objects in a data sink. Structure documented below. + ObjectConditions *TransferJobReplicationSpecObjectConditions `pulumi:"objectConditions"` + // Characteristics of how to treat files from datasource and sink during job. If the option `deleteObjectsUniqueInSink` is true, object conditions based on objects' `lastModificationTime` are ignored and do not exclude objects in a data source or a data sink. Structure documented below. + TransferOptions *TransferJobReplicationSpecTransferOptions `pulumi:"transferOptions"` +} + +// TransferJobReplicationSpecInput is an input type that accepts TransferJobReplicationSpecArgs and TransferJobReplicationSpecOutput values. +// You can construct a concrete instance of `TransferJobReplicationSpecInput` via: +// +// TransferJobReplicationSpecArgs{...} +type TransferJobReplicationSpecInput interface { + pulumi.Input + + ToTransferJobReplicationSpecOutput() TransferJobReplicationSpecOutput + ToTransferJobReplicationSpecOutputWithContext(context.Context) TransferJobReplicationSpecOutput +} + +type TransferJobReplicationSpecArgs struct { + // A Google Cloud Storage data sink. Structure documented below. + GcsDataSink TransferJobReplicationSpecGcsDataSinkPtrInput `pulumi:"gcsDataSink"` + // A Google Cloud Storage data source. Structure documented below. + GcsDataSource TransferJobReplicationSpecGcsDataSourcePtrInput `pulumi:"gcsDataSource"` + // Only objects that satisfy these object conditions are included in the set of data source and data sink objects. Object conditions based on objects' `lastModificationTime` do not exclude objects in a data sink. Structure documented below. + ObjectConditions TransferJobReplicationSpecObjectConditionsPtrInput `pulumi:"objectConditions"` + // Characteristics of how to treat files from datasource and sink during job. If the option `deleteObjectsUniqueInSink` is true, object conditions based on objects' `lastModificationTime` are ignored and do not exclude objects in a data source or a data sink. Structure documented below. + TransferOptions TransferJobReplicationSpecTransferOptionsPtrInput `pulumi:"transferOptions"` +} + +func (TransferJobReplicationSpecArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TransferJobReplicationSpec)(nil)).Elem() +} + +func (i TransferJobReplicationSpecArgs) ToTransferJobReplicationSpecOutput() TransferJobReplicationSpecOutput { + return i.ToTransferJobReplicationSpecOutputWithContext(context.Background()) +} + +func (i TransferJobReplicationSpecArgs) ToTransferJobReplicationSpecOutputWithContext(ctx context.Context) TransferJobReplicationSpecOutput { + return pulumi.ToOutputWithContext(ctx, i).(TransferJobReplicationSpecOutput) +} + +func (i TransferJobReplicationSpecArgs) ToTransferJobReplicationSpecPtrOutput() TransferJobReplicationSpecPtrOutput { + return i.ToTransferJobReplicationSpecPtrOutputWithContext(context.Background()) +} + +func (i TransferJobReplicationSpecArgs) ToTransferJobReplicationSpecPtrOutputWithContext(ctx context.Context) TransferJobReplicationSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TransferJobReplicationSpecOutput).ToTransferJobReplicationSpecPtrOutputWithContext(ctx) +} + +// TransferJobReplicationSpecPtrInput is an input type that accepts TransferJobReplicationSpecArgs, TransferJobReplicationSpecPtr and TransferJobReplicationSpecPtrOutput values. +// You can construct a concrete instance of `TransferJobReplicationSpecPtrInput` via: +// +// TransferJobReplicationSpecArgs{...} +// +// or: +// +// nil +type TransferJobReplicationSpecPtrInput interface { + pulumi.Input + + ToTransferJobReplicationSpecPtrOutput() TransferJobReplicationSpecPtrOutput + ToTransferJobReplicationSpecPtrOutputWithContext(context.Context) TransferJobReplicationSpecPtrOutput +} + +type transferJobReplicationSpecPtrType TransferJobReplicationSpecArgs + +func TransferJobReplicationSpecPtr(v *TransferJobReplicationSpecArgs) TransferJobReplicationSpecPtrInput { + return (*transferJobReplicationSpecPtrType)(v) +} + +func (*transferJobReplicationSpecPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TransferJobReplicationSpec)(nil)).Elem() +} + +func (i *transferJobReplicationSpecPtrType) ToTransferJobReplicationSpecPtrOutput() TransferJobReplicationSpecPtrOutput { + return i.ToTransferJobReplicationSpecPtrOutputWithContext(context.Background()) +} + +func (i *transferJobReplicationSpecPtrType) ToTransferJobReplicationSpecPtrOutputWithContext(ctx context.Context) TransferJobReplicationSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TransferJobReplicationSpecPtrOutput) +} + +type TransferJobReplicationSpecOutput struct{ *pulumi.OutputState } + +func (TransferJobReplicationSpecOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TransferJobReplicationSpec)(nil)).Elem() +} + +func (o TransferJobReplicationSpecOutput) ToTransferJobReplicationSpecOutput() TransferJobReplicationSpecOutput { + return o +} + +func (o TransferJobReplicationSpecOutput) ToTransferJobReplicationSpecOutputWithContext(ctx context.Context) TransferJobReplicationSpecOutput { + return o +} + +func (o TransferJobReplicationSpecOutput) ToTransferJobReplicationSpecPtrOutput() TransferJobReplicationSpecPtrOutput { + return o.ToTransferJobReplicationSpecPtrOutputWithContext(context.Background()) +} + +func (o TransferJobReplicationSpecOutput) ToTransferJobReplicationSpecPtrOutputWithContext(ctx context.Context) TransferJobReplicationSpecPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TransferJobReplicationSpec) *TransferJobReplicationSpec { + return &v + }).(TransferJobReplicationSpecPtrOutput) +} + +// A Google Cloud Storage data sink. Structure documented below. +func (o TransferJobReplicationSpecOutput) GcsDataSink() TransferJobReplicationSpecGcsDataSinkPtrOutput { + return o.ApplyT(func(v TransferJobReplicationSpec) *TransferJobReplicationSpecGcsDataSink { return v.GcsDataSink }).(TransferJobReplicationSpecGcsDataSinkPtrOutput) +} + +// A Google Cloud Storage data source. Structure documented below. +func (o TransferJobReplicationSpecOutput) GcsDataSource() TransferJobReplicationSpecGcsDataSourcePtrOutput { + return o.ApplyT(func(v TransferJobReplicationSpec) *TransferJobReplicationSpecGcsDataSource { return v.GcsDataSource }).(TransferJobReplicationSpecGcsDataSourcePtrOutput) +} + +// Only objects that satisfy these object conditions are included in the set of data source and data sink objects. Object conditions based on objects' `lastModificationTime` do not exclude objects in a data sink. Structure documented below. +func (o TransferJobReplicationSpecOutput) ObjectConditions() TransferJobReplicationSpecObjectConditionsPtrOutput { + return o.ApplyT(func(v TransferJobReplicationSpec) *TransferJobReplicationSpecObjectConditions { + return v.ObjectConditions + }).(TransferJobReplicationSpecObjectConditionsPtrOutput) +} + +// Characteristics of how to treat files from datasource and sink during job. If the option `deleteObjectsUniqueInSink` is true, object conditions based on objects' `lastModificationTime` are ignored and do not exclude objects in a data source or a data sink. Structure documented below. +func (o TransferJobReplicationSpecOutput) TransferOptions() TransferJobReplicationSpecTransferOptionsPtrOutput { + return o.ApplyT(func(v TransferJobReplicationSpec) *TransferJobReplicationSpecTransferOptions { + return v.TransferOptions + }).(TransferJobReplicationSpecTransferOptionsPtrOutput) +} + +type TransferJobReplicationSpecPtrOutput struct{ *pulumi.OutputState } + +func (TransferJobReplicationSpecPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TransferJobReplicationSpec)(nil)).Elem() +} + +func (o TransferJobReplicationSpecPtrOutput) ToTransferJobReplicationSpecPtrOutput() TransferJobReplicationSpecPtrOutput { + return o +} + +func (o TransferJobReplicationSpecPtrOutput) ToTransferJobReplicationSpecPtrOutputWithContext(ctx context.Context) TransferJobReplicationSpecPtrOutput { + return o +} + +func (o TransferJobReplicationSpecPtrOutput) Elem() TransferJobReplicationSpecOutput { + return o.ApplyT(func(v *TransferJobReplicationSpec) TransferJobReplicationSpec { + if v != nil { + return *v + } + var ret TransferJobReplicationSpec + return ret + }).(TransferJobReplicationSpecOutput) +} + +// A Google Cloud Storage data sink. Structure documented below. +func (o TransferJobReplicationSpecPtrOutput) GcsDataSink() TransferJobReplicationSpecGcsDataSinkPtrOutput { + return o.ApplyT(func(v *TransferJobReplicationSpec) *TransferJobReplicationSpecGcsDataSink { + if v == nil { + return nil + } + return v.GcsDataSink + }).(TransferJobReplicationSpecGcsDataSinkPtrOutput) +} + +// A Google Cloud Storage data source. Structure documented below. +func (o TransferJobReplicationSpecPtrOutput) GcsDataSource() TransferJobReplicationSpecGcsDataSourcePtrOutput { + return o.ApplyT(func(v *TransferJobReplicationSpec) *TransferJobReplicationSpecGcsDataSource { + if v == nil { + return nil + } + return v.GcsDataSource + }).(TransferJobReplicationSpecGcsDataSourcePtrOutput) +} + +// Only objects that satisfy these object conditions are included in the set of data source and data sink objects. Object conditions based on objects' `lastModificationTime` do not exclude objects in a data sink. Structure documented below. +func (o TransferJobReplicationSpecPtrOutput) ObjectConditions() TransferJobReplicationSpecObjectConditionsPtrOutput { + return o.ApplyT(func(v *TransferJobReplicationSpec) *TransferJobReplicationSpecObjectConditions { + if v == nil { + return nil + } + return v.ObjectConditions + }).(TransferJobReplicationSpecObjectConditionsPtrOutput) +} + +// Characteristics of how to treat files from datasource and sink during job. If the option `deleteObjectsUniqueInSink` is true, object conditions based on objects' `lastModificationTime` are ignored and do not exclude objects in a data source or a data sink. Structure documented below. +func (o TransferJobReplicationSpecPtrOutput) TransferOptions() TransferJobReplicationSpecTransferOptionsPtrOutput { + return o.ApplyT(func(v *TransferJobReplicationSpec) *TransferJobReplicationSpecTransferOptions { + if v == nil { + return nil + } + return v.TransferOptions + }).(TransferJobReplicationSpecTransferOptionsPtrOutput) +} + +type TransferJobReplicationSpecGcsDataSink struct { + // Google Cloud Storage bucket name. + BucketName string `pulumi:"bucketName"` + // 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 '/'. + Path *string `pulumi:"path"` +} + +// TransferJobReplicationSpecGcsDataSinkInput is an input type that accepts TransferJobReplicationSpecGcsDataSinkArgs and TransferJobReplicationSpecGcsDataSinkOutput values. +// You can construct a concrete instance of `TransferJobReplicationSpecGcsDataSinkInput` via: +// +// TransferJobReplicationSpecGcsDataSinkArgs{...} +type TransferJobReplicationSpecGcsDataSinkInput interface { + pulumi.Input + + ToTransferJobReplicationSpecGcsDataSinkOutput() TransferJobReplicationSpecGcsDataSinkOutput + ToTransferJobReplicationSpecGcsDataSinkOutputWithContext(context.Context) TransferJobReplicationSpecGcsDataSinkOutput +} + +type TransferJobReplicationSpecGcsDataSinkArgs struct { + // Google Cloud Storage bucket name. + BucketName pulumi.StringInput `pulumi:"bucketName"` + // 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 '/'. + Path pulumi.StringPtrInput `pulumi:"path"` +} + +func (TransferJobReplicationSpecGcsDataSinkArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TransferJobReplicationSpecGcsDataSink)(nil)).Elem() +} + +func (i TransferJobReplicationSpecGcsDataSinkArgs) ToTransferJobReplicationSpecGcsDataSinkOutput() TransferJobReplicationSpecGcsDataSinkOutput { + return i.ToTransferJobReplicationSpecGcsDataSinkOutputWithContext(context.Background()) +} + +func (i TransferJobReplicationSpecGcsDataSinkArgs) ToTransferJobReplicationSpecGcsDataSinkOutputWithContext(ctx context.Context) TransferJobReplicationSpecGcsDataSinkOutput { + return pulumi.ToOutputWithContext(ctx, i).(TransferJobReplicationSpecGcsDataSinkOutput) +} + +func (i TransferJobReplicationSpecGcsDataSinkArgs) ToTransferJobReplicationSpecGcsDataSinkPtrOutput() TransferJobReplicationSpecGcsDataSinkPtrOutput { + return i.ToTransferJobReplicationSpecGcsDataSinkPtrOutputWithContext(context.Background()) +} + +func (i TransferJobReplicationSpecGcsDataSinkArgs) ToTransferJobReplicationSpecGcsDataSinkPtrOutputWithContext(ctx context.Context) TransferJobReplicationSpecGcsDataSinkPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TransferJobReplicationSpecGcsDataSinkOutput).ToTransferJobReplicationSpecGcsDataSinkPtrOutputWithContext(ctx) +} + +// TransferJobReplicationSpecGcsDataSinkPtrInput is an input type that accepts TransferJobReplicationSpecGcsDataSinkArgs, TransferJobReplicationSpecGcsDataSinkPtr and TransferJobReplicationSpecGcsDataSinkPtrOutput values. +// You can construct a concrete instance of `TransferJobReplicationSpecGcsDataSinkPtrInput` via: +// +// TransferJobReplicationSpecGcsDataSinkArgs{...} +// +// or: +// +// nil +type TransferJobReplicationSpecGcsDataSinkPtrInput interface { + pulumi.Input + + ToTransferJobReplicationSpecGcsDataSinkPtrOutput() TransferJobReplicationSpecGcsDataSinkPtrOutput + ToTransferJobReplicationSpecGcsDataSinkPtrOutputWithContext(context.Context) TransferJobReplicationSpecGcsDataSinkPtrOutput +} + +type transferJobReplicationSpecGcsDataSinkPtrType TransferJobReplicationSpecGcsDataSinkArgs + +func TransferJobReplicationSpecGcsDataSinkPtr(v *TransferJobReplicationSpecGcsDataSinkArgs) TransferJobReplicationSpecGcsDataSinkPtrInput { + return (*transferJobReplicationSpecGcsDataSinkPtrType)(v) +} + +func (*transferJobReplicationSpecGcsDataSinkPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TransferJobReplicationSpecGcsDataSink)(nil)).Elem() +} + +func (i *transferJobReplicationSpecGcsDataSinkPtrType) ToTransferJobReplicationSpecGcsDataSinkPtrOutput() TransferJobReplicationSpecGcsDataSinkPtrOutput { + return i.ToTransferJobReplicationSpecGcsDataSinkPtrOutputWithContext(context.Background()) +} + +func (i *transferJobReplicationSpecGcsDataSinkPtrType) ToTransferJobReplicationSpecGcsDataSinkPtrOutputWithContext(ctx context.Context) TransferJobReplicationSpecGcsDataSinkPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TransferJobReplicationSpecGcsDataSinkPtrOutput) +} + +type TransferJobReplicationSpecGcsDataSinkOutput struct{ *pulumi.OutputState } + +func (TransferJobReplicationSpecGcsDataSinkOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TransferJobReplicationSpecGcsDataSink)(nil)).Elem() +} + +func (o TransferJobReplicationSpecGcsDataSinkOutput) ToTransferJobReplicationSpecGcsDataSinkOutput() TransferJobReplicationSpecGcsDataSinkOutput { + return o +} + +func (o TransferJobReplicationSpecGcsDataSinkOutput) ToTransferJobReplicationSpecGcsDataSinkOutputWithContext(ctx context.Context) TransferJobReplicationSpecGcsDataSinkOutput { + return o +} + +func (o TransferJobReplicationSpecGcsDataSinkOutput) ToTransferJobReplicationSpecGcsDataSinkPtrOutput() TransferJobReplicationSpecGcsDataSinkPtrOutput { + return o.ToTransferJobReplicationSpecGcsDataSinkPtrOutputWithContext(context.Background()) +} + +func (o TransferJobReplicationSpecGcsDataSinkOutput) ToTransferJobReplicationSpecGcsDataSinkPtrOutputWithContext(ctx context.Context) TransferJobReplicationSpecGcsDataSinkPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TransferJobReplicationSpecGcsDataSink) *TransferJobReplicationSpecGcsDataSink { + return &v + }).(TransferJobReplicationSpecGcsDataSinkPtrOutput) +} + +// Google Cloud Storage bucket name. +func (o TransferJobReplicationSpecGcsDataSinkOutput) BucketName() pulumi.StringOutput { + return o.ApplyT(func(v TransferJobReplicationSpecGcsDataSink) string { return v.BucketName }).(pulumi.StringOutput) +} + +// 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 '/'. +func (o TransferJobReplicationSpecGcsDataSinkOutput) Path() pulumi.StringPtrOutput { + return o.ApplyT(func(v TransferJobReplicationSpecGcsDataSink) *string { return v.Path }).(pulumi.StringPtrOutput) +} + +type TransferJobReplicationSpecGcsDataSinkPtrOutput struct{ *pulumi.OutputState } + +func (TransferJobReplicationSpecGcsDataSinkPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TransferJobReplicationSpecGcsDataSink)(nil)).Elem() +} + +func (o TransferJobReplicationSpecGcsDataSinkPtrOutput) ToTransferJobReplicationSpecGcsDataSinkPtrOutput() TransferJobReplicationSpecGcsDataSinkPtrOutput { + return o +} + +func (o TransferJobReplicationSpecGcsDataSinkPtrOutput) ToTransferJobReplicationSpecGcsDataSinkPtrOutputWithContext(ctx context.Context) TransferJobReplicationSpecGcsDataSinkPtrOutput { + return o +} + +func (o TransferJobReplicationSpecGcsDataSinkPtrOutput) Elem() TransferJobReplicationSpecGcsDataSinkOutput { + return o.ApplyT(func(v *TransferJobReplicationSpecGcsDataSink) TransferJobReplicationSpecGcsDataSink { + if v != nil { + return *v + } + var ret TransferJobReplicationSpecGcsDataSink + return ret + }).(TransferJobReplicationSpecGcsDataSinkOutput) +} + +// Google Cloud Storage bucket name. +func (o TransferJobReplicationSpecGcsDataSinkPtrOutput) BucketName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TransferJobReplicationSpecGcsDataSink) *string { + if v == nil { + return nil + } + return &v.BucketName + }).(pulumi.StringPtrOutput) +} + +// 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 '/'. +func (o TransferJobReplicationSpecGcsDataSinkPtrOutput) Path() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TransferJobReplicationSpecGcsDataSink) *string { + if v == nil { + return nil + } + return v.Path + }).(pulumi.StringPtrOutput) +} + +type TransferJobReplicationSpecGcsDataSource struct { + // Google Cloud Storage bucket name. + BucketName string `pulumi:"bucketName"` + // 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 '/'. + Path *string `pulumi:"path"` +} + +// TransferJobReplicationSpecGcsDataSourceInput is an input type that accepts TransferJobReplicationSpecGcsDataSourceArgs and TransferJobReplicationSpecGcsDataSourceOutput values. +// You can construct a concrete instance of `TransferJobReplicationSpecGcsDataSourceInput` via: +// +// TransferJobReplicationSpecGcsDataSourceArgs{...} +type TransferJobReplicationSpecGcsDataSourceInput interface { + pulumi.Input + + ToTransferJobReplicationSpecGcsDataSourceOutput() TransferJobReplicationSpecGcsDataSourceOutput + ToTransferJobReplicationSpecGcsDataSourceOutputWithContext(context.Context) TransferJobReplicationSpecGcsDataSourceOutput +} + +type TransferJobReplicationSpecGcsDataSourceArgs struct { + // Google Cloud Storage bucket name. + BucketName pulumi.StringInput `pulumi:"bucketName"` + // 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 '/'. + Path pulumi.StringPtrInput `pulumi:"path"` +} + +func (TransferJobReplicationSpecGcsDataSourceArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TransferJobReplicationSpecGcsDataSource)(nil)).Elem() +} + +func (i TransferJobReplicationSpecGcsDataSourceArgs) ToTransferJobReplicationSpecGcsDataSourceOutput() TransferJobReplicationSpecGcsDataSourceOutput { + return i.ToTransferJobReplicationSpecGcsDataSourceOutputWithContext(context.Background()) +} + +func (i TransferJobReplicationSpecGcsDataSourceArgs) ToTransferJobReplicationSpecGcsDataSourceOutputWithContext(ctx context.Context) TransferJobReplicationSpecGcsDataSourceOutput { + return pulumi.ToOutputWithContext(ctx, i).(TransferJobReplicationSpecGcsDataSourceOutput) +} + +func (i TransferJobReplicationSpecGcsDataSourceArgs) ToTransferJobReplicationSpecGcsDataSourcePtrOutput() TransferJobReplicationSpecGcsDataSourcePtrOutput { + return i.ToTransferJobReplicationSpecGcsDataSourcePtrOutputWithContext(context.Background()) +} + +func (i TransferJobReplicationSpecGcsDataSourceArgs) ToTransferJobReplicationSpecGcsDataSourcePtrOutputWithContext(ctx context.Context) TransferJobReplicationSpecGcsDataSourcePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TransferJobReplicationSpecGcsDataSourceOutput).ToTransferJobReplicationSpecGcsDataSourcePtrOutputWithContext(ctx) +} + +// TransferJobReplicationSpecGcsDataSourcePtrInput is an input type that accepts TransferJobReplicationSpecGcsDataSourceArgs, TransferJobReplicationSpecGcsDataSourcePtr and TransferJobReplicationSpecGcsDataSourcePtrOutput values. +// You can construct a concrete instance of `TransferJobReplicationSpecGcsDataSourcePtrInput` via: +// +// TransferJobReplicationSpecGcsDataSourceArgs{...} +// +// or: +// +// nil +type TransferJobReplicationSpecGcsDataSourcePtrInput interface { + pulumi.Input + + ToTransferJobReplicationSpecGcsDataSourcePtrOutput() TransferJobReplicationSpecGcsDataSourcePtrOutput + ToTransferJobReplicationSpecGcsDataSourcePtrOutputWithContext(context.Context) TransferJobReplicationSpecGcsDataSourcePtrOutput +} + +type transferJobReplicationSpecGcsDataSourcePtrType TransferJobReplicationSpecGcsDataSourceArgs + +func TransferJobReplicationSpecGcsDataSourcePtr(v *TransferJobReplicationSpecGcsDataSourceArgs) TransferJobReplicationSpecGcsDataSourcePtrInput { + return (*transferJobReplicationSpecGcsDataSourcePtrType)(v) +} + +func (*transferJobReplicationSpecGcsDataSourcePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TransferJobReplicationSpecGcsDataSource)(nil)).Elem() +} + +func (i *transferJobReplicationSpecGcsDataSourcePtrType) ToTransferJobReplicationSpecGcsDataSourcePtrOutput() TransferJobReplicationSpecGcsDataSourcePtrOutput { + return i.ToTransferJobReplicationSpecGcsDataSourcePtrOutputWithContext(context.Background()) +} + +func (i *transferJobReplicationSpecGcsDataSourcePtrType) ToTransferJobReplicationSpecGcsDataSourcePtrOutputWithContext(ctx context.Context) TransferJobReplicationSpecGcsDataSourcePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TransferJobReplicationSpecGcsDataSourcePtrOutput) +} + +type TransferJobReplicationSpecGcsDataSourceOutput struct{ *pulumi.OutputState } + +func (TransferJobReplicationSpecGcsDataSourceOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TransferJobReplicationSpecGcsDataSource)(nil)).Elem() +} + +func (o TransferJobReplicationSpecGcsDataSourceOutput) ToTransferJobReplicationSpecGcsDataSourceOutput() TransferJobReplicationSpecGcsDataSourceOutput { + return o +} + +func (o TransferJobReplicationSpecGcsDataSourceOutput) ToTransferJobReplicationSpecGcsDataSourceOutputWithContext(ctx context.Context) TransferJobReplicationSpecGcsDataSourceOutput { + return o +} + +func (o TransferJobReplicationSpecGcsDataSourceOutput) ToTransferJobReplicationSpecGcsDataSourcePtrOutput() TransferJobReplicationSpecGcsDataSourcePtrOutput { + return o.ToTransferJobReplicationSpecGcsDataSourcePtrOutputWithContext(context.Background()) +} + +func (o TransferJobReplicationSpecGcsDataSourceOutput) ToTransferJobReplicationSpecGcsDataSourcePtrOutputWithContext(ctx context.Context) TransferJobReplicationSpecGcsDataSourcePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TransferJobReplicationSpecGcsDataSource) *TransferJobReplicationSpecGcsDataSource { + return &v + }).(TransferJobReplicationSpecGcsDataSourcePtrOutput) +} + +// Google Cloud Storage bucket name. +func (o TransferJobReplicationSpecGcsDataSourceOutput) BucketName() pulumi.StringOutput { + return o.ApplyT(func(v TransferJobReplicationSpecGcsDataSource) string { return v.BucketName }).(pulumi.StringOutput) +} + +// 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 '/'. +func (o TransferJobReplicationSpecGcsDataSourceOutput) Path() pulumi.StringPtrOutput { + return o.ApplyT(func(v TransferJobReplicationSpecGcsDataSource) *string { return v.Path }).(pulumi.StringPtrOutput) +} + +type TransferJobReplicationSpecGcsDataSourcePtrOutput struct{ *pulumi.OutputState } + +func (TransferJobReplicationSpecGcsDataSourcePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TransferJobReplicationSpecGcsDataSource)(nil)).Elem() +} + +func (o TransferJobReplicationSpecGcsDataSourcePtrOutput) ToTransferJobReplicationSpecGcsDataSourcePtrOutput() TransferJobReplicationSpecGcsDataSourcePtrOutput { + return o +} + +func (o TransferJobReplicationSpecGcsDataSourcePtrOutput) ToTransferJobReplicationSpecGcsDataSourcePtrOutputWithContext(ctx context.Context) TransferJobReplicationSpecGcsDataSourcePtrOutput { + return o +} + +func (o TransferJobReplicationSpecGcsDataSourcePtrOutput) Elem() TransferJobReplicationSpecGcsDataSourceOutput { + return o.ApplyT(func(v *TransferJobReplicationSpecGcsDataSource) TransferJobReplicationSpecGcsDataSource { + if v != nil { + return *v + } + var ret TransferJobReplicationSpecGcsDataSource + return ret + }).(TransferJobReplicationSpecGcsDataSourceOutput) +} + +// Google Cloud Storage bucket name. +func (o TransferJobReplicationSpecGcsDataSourcePtrOutput) BucketName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TransferJobReplicationSpecGcsDataSource) *string { + if v == nil { + return nil + } + return &v.BucketName + }).(pulumi.StringPtrOutput) +} + +// 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 '/'. +func (o TransferJobReplicationSpecGcsDataSourcePtrOutput) Path() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TransferJobReplicationSpecGcsDataSource) *string { + if v == nil { + return nil + } + return v.Path + }).(pulumi.StringPtrOutput) +} + +type TransferJobReplicationSpecObjectConditions struct { + // `excludePrefixes` must follow the requirements described for `includePrefixes`. See [Requirements](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#ObjectConditions). + ExcludePrefixes []string `pulumi:"excludePrefixes"` + // If `includePrefixes` is specified, objects that satisfy the object conditions must have names that start with one of the `includePrefixes` and that do not start with any of the `excludePrefixes`. If `includePrefixes` is not specified, all objects except those that have names starting with one of the `excludePrefixes` must satisfy the object conditions. See [Requirements](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#ObjectConditions). + IncludePrefixes []string `pulumi:"includePrefixes"` + // 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". + LastModifiedBefore *string `pulumi:"lastModifiedBefore"` + // 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". + LastModifiedSince *string `pulumi:"lastModifiedSince"` + // A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + MaxTimeElapsedSinceLastModification *string `pulumi:"maxTimeElapsedSinceLastModification"` + // A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + MinTimeElapsedSinceLastModification *string `pulumi:"minTimeElapsedSinceLastModification"` +} + +// TransferJobReplicationSpecObjectConditionsInput is an input type that accepts TransferJobReplicationSpecObjectConditionsArgs and TransferJobReplicationSpecObjectConditionsOutput values. +// You can construct a concrete instance of `TransferJobReplicationSpecObjectConditionsInput` via: +// +// TransferJobReplicationSpecObjectConditionsArgs{...} +type TransferJobReplicationSpecObjectConditionsInput interface { + pulumi.Input + + ToTransferJobReplicationSpecObjectConditionsOutput() TransferJobReplicationSpecObjectConditionsOutput + ToTransferJobReplicationSpecObjectConditionsOutputWithContext(context.Context) TransferJobReplicationSpecObjectConditionsOutput +} + +type TransferJobReplicationSpecObjectConditionsArgs struct { + // `excludePrefixes` must follow the requirements described for `includePrefixes`. See [Requirements](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#ObjectConditions). + ExcludePrefixes pulumi.StringArrayInput `pulumi:"excludePrefixes"` + // If `includePrefixes` is specified, objects that satisfy the object conditions must have names that start with one of the `includePrefixes` and that do not start with any of the `excludePrefixes`. If `includePrefixes` is not specified, all objects except those that have names starting with one of the `excludePrefixes` must satisfy the object conditions. See [Requirements](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#ObjectConditions). + IncludePrefixes pulumi.StringArrayInput `pulumi:"includePrefixes"` + // 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". + LastModifiedBefore pulumi.StringPtrInput `pulumi:"lastModifiedBefore"` + // 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". + LastModifiedSince pulumi.StringPtrInput `pulumi:"lastModifiedSince"` + // A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + MaxTimeElapsedSinceLastModification pulumi.StringPtrInput `pulumi:"maxTimeElapsedSinceLastModification"` + // A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + MinTimeElapsedSinceLastModification pulumi.StringPtrInput `pulumi:"minTimeElapsedSinceLastModification"` +} + +func (TransferJobReplicationSpecObjectConditionsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TransferJobReplicationSpecObjectConditions)(nil)).Elem() +} + +func (i TransferJobReplicationSpecObjectConditionsArgs) ToTransferJobReplicationSpecObjectConditionsOutput() TransferJobReplicationSpecObjectConditionsOutput { + return i.ToTransferJobReplicationSpecObjectConditionsOutputWithContext(context.Background()) +} + +func (i TransferJobReplicationSpecObjectConditionsArgs) ToTransferJobReplicationSpecObjectConditionsOutputWithContext(ctx context.Context) TransferJobReplicationSpecObjectConditionsOutput { + return pulumi.ToOutputWithContext(ctx, i).(TransferJobReplicationSpecObjectConditionsOutput) +} + +func (i TransferJobReplicationSpecObjectConditionsArgs) ToTransferJobReplicationSpecObjectConditionsPtrOutput() TransferJobReplicationSpecObjectConditionsPtrOutput { + return i.ToTransferJobReplicationSpecObjectConditionsPtrOutputWithContext(context.Background()) +} + +func (i TransferJobReplicationSpecObjectConditionsArgs) ToTransferJobReplicationSpecObjectConditionsPtrOutputWithContext(ctx context.Context) TransferJobReplicationSpecObjectConditionsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TransferJobReplicationSpecObjectConditionsOutput).ToTransferJobReplicationSpecObjectConditionsPtrOutputWithContext(ctx) +} + +// TransferJobReplicationSpecObjectConditionsPtrInput is an input type that accepts TransferJobReplicationSpecObjectConditionsArgs, TransferJobReplicationSpecObjectConditionsPtr and TransferJobReplicationSpecObjectConditionsPtrOutput values. +// You can construct a concrete instance of `TransferJobReplicationSpecObjectConditionsPtrInput` via: +// +// TransferJobReplicationSpecObjectConditionsArgs{...} +// +// or: +// +// nil +type TransferJobReplicationSpecObjectConditionsPtrInput interface { + pulumi.Input + + ToTransferJobReplicationSpecObjectConditionsPtrOutput() TransferJobReplicationSpecObjectConditionsPtrOutput + ToTransferJobReplicationSpecObjectConditionsPtrOutputWithContext(context.Context) TransferJobReplicationSpecObjectConditionsPtrOutput +} + +type transferJobReplicationSpecObjectConditionsPtrType TransferJobReplicationSpecObjectConditionsArgs + +func TransferJobReplicationSpecObjectConditionsPtr(v *TransferJobReplicationSpecObjectConditionsArgs) TransferJobReplicationSpecObjectConditionsPtrInput { + return (*transferJobReplicationSpecObjectConditionsPtrType)(v) +} + +func (*transferJobReplicationSpecObjectConditionsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TransferJobReplicationSpecObjectConditions)(nil)).Elem() +} + +func (i *transferJobReplicationSpecObjectConditionsPtrType) ToTransferJobReplicationSpecObjectConditionsPtrOutput() TransferJobReplicationSpecObjectConditionsPtrOutput { + return i.ToTransferJobReplicationSpecObjectConditionsPtrOutputWithContext(context.Background()) +} + +func (i *transferJobReplicationSpecObjectConditionsPtrType) ToTransferJobReplicationSpecObjectConditionsPtrOutputWithContext(ctx context.Context) TransferJobReplicationSpecObjectConditionsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TransferJobReplicationSpecObjectConditionsPtrOutput) +} + +type TransferJobReplicationSpecObjectConditionsOutput struct{ *pulumi.OutputState } + +func (TransferJobReplicationSpecObjectConditionsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TransferJobReplicationSpecObjectConditions)(nil)).Elem() +} + +func (o TransferJobReplicationSpecObjectConditionsOutput) ToTransferJobReplicationSpecObjectConditionsOutput() TransferJobReplicationSpecObjectConditionsOutput { + return o +} + +func (o TransferJobReplicationSpecObjectConditionsOutput) ToTransferJobReplicationSpecObjectConditionsOutputWithContext(ctx context.Context) TransferJobReplicationSpecObjectConditionsOutput { + return o +} + +func (o TransferJobReplicationSpecObjectConditionsOutput) ToTransferJobReplicationSpecObjectConditionsPtrOutput() TransferJobReplicationSpecObjectConditionsPtrOutput { + return o.ToTransferJobReplicationSpecObjectConditionsPtrOutputWithContext(context.Background()) +} + +func (o TransferJobReplicationSpecObjectConditionsOutput) ToTransferJobReplicationSpecObjectConditionsPtrOutputWithContext(ctx context.Context) TransferJobReplicationSpecObjectConditionsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TransferJobReplicationSpecObjectConditions) *TransferJobReplicationSpecObjectConditions { + return &v + }).(TransferJobReplicationSpecObjectConditionsPtrOutput) +} + +// `excludePrefixes` must follow the requirements described for `includePrefixes`. See [Requirements](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#ObjectConditions). +func (o TransferJobReplicationSpecObjectConditionsOutput) ExcludePrefixes() pulumi.StringArrayOutput { + return o.ApplyT(func(v TransferJobReplicationSpecObjectConditions) []string { return v.ExcludePrefixes }).(pulumi.StringArrayOutput) +} + +// If `includePrefixes` is specified, objects that satisfy the object conditions must have names that start with one of the `includePrefixes` and that do not start with any of the `excludePrefixes`. If `includePrefixes` is not specified, all objects except those that have names starting with one of the `excludePrefixes` must satisfy the object conditions. See [Requirements](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#ObjectConditions). +func (o TransferJobReplicationSpecObjectConditionsOutput) IncludePrefixes() pulumi.StringArrayOutput { + return o.ApplyT(func(v TransferJobReplicationSpecObjectConditions) []string { return v.IncludePrefixes }).(pulumi.StringArrayOutput) +} + +// 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". +func (o TransferJobReplicationSpecObjectConditionsOutput) LastModifiedBefore() pulumi.StringPtrOutput { + return o.ApplyT(func(v TransferJobReplicationSpecObjectConditions) *string { return v.LastModifiedBefore }).(pulumi.StringPtrOutput) +} + +// 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". +func (o TransferJobReplicationSpecObjectConditionsOutput) LastModifiedSince() pulumi.StringPtrOutput { + return o.ApplyT(func(v TransferJobReplicationSpecObjectConditions) *string { return v.LastModifiedSince }).(pulumi.StringPtrOutput) +} + +// A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". +func (o TransferJobReplicationSpecObjectConditionsOutput) MaxTimeElapsedSinceLastModification() pulumi.StringPtrOutput { + return o.ApplyT(func(v TransferJobReplicationSpecObjectConditions) *string { + return v.MaxTimeElapsedSinceLastModification + }).(pulumi.StringPtrOutput) +} + +// A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". +func (o TransferJobReplicationSpecObjectConditionsOutput) MinTimeElapsedSinceLastModification() pulumi.StringPtrOutput { + return o.ApplyT(func(v TransferJobReplicationSpecObjectConditions) *string { + return v.MinTimeElapsedSinceLastModification + }).(pulumi.StringPtrOutput) +} + +type TransferJobReplicationSpecObjectConditionsPtrOutput struct{ *pulumi.OutputState } + +func (TransferJobReplicationSpecObjectConditionsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TransferJobReplicationSpecObjectConditions)(nil)).Elem() +} + +func (o TransferJobReplicationSpecObjectConditionsPtrOutput) ToTransferJobReplicationSpecObjectConditionsPtrOutput() TransferJobReplicationSpecObjectConditionsPtrOutput { + return o +} + +func (o TransferJobReplicationSpecObjectConditionsPtrOutput) ToTransferJobReplicationSpecObjectConditionsPtrOutputWithContext(ctx context.Context) TransferJobReplicationSpecObjectConditionsPtrOutput { + return o +} + +func (o TransferJobReplicationSpecObjectConditionsPtrOutput) Elem() TransferJobReplicationSpecObjectConditionsOutput { + return o.ApplyT(func(v *TransferJobReplicationSpecObjectConditions) TransferJobReplicationSpecObjectConditions { + if v != nil { + return *v + } + var ret TransferJobReplicationSpecObjectConditions + return ret + }).(TransferJobReplicationSpecObjectConditionsOutput) +} + +// `excludePrefixes` must follow the requirements described for `includePrefixes`. See [Requirements](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#ObjectConditions). +func (o TransferJobReplicationSpecObjectConditionsPtrOutput) ExcludePrefixes() pulumi.StringArrayOutput { + return o.ApplyT(func(v *TransferJobReplicationSpecObjectConditions) []string { + if v == nil { + return nil + } + return v.ExcludePrefixes + }).(pulumi.StringArrayOutput) +} + +// If `includePrefixes` is specified, objects that satisfy the object conditions must have names that start with one of the `includePrefixes` and that do not start with any of the `excludePrefixes`. If `includePrefixes` is not specified, all objects except those that have names starting with one of the `excludePrefixes` must satisfy the object conditions. See [Requirements](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#ObjectConditions). +func (o TransferJobReplicationSpecObjectConditionsPtrOutput) IncludePrefixes() pulumi.StringArrayOutput { + return o.ApplyT(func(v *TransferJobReplicationSpecObjectConditions) []string { + if v == nil { + return nil + } + return v.IncludePrefixes + }).(pulumi.StringArrayOutput) +} + +// 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". +func (o TransferJobReplicationSpecObjectConditionsPtrOutput) LastModifiedBefore() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TransferJobReplicationSpecObjectConditions) *string { + if v == nil { + return nil + } + return v.LastModifiedBefore + }).(pulumi.StringPtrOutput) +} + +// 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". +func (o TransferJobReplicationSpecObjectConditionsPtrOutput) LastModifiedSince() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TransferJobReplicationSpecObjectConditions) *string { + if v == nil { + return nil + } + return v.LastModifiedSince + }).(pulumi.StringPtrOutput) +} + +// A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". +func (o TransferJobReplicationSpecObjectConditionsPtrOutput) MaxTimeElapsedSinceLastModification() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TransferJobReplicationSpecObjectConditions) *string { + if v == nil { + return nil + } + return v.MaxTimeElapsedSinceLastModification + }).(pulumi.StringPtrOutput) +} + +// A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". +func (o TransferJobReplicationSpecObjectConditionsPtrOutput) MinTimeElapsedSinceLastModification() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TransferJobReplicationSpecObjectConditions) *string { + if v == nil { + return nil + } + return v.MinTimeElapsedSinceLastModification + }).(pulumi.StringPtrOutput) +} + +type TransferJobReplicationSpecTransferOptions struct { + // Whether objects should be deleted from the source after they are transferred to the sink. Note that this option and `deleteObjectsUniqueInSink` are mutually exclusive. + DeleteObjectsFromSourceAfterTransfer *bool `pulumi:"deleteObjectsFromSourceAfterTransfer"` + // Whether objects that exist only in the sink should be deleted. Note that this option and + // `deleteObjectsFromSourceAfterTransfer` are mutually exclusive. + DeleteObjectsUniqueInSink *bool `pulumi:"deleteObjectsUniqueInSink"` + // Whether overwriting objects that already exist in the sink is allowed. + OverwriteObjectsAlreadyExistingInSink *bool `pulumi:"overwriteObjectsAlreadyExistingInSink"` + // When to overwrite objects that already exist in the sink. If not set, overwrite behavior is determined by `overwriteObjectsAlreadyExistingInSink`. Possible values: ALWAYS, DIFFERENT, NEVER. + OverwriteWhen *string `pulumi:"overwriteWhen"` +} + +// TransferJobReplicationSpecTransferOptionsInput is an input type that accepts TransferJobReplicationSpecTransferOptionsArgs and TransferJobReplicationSpecTransferOptionsOutput values. +// You can construct a concrete instance of `TransferJobReplicationSpecTransferOptionsInput` via: +// +// TransferJobReplicationSpecTransferOptionsArgs{...} +type TransferJobReplicationSpecTransferOptionsInput interface { + pulumi.Input + + ToTransferJobReplicationSpecTransferOptionsOutput() TransferJobReplicationSpecTransferOptionsOutput + ToTransferJobReplicationSpecTransferOptionsOutputWithContext(context.Context) TransferJobReplicationSpecTransferOptionsOutput +} + +type TransferJobReplicationSpecTransferOptionsArgs struct { + // Whether objects should be deleted from the source after they are transferred to the sink. Note that this option and `deleteObjectsUniqueInSink` are mutually exclusive. + DeleteObjectsFromSourceAfterTransfer pulumi.BoolPtrInput `pulumi:"deleteObjectsFromSourceAfterTransfer"` + // Whether objects that exist only in the sink should be deleted. Note that this option and + // `deleteObjectsFromSourceAfterTransfer` are mutually exclusive. + DeleteObjectsUniqueInSink pulumi.BoolPtrInput `pulumi:"deleteObjectsUniqueInSink"` + // Whether overwriting objects that already exist in the sink is allowed. + OverwriteObjectsAlreadyExistingInSink pulumi.BoolPtrInput `pulumi:"overwriteObjectsAlreadyExistingInSink"` + // When to overwrite objects that already exist in the sink. If not set, overwrite behavior is determined by `overwriteObjectsAlreadyExistingInSink`. Possible values: ALWAYS, DIFFERENT, NEVER. + OverwriteWhen pulumi.StringPtrInput `pulumi:"overwriteWhen"` +} + +func (TransferJobReplicationSpecTransferOptionsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TransferJobReplicationSpecTransferOptions)(nil)).Elem() +} + +func (i TransferJobReplicationSpecTransferOptionsArgs) ToTransferJobReplicationSpecTransferOptionsOutput() TransferJobReplicationSpecTransferOptionsOutput { + return i.ToTransferJobReplicationSpecTransferOptionsOutputWithContext(context.Background()) +} + +func (i TransferJobReplicationSpecTransferOptionsArgs) ToTransferJobReplicationSpecTransferOptionsOutputWithContext(ctx context.Context) TransferJobReplicationSpecTransferOptionsOutput { + return pulumi.ToOutputWithContext(ctx, i).(TransferJobReplicationSpecTransferOptionsOutput) +} + +func (i TransferJobReplicationSpecTransferOptionsArgs) ToTransferJobReplicationSpecTransferOptionsPtrOutput() TransferJobReplicationSpecTransferOptionsPtrOutput { + return i.ToTransferJobReplicationSpecTransferOptionsPtrOutputWithContext(context.Background()) +} + +func (i TransferJobReplicationSpecTransferOptionsArgs) ToTransferJobReplicationSpecTransferOptionsPtrOutputWithContext(ctx context.Context) TransferJobReplicationSpecTransferOptionsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TransferJobReplicationSpecTransferOptionsOutput).ToTransferJobReplicationSpecTransferOptionsPtrOutputWithContext(ctx) +} + +// TransferJobReplicationSpecTransferOptionsPtrInput is an input type that accepts TransferJobReplicationSpecTransferOptionsArgs, TransferJobReplicationSpecTransferOptionsPtr and TransferJobReplicationSpecTransferOptionsPtrOutput values. +// You can construct a concrete instance of `TransferJobReplicationSpecTransferOptionsPtrInput` via: +// +// TransferJobReplicationSpecTransferOptionsArgs{...} +// +// or: +// +// nil +type TransferJobReplicationSpecTransferOptionsPtrInput interface { + pulumi.Input + + ToTransferJobReplicationSpecTransferOptionsPtrOutput() TransferJobReplicationSpecTransferOptionsPtrOutput + ToTransferJobReplicationSpecTransferOptionsPtrOutputWithContext(context.Context) TransferJobReplicationSpecTransferOptionsPtrOutput +} + +type transferJobReplicationSpecTransferOptionsPtrType TransferJobReplicationSpecTransferOptionsArgs + +func TransferJobReplicationSpecTransferOptionsPtr(v *TransferJobReplicationSpecTransferOptionsArgs) TransferJobReplicationSpecTransferOptionsPtrInput { + return (*transferJobReplicationSpecTransferOptionsPtrType)(v) +} + +func (*transferJobReplicationSpecTransferOptionsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TransferJobReplicationSpecTransferOptions)(nil)).Elem() +} + +func (i *transferJobReplicationSpecTransferOptionsPtrType) ToTransferJobReplicationSpecTransferOptionsPtrOutput() TransferJobReplicationSpecTransferOptionsPtrOutput { + return i.ToTransferJobReplicationSpecTransferOptionsPtrOutputWithContext(context.Background()) +} + +func (i *transferJobReplicationSpecTransferOptionsPtrType) ToTransferJobReplicationSpecTransferOptionsPtrOutputWithContext(ctx context.Context) TransferJobReplicationSpecTransferOptionsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TransferJobReplicationSpecTransferOptionsPtrOutput) +} + +type TransferJobReplicationSpecTransferOptionsOutput struct{ *pulumi.OutputState } + +func (TransferJobReplicationSpecTransferOptionsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TransferJobReplicationSpecTransferOptions)(nil)).Elem() +} + +func (o TransferJobReplicationSpecTransferOptionsOutput) ToTransferJobReplicationSpecTransferOptionsOutput() TransferJobReplicationSpecTransferOptionsOutput { + return o +} + +func (o TransferJobReplicationSpecTransferOptionsOutput) ToTransferJobReplicationSpecTransferOptionsOutputWithContext(ctx context.Context) TransferJobReplicationSpecTransferOptionsOutput { + return o +} + +func (o TransferJobReplicationSpecTransferOptionsOutput) ToTransferJobReplicationSpecTransferOptionsPtrOutput() TransferJobReplicationSpecTransferOptionsPtrOutput { + return o.ToTransferJobReplicationSpecTransferOptionsPtrOutputWithContext(context.Background()) +} + +func (o TransferJobReplicationSpecTransferOptionsOutput) ToTransferJobReplicationSpecTransferOptionsPtrOutputWithContext(ctx context.Context) TransferJobReplicationSpecTransferOptionsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TransferJobReplicationSpecTransferOptions) *TransferJobReplicationSpecTransferOptions { + return &v + }).(TransferJobReplicationSpecTransferOptionsPtrOutput) +} + +// Whether objects should be deleted from the source after they are transferred to the sink. Note that this option and `deleteObjectsUniqueInSink` are mutually exclusive. +func (o TransferJobReplicationSpecTransferOptionsOutput) DeleteObjectsFromSourceAfterTransfer() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TransferJobReplicationSpecTransferOptions) *bool { return v.DeleteObjectsFromSourceAfterTransfer }).(pulumi.BoolPtrOutput) +} + +// Whether objects that exist only in the sink should be deleted. Note that this option and +// `deleteObjectsFromSourceAfterTransfer` are mutually exclusive. +func (o TransferJobReplicationSpecTransferOptionsOutput) DeleteObjectsUniqueInSink() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TransferJobReplicationSpecTransferOptions) *bool { return v.DeleteObjectsUniqueInSink }).(pulumi.BoolPtrOutput) +} + +// Whether overwriting objects that already exist in the sink is allowed. +func (o TransferJobReplicationSpecTransferOptionsOutput) OverwriteObjectsAlreadyExistingInSink() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TransferJobReplicationSpecTransferOptions) *bool { + return v.OverwriteObjectsAlreadyExistingInSink + }).(pulumi.BoolPtrOutput) +} + +// When to overwrite objects that already exist in the sink. If not set, overwrite behavior is determined by `overwriteObjectsAlreadyExistingInSink`. Possible values: ALWAYS, DIFFERENT, NEVER. +func (o TransferJobReplicationSpecTransferOptionsOutput) OverwriteWhen() pulumi.StringPtrOutput { + return o.ApplyT(func(v TransferJobReplicationSpecTransferOptions) *string { return v.OverwriteWhen }).(pulumi.StringPtrOutput) +} + +type TransferJobReplicationSpecTransferOptionsPtrOutput struct{ *pulumi.OutputState } + +func (TransferJobReplicationSpecTransferOptionsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TransferJobReplicationSpecTransferOptions)(nil)).Elem() +} + +func (o TransferJobReplicationSpecTransferOptionsPtrOutput) ToTransferJobReplicationSpecTransferOptionsPtrOutput() TransferJobReplicationSpecTransferOptionsPtrOutput { + return o +} + +func (o TransferJobReplicationSpecTransferOptionsPtrOutput) ToTransferJobReplicationSpecTransferOptionsPtrOutputWithContext(ctx context.Context) TransferJobReplicationSpecTransferOptionsPtrOutput { + return o +} + +func (o TransferJobReplicationSpecTransferOptionsPtrOutput) Elem() TransferJobReplicationSpecTransferOptionsOutput { + return o.ApplyT(func(v *TransferJobReplicationSpecTransferOptions) TransferJobReplicationSpecTransferOptions { + if v != nil { + return *v + } + var ret TransferJobReplicationSpecTransferOptions + return ret + }).(TransferJobReplicationSpecTransferOptionsOutput) +} + +// Whether objects should be deleted from the source after they are transferred to the sink. Note that this option and `deleteObjectsUniqueInSink` are mutually exclusive. +func (o TransferJobReplicationSpecTransferOptionsPtrOutput) DeleteObjectsFromSourceAfterTransfer() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *TransferJobReplicationSpecTransferOptions) *bool { + if v == nil { + return nil + } + return v.DeleteObjectsFromSourceAfterTransfer + }).(pulumi.BoolPtrOutput) +} + +// Whether objects that exist only in the sink should be deleted. Note that this option and +// `deleteObjectsFromSourceAfterTransfer` are mutually exclusive. +func (o TransferJobReplicationSpecTransferOptionsPtrOutput) DeleteObjectsUniqueInSink() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *TransferJobReplicationSpecTransferOptions) *bool { + if v == nil { + return nil + } + return v.DeleteObjectsUniqueInSink + }).(pulumi.BoolPtrOutput) +} + +// Whether overwriting objects that already exist in the sink is allowed. +func (o TransferJobReplicationSpecTransferOptionsPtrOutput) OverwriteObjectsAlreadyExistingInSink() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *TransferJobReplicationSpecTransferOptions) *bool { + if v == nil { + return nil + } + return v.OverwriteObjectsAlreadyExistingInSink + }).(pulumi.BoolPtrOutput) +} + +// When to overwrite objects that already exist in the sink. If not set, overwrite behavior is determined by `overwriteObjectsAlreadyExistingInSink`. Possible values: ALWAYS, DIFFERENT, NEVER. +func (o TransferJobReplicationSpecTransferOptionsPtrOutput) OverwriteWhen() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TransferJobReplicationSpecTransferOptions) *string { + if v == nil { + return nil + } + return v.OverwriteWhen + }).(pulumi.StringPtrOutput) +} + type TransferJobSchedule struct { // Interval between the start of each scheduled transfer. If unspecified, the default value is 24 hours. This value may not be less than 1 hour. A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". RepeatInterval *string `pulumi:"repeatInterval"` @@ -10155,6 +11101,16 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*TransferJobEventStreamPtrInput)(nil)).Elem(), TransferJobEventStreamArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*TransferJobNotificationConfigInput)(nil)).Elem(), TransferJobNotificationConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*TransferJobNotificationConfigPtrInput)(nil)).Elem(), TransferJobNotificationConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TransferJobReplicationSpecInput)(nil)).Elem(), TransferJobReplicationSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TransferJobReplicationSpecPtrInput)(nil)).Elem(), TransferJobReplicationSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TransferJobReplicationSpecGcsDataSinkInput)(nil)).Elem(), TransferJobReplicationSpecGcsDataSinkArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TransferJobReplicationSpecGcsDataSinkPtrInput)(nil)).Elem(), TransferJobReplicationSpecGcsDataSinkArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TransferJobReplicationSpecGcsDataSourceInput)(nil)).Elem(), TransferJobReplicationSpecGcsDataSourceArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TransferJobReplicationSpecGcsDataSourcePtrInput)(nil)).Elem(), TransferJobReplicationSpecGcsDataSourceArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TransferJobReplicationSpecObjectConditionsInput)(nil)).Elem(), TransferJobReplicationSpecObjectConditionsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TransferJobReplicationSpecObjectConditionsPtrInput)(nil)).Elem(), TransferJobReplicationSpecObjectConditionsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TransferJobReplicationSpecTransferOptionsInput)(nil)).Elem(), TransferJobReplicationSpecTransferOptionsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TransferJobReplicationSpecTransferOptionsPtrInput)(nil)).Elem(), TransferJobReplicationSpecTransferOptionsArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*TransferJobScheduleInput)(nil)).Elem(), TransferJobScheduleArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*TransferJobSchedulePtrInput)(nil)).Elem(), TransferJobScheduleArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*TransferJobScheduleScheduleEndDateInput)(nil)).Elem(), TransferJobScheduleScheduleEndDateArgs{}) @@ -10287,6 +11243,16 @@ func init() { pulumi.RegisterOutputType(TransferJobEventStreamPtrOutput{}) pulumi.RegisterOutputType(TransferJobNotificationConfigOutput{}) pulumi.RegisterOutputType(TransferJobNotificationConfigPtrOutput{}) + pulumi.RegisterOutputType(TransferJobReplicationSpecOutput{}) + pulumi.RegisterOutputType(TransferJobReplicationSpecPtrOutput{}) + pulumi.RegisterOutputType(TransferJobReplicationSpecGcsDataSinkOutput{}) + pulumi.RegisterOutputType(TransferJobReplicationSpecGcsDataSinkPtrOutput{}) + pulumi.RegisterOutputType(TransferJobReplicationSpecGcsDataSourceOutput{}) + pulumi.RegisterOutputType(TransferJobReplicationSpecGcsDataSourcePtrOutput{}) + pulumi.RegisterOutputType(TransferJobReplicationSpecObjectConditionsOutput{}) + pulumi.RegisterOutputType(TransferJobReplicationSpecObjectConditionsPtrOutput{}) + pulumi.RegisterOutputType(TransferJobReplicationSpecTransferOptionsOutput{}) + pulumi.RegisterOutputType(TransferJobReplicationSpecTransferOptionsPtrOutput{}) pulumi.RegisterOutputType(TransferJobScheduleOutput{}) pulumi.RegisterOutputType(TransferJobSchedulePtrOutput{}) pulumi.RegisterOutputType(TransferJobScheduleScheduleEndDateOutput{}) diff --git a/sdk/go/gcp/storage/transferJob.go b/sdk/go/gcp/storage/transferJob.go index 3f6770ac94..1222151a16 100644 --- a/sdk/go/gcp/storage/transferJob.go +++ b/sdk/go/gcp/storage/transferJob.go @@ -175,14 +175,16 @@ type TransferJob struct { // The project in which the resource belongs. If it // is not provided, the provider project is used. Project pulumi.StringOutput `pulumi:"project"` + // Replication specification. Structure documented below. User should not configure `schedule`, `eventStream` with this argument. One of `transferSpec`, or `replicationSpec` must be specified. + // + // *** + ReplicationSpec TransferJobReplicationSpecPtrOutput `pulumi:"replicationSpec"` // Schedule specification defining when the Transfer Job should be scheduled to start, end and what time to run. Structure documented below. Either `schedule` or `eventStream` must be set. Schedule TransferJobSchedulePtrOutput `pulumi:"schedule"` // Status of the job. Default: `ENABLED`. **NOTE: The effect of the new job status takes place during a subsequent job run. For example, if you change the job status from ENABLED to DISABLED, and an operation spawned by the transfer is running, the status change would not affect the current operation.** Status pulumi.StringPtrOutput `pulumi:"status"` - // Transfer specification. Structure documented below. - // - // *** - TransferSpec TransferJobTransferSpecOutput `pulumi:"transferSpec"` + // Transfer specification. Structure documented below. One of `transferSpec`, or `replicationSpec` can be specified. + TransferSpec TransferJobTransferSpecPtrOutput `pulumi:"transferSpec"` } // NewTransferJob registers a new resource with the given unique name, arguments, and options. @@ -195,9 +197,6 @@ func NewTransferJob(ctx *pulumi.Context, if args.Description == nil { return nil, errors.New("invalid value for required argument 'Description'") } - if args.TransferSpec == nil { - return nil, errors.New("invalid value for required argument 'TransferSpec'") - } opts = internal.PkgResourceDefaultOpts(opts) var resource TransferJob err := ctx.RegisterResource("gcp:storage/transferJob:TransferJob", name, args, &resource, opts...) @@ -238,13 +237,15 @@ type transferJobState struct { // The project in which the resource belongs. If it // is not provided, the provider project is used. Project *string `pulumi:"project"` + // Replication specification. Structure documented below. User should not configure `schedule`, `eventStream` with this argument. One of `transferSpec`, or `replicationSpec` must be specified. + // + // *** + ReplicationSpec *TransferJobReplicationSpec `pulumi:"replicationSpec"` // Schedule specification defining when the Transfer Job should be scheduled to start, end and what time to run. Structure documented below. Either `schedule` or `eventStream` must be set. Schedule *TransferJobSchedule `pulumi:"schedule"` // Status of the job. Default: `ENABLED`. **NOTE: The effect of the new job status takes place during a subsequent job run. For example, if you change the job status from ENABLED to DISABLED, and an operation spawned by the transfer is running, the status change would not affect the current operation.** Status *string `pulumi:"status"` - // Transfer specification. Structure documented below. - // - // *** + // Transfer specification. Structure documented below. One of `transferSpec`, or `replicationSpec` can be specified. TransferSpec *TransferJobTransferSpec `pulumi:"transferSpec"` } @@ -266,13 +267,15 @@ type TransferJobState struct { // The project in which the resource belongs. If it // is not provided, the provider project is used. Project pulumi.StringPtrInput + // Replication specification. Structure documented below. User should not configure `schedule`, `eventStream` with this argument. One of `transferSpec`, or `replicationSpec` must be specified. + // + // *** + ReplicationSpec TransferJobReplicationSpecPtrInput // Schedule specification defining when the Transfer Job should be scheduled to start, end and what time to run. Structure documented below. Either `schedule` or `eventStream` must be set. Schedule TransferJobSchedulePtrInput // Status of the job. Default: `ENABLED`. **NOTE: The effect of the new job status takes place during a subsequent job run. For example, if you change the job status from ENABLED to DISABLED, and an operation spawned by the transfer is running, the status change would not affect the current operation.** Status pulumi.StringPtrInput - // Transfer specification. Structure documented below. - // - // *** + // Transfer specification. Structure documented below. One of `transferSpec`, or `replicationSpec` can be specified. TransferSpec TransferJobTransferSpecPtrInput } @@ -292,14 +295,16 @@ type transferJobArgs struct { // The project in which the resource belongs. If it // is not provided, the provider project is used. Project *string `pulumi:"project"` + // Replication specification. Structure documented below. User should not configure `schedule`, `eventStream` with this argument. One of `transferSpec`, or `replicationSpec` must be specified. + // + // *** + ReplicationSpec *TransferJobReplicationSpec `pulumi:"replicationSpec"` // Schedule specification defining when the Transfer Job should be scheduled to start, end and what time to run. Structure documented below. Either `schedule` or `eventStream` must be set. Schedule *TransferJobSchedule `pulumi:"schedule"` // Status of the job. Default: `ENABLED`. **NOTE: The effect of the new job status takes place during a subsequent job run. For example, if you change the job status from ENABLED to DISABLED, and an operation spawned by the transfer is running, the status change would not affect the current operation.** Status *string `pulumi:"status"` - // Transfer specification. Structure documented below. - // - // *** - TransferSpec TransferJobTransferSpec `pulumi:"transferSpec"` + // Transfer specification. Structure documented below. One of `transferSpec`, or `replicationSpec` can be specified. + TransferSpec *TransferJobTransferSpec `pulumi:"transferSpec"` } // The set of arguments for constructing a TransferJob resource. @@ -315,14 +320,16 @@ type TransferJobArgs struct { // The project in which the resource belongs. If it // is not provided, the provider project is used. Project pulumi.StringPtrInput + // Replication specification. Structure documented below. User should not configure `schedule`, `eventStream` with this argument. One of `transferSpec`, or `replicationSpec` must be specified. + // + // *** + ReplicationSpec TransferJobReplicationSpecPtrInput // Schedule specification defining when the Transfer Job should be scheduled to start, end and what time to run. Structure documented below. Either `schedule` or `eventStream` must be set. Schedule TransferJobSchedulePtrInput // Status of the job. Default: `ENABLED`. **NOTE: The effect of the new job status takes place during a subsequent job run. For example, if you change the job status from ENABLED to DISABLED, and an operation spawned by the transfer is running, the status change would not affect the current operation.** Status pulumi.StringPtrInput - // Transfer specification. Structure documented below. - // - // *** - TransferSpec TransferJobTransferSpecInput + // Transfer specification. Structure documented below. One of `transferSpec`, or `replicationSpec` can be specified. + TransferSpec TransferJobTransferSpecPtrInput } func (TransferJobArgs) ElementType() reflect.Type { @@ -453,6 +460,13 @@ func (o TransferJobOutput) Project() pulumi.StringOutput { return o.ApplyT(func(v *TransferJob) pulumi.StringOutput { return v.Project }).(pulumi.StringOutput) } +// Replication specification. Structure documented below. User should not configure `schedule`, `eventStream` with this argument. One of `transferSpec`, or `replicationSpec` must be specified. +// +// *** +func (o TransferJobOutput) ReplicationSpec() TransferJobReplicationSpecPtrOutput { + return o.ApplyT(func(v *TransferJob) TransferJobReplicationSpecPtrOutput { return v.ReplicationSpec }).(TransferJobReplicationSpecPtrOutput) +} + // Schedule specification defining when the Transfer Job should be scheduled to start, end and what time to run. Structure documented below. Either `schedule` or `eventStream` must be set. func (o TransferJobOutput) Schedule() TransferJobSchedulePtrOutput { return o.ApplyT(func(v *TransferJob) TransferJobSchedulePtrOutput { return v.Schedule }).(TransferJobSchedulePtrOutput) @@ -463,11 +477,9 @@ func (o TransferJobOutput) Status() pulumi.StringPtrOutput { return o.ApplyT(func(v *TransferJob) pulumi.StringPtrOutput { return v.Status }).(pulumi.StringPtrOutput) } -// Transfer specification. Structure documented below. -// -// *** -func (o TransferJobOutput) TransferSpec() TransferJobTransferSpecOutput { - return o.ApplyT(func(v *TransferJob) TransferJobTransferSpecOutput { return v.TransferSpec }).(TransferJobTransferSpecOutput) +// Transfer specification. Structure documented below. One of `transferSpec`, or `replicationSpec` can be specified. +func (o TransferJobOutput) TransferSpec() TransferJobTransferSpecPtrOutput { + return o.ApplyT(func(v *TransferJob) TransferJobTransferSpecPtrOutput { return v.TransferSpec }).(TransferJobTransferSpecPtrOutput) } type TransferJobArrayOutput struct{ *pulumi.OutputState } diff --git a/sdk/go/gcp/vertex/aiEndpoint.go b/sdk/go/gcp/vertex/aiEndpoint.go index 96f0b4227a..50ffef59ab 100644 --- a/sdk/go/gcp/vertex/aiEndpoint.go +++ b/sdk/go/gcp/vertex/aiEndpoint.go @@ -155,7 +155,7 @@ import ( // return err // } // _, err = vertex.NewAiEndpoint(ctx, "endpoint", &vertex.AiEndpointArgs{ -// Name: pulumi.String("endpoint-name_8270"), +// Name: pulumi.String("endpoint-name_89313"), // DisplayName: pulumi.String("sample-endpoint"), // Description: pulumi.String("A sample vertex endpoint"), // Location: pulumi.String("us-central1"), @@ -195,7 +195,7 @@ import ( // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // _, err := vertex.NewAiEndpoint(ctx, "endpoint", &vertex.AiEndpointArgs{ -// Name: pulumi.String("endpoint-name_41150"), +// Name: pulumi.String("endpoint-name_60646"), // DisplayName: pulumi.String("sample-endpoint"), // Description: pulumi.String("A sample vertex endpoint"), // Location: pulumi.String("us-central1"), diff --git a/sdk/go/gcp/vertex/aiFeatureOnlineStoreFeatureview.go b/sdk/go/gcp/vertex/aiFeatureOnlineStoreFeatureview.go index fe4d735e0c..bdaaa728a9 100644 --- a/sdk/go/gcp/vertex/aiFeatureOnlineStoreFeatureview.go +++ b/sdk/go/gcp/vertex/aiFeatureOnlineStoreFeatureview.go @@ -286,8 +286,8 @@ import ( // return err // } // project, err := organizations.NewProject(ctx, "project", &organizations.ProjectArgs{ -// ProjectId: pulumi.String("tf-test_89313"), -// Name: pulumi.String("tf-test_60646"), +// ProjectId: pulumi.String("tf-test_9394"), +// Name: pulumi.String("tf-test_11380"), // OrgId: pulumi.String("123456789"), // BillingAccount: pulumi.String("000000-0000000-0000000-000000"), // DeletionPolicy: pulumi.String("DELETE"), diff --git a/sdk/go/gcp/vertex/pulumiTypes.go b/sdk/go/gcp/vertex/pulumiTypes.go index 32e8301865..30c3f97d0b 100644 --- a/sdk/go/gcp/vertex/pulumiTypes.go +++ b/sdk/go/gcp/vertex/pulumiTypes.go @@ -8212,7 +8212,7 @@ type AiIndexMetadata struct { // Index field can be also updated as part of the same call. // The expected structure and format of the files this URI points to is // described at https://cloud.google.com/vertex-ai/docs/matching-engine/using-matching-engine#input-data-format - ContentsDeltaUri string `pulumi:"contentsDeltaUri"` + ContentsDeltaUri *string `pulumi:"contentsDeltaUri"` // If this field is set together with contentsDeltaUri when calling IndexService.UpdateIndex, // then existing content of the Index will be replaced by the data from the contentsDeltaUri. IsCompleteOverwrite *bool `pulumi:"isCompleteOverwrite"` @@ -8239,7 +8239,7 @@ type AiIndexMetadataArgs struct { // Index field can be also updated as part of the same call. // The expected structure and format of the files this URI points to is // described at https://cloud.google.com/vertex-ai/docs/matching-engine/using-matching-engine#input-data-format - ContentsDeltaUri pulumi.StringInput `pulumi:"contentsDeltaUri"` + ContentsDeltaUri pulumi.StringPtrInput `pulumi:"contentsDeltaUri"` // If this field is set together with contentsDeltaUri when calling IndexService.UpdateIndex, // then existing content of the Index will be replaced by the data from the contentsDeltaUri. IsCompleteOverwrite pulumi.BoolPtrInput `pulumi:"isCompleteOverwrite"` @@ -8334,8 +8334,8 @@ func (o AiIndexMetadataOutput) Config() AiIndexMetadataConfigPtrOutput { // Index field can be also updated as part of the same call. // The expected structure and format of the files this URI points to is // described at https://cloud.google.com/vertex-ai/docs/matching-engine/using-matching-engine#input-data-format -func (o AiIndexMetadataOutput) ContentsDeltaUri() pulumi.StringOutput { - return o.ApplyT(func(v AiIndexMetadata) string { return v.ContentsDeltaUri }).(pulumi.StringOutput) +func (o AiIndexMetadataOutput) ContentsDeltaUri() pulumi.StringPtrOutput { + return o.ApplyT(func(v AiIndexMetadata) *string { return v.ContentsDeltaUri }).(pulumi.StringPtrOutput) } // If this field is set together with contentsDeltaUri when calling IndexService.UpdateIndex, @@ -8390,7 +8390,7 @@ func (o AiIndexMetadataPtrOutput) ContentsDeltaUri() pulumi.StringPtrOutput { if v == nil { return nil } - return &v.ContentsDeltaUri + return v.ContentsDeltaUri }).(pulumi.StringPtrOutput) } diff --git a/sdk/go/gcp/workstations/workstation.go b/sdk/go/gcp/workstations/workstation.go index 468d52c170..ff39d27939 100644 --- a/sdk/go/gcp/workstations/workstation.go +++ b/sdk/go/gcp/workstations/workstation.go @@ -158,6 +158,9 @@ type Workstation struct { // The combination of labels configured directly on the resource // and default labels configured on the provider. PulumiLabels pulumi.StringMapOutput `pulumi:"pulumiLabels"` + // Full resource name of the source workstation from which the workstation's persistent + // directories will be cloned from during creation. + SourceWorkstation pulumi.StringPtrOutput `pulumi:"sourceWorkstation"` // Current state of the workstation. State pulumi.StringOutput `pulumi:"state"` // A system-assigned unique identified for this resource. @@ -250,6 +253,9 @@ type workstationState struct { // The combination of labels configured directly on the resource // and default labels configured on the provider. PulumiLabels map[string]string `pulumi:"pulumiLabels"` + // Full resource name of the source workstation from which the workstation's persistent + // directories will be cloned from during creation. + SourceWorkstation *string `pulumi:"sourceWorkstation"` // Current state of the workstation. State *string `pulumi:"state"` // A system-assigned unique identified for this resource. @@ -296,6 +302,9 @@ type WorkstationState struct { // The combination of labels configured directly on the resource // and default labels configured on the provider. PulumiLabels pulumi.StringMapInput + // Full resource name of the source workstation from which the workstation's persistent + // directories will be cloned from during creation. + SourceWorkstation pulumi.StringPtrInput // Current state of the workstation. State pulumi.StringPtrInput // A system-assigned unique identified for this resource. @@ -332,6 +341,9 @@ type workstationArgs struct { // The ID of the project in which the resource belongs. // If it is not provided, the provider project is used. Project *string `pulumi:"project"` + // Full resource name of the source workstation from which the workstation's persistent + // directories will be cloned from during creation. + SourceWorkstation *string `pulumi:"sourceWorkstation"` // The ID of the parent workstation cluster. WorkstationClusterId string `pulumi:"workstationClusterId"` // The ID of the parent workstation cluster config. @@ -361,6 +373,9 @@ type WorkstationArgs struct { // The ID of the project in which the resource belongs. // If it is not provided, the provider project is used. Project pulumi.StringPtrInput + // Full resource name of the source workstation from which the workstation's persistent + // directories will be cloned from during creation. + SourceWorkstation pulumi.StringPtrInput // The ID of the parent workstation cluster. WorkstationClusterId pulumi.StringInput // The ID of the parent workstation cluster config. @@ -525,6 +540,12 @@ func (o WorkstationOutput) PulumiLabels() pulumi.StringMapOutput { return o.ApplyT(func(v *Workstation) pulumi.StringMapOutput { return v.PulumiLabels }).(pulumi.StringMapOutput) } +// Full resource name of the source workstation from which the workstation's persistent +// directories will be cloned from during creation. +func (o WorkstationOutput) SourceWorkstation() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Workstation) pulumi.StringPtrOutput { return v.SourceWorkstation }).(pulumi.StringPtrOutput) +} + // Current state of the workstation. func (o WorkstationOutput) State() pulumi.StringOutput { return o.ApplyT(func(v *Workstation) pulumi.StringOutput { return v.State }).(pulumi.StringOutput) diff --git a/sdk/java/build.gradle b/sdk/java/build.gradle index 823c1c5fc0..7be66d977d 100644 --- a/sdk/java/build.gradle +++ b/sdk/java/build.gradle @@ -44,7 +44,7 @@ repositories { dependencies { implementation("com.google.code.findbugs:jsr305:3.0.2") implementation("com.google.code.gson:gson:2.8.9") - implementation("com.pulumi:pulumi:0.20.0") + implementation("com.pulumi:pulumi:0.21.0") } task sourcesJar(type: Jar) { @@ -65,11 +65,13 @@ def genPulumiResources = tasks.register('genPulumiResources') { def outDir = file("$resourcesDir/$subDir") outDir.mkdirs() new File(outDir, "version.txt").text = resolvedVersion - def info = new Object() - info.metaClass.resource = true - info.metaClass.name = "gcp" - info.metaClass.version = resolvedVersion - def infoJson = new groovy.json.JsonBuilder(info).toPrettyString() + def builder = new groovy.json.JsonBuilder() + builder { + resource true + name "gcp" + version resolvedVersion + } + def infoJson = builder.toPrettyString() new File(outDir, "plugin.json").text = infoJson } } @@ -150,4 +152,4 @@ if (signingKey) { useInMemoryPgpKeys(signingKey, signingPassword) sign publishing.publications.mainPublication } -} +} \ No newline at end of file diff --git a/sdk/java/src/main/java/com/pulumi/gcp/Config.java b/sdk/java/src/main/java/com/pulumi/gcp/Config.java index 8008c7fd3d..bd6ea1523f 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/Config.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/Config.java @@ -102,6 +102,9 @@ public Optional blockchainNodeEngineCustomEndpoint() { public Optional certificateManagerCustomEndpoint() { return Codegen.stringProp("certificateManagerCustomEndpoint").config(config).get(); } + public Optional chronicleCustomEndpoint() { + return Codegen.stringProp("chronicleCustomEndpoint").config(config).get(); + } public Optional cloudAssetCustomEndpoint() { return Codegen.stringProp("cloudAssetCustomEndpoint").config(config).get(); } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/Provider.java b/sdk/java/src/main/java/com/pulumi/gcp/Provider.java index 5d14612013..a43661833f 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/Provider.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/Provider.java @@ -185,6 +185,12 @@ public Output> blockchainNodeEngineCustomEndpoint() { public Output> certificateManagerCustomEndpoint() { return Codegen.optional(this.certificateManagerCustomEndpoint); } + @Export(name="chronicleCustomEndpoint", refs={String.class}, tree="[0]") + private Output chronicleCustomEndpoint; + + public Output> chronicleCustomEndpoint() { + return Codegen.optional(this.chronicleCustomEndpoint); + } @Export(name="cloudAssetCustomEndpoint", refs={String.class}, tree="[0]") private Output cloudAssetCustomEndpoint; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/ProviderArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/ProviderArgs.java index cbe0a78729..e61a94b9ab 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/ProviderArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/ProviderArgs.java @@ -223,6 +223,13 @@ public Optional> certificateManagerCustomEndpoint() { return Optional.ofNullable(this.certificateManagerCustomEndpoint); } + @Import(name="chronicleCustomEndpoint") + private @Nullable Output chronicleCustomEndpoint; + + public Optional> chronicleCustomEndpoint() { + return Optional.ofNullable(this.chronicleCustomEndpoint); + } + @Import(name="cloudAssetCustomEndpoint") private @Nullable Output cloudAssetCustomEndpoint; @@ -1312,6 +1319,7 @@ private ProviderArgs(ProviderArgs $) { this.binaryAuthorizationCustomEndpoint = $.binaryAuthorizationCustomEndpoint; this.blockchainNodeEngineCustomEndpoint = $.blockchainNodeEngineCustomEndpoint; this.certificateManagerCustomEndpoint = $.certificateManagerCustomEndpoint; + this.chronicleCustomEndpoint = $.chronicleCustomEndpoint; this.cloudAssetCustomEndpoint = $.cloudAssetCustomEndpoint; this.cloudBillingCustomEndpoint = $.cloudBillingCustomEndpoint; this.cloudBuildCustomEndpoint = $.cloudBuildCustomEndpoint; @@ -1744,6 +1752,15 @@ public Builder certificateManagerCustomEndpoint(String certificateManagerCustomE return certificateManagerCustomEndpoint(Output.of(certificateManagerCustomEndpoint)); } + public Builder chronicleCustomEndpoint(@Nullable Output chronicleCustomEndpoint) { + $.chronicleCustomEndpoint = chronicleCustomEndpoint; + return this; + } + + public Builder chronicleCustomEndpoint(String chronicleCustomEndpoint) { + return chronicleCustomEndpoint(Output.of(chronicleCustomEndpoint)); + } + public Builder cloudAssetCustomEndpoint(@Nullable Output cloudAssetCustomEndpoint) { $.cloudAssetCustomEndpoint = cloudAssetCustomEndpoint; return this; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/accesscontextmanager/inputs/AccessLevelBasicConditionVpcNetworkSourceVpcSubnetworkArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/accesscontextmanager/inputs/AccessLevelBasicConditionVpcNetworkSourceVpcSubnetworkArgs.java index 317ab9d9b8..18f30fd881 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/accesscontextmanager/inputs/AccessLevelBasicConditionVpcNetworkSourceVpcSubnetworkArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/accesscontextmanager/inputs/AccessLevelBasicConditionVpcNetworkSourceVpcSubnetworkArgs.java @@ -33,14 +33,14 @@ public Output network() { } /** - * CIDR block IP subnetwork specification. Must be IPv4. + * A list of CIDR block IP subnetwork specification. Must be IPv4. * */ @Import(name="vpcIpSubnetworks") private @Nullable Output> vpcIpSubnetworks; /** - * @return CIDR block IP subnetwork specification. Must be IPv4. + * @return A list of CIDR block IP subnetwork specification. Must be IPv4. * */ public Optional>> vpcIpSubnetworks() { @@ -94,7 +94,7 @@ public Builder network(String network) { } /** - * @param vpcIpSubnetworks CIDR block IP subnetwork specification. Must be IPv4. + * @param vpcIpSubnetworks A list of CIDR block IP subnetwork specification. Must be IPv4. * * @return builder * @@ -105,7 +105,7 @@ public Builder vpcIpSubnetworks(@Nullable Output> vpcIpSubnetworks) } /** - * @param vpcIpSubnetworks CIDR block IP subnetwork specification. Must be IPv4. + * @param vpcIpSubnetworks A list of CIDR block IP subnetwork specification. Must be IPv4. * * @return builder * @@ -115,7 +115,7 @@ public Builder vpcIpSubnetworks(List vpcIpSubnetworks) { } /** - * @param vpcIpSubnetworks CIDR block IP subnetwork specification. Must be IPv4. + * @param vpcIpSubnetworks A list of CIDR block IP subnetwork specification. Must be IPv4. * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/accesscontextmanager/outputs/AccessLevelBasicConditionVpcNetworkSourceVpcSubnetwork.java b/sdk/java/src/main/java/com/pulumi/gcp/accesscontextmanager/outputs/AccessLevelBasicConditionVpcNetworkSourceVpcSubnetwork.java index 43cabd0502..6cd2dfaa19 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/accesscontextmanager/outputs/AccessLevelBasicConditionVpcNetworkSourceVpcSubnetwork.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/accesscontextmanager/outputs/AccessLevelBasicConditionVpcNetworkSourceVpcSubnetwork.java @@ -18,7 +18,7 @@ public final class AccessLevelBasicConditionVpcNetworkSourceVpcSubnetwork { */ private String network; /** - * @return CIDR block IP subnetwork specification. Must be IPv4. + * @return A list of CIDR block IP subnetwork specification. Must be IPv4. * */ private @Nullable List vpcIpSubnetworks; @@ -32,7 +32,7 @@ public String network() { return this.network; } /** - * @return CIDR block IP subnetwork specification. Must be IPv4. + * @return A list of CIDR block IP subnetwork specification. Must be IPv4. * */ public List vpcIpSubnetworks() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/Repository.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/Repository.java index 0a810693c4..219d153517 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/Repository.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/Repository.java @@ -15,6 +15,7 @@ import com.pulumi.gcp.artifactregistry.outputs.RepositoryMavenConfig; import com.pulumi.gcp.artifactregistry.outputs.RepositoryRemoteRepositoryConfig; import com.pulumi.gcp.artifactregistry.outputs.RepositoryVirtualRepositoryConfig; +import com.pulumi.gcp.artifactregistry.outputs.RepositoryVulnerabilityScanningConfig; import java.lang.Boolean; import java.lang.String; import java.util.List; @@ -994,6 +995,7 @@ * import com.pulumi.gcp.artifactregistry.RepositoryArgs; * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs; * import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigCommonRepositoryArgs; + * import com.pulumi.resources.CustomResourceOptions; * import java.util.List; * import java.util.ArrayList; * import java.util.Map; @@ -1025,10 +1027,12 @@ * .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder() * .description("pull-through cache of another Artifact Registry repository by URL") * .commonRepository(RepositoryRemoteRepositoryConfigCommonRepositoryArgs.builder() - * .uri("https://us-central1-docker.pkg.dev//example-upstream-repo") + * .uri(String.format("https://us-central1-docker.pkg.dev/%s/example-upstream-repo", project.applyValue(getProjectResult -> getProjectResult.projectId()))) * .build()) * .build()) - * .build()); + * .build(), CustomResourceOptions.builder() + * .dependsOn(upstreamRepo) + * .build()); * * } * } @@ -1120,6 +1124,47 @@ * } * * <!--End PulumiCodeChooser --> + * ### Artifact Registry Repository Vulnerability Scanning + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.artifactregistry.Repository;
+ * import com.pulumi.gcp.artifactregistry.RepositoryArgs;
+ * import com.pulumi.gcp.artifactregistry.inputs.RepositoryVulnerabilityScanningConfigArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var my_repo = new Repository("my-repo", RepositoryArgs.builder()
+ *             .location("us-central1")
+ *             .repositoryId("my-repository")
+ *             .description("example docker repository with vulnerability scanning config")
+ *             .format("DOCKER")
+ *             .vulnerabilityScanningConfig(RepositoryVulnerabilityScanningConfigArgs.builder()
+ *                 .enablementConfig("INHERITED")
+ *                 .build())
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> * * ## Import * @@ -1488,6 +1533,22 @@ public Output updateTime() { public Output> virtualRepositoryConfig() { return Codegen.optional(this.virtualRepositoryConfig); } + /** + * Configuration for vulnerability scanning of artifacts stored in this repository. + * Structure is documented below. + * + */ + @Export(name="vulnerabilityScanningConfig", refs={RepositoryVulnerabilityScanningConfig.class}, tree="[0]") + private Output vulnerabilityScanningConfig; + + /** + * @return Configuration for vulnerability scanning of artifacts stored in this repository. + * Structure is documented below. + * + */ + public Output vulnerabilityScanningConfig() { + return this.vulnerabilityScanningConfig; + } /** * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/RepositoryArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/RepositoryArgs.java index 1ae874f13c..3811ab4763 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/RepositoryArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/RepositoryArgs.java @@ -11,6 +11,7 @@ import com.pulumi.gcp.artifactregistry.inputs.RepositoryMavenConfigArgs; import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs; import com.pulumi.gcp.artifactregistry.inputs.RepositoryVirtualRepositoryConfigArgs; +import com.pulumi.gcp.artifactregistry.inputs.RepositoryVulnerabilityScanningConfigArgs; import java.lang.Boolean; import java.lang.String; import java.util.List; @@ -304,6 +305,23 @@ public Optional> virtualRepository return Optional.ofNullable(this.virtualRepositoryConfig); } + /** + * Configuration for vulnerability scanning of artifacts stored in this repository. + * Structure is documented below. + * + */ + @Import(name="vulnerabilityScanningConfig") + private @Nullable Output vulnerabilityScanningConfig; + + /** + * @return Configuration for vulnerability scanning of artifacts stored in this repository. + * Structure is documented below. + * + */ + public Optional> vulnerabilityScanningConfig() { + return Optional.ofNullable(this.vulnerabilityScanningConfig); + } + private RepositoryArgs() {} private RepositoryArgs(RepositoryArgs $) { @@ -321,6 +339,7 @@ private RepositoryArgs(RepositoryArgs $) { this.remoteRepositoryConfig = $.remoteRepositoryConfig; this.repositoryId = $.repositoryId; this.virtualRepositoryConfig = $.virtualRepositoryConfig; + this.vulnerabilityScanningConfig = $.vulnerabilityScanningConfig; } public static Builder builder() { @@ -719,6 +738,29 @@ public Builder virtualRepositoryConfig(RepositoryVirtualRepositoryConfigArgs vir return virtualRepositoryConfig(Output.of(virtualRepositoryConfig)); } + /** + * @param vulnerabilityScanningConfig Configuration for vulnerability scanning of artifacts stored in this repository. + * Structure is documented below. + * + * @return builder + * + */ + public Builder vulnerabilityScanningConfig(@Nullable Output vulnerabilityScanningConfig) { + $.vulnerabilityScanningConfig = vulnerabilityScanningConfig; + return this; + } + + /** + * @param vulnerabilityScanningConfig Configuration for vulnerability scanning of artifacts stored in this repository. + * Structure is documented below. + * + * @return builder + * + */ + public Builder vulnerabilityScanningConfig(RepositoryVulnerabilityScanningConfigArgs vulnerabilityScanningConfig) { + return vulnerabilityScanningConfig(Output.of(vulnerabilityScanningConfig)); + } + public RepositoryArgs build() { if ($.format == null) { throw new MissingRequiredPropertyException("RepositoryArgs", "format"); diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryState.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryState.java index 950a7be456..115b270388 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryState.java @@ -10,6 +10,7 @@ import com.pulumi.gcp.artifactregistry.inputs.RepositoryMavenConfigArgs; import com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs; import com.pulumi.gcp.artifactregistry.inputs.RepositoryVirtualRepositoryConfigArgs; +import com.pulumi.gcp.artifactregistry.inputs.RepositoryVulnerabilityScanningConfigArgs; import java.lang.Boolean; import java.lang.String; import java.util.List; @@ -382,6 +383,23 @@ public Optional> virtualRepository return Optional.ofNullable(this.virtualRepositoryConfig); } + /** + * Configuration for vulnerability scanning of artifacts stored in this repository. + * Structure is documented below. + * + */ + @Import(name="vulnerabilityScanningConfig") + private @Nullable Output vulnerabilityScanningConfig; + + /** + * @return Configuration for vulnerability scanning of artifacts stored in this repository. + * Structure is documented below. + * + */ + public Optional> vulnerabilityScanningConfig() { + return Optional.ofNullable(this.vulnerabilityScanningConfig); + } + private RepositoryState() {} private RepositoryState(RepositoryState $) { @@ -404,6 +422,7 @@ private RepositoryState(RepositoryState $) { this.repositoryId = $.repositoryId; this.updateTime = $.updateTime; this.virtualRepositoryConfig = $.virtualRepositoryConfig; + this.vulnerabilityScanningConfig = $.vulnerabilityScanningConfig; } public static Builder builder() { @@ -911,6 +930,29 @@ public Builder virtualRepositoryConfig(RepositoryVirtualRepositoryConfigArgs vir return virtualRepositoryConfig(Output.of(virtualRepositoryConfig)); } + /** + * @param vulnerabilityScanningConfig Configuration for vulnerability scanning of artifacts stored in this repository. + * Structure is documented below. + * + * @return builder + * + */ + public Builder vulnerabilityScanningConfig(@Nullable Output vulnerabilityScanningConfig) { + $.vulnerabilityScanningConfig = vulnerabilityScanningConfig; + return this; + } + + /** + * @param vulnerabilityScanningConfig Configuration for vulnerability scanning of artifacts stored in this repository. + * Structure is documented below. + * + * @return builder + * + */ + public Builder vulnerabilityScanningConfig(RepositoryVulnerabilityScanningConfigArgs vulnerabilityScanningConfig) { + return vulnerabilityScanningConfig(Output.of(vulnerabilityScanningConfig)); + } + public RepositoryState build() { return $; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryVulnerabilityScanningConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryVulnerabilityScanningConfigArgs.java new file mode 100644 index 0000000000..d35cddc174 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/inputs/RepositoryVulnerabilityScanningConfigArgs.java @@ -0,0 +1,169 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.artifactregistry.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class RepositoryVulnerabilityScanningConfigArgs extends com.pulumi.resources.ResourceArgs { + + public static final RepositoryVulnerabilityScanningConfigArgs Empty = new RepositoryVulnerabilityScanningConfigArgs(); + + /** + * This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository. + * Possible values are: `INHERITED`, `DISABLED`. + * + */ + @Import(name="enablementConfig") + private @Nullable Output enablementConfig; + + /** + * @return This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository. + * Possible values are: `INHERITED`, `DISABLED`. + * + */ + public Optional> enablementConfig() { + return Optional.ofNullable(this.enablementConfig); + } + + /** + * (Output) + * This field returns whether scanning is active for this repository. + * + */ + @Import(name="enablementState") + private @Nullable Output enablementState; + + /** + * @return (Output) + * This field returns whether scanning is active for this repository. + * + */ + public Optional> enablementState() { + return Optional.ofNullable(this.enablementState); + } + + /** + * (Output) + * This provides an explanation for the state of scanning on this repository. + * + */ + @Import(name="enablementStateReason") + private @Nullable Output enablementStateReason; + + /** + * @return (Output) + * This provides an explanation for the state of scanning on this repository. + * + */ + public Optional> enablementStateReason() { + return Optional.ofNullable(this.enablementStateReason); + } + + private RepositoryVulnerabilityScanningConfigArgs() {} + + private RepositoryVulnerabilityScanningConfigArgs(RepositoryVulnerabilityScanningConfigArgs $) { + this.enablementConfig = $.enablementConfig; + this.enablementState = $.enablementState; + this.enablementStateReason = $.enablementStateReason; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(RepositoryVulnerabilityScanningConfigArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private RepositoryVulnerabilityScanningConfigArgs $; + + public Builder() { + $ = new RepositoryVulnerabilityScanningConfigArgs(); + } + + public Builder(RepositoryVulnerabilityScanningConfigArgs defaults) { + $ = new RepositoryVulnerabilityScanningConfigArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param enablementConfig This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository. + * Possible values are: `INHERITED`, `DISABLED`. + * + * @return builder + * + */ + public Builder enablementConfig(@Nullable Output enablementConfig) { + $.enablementConfig = enablementConfig; + return this; + } + + /** + * @param enablementConfig This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository. + * Possible values are: `INHERITED`, `DISABLED`. + * + * @return builder + * + */ + public Builder enablementConfig(String enablementConfig) { + return enablementConfig(Output.of(enablementConfig)); + } + + /** + * @param enablementState (Output) + * This field returns whether scanning is active for this repository. + * + * @return builder + * + */ + public Builder enablementState(@Nullable Output enablementState) { + $.enablementState = enablementState; + return this; + } + + /** + * @param enablementState (Output) + * This field returns whether scanning is active for this repository. + * + * @return builder + * + */ + public Builder enablementState(String enablementState) { + return enablementState(Output.of(enablementState)); + } + + /** + * @param enablementStateReason (Output) + * This provides an explanation for the state of scanning on this repository. + * + * @return builder + * + */ + public Builder enablementStateReason(@Nullable Output enablementStateReason) { + $.enablementStateReason = enablementStateReason; + return this; + } + + /** + * @param enablementStateReason (Output) + * This provides an explanation for the state of scanning on this repository. + * + * @return builder + * + */ + public Builder enablementStateReason(String enablementStateReason) { + return enablementStateReason(Output.of(enablementStateReason)); + } + + public RepositoryVulnerabilityScanningConfigArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryResult.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryResult.java index de83f344bf..8f87abffd1 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryResult.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryResult.java @@ -10,6 +10,7 @@ import com.pulumi.gcp.artifactregistry.outputs.GetRepositoryMavenConfig; import com.pulumi.gcp.artifactregistry.outputs.GetRepositoryRemoteRepositoryConfig; import com.pulumi.gcp.artifactregistry.outputs.GetRepositoryVirtualRepositoryConfig; +import com.pulumi.gcp.artifactregistry.outputs.GetRepositoryVulnerabilityScanningConfig; import java.lang.Boolean; import java.lang.String; import java.util.List; @@ -44,6 +45,7 @@ public final class GetRepositoryResult { private String repositoryId; private String updateTime; private List virtualRepositoryConfigs; + private List vulnerabilityScanningConfigs; private GetRepositoryResult() {} public List cleanupPolicies() { @@ -110,6 +112,9 @@ public String updateTime() { public List virtualRepositoryConfigs() { return this.virtualRepositoryConfigs; } + public List vulnerabilityScanningConfigs() { + return this.vulnerabilityScanningConfigs; + } public static Builder builder() { return new Builder(); @@ -140,6 +145,7 @@ public static final class Builder { private String repositoryId; private String updateTime; private List virtualRepositoryConfigs; + private List vulnerabilityScanningConfigs; public Builder() {} public Builder(GetRepositoryResult defaults) { Objects.requireNonNull(defaults); @@ -163,6 +169,7 @@ public Builder(GetRepositoryResult defaults) { this.repositoryId = defaults.repositoryId; this.updateTime = defaults.updateTime; this.virtualRepositoryConfigs = defaults.virtualRepositoryConfigs; + this.vulnerabilityScanningConfigs = defaults.vulnerabilityScanningConfigs; } @CustomType.Setter @@ -338,6 +345,17 @@ public Builder virtualRepositoryConfigs(List vulnerabilityScanningConfigs) { + if (vulnerabilityScanningConfigs == null) { + throw new MissingRequiredPropertyException("GetRepositoryResult", "vulnerabilityScanningConfigs"); + } + this.vulnerabilityScanningConfigs = vulnerabilityScanningConfigs; + return this; + } + public Builder vulnerabilityScanningConfigs(GetRepositoryVulnerabilityScanningConfig... vulnerabilityScanningConfigs) { + return vulnerabilityScanningConfigs(List.of(vulnerabilityScanningConfigs)); + } public GetRepositoryResult build() { final var _resultValue = new GetRepositoryResult(); _resultValue.cleanupPolicies = cleanupPolicies; @@ -360,6 +378,7 @@ public GetRepositoryResult build() { _resultValue.repositoryId = repositoryId; _resultValue.updateTime = updateTime; _resultValue.virtualRepositoryConfigs = virtualRepositoryConfigs; + _resultValue.vulnerabilityScanningConfigs = vulnerabilityScanningConfigs; return _resultValue; } } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryVulnerabilityScanningConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryVulnerabilityScanningConfig.java new file mode 100644 index 0000000000..82531ce215 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/GetRepositoryVulnerabilityScanningConfig.java @@ -0,0 +1,104 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.artifactregistry.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetRepositoryVulnerabilityScanningConfig { + /** + * @return This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository. Possible values: ["INHERITED", "DISABLED"] + * + */ + private String enablementConfig; + /** + * @return This field returns whether scanning is active for this repository. + * + */ + private String enablementState; + /** + * @return This provides an explanation for the state of scanning on this repository. + * + */ + private String enablementStateReason; + + private GetRepositoryVulnerabilityScanningConfig() {} + /** + * @return This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository. Possible values: ["INHERITED", "DISABLED"] + * + */ + public String enablementConfig() { + return this.enablementConfig; + } + /** + * @return This field returns whether scanning is active for this repository. + * + */ + public String enablementState() { + return this.enablementState; + } + /** + * @return This provides an explanation for the state of scanning on this repository. + * + */ + public String enablementStateReason() { + return this.enablementStateReason; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetRepositoryVulnerabilityScanningConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String enablementConfig; + private String enablementState; + private String enablementStateReason; + public Builder() {} + public Builder(GetRepositoryVulnerabilityScanningConfig defaults) { + Objects.requireNonNull(defaults); + this.enablementConfig = defaults.enablementConfig; + this.enablementState = defaults.enablementState; + this.enablementStateReason = defaults.enablementStateReason; + } + + @CustomType.Setter + public Builder enablementConfig(String enablementConfig) { + if (enablementConfig == null) { + throw new MissingRequiredPropertyException("GetRepositoryVulnerabilityScanningConfig", "enablementConfig"); + } + this.enablementConfig = enablementConfig; + return this; + } + @CustomType.Setter + public Builder enablementState(String enablementState) { + if (enablementState == null) { + throw new MissingRequiredPropertyException("GetRepositoryVulnerabilityScanningConfig", "enablementState"); + } + this.enablementState = enablementState; + return this; + } + @CustomType.Setter + public Builder enablementStateReason(String enablementStateReason) { + if (enablementStateReason == null) { + throw new MissingRequiredPropertyException("GetRepositoryVulnerabilityScanningConfig", "enablementStateReason"); + } + this.enablementStateReason = enablementStateReason; + return this; + } + public GetRepositoryVulnerabilityScanningConfig build() { + final var _resultValue = new GetRepositoryVulnerabilityScanningConfig(); + _resultValue.enablementConfig = enablementConfig; + _resultValue.enablementState = enablementState; + _resultValue.enablementStateReason = enablementStateReason; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryVulnerabilityScanningConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryVulnerabilityScanningConfig.java new file mode 100644 index 0000000000..9081fdb75d --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/artifactregistry/outputs/RepositoryVulnerabilityScanningConfig.java @@ -0,0 +1,105 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.artifactregistry.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class RepositoryVulnerabilityScanningConfig { + /** + * @return This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository. + * Possible values are: `INHERITED`, `DISABLED`. + * + */ + private @Nullable String enablementConfig; + /** + * @return (Output) + * This field returns whether scanning is active for this repository. + * + */ + private @Nullable String enablementState; + /** + * @return (Output) + * This provides an explanation for the state of scanning on this repository. + * + */ + private @Nullable String enablementStateReason; + + private RepositoryVulnerabilityScanningConfig() {} + /** + * @return This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository. + * Possible values are: `INHERITED`, `DISABLED`. + * + */ + public Optional enablementConfig() { + return Optional.ofNullable(this.enablementConfig); + } + /** + * @return (Output) + * This field returns whether scanning is active for this repository. + * + */ + public Optional enablementState() { + return Optional.ofNullable(this.enablementState); + } + /** + * @return (Output) + * This provides an explanation for the state of scanning on this repository. + * + */ + public Optional enablementStateReason() { + return Optional.ofNullable(this.enablementStateReason); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(RepositoryVulnerabilityScanningConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String enablementConfig; + private @Nullable String enablementState; + private @Nullable String enablementStateReason; + public Builder() {} + public Builder(RepositoryVulnerabilityScanningConfig defaults) { + Objects.requireNonNull(defaults); + this.enablementConfig = defaults.enablementConfig; + this.enablementState = defaults.enablementState; + this.enablementStateReason = defaults.enablementStateReason; + } + + @CustomType.Setter + public Builder enablementConfig(@Nullable String enablementConfig) { + + this.enablementConfig = enablementConfig; + return this; + } + @CustomType.Setter + public Builder enablementState(@Nullable String enablementState) { + + this.enablementState = enablementState; + return this; + } + @CustomType.Setter + public Builder enablementStateReason(@Nullable String enablementStateReason) { + + this.enablementStateReason = enablementStateReason; + return this; + } + public RepositoryVulnerabilityScanningConfig build() { + final var _resultValue = new RepositoryVulnerabilityScanningConfig(); + _resultValue.enablementConfig = enablementConfig; + _resultValue.enablementState = enablementState; + _resultValue.enablementStateReason = enablementStateReason; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/BackupdisasterrecoveryFunctions.java b/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/BackupdisasterrecoveryFunctions.java index c48d9ae868..ed868d27f4 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/BackupdisasterrecoveryFunctions.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/BackupdisasterrecoveryFunctions.java @@ -30,18 +30,228 @@ import java.util.concurrent.CompletableFuture; public final class BackupdisasterrecoveryFunctions { + /** + * A Backup and DR Backup. + * + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.gcp.backupdisasterrecovery.BackupdisasterrecoveryFunctions;
+     * import com.pulumi.gcp.backupdisasterrecovery.inputs.GetBackupArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var foo = BackupdisasterrecoveryFunctions.getBackup(GetBackupArgs.builder()
+     *             .location("us-central1")
+     *             .project("project-test")
+     *             .dataSourceId("ds-test")
+     *             .backupVaultId("bv-test")
+     *             .build());
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ public static Output getBackup(GetBackupArgs args) { return getBackup(args, InvokeOptions.Empty); } + /** + * A Backup and DR Backup. + * + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.gcp.backupdisasterrecovery.BackupdisasterrecoveryFunctions;
+     * import com.pulumi.gcp.backupdisasterrecovery.inputs.GetBackupArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var foo = BackupdisasterrecoveryFunctions.getBackup(GetBackupArgs.builder()
+     *             .location("us-central1")
+     *             .project("project-test")
+     *             .dataSourceId("ds-test")
+     *             .backupVaultId("bv-test")
+     *             .build());
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ public static CompletableFuture getBackupPlain(GetBackupPlainArgs args) { return getBackupPlain(args, InvokeOptions.Empty); } + /** + * A Backup and DR Backup. + * + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.gcp.backupdisasterrecovery.BackupdisasterrecoveryFunctions;
+     * import com.pulumi.gcp.backupdisasterrecovery.inputs.GetBackupArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var foo = BackupdisasterrecoveryFunctions.getBackup(GetBackupArgs.builder()
+     *             .location("us-central1")
+     *             .project("project-test")
+     *             .dataSourceId("ds-test")
+     *             .backupVaultId("bv-test")
+     *             .build());
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ public static Output getBackup(GetBackupArgs args, InvokeOptions options) { return Deployment.getInstance().invoke("gcp:backupdisasterrecovery/getBackup:getBackup", TypeShape.of(GetBackupResult.class), args, Utilities.withVersion(options)); } + /** + * A Backup and DR Backup. + * + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.gcp.backupdisasterrecovery.BackupdisasterrecoveryFunctions;
+     * import com.pulumi.gcp.backupdisasterrecovery.inputs.GetBackupArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var foo = BackupdisasterrecoveryFunctions.getBackup(GetBackupArgs.builder()
+     *             .location("us-central1")
+     *             .project("project-test")
+     *             .dataSourceId("ds-test")
+     *             .backupVaultId("bv-test")
+     *             .build());
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ public static Output getBackup(GetBackupArgs args, InvokeOutputOptions options) { return Deployment.getInstance().invoke("gcp:backupdisasterrecovery/getBackup:getBackup", TypeShape.of(GetBackupResult.class), args, Utilities.withVersion(options)); } + /** + * A Backup and DR Backup. + * + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.gcp.backupdisasterrecovery.BackupdisasterrecoveryFunctions;
+     * import com.pulumi.gcp.backupdisasterrecovery.inputs.GetBackupArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var foo = BackupdisasterrecoveryFunctions.getBackup(GetBackupArgs.builder()
+     *             .location("us-central1")
+     *             .project("project-test")
+     *             .dataSourceId("ds-test")
+     *             .backupVaultId("bv-test")
+     *             .build());
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ public static CompletableFuture getBackupPlain(GetBackupPlainArgs args, InvokeOptions options) { return Deployment.getInstance().invokeAsync("gcp:backupdisasterrecovery/getBackup:getBackup", TypeShape.of(GetBackupResult.class), args, Utilities.withVersion(options)); } @@ -480,18 +690,228 @@ public static Output getBackupVault(GetBackupVaultArgs arg public static CompletableFuture getBackupVaultPlain(GetBackupVaultPlainArgs args, InvokeOptions options) { return Deployment.getInstance().invokeAsync("gcp:backupdisasterrecovery/getBackupVault:getBackupVault", TypeShape.of(GetBackupVaultResult.class), args, Utilities.withVersion(options)); } + /** + * A Backup and DR Data Source. + * + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.gcp.backupdisasterrecovery.BackupdisasterrecoveryFunctions;
+     * import com.pulumi.gcp.backupdisasterrecovery.inputs.GetDataSourceArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var foo = BackupdisasterrecoveryFunctions.getDataSource(GetDataSourceArgs.builder()
+     *             .location("us-central1")
+     *             .project("project-test")
+     *             .dataSourceId("ds-test")
+     *             .backupVaultId("bv-test")
+     *             .build());
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ public static Output getDataSource(GetDataSourceArgs args) { return getDataSource(args, InvokeOptions.Empty); } + /** + * A Backup and DR Data Source. + * + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.gcp.backupdisasterrecovery.BackupdisasterrecoveryFunctions;
+     * import com.pulumi.gcp.backupdisasterrecovery.inputs.GetDataSourceArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var foo = BackupdisasterrecoveryFunctions.getDataSource(GetDataSourceArgs.builder()
+     *             .location("us-central1")
+     *             .project("project-test")
+     *             .dataSourceId("ds-test")
+     *             .backupVaultId("bv-test")
+     *             .build());
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ public static CompletableFuture getDataSourcePlain(GetDataSourcePlainArgs args) { return getDataSourcePlain(args, InvokeOptions.Empty); } + /** + * A Backup and DR Data Source. + * + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.gcp.backupdisasterrecovery.BackupdisasterrecoveryFunctions;
+     * import com.pulumi.gcp.backupdisasterrecovery.inputs.GetDataSourceArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var foo = BackupdisasterrecoveryFunctions.getDataSource(GetDataSourceArgs.builder()
+     *             .location("us-central1")
+     *             .project("project-test")
+     *             .dataSourceId("ds-test")
+     *             .backupVaultId("bv-test")
+     *             .build());
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ public static Output getDataSource(GetDataSourceArgs args, InvokeOptions options) { return Deployment.getInstance().invoke("gcp:backupdisasterrecovery/getDataSource:getDataSource", TypeShape.of(GetDataSourceResult.class), args, Utilities.withVersion(options)); } + /** + * A Backup and DR Data Source. + * + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.gcp.backupdisasterrecovery.BackupdisasterrecoveryFunctions;
+     * import com.pulumi.gcp.backupdisasterrecovery.inputs.GetDataSourceArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var foo = BackupdisasterrecoveryFunctions.getDataSource(GetDataSourceArgs.builder()
+     *             .location("us-central1")
+     *             .project("project-test")
+     *             .dataSourceId("ds-test")
+     *             .backupVaultId("bv-test")
+     *             .build());
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ public static Output getDataSource(GetDataSourceArgs args, InvokeOutputOptions options) { return Deployment.getInstance().invoke("gcp:backupdisasterrecovery/getDataSource:getDataSource", TypeShape.of(GetDataSourceResult.class), args, Utilities.withVersion(options)); } + /** + * A Backup and DR Data Source. + * + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.gcp.backupdisasterrecovery.BackupdisasterrecoveryFunctions;
+     * import com.pulumi.gcp.backupdisasterrecovery.inputs.GetDataSourceArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var foo = BackupdisasterrecoveryFunctions.getDataSource(GetDataSourceArgs.builder()
+     *             .location("us-central1")
+     *             .project("project-test")
+     *             .dataSourceId("ds-test")
+     *             .backupVaultId("bv-test")
+     *             .build());
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ public static CompletableFuture getDataSourcePlain(GetDataSourcePlainArgs args, InvokeOptions options) { return Deployment.getInstance().invokeAsync("gcp:backupdisasterrecovery/getDataSource:getDataSource", TypeShape.of(GetDataSourceResult.class), args, Utilities.withVersion(options)); } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/inputs/GetBackupArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/inputs/GetBackupArgs.java index dbbc459198..c24ed840bd 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/inputs/GetBackupArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/inputs/GetBackupArgs.java @@ -14,30 +14,62 @@ public final class GetBackupArgs extends com.pulumi.resources.InvokeArgs { public static final GetBackupArgs Empty = new GetBackupArgs(); + /** + * The ID of the Backup Vault of the Data Source in which the Backup belongs. + * + */ @Import(name="backupVaultId", required=true) private Output backupVaultId; + /** + * @return The ID of the Backup Vault of the Data Source in which the Backup belongs. + * + */ public Output backupVaultId() { return this.backupVaultId; } + /** + * The ID of the Data Source in which the Backup belongs. + * + */ @Import(name="dataSourceId", required=true) private Output dataSourceId; + /** + * @return The ID of the Data Source in which the Backup belongs. + * + */ public Output dataSourceId() { return this.dataSourceId; } + /** + * The location in which the Backup belongs. + * + */ @Import(name="location", required=true) private Output location; + /** + * @return The location in which the Backup belongs. + * + */ public Output location() { return this.location; } + /** + * The Google Cloud Project in which the Backup belongs. + * + */ @Import(name="project", required=true) private Output project; + /** + * @return The Google Cloud Project in which the Backup belongs. + * + */ public Output project() { return this.project; } @@ -69,38 +101,86 @@ public Builder(GetBackupArgs defaults) { $ = new GetBackupArgs(Objects.requireNonNull(defaults)); } + /** + * @param backupVaultId The ID of the Backup Vault of the Data Source in which the Backup belongs. + * + * @return builder + * + */ public Builder backupVaultId(Output backupVaultId) { $.backupVaultId = backupVaultId; return this; } + /** + * @param backupVaultId The ID of the Backup Vault of the Data Source in which the Backup belongs. + * + * @return builder + * + */ public Builder backupVaultId(String backupVaultId) { return backupVaultId(Output.of(backupVaultId)); } + /** + * @param dataSourceId The ID of the Data Source in which the Backup belongs. + * + * @return builder + * + */ public Builder dataSourceId(Output dataSourceId) { $.dataSourceId = dataSourceId; return this; } + /** + * @param dataSourceId The ID of the Data Source in which the Backup belongs. + * + * @return builder + * + */ public Builder dataSourceId(String dataSourceId) { return dataSourceId(Output.of(dataSourceId)); } + /** + * @param location The location in which the Backup belongs. + * + * @return builder + * + */ public Builder location(Output location) { $.location = location; return this; } + /** + * @param location The location in which the Backup belongs. + * + * @return builder + * + */ public Builder location(String location) { return location(Output.of(location)); } + /** + * @param project The Google Cloud Project in which the Backup belongs. + * + * @return builder + * + */ public Builder project(Output project) { $.project = project; return this; } + /** + * @param project The Google Cloud Project in which the Backup belongs. + * + * @return builder + * + */ public Builder project(String project) { return project(Output.of(project)); } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/inputs/GetBackupPlainArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/inputs/GetBackupPlainArgs.java index 559c36dda4..24efad6f96 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/inputs/GetBackupPlainArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/inputs/GetBackupPlainArgs.java @@ -13,30 +13,62 @@ public final class GetBackupPlainArgs extends com.pulumi.resources.InvokeArgs { public static final GetBackupPlainArgs Empty = new GetBackupPlainArgs(); + /** + * The ID of the Backup Vault of the Data Source in which the Backup belongs. + * + */ @Import(name="backupVaultId", required=true) private String backupVaultId; + /** + * @return The ID of the Backup Vault of the Data Source in which the Backup belongs. + * + */ public String backupVaultId() { return this.backupVaultId; } + /** + * The ID of the Data Source in which the Backup belongs. + * + */ @Import(name="dataSourceId", required=true) private String dataSourceId; + /** + * @return The ID of the Data Source in which the Backup belongs. + * + */ public String dataSourceId() { return this.dataSourceId; } + /** + * The location in which the Backup belongs. + * + */ @Import(name="location", required=true) private String location; + /** + * @return The location in which the Backup belongs. + * + */ public String location() { return this.location; } + /** + * The Google Cloud Project in which the Backup belongs. + * + */ @Import(name="project", required=true) private String project; + /** + * @return The Google Cloud Project in which the Backup belongs. + * + */ public String project() { return this.project; } @@ -68,21 +100,45 @@ public Builder(GetBackupPlainArgs defaults) { $ = new GetBackupPlainArgs(Objects.requireNonNull(defaults)); } + /** + * @param backupVaultId The ID of the Backup Vault of the Data Source in which the Backup belongs. + * + * @return builder + * + */ public Builder backupVaultId(String backupVaultId) { $.backupVaultId = backupVaultId; return this; } + /** + * @param dataSourceId The ID of the Data Source in which the Backup belongs. + * + * @return builder + * + */ public Builder dataSourceId(String dataSourceId) { $.dataSourceId = dataSourceId; return this; } + /** + * @param location The location in which the Backup belongs. + * + * @return builder + * + */ public Builder location(String location) { $.location = location; return this; } + /** + * @param project The Google Cloud Project in which the Backup belongs. + * + * @return builder + * + */ public Builder project(String project) { $.project = project; return this; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/inputs/GetDataSourceArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/inputs/GetDataSourceArgs.java index a3cb582fec..de67f41bca 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/inputs/GetDataSourceArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/inputs/GetDataSourceArgs.java @@ -14,30 +14,62 @@ public final class GetDataSourceArgs extends com.pulumi.resources.InvokeArgs { public static final GetDataSourceArgs Empty = new GetDataSourceArgs(); + /** + * The ID of the Backup Vault in which the Data Source belongs. + * + */ @Import(name="backupVaultId", required=true) private Output backupVaultId; + /** + * @return The ID of the Backup Vault in which the Data Source belongs. + * + */ public Output backupVaultId() { return this.backupVaultId; } + /** + * The ID of the Data Source. + * + */ @Import(name="dataSourceId", required=true) private Output dataSourceId; + /** + * @return The ID of the Data Source. + * + */ public Output dataSourceId() { return this.dataSourceId; } + /** + * The location in which the Data Source belongs. + * + */ @Import(name="location", required=true) private Output location; + /** + * @return The location in which the Data Source belongs. + * + */ public Output location() { return this.location; } + /** + * The Google Cloud Project in which the Data Source belongs. + * + */ @Import(name="project", required=true) private Output project; + /** + * @return The Google Cloud Project in which the Data Source belongs. + * + */ public Output project() { return this.project; } @@ -69,38 +101,86 @@ public Builder(GetDataSourceArgs defaults) { $ = new GetDataSourceArgs(Objects.requireNonNull(defaults)); } + /** + * @param backupVaultId The ID of the Backup Vault in which the Data Source belongs. + * + * @return builder + * + */ public Builder backupVaultId(Output backupVaultId) { $.backupVaultId = backupVaultId; return this; } + /** + * @param backupVaultId The ID of the Backup Vault in which the Data Source belongs. + * + * @return builder + * + */ public Builder backupVaultId(String backupVaultId) { return backupVaultId(Output.of(backupVaultId)); } + /** + * @param dataSourceId The ID of the Data Source. + * + * @return builder + * + */ public Builder dataSourceId(Output dataSourceId) { $.dataSourceId = dataSourceId; return this; } + /** + * @param dataSourceId The ID of the Data Source. + * + * @return builder + * + */ public Builder dataSourceId(String dataSourceId) { return dataSourceId(Output.of(dataSourceId)); } + /** + * @param location The location in which the Data Source belongs. + * + * @return builder + * + */ public Builder location(Output location) { $.location = location; return this; } + /** + * @param location The location in which the Data Source belongs. + * + * @return builder + * + */ public Builder location(String location) { return location(Output.of(location)); } + /** + * @param project The Google Cloud Project in which the Data Source belongs. + * + * @return builder + * + */ public Builder project(Output project) { $.project = project; return this; } + /** + * @param project The Google Cloud Project in which the Data Source belongs. + * + * @return builder + * + */ public Builder project(String project) { return project(Output.of(project)); } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/inputs/GetDataSourcePlainArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/inputs/GetDataSourcePlainArgs.java index d1dcb9214a..fb69f90f39 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/inputs/GetDataSourcePlainArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/inputs/GetDataSourcePlainArgs.java @@ -13,30 +13,62 @@ public final class GetDataSourcePlainArgs extends com.pulumi.resources.InvokeArg public static final GetDataSourcePlainArgs Empty = new GetDataSourcePlainArgs(); + /** + * The ID of the Backup Vault in which the Data Source belongs. + * + */ @Import(name="backupVaultId", required=true) private String backupVaultId; + /** + * @return The ID of the Backup Vault in which the Data Source belongs. + * + */ public String backupVaultId() { return this.backupVaultId; } + /** + * The ID of the Data Source. + * + */ @Import(name="dataSourceId", required=true) private String dataSourceId; + /** + * @return The ID of the Data Source. + * + */ public String dataSourceId() { return this.dataSourceId; } + /** + * The location in which the Data Source belongs. + * + */ @Import(name="location", required=true) private String location; + /** + * @return The location in which the Data Source belongs. + * + */ public String location() { return this.location; } + /** + * The Google Cloud Project in which the Data Source belongs. + * + */ @Import(name="project", required=true) private String project; + /** + * @return The Google Cloud Project in which the Data Source belongs. + * + */ public String project() { return this.project; } @@ -68,21 +100,45 @@ public Builder(GetDataSourcePlainArgs defaults) { $ = new GetDataSourcePlainArgs(Objects.requireNonNull(defaults)); } + /** + * @param backupVaultId The ID of the Backup Vault in which the Data Source belongs. + * + * @return builder + * + */ public Builder backupVaultId(String backupVaultId) { $.backupVaultId = backupVaultId; return this; } + /** + * @param dataSourceId The ID of the Data Source. + * + * @return builder + * + */ public Builder dataSourceId(String dataSourceId) { $.dataSourceId = dataSourceId; return this; } + /** + * @param location The location in which the Data Source belongs. + * + * @return builder + * + */ public Builder location(String location) { $.location = location; return this; } + /** + * @param project The Google Cloud Project in which the Data Source belongs. + * + * @return builder + * + */ public Builder project(String project) { $.project = project; return this; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/outputs/GetBackupBackup.java b/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/outputs/GetBackupBackup.java index f5c94468ae..300dc4ebf6 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/outputs/GetBackupBackup.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/outputs/GetBackupBackup.java @@ -16,17 +16,17 @@ public final class GetBackupBackup { */ private String backupId; /** - * @return Name of the Backup Vault associated with Backup. + * @return The ID of the Backup Vault of the Data Source in which the Backup belongs. * */ private String backupVaultId; /** - * @return Name of the Data Source associated with Backup. + * @return The ID of the Data Source in which the Backup belongs. * */ private String dataSourceId; /** - * @return Location of the resource. + * @return The location in which the Backup belongs. * */ private String location; @@ -45,21 +45,21 @@ public String backupId() { return this.backupId; } /** - * @return Name of the Backup Vault associated with Backup. + * @return The ID of the Backup Vault of the Data Source in which the Backup belongs. * */ public String backupVaultId() { return this.backupVaultId; } /** - * @return Name of the Data Source associated with Backup. + * @return The ID of the Data Source in which the Backup belongs. * */ public String dataSourceId() { return this.dataSourceId; } /** - * @return Location of the resource. + * @return The location in which the Backup belongs. * */ public String location() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/outputs/GetDataSourceDataSourceGcpResource.java b/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/outputs/GetDataSourceDataSourceGcpResource.java index c850c434d3..3fd241a299 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/outputs/GetDataSourceDataSourceGcpResource.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/outputs/GetDataSourceDataSourceGcpResource.java @@ -23,7 +23,7 @@ public final class GetDataSourceDataSourceGcpResource { */ private String gcpResourcename; /** - * @return Location of the resource: <region>/<zone>/"global"/"unspecified". + * @return The location in which the Data Source belongs. * */ private String location; @@ -50,7 +50,7 @@ public String gcpResourcename() { return this.gcpResourcename; } /** - * @return Location of the resource: <region>/<zone>/"global"/"unspecified". + * @return The location in which the Data Source belongs. * */ public String location() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/DatasetAccess.java b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/DatasetAccess.java index 3af4f32854..01a8c511b6 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/DatasetAccess.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/DatasetAccess.java @@ -11,6 +11,7 @@ import com.pulumi.gcp.bigquery.DatasetAccessArgs; import com.pulumi.gcp.bigquery.inputs.DatasetAccessState; import com.pulumi.gcp.bigquery.outputs.DatasetAccessAuthorizedDataset; +import com.pulumi.gcp.bigquery.outputs.DatasetAccessCondition; import com.pulumi.gcp.bigquery.outputs.DatasetAccessRoutine; import com.pulumi.gcp.bigquery.outputs.DatasetAccessView; import java.lang.Boolean; @@ -308,6 +309,24 @@ public Output apiUpdatedMember() { public Output> authorizedDataset() { return Codegen.optional(this.authorizedDataset); } + /** + * Condition for the binding. If CEL expression in this field is true, this + * access binding will be considered. + * Structure is documented below. + * + */ + @Export(name="condition", refs={DatasetAccessCondition.class}, tree="[0]") + private Output condition; + + /** + * @return Condition for the binding. If CEL expression in this field is true, this + * access binding will be considered. + * Structure is documented below. + * + */ + public Output> condition() { + return Codegen.optional(this.condition); + } /** * 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/java/src/main/java/com/pulumi/gcp/bigquery/DatasetAccessArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/DatasetAccessArgs.java index 8fa24a0f3d..385a02af20 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/DatasetAccessArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/DatasetAccessArgs.java @@ -7,6 +7,7 @@ import com.pulumi.core.annotations.Import; import com.pulumi.exceptions.MissingRequiredPropertyException; import com.pulumi.gcp.bigquery.inputs.DatasetAccessAuthorizedDatasetArgs; +import com.pulumi.gcp.bigquery.inputs.DatasetAccessConditionArgs; import com.pulumi.gcp.bigquery.inputs.DatasetAccessRoutineArgs; import com.pulumi.gcp.bigquery.inputs.DatasetAccessViewArgs; import java.lang.String; @@ -36,6 +37,25 @@ public Optional> authorizedDataset() return Optional.ofNullable(this.authorizedDataset); } + /** + * Condition for the binding. If CEL expression in this field is true, this + * access binding will be considered. + * Structure is documented below. + * + */ + @Import(name="condition") + private @Nullable Output condition; + + /** + * @return Condition for the binding. If CEL expression in this field is true, this + * access binding will be considered. + * Structure is documented below. + * + */ + public Optional> condition() { + return Optional.ofNullable(this.condition); + } + /** * A unique ID for this dataset, without the project name. The ID * must contain only letters (a-z, A-Z), numbers (0-9), or @@ -244,6 +264,7 @@ private DatasetAccessArgs() {} private DatasetAccessArgs(DatasetAccessArgs $) { this.authorizedDataset = $.authorizedDataset; + this.condition = $.condition; this.datasetId = $.datasetId; this.domain = $.domain; this.groupByEmail = $.groupByEmail; @@ -297,6 +318,31 @@ public Builder authorizedDataset(DatasetAccessAuthorizedDatasetArgs authorizedDa return authorizedDataset(Output.of(authorizedDataset)); } + /** + * @param condition Condition for the binding. If CEL expression in this field is true, this + * access binding will be considered. + * Structure is documented below. + * + * @return builder + * + */ + public Builder condition(@Nullable Output condition) { + $.condition = condition; + return this; + } + + /** + * @param condition Condition for the binding. If CEL expression in this field is true, this + * access binding will be considered. + * Structure is documented below. + * + * @return builder + * + */ + public Builder condition(DatasetAccessConditionArgs condition) { + return condition(Output.of(condition)); + } + /** * @param datasetId 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/java/src/main/java/com/pulumi/gcp/bigquery/Job.java b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/Job.java index 189dcde573..58c49d13c0 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/Job.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/Job.java @@ -441,10 +441,6 @@ * import com.pulumi.gcp.bigquery.DatasetArgs; * import com.pulumi.gcp.bigquery.Table; * import com.pulumi.gcp.bigquery.TableArgs; - * import com.pulumi.gcp.kms.KeyRing; - * import com.pulumi.gcp.kms.KeyRingArgs; - * import com.pulumi.gcp.kms.CryptoKey; - * import com.pulumi.gcp.kms.CryptoKeyArgs; * import com.pulumi.gcp.organizations.OrganizationsFunctions; * import com.pulumi.gcp.organizations.inputs.GetProjectArgs; * import com.pulumi.gcp.kms.CryptoKeyIAMMember; @@ -517,22 +513,12 @@ * .location("US") * .build()); * - * var keyRing = new KeyRing("keyRing", KeyRingArgs.builder() - * .name("example-keyring") - * .location("global") - * .build()); - * - * var cryptoKey = new CryptoKey("cryptoKey", CryptoKeyArgs.builder() - * .name("example-key") - * .keyRing(keyRing.id()) - * .build()); - * * final var project = OrganizationsFunctions.getProject(GetProjectArgs.builder() * .projectId("my-project-name") * .build()); * * var encryptRole = new CryptoKeyIAMMember("encryptRole", CryptoKeyIAMMemberArgs.builder() - * .cryptoKeyId(cryptoKey.id()) + * .cryptoKeyId("example-key") * .role("roles/cloudkms.cryptoKeyEncrypterDecrypter") * .member(String.format("serviceAccount:bq-%s}{@literal @}{@code bigquery-encryption.iam.gserviceaccount.com", project.applyValue(getProjectResult -> getProjectResult.number()))) * .build()); @@ -561,7 +547,7 @@ * ] * """) * .encryptionConfiguration(TableEncryptionConfigurationArgs.builder() - * .kmsKeyName(cryptoKey.id()) + * .kmsKeyName("example-key") * .build()) * .build(), CustomResourceOptions.builder() * .dependsOn(encryptRole) @@ -587,7 +573,7 @@ * .tableId(dest.tableId()) * .build()) * .destinationEncryptionConfiguration(JobCopyDestinationEncryptionConfigurationArgs.builder() - * .kmsKeyName(cryptoKey.id()) + * .kmsKeyName("example-key") * .build()) * .build()) * .build(), CustomResourceOptions.builder() diff --git a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/Table.java b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/Table.java index 93cf874aa9..0f4769cf44 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/Table.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/Table.java @@ -12,6 +12,7 @@ import com.pulumi.gcp.bigquery.inputs.TableState; import com.pulumi.gcp.bigquery.outputs.TableBiglakeConfiguration; import com.pulumi.gcp.bigquery.outputs.TableEncryptionConfiguration; +import com.pulumi.gcp.bigquery.outputs.TableExternalCatalogTableOptions; import com.pulumi.gcp.bigquery.outputs.TableExternalDataConfiguration; import com.pulumi.gcp.bigquery.outputs.TableMaterializedView; import com.pulumi.gcp.bigquery.outputs.TableRangePartitioning; @@ -334,6 +335,20 @@ public Output etag() { public Output expirationTime() { return this.expirationTime; } + /** + * Options defining open source compatible table. + * + */ + @Export(name="externalCatalogTableOptions", refs={TableExternalCatalogTableOptions.class}, tree="[0]") + private Output externalCatalogTableOptions; + + /** + * @return Options defining open source compatible table. + * + */ + public Output> externalCatalogTableOptions() { + return Codegen.optional(this.externalCatalogTableOptions); + } /** * Describes the data format, * location, and other properties of a table stored outside of BigQuery. diff --git a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/TableArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/TableArgs.java index a674897772..ab0db9a927 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/TableArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/TableArgs.java @@ -8,6 +8,7 @@ import com.pulumi.exceptions.MissingRequiredPropertyException; import com.pulumi.gcp.bigquery.inputs.TableBiglakeConfigurationArgs; import com.pulumi.gcp.bigquery.inputs.TableEncryptionConfigurationArgs; +import com.pulumi.gcp.bigquery.inputs.TableExternalCatalogTableOptionsArgs; import com.pulumi.gcp.bigquery.inputs.TableExternalDataConfigurationArgs; import com.pulumi.gcp.bigquery.inputs.TableMaterializedViewArgs; import com.pulumi.gcp.bigquery.inputs.TableRangePartitioningArgs; @@ -152,6 +153,21 @@ public Optional> expirationTime() { return Optional.ofNullable(this.expirationTime); } + /** + * Options defining open source compatible table. + * + */ + @Import(name="externalCatalogTableOptions") + private @Nullable Output externalCatalogTableOptions; + + /** + * @return Options defining open source compatible table. + * + */ + public Optional> externalCatalogTableOptions() { + return Optional.ofNullable(this.externalCatalogTableOptions); + } + /** * Describes the data format, * location, and other properties of a table stored outside of BigQuery. @@ -437,6 +453,7 @@ private TableArgs(TableArgs $) { this.description = $.description; this.encryptionConfiguration = $.encryptionConfiguration; this.expirationTime = $.expirationTime; + this.externalCatalogTableOptions = $.externalCatalogTableOptions; this.externalDataConfiguration = $.externalDataConfiguration; this.friendlyName = $.friendlyName; this.labels = $.labels; @@ -649,6 +666,27 @@ public Builder expirationTime(Integer expirationTime) { return expirationTime(Output.of(expirationTime)); } + /** + * @param externalCatalogTableOptions Options defining open source compatible table. + * + * @return builder + * + */ + public Builder externalCatalogTableOptions(@Nullable Output externalCatalogTableOptions) { + $.externalCatalogTableOptions = externalCatalogTableOptions; + return this; + } + + /** + * @param externalCatalogTableOptions Options defining open source compatible table. + * + * @return builder + * + */ + public Builder externalCatalogTableOptions(TableExternalCatalogTableOptionsArgs externalCatalogTableOptions) { + return externalCatalogTableOptions(Output.of(externalCatalogTableOptions)); + } + /** * @param externalDataConfiguration Describes the data format, * location, and other properties of a table stored outside of BigQuery. diff --git a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/inputs/DatasetAccessArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/inputs/DatasetAccessArgs.java index 99bcb739e2..ebbcb85084 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/inputs/DatasetAccessArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/inputs/DatasetAccessArgs.java @@ -5,6 +5,7 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.bigquery.inputs.DatasetAccessConditionArgs; import com.pulumi.gcp.bigquery.inputs.DatasetAccessDatasetArgs; import com.pulumi.gcp.bigquery.inputs.DatasetAccessRoutineArgs; import com.pulumi.gcp.bigquery.inputs.DatasetAccessViewArgs; @@ -18,6 +19,25 @@ public final class DatasetAccessArgs extends com.pulumi.resources.ResourceArgs { public static final DatasetAccessArgs Empty = new DatasetAccessArgs(); + /** + * Condition for the binding. If CEL expression in this field is true, this + * access binding will be considered. + * Structure is documented below. + * + */ + @Import(name="condition") + private @Nullable Output condition; + + /** + * @return Condition for the binding. If CEL expression in this field is true, this + * access binding will be considered. + * Structure is documented below. + * + */ + public Optional> condition() { + return Optional.ofNullable(this.condition); + } + /** * Grants all resources of particular types in a particular dataset read access to the current dataset. * Structure is documented below. @@ -200,6 +220,7 @@ public Optional> view() { private DatasetAccessArgs() {} private DatasetAccessArgs(DatasetAccessArgs $) { + this.condition = $.condition; this.dataset = $.dataset; this.domain = $.domain; this.groupByEmail = $.groupByEmail; @@ -229,6 +250,31 @@ public Builder(DatasetAccessArgs defaults) { $ = new DatasetAccessArgs(Objects.requireNonNull(defaults)); } + /** + * @param condition Condition for the binding. If CEL expression in this field is true, this + * access binding will be considered. + * Structure is documented below. + * + * @return builder + * + */ + public Builder condition(@Nullable Output condition) { + $.condition = condition; + return this; + } + + /** + * @param condition Condition for the binding. If CEL expression in this field is true, this + * access binding will be considered. + * Structure is documented below. + * + * @return builder + * + */ + public Builder condition(DatasetAccessConditionArgs condition) { + return condition(Output.of(condition)); + } + /** * @param dataset Grants all resources of particular types in a particular dataset read access to the current dataset. * Structure is documented below. diff --git a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/inputs/DatasetAccessConditionArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/inputs/DatasetAccessConditionArgs.java new file mode 100644 index 0000000000..8d2b84406e --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/inputs/DatasetAccessConditionArgs.java @@ -0,0 +1,210 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.bigquery.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class DatasetAccessConditionArgs extends com.pulumi.resources.ResourceArgs { + + public static final DatasetAccessConditionArgs Empty = new DatasetAccessConditionArgs(); + + /** + * Description of the expression. This is a longer text which describes the expression, + * e.g. when hovered over it in a UI. + * + */ + @Import(name="description") + private @Nullable Output description; + + /** + * @return Description of the expression. This is a longer text which describes the expression, + * e.g. when hovered over it in a UI. + * + */ + public Optional> description() { + return Optional.ofNullable(this.description); + } + + /** + * Textual representation of an expression in Common Expression Language syntax. + * + */ + @Import(name="expression", required=true) + private Output expression; + + /** + * @return Textual representation of an expression in Common Expression Language syntax. + * + */ + public Output expression() { + return this.expression; + } + + /** + * String indicating the location of the expression for error reporting, e.g. a file + * name and a position in the file. + * + */ + @Import(name="location") + private @Nullable Output location; + + /** + * @return String indicating the location of the expression for error reporting, e.g. a file + * name and a position in the file. + * + */ + public Optional> location() { + return Optional.ofNullable(this.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. + * + */ + @Import(name="title") + private @Nullable Output title; + + /** + * @return 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 Optional> title() { + return Optional.ofNullable(this.title); + } + + private DatasetAccessConditionArgs() {} + + private DatasetAccessConditionArgs(DatasetAccessConditionArgs $) { + this.description = $.description; + this.expression = $.expression; + this.location = $.location; + this.title = $.title; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(DatasetAccessConditionArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private DatasetAccessConditionArgs $; + + public Builder() { + $ = new DatasetAccessConditionArgs(); + } + + public Builder(DatasetAccessConditionArgs defaults) { + $ = new DatasetAccessConditionArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param description Description of the expression. This is a longer text which describes the expression, + * e.g. when hovered over it in a UI. + * + * @return builder + * + */ + public Builder description(@Nullable Output description) { + $.description = description; + return this; + } + + /** + * @param description Description of the expression. This is a longer text which describes the expression, + * e.g. when hovered over it in a UI. + * + * @return builder + * + */ + public Builder description(String description) { + return description(Output.of(description)); + } + + /** + * @param expression Textual representation of an expression in Common Expression Language syntax. + * + * @return builder + * + */ + public Builder expression(Output expression) { + $.expression = expression; + return this; + } + + /** + * @param expression Textual representation of an expression in Common Expression Language syntax. + * + * @return builder + * + */ + public Builder expression(String expression) { + return expression(Output.of(expression)); + } + + /** + * @param location String indicating the location of the expression for error reporting, e.g. a file + * name and a position in the file. + * + * @return builder + * + */ + public Builder location(@Nullable Output location) { + $.location = location; + return this; + } + + /** + * @param location String indicating the location of the expression for error reporting, e.g. a file + * name and a position in the file. + * + * @return builder + * + */ + public Builder location(String location) { + return location(Output.of(location)); + } + + /** + * @param title 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. + * + * @return builder + * + */ + public Builder title(@Nullable Output title) { + $.title = title; + return this; + } + + /** + * @param title 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. + * + * @return builder + * + */ + public Builder title(String title) { + return title(Output.of(title)); + } + + public DatasetAccessConditionArgs build() { + if ($.expression == null) { + throw new MissingRequiredPropertyException("DatasetAccessConditionArgs", "expression"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/inputs/DatasetAccessState.java b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/inputs/DatasetAccessState.java index 5c30bf8ee6..c948561a13 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/inputs/DatasetAccessState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/inputs/DatasetAccessState.java @@ -6,6 +6,7 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; import com.pulumi.gcp.bigquery.inputs.DatasetAccessAuthorizedDatasetArgs; +import com.pulumi.gcp.bigquery.inputs.DatasetAccessConditionArgs; import com.pulumi.gcp.bigquery.inputs.DatasetAccessRoutineArgs; import com.pulumi.gcp.bigquery.inputs.DatasetAccessViewArgs; import java.lang.Boolean; @@ -53,6 +54,25 @@ public Optional> authorizedDataset() return Optional.ofNullable(this.authorizedDataset); } + /** + * Condition for the binding. If CEL expression in this field is true, this + * access binding will be considered. + * Structure is documented below. + * + */ + @Import(name="condition") + private @Nullable Output condition; + + /** + * @return Condition for the binding. If CEL expression in this field is true, this + * access binding will be considered. + * Structure is documented below. + * + */ + public Optional> condition() { + return Optional.ofNullable(this.condition); + } + /** * A unique ID for this dataset, without the project name. The ID * must contain only letters (a-z, A-Z), numbers (0-9), or @@ -262,6 +282,7 @@ private DatasetAccessState() {} private DatasetAccessState(DatasetAccessState $) { this.apiUpdatedMember = $.apiUpdatedMember; this.authorizedDataset = $.authorizedDataset; + this.condition = $.condition; this.datasetId = $.datasetId; this.domain = $.domain; this.groupByEmail = $.groupByEmail; @@ -338,6 +359,31 @@ public Builder authorizedDataset(DatasetAccessAuthorizedDatasetArgs authorizedDa return authorizedDataset(Output.of(authorizedDataset)); } + /** + * @param condition Condition for the binding. If CEL expression in this field is true, this + * access binding will be considered. + * Structure is documented below. + * + * @return builder + * + */ + public Builder condition(@Nullable Output condition) { + $.condition = condition; + return this; + } + + /** + * @param condition Condition for the binding. If CEL expression in this field is true, this + * access binding will be considered. + * Structure is documented below. + * + * @return builder + * + */ + public Builder condition(DatasetAccessConditionArgs condition) { + return condition(Output.of(condition)); + } + /** * @param datasetId 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/java/src/main/java/com/pulumi/gcp/bigquery/inputs/TableExternalCatalogTableOptionsArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/inputs/TableExternalCatalogTableOptionsArgs.java new file mode 100644 index 0000000000..c671ef5881 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/inputs/TableExternalCatalogTableOptionsArgs.java @@ -0,0 +1,159 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.bigquery.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.bigquery.inputs.TableExternalCatalogTableOptionsStorageDescriptorArgs; +import java.lang.String; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class TableExternalCatalogTableOptionsArgs extends com.pulumi.resources.ResourceArgs { + + public static final TableExternalCatalogTableOptionsArgs Empty = new TableExternalCatalogTableOptionsArgs(); + + /** + * 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>. + * + */ + @Import(name="connectionId") + private @Nullable Output connectionId; + + /** + * @return 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 Optional> connectionId() { + return Optional.ofNullable(this.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. + * + */ + @Import(name="parameters") + private @Nullable Output> parameters; + + /** + * @return 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 Optional>> parameters() { + return Optional.ofNullable(this.parameters); + } + + /** + * A storage descriptor containing information about the physical storage of this table. + * + */ + @Import(name="storageDescriptor") + private @Nullable Output storageDescriptor; + + /** + * @return A storage descriptor containing information about the physical storage of this table. + * + */ + public Optional> storageDescriptor() { + return Optional.ofNullable(this.storageDescriptor); + } + + private TableExternalCatalogTableOptionsArgs() {} + + private TableExternalCatalogTableOptionsArgs(TableExternalCatalogTableOptionsArgs $) { + this.connectionId = $.connectionId; + this.parameters = $.parameters; + this.storageDescriptor = $.storageDescriptor; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(TableExternalCatalogTableOptionsArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private TableExternalCatalogTableOptionsArgs $; + + public Builder() { + $ = new TableExternalCatalogTableOptionsArgs(); + } + + public Builder(TableExternalCatalogTableOptionsArgs defaults) { + $ = new TableExternalCatalogTableOptionsArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param connectionId 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>. + * + * @return builder + * + */ + public Builder connectionId(@Nullable Output connectionId) { + $.connectionId = connectionId; + return this; + } + + /** + * @param connectionId 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>. + * + * @return builder + * + */ + public Builder connectionId(String connectionId) { + return connectionId(Output.of(connectionId)); + } + + /** + * @param 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. + * + * @return builder + * + */ + public Builder parameters(@Nullable Output> parameters) { + $.parameters = parameters; + return this; + } + + /** + * @param 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. + * + * @return builder + * + */ + public Builder parameters(Map parameters) { + return parameters(Output.of(parameters)); + } + + /** + * @param storageDescriptor A storage descriptor containing information about the physical storage of this table. + * + * @return builder + * + */ + public Builder storageDescriptor(@Nullable Output storageDescriptor) { + $.storageDescriptor = storageDescriptor; + return this; + } + + /** + * @param storageDescriptor A storage descriptor containing information about the physical storage of this table. + * + * @return builder + * + */ + public Builder storageDescriptor(TableExternalCatalogTableOptionsStorageDescriptorArgs storageDescriptor) { + return storageDescriptor(Output.of(storageDescriptor)); + } + + public TableExternalCatalogTableOptionsArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/inputs/TableExternalCatalogTableOptionsStorageDescriptorArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/inputs/TableExternalCatalogTableOptionsStorageDescriptorArgs.java new file mode 100644 index 0000000000..881aa3a448 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/inputs/TableExternalCatalogTableOptionsStorageDescriptorArgs.java @@ -0,0 +1,195 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.bigquery.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.bigquery.inputs.TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class TableExternalCatalogTableOptionsStorageDescriptorArgs extends com.pulumi.resources.ResourceArgs { + + public static final TableExternalCatalogTableOptionsStorageDescriptorArgs Empty = new TableExternalCatalogTableOptionsStorageDescriptorArgs(); + + /** + * 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. + * + */ + @Import(name="inputFormat") + private @Nullable Output inputFormat; + + /** + * @return 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 Optional> inputFormat() { + return Optional.ofNullable(this.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. + * + */ + @Import(name="locationUri") + private @Nullable Output locationUri; + + /** + * @return 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 Optional> locationUri() { + return Optional.ofNullable(this.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. + * + */ + @Import(name="outputFormat") + private @Nullable Output outputFormat; + + /** + * @return 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 Optional> outputFormat() { + return Optional.ofNullable(this.outputFormat); + } + + /** + * Serializer and deserializer information. + * + */ + @Import(name="serdeInfo") + private @Nullable Output serdeInfo; + + /** + * @return Serializer and deserializer information. + * + */ + public Optional> serdeInfo() { + return Optional.ofNullable(this.serdeInfo); + } + + private TableExternalCatalogTableOptionsStorageDescriptorArgs() {} + + private TableExternalCatalogTableOptionsStorageDescriptorArgs(TableExternalCatalogTableOptionsStorageDescriptorArgs $) { + this.inputFormat = $.inputFormat; + this.locationUri = $.locationUri; + this.outputFormat = $.outputFormat; + this.serdeInfo = $.serdeInfo; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(TableExternalCatalogTableOptionsStorageDescriptorArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private TableExternalCatalogTableOptionsStorageDescriptorArgs $; + + public Builder() { + $ = new TableExternalCatalogTableOptionsStorageDescriptorArgs(); + } + + public Builder(TableExternalCatalogTableOptionsStorageDescriptorArgs defaults) { + $ = new TableExternalCatalogTableOptionsStorageDescriptorArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param inputFormat 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. + * + * @return builder + * + */ + public Builder inputFormat(@Nullable Output inputFormat) { + $.inputFormat = inputFormat; + return this; + } + + /** + * @param inputFormat 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. + * + * @return builder + * + */ + public Builder inputFormat(String inputFormat) { + return inputFormat(Output.of(inputFormat)); + } + + /** + * @param locationUri 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. + * + * @return builder + * + */ + public Builder locationUri(@Nullable Output locationUri) { + $.locationUri = locationUri; + return this; + } + + /** + * @param locationUri 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. + * + * @return builder + * + */ + public Builder locationUri(String locationUri) { + return locationUri(Output.of(locationUri)); + } + + /** + * @param outputFormat 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. + * + * @return builder + * + */ + public Builder outputFormat(@Nullable Output outputFormat) { + $.outputFormat = outputFormat; + return this; + } + + /** + * @param outputFormat 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. + * + * @return builder + * + */ + public Builder outputFormat(String outputFormat) { + return outputFormat(Output.of(outputFormat)); + } + + /** + * @param serdeInfo Serializer and deserializer information. + * + * @return builder + * + */ + public Builder serdeInfo(@Nullable Output serdeInfo) { + $.serdeInfo = serdeInfo; + return this; + } + + /** + * @param serdeInfo Serializer and deserializer information. + * + * @return builder + * + */ + public Builder serdeInfo(TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs serdeInfo) { + return serdeInfo(Output.of(serdeInfo)); + } + + public TableExternalCatalogTableOptionsStorageDescriptorArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/inputs/TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/inputs/TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs.java new file mode 100644 index 0000000000..59171abbdf --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/inputs/TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs.java @@ -0,0 +1,162 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.bigquery.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs extends com.pulumi.resources.ResourceArgs { + + public static final TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs Empty = new TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs(); + + /** + * Name of the SerDe. The maximum length is 256 characters. + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return Name of the SerDe. The maximum length is 256 characters. + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * Key-value pairs that define the initialization parameters for the serialization library. Maximum size 10 Kib. + * + */ + @Import(name="parameters") + private @Nullable Output> parameters; + + /** + * @return Key-value pairs that define the initialization parameters for the serialization library. Maximum size 10 Kib. + * + */ + public Optional>> parameters() { + return Optional.ofNullable(this.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. + * + */ + @Import(name="serializationLibrary", required=true) + private Output serializationLibrary; + + /** + * @return 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 Output serializationLibrary() { + return this.serializationLibrary; + } + + private TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs() {} + + private TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs(TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs $) { + this.name = $.name; + this.parameters = $.parameters; + this.serializationLibrary = $.serializationLibrary; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs $; + + public Builder() { + $ = new TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs(); + } + + public Builder(TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs defaults) { + $ = new TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param name Name of the SerDe. The maximum length is 256 characters. + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name Name of the SerDe. The maximum length is 256 characters. + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param parameters Key-value pairs that define the initialization parameters for the serialization library. Maximum size 10 Kib. + * + * @return builder + * + */ + public Builder parameters(@Nullable Output> parameters) { + $.parameters = parameters; + return this; + } + + /** + * @param parameters Key-value pairs that define the initialization parameters for the serialization library. Maximum size 10 Kib. + * + * @return builder + * + */ + public Builder parameters(Map parameters) { + return parameters(Output.of(parameters)); + } + + /** + * @param serializationLibrary 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. + * + * @return builder + * + */ + public Builder serializationLibrary(Output serializationLibrary) { + $.serializationLibrary = serializationLibrary; + return this; + } + + /** + * @param serializationLibrary 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. + * + * @return builder + * + */ + public Builder serializationLibrary(String serializationLibrary) { + return serializationLibrary(Output.of(serializationLibrary)); + } + + public TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs build() { + if ($.serializationLibrary == null) { + throw new MissingRequiredPropertyException("TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs", "serializationLibrary"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/inputs/TableState.java b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/inputs/TableState.java index e36c409f47..4a33cc3acc 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/inputs/TableState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/inputs/TableState.java @@ -7,6 +7,7 @@ import com.pulumi.core.annotations.Import; import com.pulumi.gcp.bigquery.inputs.TableBiglakeConfigurationArgs; import com.pulumi.gcp.bigquery.inputs.TableEncryptionConfigurationArgs; +import com.pulumi.gcp.bigquery.inputs.TableExternalCatalogTableOptionsArgs; import com.pulumi.gcp.bigquery.inputs.TableExternalDataConfigurationArgs; import com.pulumi.gcp.bigquery.inputs.TableMaterializedViewArgs; import com.pulumi.gcp.bigquery.inputs.TableRangePartitioningArgs; @@ -226,6 +227,21 @@ public Optional> expirationTime() { return Optional.ofNullable(this.expirationTime); } + /** + * Options defining open source compatible table. + * + */ + @Import(name="externalCatalogTableOptions") + private @Nullable Output externalCatalogTableOptions; + + /** + * @return Options defining open source compatible table. + * + */ + public Optional> externalCatalogTableOptions() { + return Optional.ofNullable(this.externalCatalogTableOptions); + } + /** * Describes the data format, * location, and other properties of a table stored outside of BigQuery. @@ -634,6 +650,7 @@ private TableState(TableState $) { this.encryptionConfiguration = $.encryptionConfiguration; this.etag = $.etag; this.expirationTime = $.expirationTime; + this.externalCatalogTableOptions = $.externalCatalogTableOptions; this.externalDataConfiguration = $.externalDataConfiguration; this.friendlyName = $.friendlyName; this.labels = $.labels; @@ -947,6 +964,27 @@ public Builder expirationTime(Integer expirationTime) { return expirationTime(Output.of(expirationTime)); } + /** + * @param externalCatalogTableOptions Options defining open source compatible table. + * + * @return builder + * + */ + public Builder externalCatalogTableOptions(@Nullable Output externalCatalogTableOptions) { + $.externalCatalogTableOptions = externalCatalogTableOptions; + return this; + } + + /** + * @param externalCatalogTableOptions Options defining open source compatible table. + * + * @return builder + * + */ + public Builder externalCatalogTableOptions(TableExternalCatalogTableOptionsArgs externalCatalogTableOptions) { + return externalCatalogTableOptions(Output.of(externalCatalogTableOptions)); + } + /** * @param externalDataConfiguration Describes the data format, * location, and other properties of a table stored outside of BigQuery. diff --git a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/outputs/DatasetAccess.java b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/outputs/DatasetAccess.java index 4bc69906a5..97f43d72e0 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/outputs/DatasetAccess.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/outputs/DatasetAccess.java @@ -4,6 +4,7 @@ package com.pulumi.gcp.bigquery.outputs; import com.pulumi.core.annotations.CustomType; +import com.pulumi.gcp.bigquery.outputs.DatasetAccessCondition; import com.pulumi.gcp.bigquery.outputs.DatasetAccessDataset; import com.pulumi.gcp.bigquery.outputs.DatasetAccessRoutine; import com.pulumi.gcp.bigquery.outputs.DatasetAccessView; @@ -14,6 +15,13 @@ @CustomType public final class DatasetAccess { + /** + * @return Condition for the binding. If CEL expression in this field is true, this + * access binding will be considered. + * Structure is documented below. + * + */ + private @Nullable DatasetAccessCondition condition; /** * @return Grants all resources of particular types in a particular dataset read access to the current dataset. * Structure is documented below. @@ -83,6 +91,15 @@ public final class DatasetAccess { private @Nullable DatasetAccessView view; private DatasetAccess() {} + /** + * @return Condition for the binding. If CEL expression in this field is true, this + * access binding will be considered. + * Structure is documented below. + * + */ + public Optional condition() { + return Optional.ofNullable(this.condition); + } /** * @return Grants all resources of particular types in a particular dataset read access to the current dataset. * Structure is documented below. @@ -178,6 +195,7 @@ public static Builder builder(DatasetAccess defaults) { } @CustomType.Builder public static final class Builder { + private @Nullable DatasetAccessCondition condition; private @Nullable DatasetAccessDataset dataset; private @Nullable String domain; private @Nullable String groupByEmail; @@ -190,6 +208,7 @@ public static final class Builder { public Builder() {} public Builder(DatasetAccess defaults) { Objects.requireNonNull(defaults); + this.condition = defaults.condition; this.dataset = defaults.dataset; this.domain = defaults.domain; this.groupByEmail = defaults.groupByEmail; @@ -201,6 +220,12 @@ public Builder(DatasetAccess defaults) { this.view = defaults.view; } + @CustomType.Setter + public Builder condition(@Nullable DatasetAccessCondition condition) { + + this.condition = condition; + return this; + } @CustomType.Setter public Builder dataset(@Nullable DatasetAccessDataset dataset) { @@ -257,6 +282,7 @@ public Builder view(@Nullable DatasetAccessView view) { } public DatasetAccess build() { final var _resultValue = new DatasetAccess(); + _resultValue.condition = condition; _resultValue.dataset = dataset; _resultValue.domain = domain; _resultValue.groupByEmail = groupByEmail; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/outputs/DatasetAccessCondition.java b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/outputs/DatasetAccessCondition.java new file mode 100644 index 0000000000..e2da0555ed --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/outputs/DatasetAccessCondition.java @@ -0,0 +1,129 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.bigquery.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class DatasetAccessCondition { + /** + * @return Description of the expression. This is a longer text which describes the expression, + * e.g. when hovered over it in a UI. + * + */ + private @Nullable String description; + /** + * @return Textual representation of an expression in Common Expression Language syntax. + * + */ + private String expression; + /** + * @return String indicating the location of the expression for error reporting, e.g. a file + * name and a position in the file. + * + */ + private @Nullable String location; + /** + * @return 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. + * + */ + private @Nullable String title; + + private DatasetAccessCondition() {} + /** + * @return Description of the expression. This is a longer text which describes the expression, + * e.g. when hovered over it in a UI. + * + */ + public Optional description() { + return Optional.ofNullable(this.description); + } + /** + * @return Textual representation of an expression in Common Expression Language syntax. + * + */ + public String expression() { + return this.expression; + } + /** + * @return String indicating the location of the expression for error reporting, e.g. a file + * name and a position in the file. + * + */ + public Optional location() { + return Optional.ofNullable(this.location); + } + /** + * @return 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 Optional title() { + return Optional.ofNullable(this.title); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(DatasetAccessCondition defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String description; + private String expression; + private @Nullable String location; + private @Nullable String title; + public Builder() {} + public Builder(DatasetAccessCondition defaults) { + Objects.requireNonNull(defaults); + this.description = defaults.description; + this.expression = defaults.expression; + this.location = defaults.location; + this.title = defaults.title; + } + + @CustomType.Setter + public Builder description(@Nullable String description) { + + this.description = description; + return this; + } + @CustomType.Setter + public Builder expression(String expression) { + if (expression == null) { + throw new MissingRequiredPropertyException("DatasetAccessCondition", "expression"); + } + this.expression = expression; + return this; + } + @CustomType.Setter + public Builder location(@Nullable String location) { + + this.location = location; + return this; + } + @CustomType.Setter + public Builder title(@Nullable String title) { + + this.title = title; + return this; + } + public DatasetAccessCondition build() { + final var _resultValue = new DatasetAccessCondition(); + _resultValue.description = description; + _resultValue.expression = expression; + _resultValue.location = location; + _resultValue.title = title; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/outputs/GetDatasetAccess.java b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/outputs/GetDatasetAccess.java index fc0a29f5f2..47c012090b 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/outputs/GetDatasetAccess.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/outputs/GetDatasetAccess.java @@ -5,6 +5,7 @@ import com.pulumi.core.annotations.CustomType; import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.bigquery.outputs.GetDatasetAccessCondition; import com.pulumi.gcp.bigquery.outputs.GetDatasetAccessDataset; import com.pulumi.gcp.bigquery.outputs.GetDatasetAccessRoutine; import com.pulumi.gcp.bigquery.outputs.GetDatasetAccessView; @@ -14,6 +15,12 @@ @CustomType public final class GetDatasetAccess { + /** + * @return Condition for the binding. If CEL expression in this field is true, this + * access binding will be considered. + * + */ + private List conditions; /** * @return Grants all resources of particular types in a particular dataset read access to the current dataset. * @@ -80,6 +87,14 @@ public final class GetDatasetAccess { private List views; private GetDatasetAccess() {} + /** + * @return Condition for the binding. If CEL expression in this field is true, this + * access binding will be considered. + * + */ + public List conditions() { + return this.conditions; + } /** * @return Grants all resources of particular types in a particular dataset read access to the current dataset. * @@ -172,6 +187,7 @@ public static Builder builder(GetDatasetAccess defaults) { } @CustomType.Builder public static final class Builder { + private List conditions; private List datasets; private String domain; private String groupByEmail; @@ -184,6 +200,7 @@ public static final class Builder { public Builder() {} public Builder(GetDatasetAccess defaults) { Objects.requireNonNull(defaults); + this.conditions = defaults.conditions; this.datasets = defaults.datasets; this.domain = defaults.domain; this.groupByEmail = defaults.groupByEmail; @@ -195,6 +212,17 @@ public Builder(GetDatasetAccess defaults) { this.views = defaults.views; } + @CustomType.Setter + public Builder conditions(List conditions) { + if (conditions == null) { + throw new MissingRequiredPropertyException("GetDatasetAccess", "conditions"); + } + this.conditions = conditions; + return this; + } + public Builder conditions(GetDatasetAccessCondition... conditions) { + return conditions(List.of(conditions)); + } @CustomType.Setter public Builder datasets(List datasets) { if (datasets == null) { @@ -278,6 +306,7 @@ public Builder views(GetDatasetAccessView... views) { } public GetDatasetAccess build() { final var _resultValue = new GetDatasetAccess(); + _resultValue.conditions = conditions; _resultValue.datasets = datasets; _resultValue.domain = domain; _resultValue.groupByEmail = groupByEmail; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/outputs/GetDatasetAccessCondition.java b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/outputs/GetDatasetAccessCondition.java new file mode 100644 index 0000000000..08b9e415bc --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/outputs/GetDatasetAccessCondition.java @@ -0,0 +1,133 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.bigquery.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetDatasetAccessCondition { + /** + * @return Description of the expression. This is a longer text which describes the expression, + * e.g. when hovered over it in a UI. + * + */ + private String description; + /** + * @return Textual representation of an expression in Common Expression Language syntax. + * + */ + private String expression; + /** + * @return String indicating the location of the expression for error reporting, e.g. a file + * name and a position in the file. + * + */ + private String location; + /** + * @return 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. + * + */ + private String title; + + private GetDatasetAccessCondition() {} + /** + * @return Description of the expression. This is a longer text which describes the expression, + * e.g. when hovered over it in a UI. + * + */ + public String description() { + return this.description; + } + /** + * @return Textual representation of an expression in Common Expression Language syntax. + * + */ + public String expression() { + return this.expression; + } + /** + * @return String indicating the location of the expression for error reporting, e.g. a file + * name and a position in the file. + * + */ + public String location() { + return this.location; + } + /** + * @return 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 String title() { + return this.title; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetDatasetAccessCondition defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String description; + private String expression; + private String location; + private String title; + public Builder() {} + public Builder(GetDatasetAccessCondition defaults) { + Objects.requireNonNull(defaults); + this.description = defaults.description; + this.expression = defaults.expression; + this.location = defaults.location; + this.title = defaults.title; + } + + @CustomType.Setter + public Builder description(String description) { + if (description == null) { + throw new MissingRequiredPropertyException("GetDatasetAccessCondition", "description"); + } + this.description = description; + return this; + } + @CustomType.Setter + public Builder expression(String expression) { + if (expression == null) { + throw new MissingRequiredPropertyException("GetDatasetAccessCondition", "expression"); + } + this.expression = expression; + return this; + } + @CustomType.Setter + public Builder location(String location) { + if (location == null) { + throw new MissingRequiredPropertyException("GetDatasetAccessCondition", "location"); + } + this.location = location; + return this; + } + @CustomType.Setter + public Builder title(String title) { + if (title == null) { + throw new MissingRequiredPropertyException("GetDatasetAccessCondition", "title"); + } + this.title = title; + return this; + } + public GetDatasetAccessCondition build() { + final var _resultValue = new GetDatasetAccessCondition(); + _resultValue.description = description; + _resultValue.expression = expression; + _resultValue.location = location; + _resultValue.title = title; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/outputs/TableExternalCatalogTableOptions.java b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/outputs/TableExternalCatalogTableOptions.java new file mode 100644 index 0000000000..3ac023a8b9 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/outputs/TableExternalCatalogTableOptions.java @@ -0,0 +1,101 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.bigquery.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.gcp.bigquery.outputs.TableExternalCatalogTableOptionsStorageDescriptor; +import java.lang.String; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class TableExternalCatalogTableOptions { + /** + * @return 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>. + * + */ + private @Nullable String connectionId; + /** + * @return 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. + * + */ + private @Nullable Map parameters; + /** + * @return A storage descriptor containing information about the physical storage of this table. + * + */ + private @Nullable TableExternalCatalogTableOptionsStorageDescriptor storageDescriptor; + + private TableExternalCatalogTableOptions() {} + /** + * @return 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 Optional connectionId() { + return Optional.ofNullable(this.connectionId); + } + /** + * @return 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 Map parameters() { + return this.parameters == null ? Map.of() : this.parameters; + } + /** + * @return A storage descriptor containing information about the physical storage of this table. + * + */ + public Optional storageDescriptor() { + return Optional.ofNullable(this.storageDescriptor); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(TableExternalCatalogTableOptions defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String connectionId; + private @Nullable Map parameters; + private @Nullable TableExternalCatalogTableOptionsStorageDescriptor storageDescriptor; + public Builder() {} + public Builder(TableExternalCatalogTableOptions defaults) { + Objects.requireNonNull(defaults); + this.connectionId = defaults.connectionId; + this.parameters = defaults.parameters; + this.storageDescriptor = defaults.storageDescriptor; + } + + @CustomType.Setter + public Builder connectionId(@Nullable String connectionId) { + + this.connectionId = connectionId; + return this; + } + @CustomType.Setter + public Builder parameters(@Nullable Map parameters) { + + this.parameters = parameters; + return this; + } + @CustomType.Setter + public Builder storageDescriptor(@Nullable TableExternalCatalogTableOptionsStorageDescriptor storageDescriptor) { + + this.storageDescriptor = storageDescriptor; + return this; + } + public TableExternalCatalogTableOptions build() { + final var _resultValue = new TableExternalCatalogTableOptions(); + _resultValue.connectionId = connectionId; + _resultValue.parameters = parameters; + _resultValue.storageDescriptor = storageDescriptor; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/outputs/TableExternalCatalogTableOptionsStorageDescriptor.java b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/outputs/TableExternalCatalogTableOptionsStorageDescriptor.java new file mode 100644 index 0000000000..1e87d75ff5 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/outputs/TableExternalCatalogTableOptionsStorageDescriptor.java @@ -0,0 +1,121 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.bigquery.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.gcp.bigquery.outputs.TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class TableExternalCatalogTableOptionsStorageDescriptor { + /** + * @return 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. + * + */ + private @Nullable String inputFormat; + /** + * @return 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. + * + */ + private @Nullable String locationUri; + /** + * @return 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. + * + */ + private @Nullable String outputFormat; + /** + * @return Serializer and deserializer information. + * + */ + private @Nullable TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo serdeInfo; + + private TableExternalCatalogTableOptionsStorageDescriptor() {} + /** + * @return 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 Optional inputFormat() { + return Optional.ofNullable(this.inputFormat); + } + /** + * @return 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 Optional locationUri() { + return Optional.ofNullable(this.locationUri); + } + /** + * @return 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 Optional outputFormat() { + return Optional.ofNullable(this.outputFormat); + } + /** + * @return Serializer and deserializer information. + * + */ + public Optional serdeInfo() { + return Optional.ofNullable(this.serdeInfo); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(TableExternalCatalogTableOptionsStorageDescriptor defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String inputFormat; + private @Nullable String locationUri; + private @Nullable String outputFormat; + private @Nullable TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo serdeInfo; + public Builder() {} + public Builder(TableExternalCatalogTableOptionsStorageDescriptor defaults) { + Objects.requireNonNull(defaults); + this.inputFormat = defaults.inputFormat; + this.locationUri = defaults.locationUri; + this.outputFormat = defaults.outputFormat; + this.serdeInfo = defaults.serdeInfo; + } + + @CustomType.Setter + public Builder inputFormat(@Nullable String inputFormat) { + + this.inputFormat = inputFormat; + return this; + } + @CustomType.Setter + public Builder locationUri(@Nullable String locationUri) { + + this.locationUri = locationUri; + return this; + } + @CustomType.Setter + public Builder outputFormat(@Nullable String outputFormat) { + + this.outputFormat = outputFormat; + return this; + } + @CustomType.Setter + public Builder serdeInfo(@Nullable TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo serdeInfo) { + + this.serdeInfo = serdeInfo; + return this; + } + public TableExternalCatalogTableOptionsStorageDescriptor build() { + final var _resultValue = new TableExternalCatalogTableOptionsStorageDescriptor(); + _resultValue.inputFormat = inputFormat; + _resultValue.locationUri = locationUri; + _resultValue.outputFormat = outputFormat; + _resultValue.serdeInfo = serdeInfo; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/outputs/TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo.java b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/outputs/TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo.java new file mode 100644 index 0000000000..916c6fbe02 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/outputs/TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo.java @@ -0,0 +1,103 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.bigquery.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo { + /** + * @return Name of the SerDe. The maximum length is 256 characters. + * + */ + private @Nullable String name; + /** + * @return Key-value pairs that define the initialization parameters for the serialization library. Maximum size 10 Kib. + * + */ + private @Nullable Map parameters; + /** + * @return 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. + * + */ + private String serializationLibrary; + + private TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo() {} + /** + * @return Name of the SerDe. The maximum length is 256 characters. + * + */ + public Optional name() { + return Optional.ofNullable(this.name); + } + /** + * @return Key-value pairs that define the initialization parameters for the serialization library. Maximum size 10 Kib. + * + */ + public Map parameters() { + return this.parameters == null ? Map.of() : this.parameters; + } + /** + * @return 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 String serializationLibrary() { + return this.serializationLibrary; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String name; + private @Nullable Map parameters; + private String serializationLibrary; + public Builder() {} + public Builder(TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo defaults) { + Objects.requireNonNull(defaults); + this.name = defaults.name; + this.parameters = defaults.parameters; + this.serializationLibrary = defaults.serializationLibrary; + } + + @CustomType.Setter + public Builder name(@Nullable String name) { + + this.name = name; + return this; + } + @CustomType.Setter + public Builder parameters(@Nullable Map parameters) { + + this.parameters = parameters; + return this; + } + @CustomType.Setter + public Builder serializationLibrary(String serializationLibrary) { + if (serializationLibrary == null) { + throw new MissingRequiredPropertyException("TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo", "serializationLibrary"); + } + this.serializationLibrary = serializationLibrary; + return this; + } + public TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo build() { + final var _resultValue = new TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo(); + _resultValue.name = name; + _resultValue.parameters = parameters; + _resultValue.serializationLibrary = serializationLibrary; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/chronicle/Watchlist.java b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/Watchlist.java new file mode 100644 index 0000000000..c3ca74d207 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/Watchlist.java @@ -0,0 +1,349 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.chronicle; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import com.pulumi.gcp.Utilities; +import com.pulumi.gcp.chronicle.WatchlistArgs; +import com.pulumi.gcp.chronicle.inputs.WatchlistState; +import com.pulumi.gcp.chronicle.outputs.WatchlistEntityCount; +import com.pulumi.gcp.chronicle.outputs.WatchlistEntityPopulationMechanism; +import com.pulumi.gcp.chronicle.outputs.WatchlistWatchlistUserPreferences; +import java.lang.Double; +import java.lang.String; +import java.util.List; +import java.util.Optional; +import javax.annotation.Nullable; + +/** + * ## Example Usage + * + * ### Chronicle Watchlist Basic + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.chronicle.Watchlist;
+ * import com.pulumi.gcp.chronicle.WatchlistArgs;
+ * import com.pulumi.gcp.chronicle.inputs.WatchlistEntityPopulationMechanismArgs;
+ * import com.pulumi.gcp.chronicle.inputs.WatchlistEntityPopulationMechanismManualArgs;
+ * import com.pulumi.gcp.chronicle.inputs.WatchlistWatchlistUserPreferencesArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var example = new Watchlist("example", WatchlistArgs.builder()
+ *             .location("us")
+ *             .instance("00000000-0000-0000-0000-000000000000")
+ *             .watchlistId("watchlist-name")
+ *             .description("watchlist-description")
+ *             .displayName("watchlist-name")
+ *             .multiplyingFactor(1)
+ *             .entityPopulationMechanism(WatchlistEntityPopulationMechanismArgs.builder()
+ *                 .manual()
+ *                 .build())
+ *             .watchlistUserPreferences(WatchlistWatchlistUserPreferencesArgs.builder()
+ *                 .pinned(true)
+ *                 .build())
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * + * ## 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}} + * ``` + * + */ +@ResourceType(type="gcp:chronicle/watchlist:Watchlist") +public class Watchlist extends com.pulumi.resources.CustomResource { + /** + * Output only. Time the watchlist was created. + * + */ + @Export(name="createTime", refs={String.class}, tree="[0]") + private Output createTime; + + /** + * @return Output only. Time the watchlist was created. + * + */ + public Output createTime() { + return this.createTime; + } + /** + * Optional. Description of the watchlist. + * + */ + @Export(name="description", refs={String.class}, tree="[0]") + private Output description; + + /** + * @return Optional. Description of the watchlist. + * + */ + public Output> description() { + return Codegen.optional(this.description); + } + /** + * 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). + * + */ + @Export(name="displayName", refs={String.class}, tree="[0]") + private Output displayName; + + /** + * @return 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). + * + */ + public Output displayName() { + return this.displayName; + } + /** + * Count of different types of entities in the watchlist. + * Structure is documented below. + * + */ + @Export(name="entityCounts", refs={List.class,WatchlistEntityCount.class}, tree="[0,1]") + private Output> entityCounts; + + /** + * @return Count of different types of entities in the watchlist. + * Structure is documented below. + * + */ + public Output> entityCounts() { + return this.entityCounts; + } + /** + * Mechanism to populate entities in the watchlist. + * Structure is documented below. + * + */ + @Export(name="entityPopulationMechanism", refs={WatchlistEntityPopulationMechanism.class}, tree="[0]") + private Output entityPopulationMechanism; + + /** + * @return Mechanism to populate entities in the watchlist. + * Structure is documented below. + * + */ + public Output entityPopulationMechanism() { + return this.entityPopulationMechanism; + } + /** + * The unique identifier for the Chronicle instance, which is the same as the customer ID. + * + */ + @Export(name="instance", refs={String.class}, tree="[0]") + private Output instance; + + /** + * @return The unique identifier for the Chronicle instance, which is the same as the customer ID. + * + */ + public Output instance() { + return this.instance; + } + /** + * The location of the resource. This is the geographical region where the Chronicle instance resides, such as "us" or "europe-west2". + * + */ + @Export(name="location", refs={String.class}, tree="[0]") + private Output location; + + /** + * @return The location of the resource. This is the geographical region where the Chronicle instance resides, such as "us" or "europe-west2". + * + */ + public Output location() { + return this.location; + } + /** + * Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified. + * + */ + @Export(name="multiplyingFactor", refs={Double.class}, tree="[0]") + private Output multiplyingFactor; + + /** + * @return Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified. + * + */ + public Output> multiplyingFactor() { + return Codegen.optional(this.multiplyingFactor); + } + /** + * 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} + * + */ + @Export(name="name", refs={String.class}, tree="[0]") + private Output name; + + /** + * @return 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} + * + */ + public Output name() { + return this.name; + } + @Export(name="project", refs={String.class}, tree="[0]") + private Output project; + + public Output project() { + return this.project; + } + /** + * Output only. Time the watchlist was last updated. + * + */ + @Export(name="updateTime", refs={String.class}, tree="[0]") + private Output updateTime; + + /** + * @return Output only. Time the watchlist was last updated. + * + */ + public Output updateTime() { + return this.updateTime; + } + /** + * 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-/. + * + */ + @Export(name="watchlistId", refs={String.class}, tree="[0]") + private Output watchlistId; + + /** + * @return 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-/. + * + */ + public Output watchlistId() { + return this.watchlistId; + } + /** + * A collection of user preferences for watchlist UI configuration. + * + */ + @Export(name="watchlistUserPreferences", refs={WatchlistWatchlistUserPreferences.class}, tree="[0]") + private Output watchlistUserPreferences; + + /** + * @return A collection of user preferences for watchlist UI configuration. + * + */ + public Output watchlistUserPreferences() { + return this.watchlistUserPreferences; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public Watchlist(java.lang.String name) { + this(name, WatchlistArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public Watchlist(java.lang.String name, WatchlistArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public Watchlist(java.lang.String name, WatchlistArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("gcp:chronicle/watchlist:Watchlist", name, makeArgs(args, options), makeResourceOptions(options, Codegen.empty()), false); + } + + private Watchlist(java.lang.String name, Output id, @Nullable WatchlistState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("gcp:chronicle/watchlist:Watchlist", name, state, makeResourceOptions(options, id), false); + } + + private static WatchlistArgs makeArgs(WatchlistArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + if (options != null && options.getUrn().isPresent()) { + return null; + } + return args == null ? WatchlistArgs.Empty : args; + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static Watchlist get(java.lang.String name, Output id, @Nullable WatchlistState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new Watchlist(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/chronicle/WatchlistArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/WatchlistArgs.java new file mode 100644 index 0000000000..201aa91ebb --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/WatchlistArgs.java @@ -0,0 +1,402 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.chronicle; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.chronicle.inputs.WatchlistEntityPopulationMechanismArgs; +import com.pulumi.gcp.chronicle.inputs.WatchlistWatchlistUserPreferencesArgs; +import java.lang.Double; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class WatchlistArgs extends com.pulumi.resources.ResourceArgs { + + public static final WatchlistArgs Empty = new WatchlistArgs(); + + /** + * Optional. Description of the watchlist. + * + */ + @Import(name="description") + private @Nullable Output description; + + /** + * @return Optional. Description of the watchlist. + * + */ + public Optional> description() { + return Optional.ofNullable(this.description); + } + + /** + * 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). + * + */ + @Import(name="displayName", required=true) + private Output displayName; + + /** + * @return 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). + * + */ + public Output displayName() { + return this.displayName; + } + + /** + * Mechanism to populate entities in the watchlist. + * Structure is documented below. + * + */ + @Import(name="entityPopulationMechanism", required=true) + private Output entityPopulationMechanism; + + /** + * @return Mechanism to populate entities in the watchlist. + * Structure is documented below. + * + */ + public Output entityPopulationMechanism() { + return this.entityPopulationMechanism; + } + + /** + * The unique identifier for the Chronicle instance, which is the same as the customer ID. + * + */ + @Import(name="instance", required=true) + private Output instance; + + /** + * @return The unique identifier for the Chronicle instance, which is the same as the customer ID. + * + */ + public Output instance() { + return this.instance; + } + + /** + * The location of the resource. This is the geographical region where the Chronicle instance resides, such as "us" or "europe-west2". + * + */ + @Import(name="location", required=true) + private Output location; + + /** + * @return The location of the resource. This is the geographical region where the Chronicle instance resides, such as "us" or "europe-west2". + * + */ + public Output location() { + return this.location; + } + + /** + * Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified. + * + */ + @Import(name="multiplyingFactor") + private @Nullable Output multiplyingFactor; + + /** + * @return Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified. + * + */ + public Optional> multiplyingFactor() { + return Optional.ofNullable(this.multiplyingFactor); + } + + @Import(name="project") + private @Nullable Output project; + + public Optional> project() { + return Optional.ofNullable(this.project); + } + + /** + * 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-/. + * + */ + @Import(name="watchlistId", required=true) + private Output watchlistId; + + /** + * @return 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-/. + * + */ + public Output watchlistId() { + return this.watchlistId; + } + + /** + * A collection of user preferences for watchlist UI configuration. + * + */ + @Import(name="watchlistUserPreferences") + private @Nullable Output watchlistUserPreferences; + + /** + * @return A collection of user preferences for watchlist UI configuration. + * + */ + public Optional> watchlistUserPreferences() { + return Optional.ofNullable(this.watchlistUserPreferences); + } + + private WatchlistArgs() {} + + private WatchlistArgs(WatchlistArgs $) { + this.description = $.description; + this.displayName = $.displayName; + this.entityPopulationMechanism = $.entityPopulationMechanism; + this.instance = $.instance; + this.location = $.location; + this.multiplyingFactor = $.multiplyingFactor; + this.project = $.project; + this.watchlistId = $.watchlistId; + this.watchlistUserPreferences = $.watchlistUserPreferences; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(WatchlistArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private WatchlistArgs $; + + public Builder() { + $ = new WatchlistArgs(); + } + + public Builder(WatchlistArgs defaults) { + $ = new WatchlistArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param description Optional. Description of the watchlist. + * + * @return builder + * + */ + public Builder description(@Nullable Output description) { + $.description = description; + return this; + } + + /** + * @param description Optional. Description of the watchlist. + * + * @return builder + * + */ + public Builder description(String description) { + return description(Output.of(description)); + } + + /** + * @param displayName 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). + * + * @return builder + * + */ + public Builder displayName(Output displayName) { + $.displayName = displayName; + return this; + } + + /** + * @param displayName 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). + * + * @return builder + * + */ + public Builder displayName(String displayName) { + return displayName(Output.of(displayName)); + } + + /** + * @param entityPopulationMechanism Mechanism to populate entities in the watchlist. + * Structure is documented below. + * + * @return builder + * + */ + public Builder entityPopulationMechanism(Output entityPopulationMechanism) { + $.entityPopulationMechanism = entityPopulationMechanism; + return this; + } + + /** + * @param entityPopulationMechanism Mechanism to populate entities in the watchlist. + * Structure is documented below. + * + * @return builder + * + */ + public Builder entityPopulationMechanism(WatchlistEntityPopulationMechanismArgs entityPopulationMechanism) { + return entityPopulationMechanism(Output.of(entityPopulationMechanism)); + } + + /** + * @param instance The unique identifier for the Chronicle instance, which is the same as the customer ID. + * + * @return builder + * + */ + public Builder instance(Output instance) { + $.instance = instance; + return this; + } + + /** + * @param instance The unique identifier for the Chronicle instance, which is the same as the customer ID. + * + * @return builder + * + */ + public Builder instance(String instance) { + return instance(Output.of(instance)); + } + + /** + * @param location The location of the resource. This is the geographical region where the Chronicle instance resides, such as "us" or "europe-west2". + * + * @return builder + * + */ + public Builder location(Output location) { + $.location = location; + return this; + } + + /** + * @param location The location of the resource. This is the geographical region where the Chronicle instance resides, such as "us" or "europe-west2". + * + * @return builder + * + */ + public Builder location(String location) { + return location(Output.of(location)); + } + + /** + * @param multiplyingFactor Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified. + * + * @return builder + * + */ + public Builder multiplyingFactor(@Nullable Output multiplyingFactor) { + $.multiplyingFactor = multiplyingFactor; + return this; + } + + /** + * @param multiplyingFactor Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified. + * + * @return builder + * + */ + public Builder multiplyingFactor(Double multiplyingFactor) { + return multiplyingFactor(Output.of(multiplyingFactor)); + } + + public Builder project(@Nullable Output project) { + $.project = project; + return this; + } + + public Builder project(String project) { + return project(Output.of(project)); + } + + /** + * @param watchlistId 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-/. + * + * @return builder + * + */ + public Builder watchlistId(Output watchlistId) { + $.watchlistId = watchlistId; + return this; + } + + /** + * @param watchlistId 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-/. + * + * @return builder + * + */ + public Builder watchlistId(String watchlistId) { + return watchlistId(Output.of(watchlistId)); + } + + /** + * @param watchlistUserPreferences A collection of user preferences for watchlist UI configuration. + * + * @return builder + * + */ + public Builder watchlistUserPreferences(@Nullable Output watchlistUserPreferences) { + $.watchlistUserPreferences = watchlistUserPreferences; + return this; + } + + /** + * @param watchlistUserPreferences A collection of user preferences for watchlist UI configuration. + * + * @return builder + * + */ + public Builder watchlistUserPreferences(WatchlistWatchlistUserPreferencesArgs watchlistUserPreferences) { + return watchlistUserPreferences(Output.of(watchlistUserPreferences)); + } + + public WatchlistArgs build() { + if ($.displayName == null) { + throw new MissingRequiredPropertyException("WatchlistArgs", "displayName"); + } + if ($.entityPopulationMechanism == null) { + throw new MissingRequiredPropertyException("WatchlistArgs", "entityPopulationMechanism"); + } + if ($.instance == null) { + throw new MissingRequiredPropertyException("WatchlistArgs", "instance"); + } + if ($.location == null) { + throw new MissingRequiredPropertyException("WatchlistArgs", "location"); + } + if ($.watchlistId == null) { + throw new MissingRequiredPropertyException("WatchlistArgs", "watchlistId"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/WatchlistEntityCountArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/WatchlistEntityCountArgs.java new file mode 100644 index 0000000000..ce544c6cb1 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/WatchlistEntityCountArgs.java @@ -0,0 +1,128 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.chronicle.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Integer; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class WatchlistEntityCountArgs extends com.pulumi.resources.ResourceArgs { + + public static final WatchlistEntityCountArgs Empty = new WatchlistEntityCountArgs(); + + /** + * (Output) + * Output only. Count of asset type entities in the watchlist. + * + */ + @Import(name="asset") + private @Nullable Output asset; + + /** + * @return (Output) + * Output only. Count of asset type entities in the watchlist. + * + */ + public Optional> asset() { + return Optional.ofNullable(this.asset); + } + + /** + * (Output) + * Output only. Count of user type entities in the watchlist. + * + */ + @Import(name="user") + private @Nullable Output user; + + /** + * @return (Output) + * Output only. Count of user type entities in the watchlist. + * + */ + public Optional> user() { + return Optional.ofNullable(this.user); + } + + private WatchlistEntityCountArgs() {} + + private WatchlistEntityCountArgs(WatchlistEntityCountArgs $) { + this.asset = $.asset; + this.user = $.user; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(WatchlistEntityCountArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private WatchlistEntityCountArgs $; + + public Builder() { + $ = new WatchlistEntityCountArgs(); + } + + public Builder(WatchlistEntityCountArgs defaults) { + $ = new WatchlistEntityCountArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param asset (Output) + * Output only. Count of asset type entities in the watchlist. + * + * @return builder + * + */ + public Builder asset(@Nullable Output asset) { + $.asset = asset; + return this; + } + + /** + * @param asset (Output) + * Output only. Count of asset type entities in the watchlist. + * + * @return builder + * + */ + public Builder asset(Integer asset) { + return asset(Output.of(asset)); + } + + /** + * @param user (Output) + * Output only. Count of user type entities in the watchlist. + * + * @return builder + * + */ + public Builder user(@Nullable Output user) { + $.user = user; + return this; + } + + /** + * @param user (Output) + * Output only. Count of user type entities in the watchlist. + * + * @return builder + * + */ + public Builder user(Integer user) { + return user(Output.of(user)); + } + + public WatchlistEntityCountArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/WatchlistEntityPopulationMechanismArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/WatchlistEntityPopulationMechanismArgs.java new file mode 100644 index 0000000000..ad56e26165 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/WatchlistEntityPopulationMechanismArgs.java @@ -0,0 +1,91 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.chronicle.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.chronicle.inputs.WatchlistEntityPopulationMechanismManualArgs; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class WatchlistEntityPopulationMechanismArgs extends com.pulumi.resources.ResourceArgs { + + public static final WatchlistEntityPopulationMechanismArgs Empty = new WatchlistEntityPopulationMechanismArgs(); + + /** + * Entities are added manually. + * + * *** + * + */ + @Import(name="manual") + private @Nullable Output manual; + + /** + * @return Entities are added manually. + * + * *** + * + */ + public Optional> manual() { + return Optional.ofNullable(this.manual); + } + + private WatchlistEntityPopulationMechanismArgs() {} + + private WatchlistEntityPopulationMechanismArgs(WatchlistEntityPopulationMechanismArgs $) { + this.manual = $.manual; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(WatchlistEntityPopulationMechanismArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private WatchlistEntityPopulationMechanismArgs $; + + public Builder() { + $ = new WatchlistEntityPopulationMechanismArgs(); + } + + public Builder(WatchlistEntityPopulationMechanismArgs defaults) { + $ = new WatchlistEntityPopulationMechanismArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param manual Entities are added manually. + * + * *** + * + * @return builder + * + */ + public Builder manual(@Nullable Output manual) { + $.manual = manual; + return this; + } + + /** + * @param manual Entities are added manually. + * + * *** + * + * @return builder + * + */ + public Builder manual(WatchlistEntityPopulationMechanismManualArgs manual) { + return manual(Output.of(manual)); + } + + public WatchlistEntityPopulationMechanismArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/WatchlistEntityPopulationMechanismManualArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/WatchlistEntityPopulationMechanismManualArgs.java new file mode 100644 index 0000000000..dbf308011d --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/WatchlistEntityPopulationMechanismManualArgs.java @@ -0,0 +1,28 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.chronicle.inputs; + + + + +public final class WatchlistEntityPopulationMechanismManualArgs extends com.pulumi.resources.ResourceArgs { + + public static final WatchlistEntityPopulationMechanismManualArgs Empty = new WatchlistEntityPopulationMechanismManualArgs(); + + public static Builder builder() { + return new Builder(); + } + + public static final class Builder { + private WatchlistEntityPopulationMechanismManualArgs $; + + public Builder() { + $ = new WatchlistEntityPopulationMechanismManualArgs(); + } + public WatchlistEntityPopulationMechanismManualArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/WatchlistState.java b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/WatchlistState.java new file mode 100644 index 0000000000..d6c589d3e6 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/WatchlistState.java @@ -0,0 +1,559 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.chronicle.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.chronicle.inputs.WatchlistEntityCountArgs; +import com.pulumi.gcp.chronicle.inputs.WatchlistEntityPopulationMechanismArgs; +import com.pulumi.gcp.chronicle.inputs.WatchlistWatchlistUserPreferencesArgs; +import java.lang.Double; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class WatchlistState extends com.pulumi.resources.ResourceArgs { + + public static final WatchlistState Empty = new WatchlistState(); + + /** + * Output only. Time the watchlist was created. + * + */ + @Import(name="createTime") + private @Nullable Output createTime; + + /** + * @return Output only. Time the watchlist was created. + * + */ + public Optional> createTime() { + return Optional.ofNullable(this.createTime); + } + + /** + * Optional. Description of the watchlist. + * + */ + @Import(name="description") + private @Nullable Output description; + + /** + * @return Optional. Description of the watchlist. + * + */ + public Optional> description() { + return Optional.ofNullable(this.description); + } + + /** + * 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). + * + */ + @Import(name="displayName") + private @Nullable Output displayName; + + /** + * @return 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). + * + */ + public Optional> displayName() { + return Optional.ofNullable(this.displayName); + } + + /** + * Count of different types of entities in the watchlist. + * Structure is documented below. + * + */ + @Import(name="entityCounts") + private @Nullable Output> entityCounts; + + /** + * @return Count of different types of entities in the watchlist. + * Structure is documented below. + * + */ + public Optional>> entityCounts() { + return Optional.ofNullable(this.entityCounts); + } + + /** + * Mechanism to populate entities in the watchlist. + * Structure is documented below. + * + */ + @Import(name="entityPopulationMechanism") + private @Nullable Output entityPopulationMechanism; + + /** + * @return Mechanism to populate entities in the watchlist. + * Structure is documented below. + * + */ + public Optional> entityPopulationMechanism() { + return Optional.ofNullable(this.entityPopulationMechanism); + } + + /** + * The unique identifier for the Chronicle instance, which is the same as the customer ID. + * + */ + @Import(name="instance") + private @Nullable Output instance; + + /** + * @return The unique identifier for the Chronicle instance, which is the same as the customer ID. + * + */ + public Optional> instance() { + return Optional.ofNullable(this.instance); + } + + /** + * The location of the resource. This is the geographical region where the Chronicle instance resides, such as "us" or "europe-west2". + * + */ + @Import(name="location") + private @Nullable Output location; + + /** + * @return The location of the resource. This is the geographical region where the Chronicle instance resides, such as "us" or "europe-west2". + * + */ + public Optional> location() { + return Optional.ofNullable(this.location); + } + + /** + * Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified. + * + */ + @Import(name="multiplyingFactor") + private @Nullable Output multiplyingFactor; + + /** + * @return Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified. + * + */ + public Optional> multiplyingFactor() { + return Optional.ofNullable(this.multiplyingFactor); + } + + /** + * 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} + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return 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} + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + @Import(name="project") + private @Nullable Output project; + + public Optional> project() { + return Optional.ofNullable(this.project); + } + + /** + * Output only. Time the watchlist was last updated. + * + */ + @Import(name="updateTime") + private @Nullable Output updateTime; + + /** + * @return Output only. Time the watchlist was last updated. + * + */ + public Optional> updateTime() { + return Optional.ofNullable(this.updateTime); + } + + /** + * 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-/. + * + */ + @Import(name="watchlistId") + private @Nullable Output watchlistId; + + /** + * @return 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-/. + * + */ + public Optional> watchlistId() { + return Optional.ofNullable(this.watchlistId); + } + + /** + * A collection of user preferences for watchlist UI configuration. + * + */ + @Import(name="watchlistUserPreferences") + private @Nullable Output watchlistUserPreferences; + + /** + * @return A collection of user preferences for watchlist UI configuration. + * + */ + public Optional> watchlistUserPreferences() { + return Optional.ofNullable(this.watchlistUserPreferences); + } + + private WatchlistState() {} + + private WatchlistState(WatchlistState $) { + this.createTime = $.createTime; + this.description = $.description; + this.displayName = $.displayName; + this.entityCounts = $.entityCounts; + this.entityPopulationMechanism = $.entityPopulationMechanism; + this.instance = $.instance; + this.location = $.location; + this.multiplyingFactor = $.multiplyingFactor; + this.name = $.name; + this.project = $.project; + this.updateTime = $.updateTime; + this.watchlistId = $.watchlistId; + this.watchlistUserPreferences = $.watchlistUserPreferences; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(WatchlistState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private WatchlistState $; + + public Builder() { + $ = new WatchlistState(); + } + + public Builder(WatchlistState defaults) { + $ = new WatchlistState(Objects.requireNonNull(defaults)); + } + + /** + * @param createTime Output only. Time the watchlist was created. + * + * @return builder + * + */ + public Builder createTime(@Nullable Output createTime) { + $.createTime = createTime; + return this; + } + + /** + * @param createTime Output only. Time the watchlist was created. + * + * @return builder + * + */ + public Builder createTime(String createTime) { + return createTime(Output.of(createTime)); + } + + /** + * @param description Optional. Description of the watchlist. + * + * @return builder + * + */ + public Builder description(@Nullable Output description) { + $.description = description; + return this; + } + + /** + * @param description Optional. Description of the watchlist. + * + * @return builder + * + */ + public Builder description(String description) { + return description(Output.of(description)); + } + + /** + * @param displayName 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). + * + * @return builder + * + */ + public Builder displayName(@Nullable Output displayName) { + $.displayName = displayName; + return this; + } + + /** + * @param displayName 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). + * + * @return builder + * + */ + public Builder displayName(String displayName) { + return displayName(Output.of(displayName)); + } + + /** + * @param entityCounts Count of different types of entities in the watchlist. + * Structure is documented below. + * + * @return builder + * + */ + public Builder entityCounts(@Nullable Output> entityCounts) { + $.entityCounts = entityCounts; + return this; + } + + /** + * @param entityCounts Count of different types of entities in the watchlist. + * Structure is documented below. + * + * @return builder + * + */ + public Builder entityCounts(List entityCounts) { + return entityCounts(Output.of(entityCounts)); + } + + /** + * @param entityCounts Count of different types of entities in the watchlist. + * Structure is documented below. + * + * @return builder + * + */ + public Builder entityCounts(WatchlistEntityCountArgs... entityCounts) { + return entityCounts(List.of(entityCounts)); + } + + /** + * @param entityPopulationMechanism Mechanism to populate entities in the watchlist. + * Structure is documented below. + * + * @return builder + * + */ + public Builder entityPopulationMechanism(@Nullable Output entityPopulationMechanism) { + $.entityPopulationMechanism = entityPopulationMechanism; + return this; + } + + /** + * @param entityPopulationMechanism Mechanism to populate entities in the watchlist. + * Structure is documented below. + * + * @return builder + * + */ + public Builder entityPopulationMechanism(WatchlistEntityPopulationMechanismArgs entityPopulationMechanism) { + return entityPopulationMechanism(Output.of(entityPopulationMechanism)); + } + + /** + * @param instance The unique identifier for the Chronicle instance, which is the same as the customer ID. + * + * @return builder + * + */ + public Builder instance(@Nullable Output instance) { + $.instance = instance; + return this; + } + + /** + * @param instance The unique identifier for the Chronicle instance, which is the same as the customer ID. + * + * @return builder + * + */ + public Builder instance(String instance) { + return instance(Output.of(instance)); + } + + /** + * @param location The location of the resource. This is the geographical region where the Chronicle instance resides, such as "us" or "europe-west2". + * + * @return builder + * + */ + public Builder location(@Nullable Output location) { + $.location = location; + return this; + } + + /** + * @param location The location of the resource. This is the geographical region where the Chronicle instance resides, such as "us" or "europe-west2". + * + * @return builder + * + */ + public Builder location(String location) { + return location(Output.of(location)); + } + + /** + * @param multiplyingFactor Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified. + * + * @return builder + * + */ + public Builder multiplyingFactor(@Nullable Output multiplyingFactor) { + $.multiplyingFactor = multiplyingFactor; + return this; + } + + /** + * @param multiplyingFactor Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified. + * + * @return builder + * + */ + public Builder multiplyingFactor(Double multiplyingFactor) { + return multiplyingFactor(Output.of(multiplyingFactor)); + } + + /** + * @param name 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} + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name 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} + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + public Builder project(@Nullable Output project) { + $.project = project; + return this; + } + + public Builder project(String project) { + return project(Output.of(project)); + } + + /** + * @param updateTime Output only. Time the watchlist was last updated. + * + * @return builder + * + */ + public Builder updateTime(@Nullable Output updateTime) { + $.updateTime = updateTime; + return this; + } + + /** + * @param updateTime Output only. Time the watchlist was last updated. + * + * @return builder + * + */ + public Builder updateTime(String updateTime) { + return updateTime(Output.of(updateTime)); + } + + /** + * @param watchlistId 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-/. + * + * @return builder + * + */ + public Builder watchlistId(@Nullable Output watchlistId) { + $.watchlistId = watchlistId; + return this; + } + + /** + * @param watchlistId 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-/. + * + * @return builder + * + */ + public Builder watchlistId(String watchlistId) { + return watchlistId(Output.of(watchlistId)); + } + + /** + * @param watchlistUserPreferences A collection of user preferences for watchlist UI configuration. + * + * @return builder + * + */ + public Builder watchlistUserPreferences(@Nullable Output watchlistUserPreferences) { + $.watchlistUserPreferences = watchlistUserPreferences; + return this; + } + + /** + * @param watchlistUserPreferences A collection of user preferences for watchlist UI configuration. + * + * @return builder + * + */ + public Builder watchlistUserPreferences(WatchlistWatchlistUserPreferencesArgs watchlistUserPreferences) { + return watchlistUserPreferences(Output.of(watchlistUserPreferences)); + } + + public WatchlistState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/WatchlistWatchlistUserPreferencesArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/WatchlistWatchlistUserPreferencesArgs.java new file mode 100644 index 0000000000..2526b88eb8 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/WatchlistWatchlistUserPreferencesArgs.java @@ -0,0 +1,83 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.chronicle.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class WatchlistWatchlistUserPreferencesArgs extends com.pulumi.resources.ResourceArgs { + + public static final WatchlistWatchlistUserPreferencesArgs Empty = new WatchlistWatchlistUserPreferencesArgs(); + + /** + * Optional. Whether the watchlist is pinned on the dashboard. + * + */ + @Import(name="pinned") + private @Nullable Output pinned; + + /** + * @return Optional. Whether the watchlist is pinned on the dashboard. + * + */ + public Optional> pinned() { + return Optional.ofNullable(this.pinned); + } + + private WatchlistWatchlistUserPreferencesArgs() {} + + private WatchlistWatchlistUserPreferencesArgs(WatchlistWatchlistUserPreferencesArgs $) { + this.pinned = $.pinned; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(WatchlistWatchlistUserPreferencesArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private WatchlistWatchlistUserPreferencesArgs $; + + public Builder() { + $ = new WatchlistWatchlistUserPreferencesArgs(); + } + + public Builder(WatchlistWatchlistUserPreferencesArgs defaults) { + $ = new WatchlistWatchlistUserPreferencesArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param pinned Optional. Whether the watchlist is pinned on the dashboard. + * + * @return builder + * + */ + public Builder pinned(@Nullable Output pinned) { + $.pinned = pinned; + return this; + } + + /** + * @param pinned Optional. Whether the watchlist is pinned on the dashboard. + * + * @return builder + * + */ + public Builder pinned(Boolean pinned) { + return pinned(Output.of(pinned)); + } + + public WatchlistWatchlistUserPreferencesArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/chronicle/outputs/WatchlistEntityCount.java b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/outputs/WatchlistEntityCount.java new file mode 100644 index 0000000000..5f6440a98c --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/outputs/WatchlistEntityCount.java @@ -0,0 +1,82 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.chronicle.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.Integer; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class WatchlistEntityCount { + /** + * @return (Output) + * Output only. Count of asset type entities in the watchlist. + * + */ + private @Nullable Integer asset; + /** + * @return (Output) + * Output only. Count of user type entities in the watchlist. + * + */ + private @Nullable Integer user; + + private WatchlistEntityCount() {} + /** + * @return (Output) + * Output only. Count of asset type entities in the watchlist. + * + */ + public Optional asset() { + return Optional.ofNullable(this.asset); + } + /** + * @return (Output) + * Output only. Count of user type entities in the watchlist. + * + */ + public Optional user() { + return Optional.ofNullable(this.user); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(WatchlistEntityCount defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable Integer asset; + private @Nullable Integer user; + public Builder() {} + public Builder(WatchlistEntityCount defaults) { + Objects.requireNonNull(defaults); + this.asset = defaults.asset; + this.user = defaults.user; + } + + @CustomType.Setter + public Builder asset(@Nullable Integer asset) { + + this.asset = asset; + return this; + } + @CustomType.Setter + public Builder user(@Nullable Integer user) { + + this.user = user; + return this; + } + public WatchlistEntityCount build() { + final var _resultValue = new WatchlistEntityCount(); + _resultValue.asset = asset; + _resultValue.user = user; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/chronicle/outputs/WatchlistEntityPopulationMechanism.java b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/outputs/WatchlistEntityPopulationMechanism.java new file mode 100644 index 0000000000..f7b8865ea7 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/outputs/WatchlistEntityPopulationMechanism.java @@ -0,0 +1,61 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.chronicle.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.gcp.chronicle.outputs.WatchlistEntityPopulationMechanismManual; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class WatchlistEntityPopulationMechanism { + /** + * @return Entities are added manually. + * + * *** + * + */ + private @Nullable WatchlistEntityPopulationMechanismManual manual; + + private WatchlistEntityPopulationMechanism() {} + /** + * @return Entities are added manually. + * + * *** + * + */ + public Optional manual() { + return Optional.ofNullable(this.manual); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(WatchlistEntityPopulationMechanism defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable WatchlistEntityPopulationMechanismManual manual; + public Builder() {} + public Builder(WatchlistEntityPopulationMechanism defaults) { + Objects.requireNonNull(defaults); + this.manual = defaults.manual; + } + + @CustomType.Setter + public Builder manual(@Nullable WatchlistEntityPopulationMechanismManual manual) { + + this.manual = manual; + return this; + } + public WatchlistEntityPopulationMechanism build() { + final var _resultValue = new WatchlistEntityPopulationMechanism(); + _resultValue.manual = manual; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/chronicle/outputs/WatchlistEntityPopulationMechanismManual.java b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/outputs/WatchlistEntityPopulationMechanismManual.java new file mode 100644 index 0000000000..37fe807115 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/outputs/WatchlistEntityPopulationMechanismManual.java @@ -0,0 +1,32 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.chronicle.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.util.Objects; + +@CustomType +public final class WatchlistEntityPopulationMechanismManual { + private WatchlistEntityPopulationMechanismManual() {} + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(WatchlistEntityPopulationMechanismManual defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + public Builder() {} + public Builder(WatchlistEntityPopulationMechanismManual defaults) { + Objects.requireNonNull(defaults); + } + + public WatchlistEntityPopulationMechanismManual build() { + final var _resultValue = new WatchlistEntityPopulationMechanismManual(); + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/chronicle/outputs/WatchlistWatchlistUserPreferences.java b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/outputs/WatchlistWatchlistUserPreferences.java new file mode 100644 index 0000000000..4f28113f17 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/outputs/WatchlistWatchlistUserPreferences.java @@ -0,0 +1,57 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.chronicle.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.Boolean; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class WatchlistWatchlistUserPreferences { + /** + * @return Optional. Whether the watchlist is pinned on the dashboard. + * + */ + private @Nullable Boolean pinned; + + private WatchlistWatchlistUserPreferences() {} + /** + * @return Optional. Whether the watchlist is pinned on the dashboard. + * + */ + public Optional pinned() { + return Optional.ofNullable(this.pinned); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(WatchlistWatchlistUserPreferences defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable Boolean pinned; + public Builder() {} + public Builder(WatchlistWatchlistUserPreferences defaults) { + Objects.requireNonNull(defaults); + this.pinned = defaults.pinned; + } + + @CustomType.Setter + public Builder pinned(@Nullable Boolean pinned) { + + this.pinned = pinned; + return this; + } + public WatchlistWatchlistUserPreferences build() { + final var _resultValue = new WatchlistWatchlistUserPreferences(); + _resultValue.pinned = pinned; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/cloudrunv2/inputs/ServiceTemplateScalingArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/cloudrunv2/inputs/ServiceTemplateScalingArgs.java index 468aa848e7..bf1405d8be 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/cloudrunv2/inputs/ServiceTemplateScalingArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/cloudrunv2/inputs/ServiceTemplateScalingArgs.java @@ -16,14 +16,16 @@ public final class ServiceTemplateScalingArgs extends com.pulumi.resources.Resou public static final ServiceTemplateScalingArgs Empty = new ServiceTemplateScalingArgs(); /** - * 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. * */ @Import(name="maxInstanceCount") private @Nullable Output maxInstanceCount; /** - * @return Maximum number of serving instances that this resource should have. + * @return 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 Optional> maxInstanceCount() { @@ -71,7 +73,8 @@ public Builder(ServiceTemplateScalingArgs defaults) { } /** - * @param maxInstanceCount Maximum number of serving instances that this resource should have. + * @param maxInstanceCount 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. * * @return builder * @@ -82,7 +85,8 @@ public Builder maxInstanceCount(@Nullable Output maxInstanceCount) { } /** - * @param maxInstanceCount Maximum number of serving instances that this resource should have. + * @param maxInstanceCount 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. * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/cloudrunv2/outputs/GetServiceTemplateScaling.java b/sdk/java/src/main/java/com/pulumi/gcp/cloudrunv2/outputs/GetServiceTemplateScaling.java index f001d0ed82..f988863ed6 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/cloudrunv2/outputs/GetServiceTemplateScaling.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/cloudrunv2/outputs/GetServiceTemplateScaling.java @@ -11,26 +11,28 @@ @CustomType public final class GetServiceTemplateScaling { /** - * @return Maximum number of serving instances that this resource should have. + * @return 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. * */ private Integer maxInstanceCount; /** - * @return Minimum number of serving instances that this resource should have. + * @return Minimum number of serving instances that this resource should have. Defaults to 0. Must not be greater than maximum instance count. * */ private Integer minInstanceCount; private GetServiceTemplateScaling() {} /** - * @return Maximum number of serving instances that this resource should have. + * @return 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 Integer maxInstanceCount() { return this.maxInstanceCount; } /** - * @return Minimum number of serving instances that this resource should have. + * @return Minimum number of serving instances that this resource should have. Defaults to 0. Must not be greater than maximum instance count. * */ public Integer minInstanceCount() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/cloudrunv2/outputs/ServiceTemplateScaling.java b/sdk/java/src/main/java/com/pulumi/gcp/cloudrunv2/outputs/ServiceTemplateScaling.java index 6672879221..8da05fdea4 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/cloudrunv2/outputs/ServiceTemplateScaling.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/cloudrunv2/outputs/ServiceTemplateScaling.java @@ -12,7 +12,8 @@ @CustomType public final class ServiceTemplateScaling { /** - * @return Maximum number of serving instances that this resource should have. + * @return 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. * */ private @Nullable Integer maxInstanceCount; @@ -24,7 +25,8 @@ public final class ServiceTemplateScaling { private ServiceTemplateScaling() {} /** - * @return Maximum number of serving instances that this resource should have. + * @return 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 Optional maxInstanceCount() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/composer/inputs/EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/composer/inputs/EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs.java new file mode 100644 index 0000000000..bfc86e4ebf --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/composer/inputs/EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs.java @@ -0,0 +1,121 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.composer.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Integer; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs extends com.pulumi.resources.ResourceArgs { + + public static final EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs Empty = new EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs(); + + /** + * How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer. + * + */ + @Import(name="retentionDays") + private @Nullable Output retentionDays; + + /** + * @return How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer. + * + */ + public Optional> retentionDays() { + return Optional.ofNullable(this.retentionDays); + } + + /** + * Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer. + * + */ + @Import(name="retentionMode") + private @Nullable Output retentionMode; + + /** + * @return Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer. + * + */ + public Optional> retentionMode() { + return Optional.ofNullable(this.retentionMode); + } + + private EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs() {} + + private EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs(EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs $) { + this.retentionDays = $.retentionDays; + this.retentionMode = $.retentionMode; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs $; + + public Builder() { + $ = new EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs(); + } + + public Builder(EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs defaults) { + $ = new EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param retentionDays How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer. + * + * @return builder + * + */ + public Builder retentionDays(@Nullable Output retentionDays) { + $.retentionDays = retentionDays; + return this; + } + + /** + * @param retentionDays How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer. + * + * @return builder + * + */ + public Builder retentionDays(Integer retentionDays) { + return retentionDays(Output.of(retentionDays)); + } + + /** + * @param retentionMode Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer. + * + * @return builder + * + */ + public Builder retentionMode(@Nullable Output retentionMode) { + $.retentionMode = retentionMode; + return this; + } + + /** + * @param retentionMode Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer. + * + * @return builder + * + */ + public Builder retentionMode(String retentionMode) { + return retentionMode(Output.of(retentionMode)); + } + + public EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/composer/inputs/EnvironmentConfigDataRetentionConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/composer/inputs/EnvironmentConfigDataRetentionConfigArgs.java index 4ad6055501..aa8bc1cc44 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/composer/inputs/EnvironmentConfigDataRetentionConfigArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/composer/inputs/EnvironmentConfigDataRetentionConfigArgs.java @@ -5,34 +5,52 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; -import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.composer.inputs.EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs; import com.pulumi.gcp.composer.inputs.EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArgs; import java.util.List; import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; public final class EnvironmentConfigDataRetentionConfigArgs extends com.pulumi.resources.ResourceArgs { public static final EnvironmentConfigDataRetentionConfigArgs Empty = new EnvironmentConfigDataRetentionConfigArgs(); + /** + * Optional. The configuration setting for database retention. + * + */ + @Import(name="airflowMetadataRetentionConfigs") + private @Nullable Output> airflowMetadataRetentionConfigs; + + /** + * @return Optional. The configuration setting for database retention. + * + */ + public Optional>> airflowMetadataRetentionConfigs() { + return Optional.ofNullable(this.airflowMetadataRetentionConfigs); + } + /** * Optional. The configuration setting for Task Logs. * */ - @Import(name="taskLogsRetentionConfigs", required=true) - private Output> taskLogsRetentionConfigs; + @Import(name="taskLogsRetentionConfigs") + private @Nullable Output> taskLogsRetentionConfigs; /** * @return Optional. The configuration setting for Task Logs. * */ - public Output> taskLogsRetentionConfigs() { - return this.taskLogsRetentionConfigs; + public Optional>> taskLogsRetentionConfigs() { + return Optional.ofNullable(this.taskLogsRetentionConfigs); } private EnvironmentConfigDataRetentionConfigArgs() {} private EnvironmentConfigDataRetentionConfigArgs(EnvironmentConfigDataRetentionConfigArgs $) { + this.airflowMetadataRetentionConfigs = $.airflowMetadataRetentionConfigs; this.taskLogsRetentionConfigs = $.taskLogsRetentionConfigs; } @@ -54,13 +72,44 @@ public Builder(EnvironmentConfigDataRetentionConfigArgs defaults) { $ = new EnvironmentConfigDataRetentionConfigArgs(Objects.requireNonNull(defaults)); } + /** + * @param airflowMetadataRetentionConfigs Optional. The configuration setting for database retention. + * + * @return builder + * + */ + public Builder airflowMetadataRetentionConfigs(@Nullable Output> airflowMetadataRetentionConfigs) { + $.airflowMetadataRetentionConfigs = airflowMetadataRetentionConfigs; + return this; + } + + /** + * @param airflowMetadataRetentionConfigs Optional. The configuration setting for database retention. + * + * @return builder + * + */ + public Builder airflowMetadataRetentionConfigs(List airflowMetadataRetentionConfigs) { + return airflowMetadataRetentionConfigs(Output.of(airflowMetadataRetentionConfigs)); + } + + /** + * @param airflowMetadataRetentionConfigs Optional. The configuration setting for database retention. + * + * @return builder + * + */ + public Builder airflowMetadataRetentionConfigs(EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs... airflowMetadataRetentionConfigs) { + return airflowMetadataRetentionConfigs(List.of(airflowMetadataRetentionConfigs)); + } + /** * @param taskLogsRetentionConfigs Optional. The configuration setting for Task Logs. * * @return builder * */ - public Builder taskLogsRetentionConfigs(Output> taskLogsRetentionConfigs) { + public Builder taskLogsRetentionConfigs(@Nullable Output> taskLogsRetentionConfigs) { $.taskLogsRetentionConfigs = taskLogsRetentionConfigs; return this; } @@ -86,9 +135,6 @@ public Builder taskLogsRetentionConfigs(EnvironmentConfigDataRetentionConfigTask } public EnvironmentConfigDataRetentionConfigArgs build() { - if ($.taskLogsRetentionConfigs == null) { - throw new MissingRequiredPropertyException("EnvironmentConfigDataRetentionConfigArgs", "taskLogsRetentionConfigs"); - } return $; } } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/composer/outputs/EnvironmentConfigDataRetentionConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/composer/outputs/EnvironmentConfigDataRetentionConfig.java index ed2370d663..5bb967c067 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/composer/outputs/EnvironmentConfigDataRetentionConfig.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/composer/outputs/EnvironmentConfigDataRetentionConfig.java @@ -4,26 +4,39 @@ package com.pulumi.gcp.composer.outputs; import com.pulumi.core.annotations.CustomType; -import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.composer.outputs.EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig; import com.pulumi.gcp.composer.outputs.EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig; import java.util.List; import java.util.Objects; +import javax.annotation.Nullable; @CustomType public final class EnvironmentConfigDataRetentionConfig { + /** + * @return Optional. The configuration setting for database retention. + * + */ + private @Nullable List airflowMetadataRetentionConfigs; /** * @return Optional. The configuration setting for Task Logs. * */ - private List taskLogsRetentionConfigs; + private @Nullable List taskLogsRetentionConfigs; private EnvironmentConfigDataRetentionConfig() {} + /** + * @return Optional. The configuration setting for database retention. + * + */ + public List airflowMetadataRetentionConfigs() { + return this.airflowMetadataRetentionConfigs == null ? List.of() : this.airflowMetadataRetentionConfigs; + } /** * @return Optional. The configuration setting for Task Logs. * */ public List taskLogsRetentionConfigs() { - return this.taskLogsRetentionConfigs; + return this.taskLogsRetentionConfigs == null ? List.of() : this.taskLogsRetentionConfigs; } public static Builder builder() { @@ -35,18 +48,27 @@ public static Builder builder(EnvironmentConfigDataRetentionConfig defaults) { } @CustomType.Builder public static final class Builder { - private List taskLogsRetentionConfigs; + private @Nullable List airflowMetadataRetentionConfigs; + private @Nullable List taskLogsRetentionConfigs; public Builder() {} public Builder(EnvironmentConfigDataRetentionConfig defaults) { Objects.requireNonNull(defaults); + this.airflowMetadataRetentionConfigs = defaults.airflowMetadataRetentionConfigs; this.taskLogsRetentionConfigs = defaults.taskLogsRetentionConfigs; } @CustomType.Setter - public Builder taskLogsRetentionConfigs(List taskLogsRetentionConfigs) { - if (taskLogsRetentionConfigs == null) { - throw new MissingRequiredPropertyException("EnvironmentConfigDataRetentionConfig", "taskLogsRetentionConfigs"); - } + public Builder airflowMetadataRetentionConfigs(@Nullable List airflowMetadataRetentionConfigs) { + + this.airflowMetadataRetentionConfigs = airflowMetadataRetentionConfigs; + return this; + } + public Builder airflowMetadataRetentionConfigs(EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig... airflowMetadataRetentionConfigs) { + return airflowMetadataRetentionConfigs(List.of(airflowMetadataRetentionConfigs)); + } + @CustomType.Setter + public Builder taskLogsRetentionConfigs(@Nullable List taskLogsRetentionConfigs) { + this.taskLogsRetentionConfigs = taskLogsRetentionConfigs; return this; } @@ -55,6 +77,7 @@ public Builder taskLogsRetentionConfigs(EnvironmentConfigDataRetentionConfigTask } public EnvironmentConfigDataRetentionConfig build() { final var _resultValue = new EnvironmentConfigDataRetentionConfig(); + _resultValue.airflowMetadataRetentionConfigs = airflowMetadataRetentionConfigs; _resultValue.taskLogsRetentionConfigs = taskLogsRetentionConfigs; return _resultValue; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/composer/outputs/EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/composer/outputs/EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig.java new file mode 100644 index 0000000000..b26bd8c864 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/composer/outputs/EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig.java @@ -0,0 +1,79 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.composer.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.Integer; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig { + /** + * @return How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer. + * + */ + private @Nullable Integer retentionDays; + /** + * @return Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer. + * + */ + private @Nullable String retentionMode; + + private EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig() {} + /** + * @return How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer. + * + */ + public Optional retentionDays() { + return Optional.ofNullable(this.retentionDays); + } + /** + * @return Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer. + * + */ + public Optional retentionMode() { + return Optional.ofNullable(this.retentionMode); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable Integer retentionDays; + private @Nullable String retentionMode; + public Builder() {} + public Builder(EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig defaults) { + Objects.requireNonNull(defaults); + this.retentionDays = defaults.retentionDays; + this.retentionMode = defaults.retentionMode; + } + + @CustomType.Setter + public Builder retentionDays(@Nullable Integer retentionDays) { + + this.retentionDays = retentionDays; + return this; + } + @CustomType.Setter + public Builder retentionMode(@Nullable String retentionMode) { + + this.retentionMode = retentionMode; + return this; + } + public EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig build() { + final var _resultValue = new EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig(); + _resultValue.retentionDays = retentionDays; + _resultValue.retentionMode = retentionMode; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/composer/outputs/GetEnvironmentConfigDataRetentionConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/composer/outputs/GetEnvironmentConfigDataRetentionConfig.java index 45d921dfe8..20a1d92bfe 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/composer/outputs/GetEnvironmentConfigDataRetentionConfig.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/composer/outputs/GetEnvironmentConfigDataRetentionConfig.java @@ -5,12 +5,18 @@ import com.pulumi.core.annotations.CustomType; import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.composer.outputs.GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig; import com.pulumi.gcp.composer.outputs.GetEnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig; import java.util.List; import java.util.Objects; @CustomType public final class GetEnvironmentConfigDataRetentionConfig { + /** + * @return Optional. The configuration setting for database retention. + * + */ + private List airflowMetadataRetentionConfigs; /** * @return Optional. The configuration setting for Task Logs. * @@ -18,6 +24,13 @@ public final class GetEnvironmentConfigDataRetentionConfig { private List taskLogsRetentionConfigs; private GetEnvironmentConfigDataRetentionConfig() {} + /** + * @return Optional. The configuration setting for database retention. + * + */ + public List airflowMetadataRetentionConfigs() { + return this.airflowMetadataRetentionConfigs; + } /** * @return Optional. The configuration setting for Task Logs. * @@ -35,13 +48,26 @@ public static Builder builder(GetEnvironmentConfigDataRetentionConfig defaults) } @CustomType.Builder public static final class Builder { + private List airflowMetadataRetentionConfigs; private List taskLogsRetentionConfigs; public Builder() {} public Builder(GetEnvironmentConfigDataRetentionConfig defaults) { Objects.requireNonNull(defaults); + this.airflowMetadataRetentionConfigs = defaults.airflowMetadataRetentionConfigs; this.taskLogsRetentionConfigs = defaults.taskLogsRetentionConfigs; } + @CustomType.Setter + public Builder airflowMetadataRetentionConfigs(List airflowMetadataRetentionConfigs) { + if (airflowMetadataRetentionConfigs == null) { + throw new MissingRequiredPropertyException("GetEnvironmentConfigDataRetentionConfig", "airflowMetadataRetentionConfigs"); + } + this.airflowMetadataRetentionConfigs = airflowMetadataRetentionConfigs; + return this; + } + public Builder airflowMetadataRetentionConfigs(GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig... airflowMetadataRetentionConfigs) { + return airflowMetadataRetentionConfigs(List.of(airflowMetadataRetentionConfigs)); + } @CustomType.Setter public Builder taskLogsRetentionConfigs(List taskLogsRetentionConfigs) { if (taskLogsRetentionConfigs == null) { @@ -55,6 +81,7 @@ public Builder taskLogsRetentionConfigs(GetEnvironmentConfigDataRetentionConfigT } public GetEnvironmentConfigDataRetentionConfig build() { final var _resultValue = new GetEnvironmentConfigDataRetentionConfig(); + _resultValue.airflowMetadataRetentionConfigs = airflowMetadataRetentionConfigs; _resultValue.taskLogsRetentionConfigs = taskLogsRetentionConfigs; return _resultValue; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/composer/outputs/GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/composer/outputs/GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig.java new file mode 100644 index 0000000000..88d43ec7ec --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/composer/outputs/GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig.java @@ -0,0 +1,82 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.composer.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Integer; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig { + /** + * @return How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer. + * + */ + private Integer retentionDays; + /** + * @return Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer. + * + */ + private String retentionMode; + + private GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig() {} + /** + * @return How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer. + * + */ + public Integer retentionDays() { + return this.retentionDays; + } + /** + * @return Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer. + * + */ + public String retentionMode() { + return this.retentionMode; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private Integer retentionDays; + private String retentionMode; + public Builder() {} + public Builder(GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig defaults) { + Objects.requireNonNull(defaults); + this.retentionDays = defaults.retentionDays; + this.retentionMode = defaults.retentionMode; + } + + @CustomType.Setter + public Builder retentionDays(Integer retentionDays) { + if (retentionDays == null) { + throw new MissingRequiredPropertyException("GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig", "retentionDays"); + } + this.retentionDays = retentionDays; + return this; + } + @CustomType.Setter + public Builder retentionMode(String retentionMode) { + if (retentionMode == null) { + throw new MissingRequiredPropertyException("GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig", "retentionMode"); + } + this.retentionMode = retentionMode; + return this; + } + public GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig build() { + final var _resultValue = new GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig(); + _resultValue.retentionDays = retentionDays; + _resultValue.retentionMode = retentionMode; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/FirewallPolicyAssociation.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/FirewallPolicyAssociation.java index b9eb7f99df..f3d331965b 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/compute/FirewallPolicyAssociation.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/FirewallPolicyAssociation.java @@ -15,11 +15,16 @@ /** * 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 + * * <!--Start PulumiCodeChooser --> *
  * {@code
@@ -28,6 +33,8 @@
  * import com.pulumi.Context;
  * import com.pulumi.Pulumi;
  * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.organizations.Folder;
+ * import com.pulumi.gcp.organizations.FolderArgs;
  * import com.pulumi.gcp.compute.FirewallPolicy;
  * import com.pulumi.gcp.compute.FirewallPolicyArgs;
  * import com.pulumi.gcp.compute.FirewallPolicyAssociation;
@@ -45,14 +52,20 @@
  *     }
  * 
  *     public static void stack(Context ctx) {
- *         var default_ = new FirewallPolicy("default", FirewallPolicyArgs.builder()
- *             .parent("organizations/12345")
+ *         var folder = new Folder("folder", FolderArgs.builder()
+ *             .displayName("my-folder")
+ *             .parent("organizations/123456789")
+ *             .deletionProtection(false)
+ *             .build());
+ * 
+ *         var policy = new FirewallPolicy("policy", FirewallPolicyArgs.builder()
+ *             .parent("organizations/123456789")
  *             .shortName("my-policy")
  *             .description("Example Resource")
  *             .build());
  * 
- *         var defaultFirewallPolicyAssociation = new FirewallPolicyAssociation("defaultFirewallPolicyAssociation", FirewallPolicyAssociationArgs.builder()
- *             .firewallPolicy(default_.id())
+ *         var default_ = new FirewallPolicyAssociation("default", FirewallPolicyAssociationArgs.builder()
+ *             .firewallPolicy(policy.id())
  *             .attachmentTarget(folder.name())
  *             .name("my-association")
  *             .build());
@@ -99,14 +112,18 @@ public Output attachmentTarget() {
         return this.attachmentTarget;
     }
     /**
-     * The firewall policy ID of the association.
+     * The firewall policy of the resource.
+     * 
+     * ***
      * 
      */
     @Export(name="firewallPolicy", refs={String.class}, tree="[0]")
     private Output firewallPolicy;
 
     /**
-     * @return The firewall policy ID of the association.
+     * @return The firewall policy of the resource.
+     * 
+     * ***
      * 
      */
     public Output firewallPolicy() {
@@ -115,8 +132,6 @@ public Output firewallPolicy() {
     /**
      * The name for an association.
      * 
-     * ***
-     * 
      */
     @Export(name="name", refs={String.class}, tree="[0]")
     private Output name;
@@ -124,8 +139,6 @@ public Output firewallPolicy() {
     /**
      * @return The name for an association.
      * 
-     * ***
-     * 
      */
     public Output name() {
         return this.name;
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/FirewallPolicyAssociationArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/FirewallPolicyAssociationArgs.java
index e326a3aab9..6e1379560e 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/FirewallPolicyAssociationArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/FirewallPolicyAssociationArgs.java
@@ -32,14 +32,18 @@ public Output attachmentTarget() {
     }
 
     /**
-     * The firewall policy ID of the association.
+     * The firewall policy of the resource.
+     * 
+     * ***
      * 
      */
     @Import(name="firewallPolicy", required=true)
     private Output firewallPolicy;
 
     /**
-     * @return The firewall policy ID of the association.
+     * @return The firewall policy of the resource.
+     * 
+     * ***
      * 
      */
     public Output firewallPolicy() {
@@ -49,8 +53,6 @@ public Output firewallPolicy() {
     /**
      * The name for an association.
      * 
-     * ***
-     * 
      */
     @Import(name="name")
     private @Nullable Output name;
@@ -58,8 +60,6 @@ public Output firewallPolicy() {
     /**
      * @return The name for an association.
      * 
-     * ***
-     * 
      */
     public Optional> name() {
         return Optional.ofNullable(this.name);
@@ -113,7 +113,9 @@ public Builder attachmentTarget(String attachmentTarget) {
         }
 
         /**
-         * @param firewallPolicy The firewall policy ID of the association.
+         * @param firewallPolicy The firewall policy of the resource.
+         * 
+         * ***
          * 
          * @return builder
          * 
@@ -124,7 +126,9 @@ public Builder firewallPolicy(Output firewallPolicy) {
         }
 
         /**
-         * @param firewallPolicy The firewall policy ID of the association.
+         * @param firewallPolicy The firewall policy of the resource.
+         * 
+         * ***
          * 
          * @return builder
          * 
@@ -136,8 +140,6 @@ public Builder firewallPolicy(String firewallPolicy) {
         /**
          * @param name The name for an association.
          * 
-         * ***
-         * 
          * @return builder
          * 
          */
@@ -149,8 +151,6 @@ public Builder name(@Nullable Output name) {
         /**
          * @param name The name for an association.
          * 
-         * ***
-         * 
          * @return builder
          * 
          */
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/Network.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/Network.java
index 75bcc234f8..e8a9b794b1 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/Network.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/Network.java
@@ -501,6 +501,20 @@ public Output name() {
     public Output> networkFirewallPolicyEnforcementOrder() {
         return Codegen.optional(this.networkFirewallPolicyEnforcementOrder);
     }
+    /**
+     * The unique identifier for the resource. This identifier is defined by the server.
+     * 
+     */
+    @Export(name="networkId", refs={String.class}, tree="[0]")
+    private Output networkId;
+
+    /**
+     * @return The unique identifier for the resource. This identifier is defined by the server.
+     * 
+     */
+    public Output networkId() {
+        return this.networkId;
+    }
     /**
      * 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
@@ -524,14 +538,20 @@ public Output> networkProfile() {
         return Codegen.optional(this.networkProfile);
     }
     /**
+     * (Deprecated)
      * The unique identifier for the resource. This identifier is defined by the server.
      * 
+     * @deprecated
+     * `numeric_id` is deprecated and will be removed in a future major release. Use `network_id` instead.
+     * 
      */
+    @Deprecated /* `numeric_id` is deprecated and will be removed in a future major release. Use `network_id` instead. */
     @Export(name="numericId", refs={String.class}, tree="[0]")
     private Output numericId;
 
     /**
-     * @return The unique identifier for the resource. This identifier is defined by the server.
+     * @return (Deprecated)
+     * The unique identifier for the resource. This identifier is defined by the server.
      * 
      */
     public Output numericId() {
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionNetworkEndpointGroup.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionNetworkEndpointGroup.java
index d8079a166e..5f14c5510b 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionNetworkEndpointGroup.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionNetworkEndpointGroup.java
@@ -798,15 +798,15 @@ public Output project() {
      * 
      */
     @Export(name="pscData", refs={RegionNetworkEndpointGroupPscData.class}, tree="[0]")
-    private Output pscData;
+    private Output pscData;
 
     /**
      * @return This field is only used for PSC NEGs.
      * Structure is documented below.
      * 
      */
-    public Output> pscData() {
-        return Codegen.optional(this.pscData);
+    public Output pscData() {
+        return this.pscData;
     }
     /**
      * This field is only used for PSC and INTERNET NEGs.
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/ResizeRequest.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/ResizeRequest.java
index 2c5d8d1500..2773eb27e0 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/ResizeRequest.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/ResizeRequest.java
@@ -23,13 +23,13 @@
  * 
  * 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
  * 
@@ -199,9 +199,7 @@ public Output> description() {
         return Codegen.optional(this.description);
     }
     /**
-     * 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.
      * 
      * ***
      * 
@@ -210,9 +208,7 @@ public Output> description() {
     private Output instanceGroupManager;
 
     /**
-     * @return 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
+     * @return The reference of the instance group manager this ResizeRequest is a part of.
      * 
      * ***
      * 
@@ -281,21 +277,21 @@ public Output resizeBy() {
         return this.resizeBy;
     }
     /**
-     * [Output only] Current state of the request.
+     * Current state of the request.
      * 
      */
     @Export(name="state", refs={String.class}, tree="[0]")
     private Output state;
 
     /**
-     * @return [Output only] Current state of the request.
+     * @return Current state of the request.
      * 
      */
     public Output state() {
         return this.state;
     }
     /**
-     * [Output only] Status of the request.
+     * Status of the request.
      * Structure is documented below.
      * 
      */
@@ -303,7 +299,7 @@ public Output state() {
     private Output> statuses;
 
     /**
-     * @return [Output only] Status of the request.
+     * @return Status of the request.
      * Structure is documented below.
      * 
      */
@@ -311,14 +307,14 @@ public Output> statuses() {
         return this.statuses;
     }
     /**
-     * Name of the compute zone scoping this request. Name should conform to RFC1035.
+     * The reference of the compute zone scoping this request.
      * 
      */
     @Export(name="zone", refs={String.class}, tree="[0]")
     private Output zone;
 
     /**
-     * @return Name of the compute zone scoping this request. Name should conform to RFC1035.
+     * @return The reference of the compute zone scoping this request.
      * 
      */
     public Output zone() {
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/ResizeRequestArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/ResizeRequestArgs.java
index 14e218c096..352d57197f 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/ResizeRequestArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/ResizeRequestArgs.java
@@ -34,9 +34,7 @@ public Optional> description() {
     }
 
     /**
-     * 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.
      * 
      * ***
      * 
@@ -45,9 +43,7 @@ public Optional> description() {
     private Output instanceGroupManager;
 
     /**
-     * @return 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
+     * @return The reference of the instance group manager this ResizeRequest is a part of.
      * 
      * ***
      * 
@@ -121,14 +117,14 @@ public Output resizeBy() {
     }
 
     /**
-     * Name of the compute zone scoping this request. Name should conform to RFC1035.
+     * The reference of the compute zone scoping this request.
      * 
      */
     @Import(name="zone", required=true)
     private Output zone;
 
     /**
-     * @return Name of the compute zone scoping this request. Name should conform to RFC1035.
+     * @return The reference of the compute zone scoping this request.
      * 
      */
     public Output zone() {
@@ -187,9 +183,7 @@ public Builder description(String description) {
         }
 
         /**
-         * @param instanceGroupManager 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
+         * @param instanceGroupManager The reference of the instance group manager this ResizeRequest is a part of.
          * 
          * ***
          * 
@@ -202,9 +196,7 @@ public Builder instanceGroupManager(Output instanceGroupManager) {
         }
 
         /**
-         * @param instanceGroupManager 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
+         * @param instanceGroupManager The reference of the instance group manager this ResizeRequest is a part of.
          * 
          * ***
          * 
@@ -304,7 +296,7 @@ public Builder resizeBy(Integer resizeBy) {
         }
 
         /**
-         * @param zone Name of the compute zone scoping this request. Name should conform to RFC1035.
+         * @param zone The reference of the compute zone scoping this request.
          * 
          * @return builder
          * 
@@ -315,7 +307,7 @@ public Builder zone(Output zone) {
         }
 
         /**
-         * @param zone Name of the compute zone scoping this request. Name should conform to RFC1035.
+         * @param zone The reference of the compute zone scoping this request.
          * 
          * @return builder
          * 
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/FirewallPolicyAssociationState.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/FirewallPolicyAssociationState.java
index 01b995d1f0..79c5141f28 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/FirewallPolicyAssociationState.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/FirewallPolicyAssociationState.java
@@ -31,14 +31,18 @@ public Optional> attachmentTarget() {
     }
 
     /**
-     * The firewall policy ID of the association.
+     * The firewall policy of the resource.
+     * 
+     * ***
      * 
      */
     @Import(name="firewallPolicy")
     private @Nullable Output firewallPolicy;
 
     /**
-     * @return The firewall policy ID of the association.
+     * @return The firewall policy of the resource.
+     * 
+     * ***
      * 
      */
     public Optional> firewallPolicy() {
@@ -48,8 +52,6 @@ public Optional> firewallPolicy() {
     /**
      * The name for an association.
      * 
-     * ***
-     * 
      */
     @Import(name="name")
     private @Nullable Output name;
@@ -57,8 +59,6 @@ public Optional> firewallPolicy() {
     /**
      * @return The name for an association.
      * 
-     * ***
-     * 
      */
     public Optional> name() {
         return Optional.ofNullable(this.name);
@@ -128,7 +128,9 @@ public Builder attachmentTarget(String attachmentTarget) {
         }
 
         /**
-         * @param firewallPolicy The firewall policy ID of the association.
+         * @param firewallPolicy The firewall policy of the resource.
+         * 
+         * ***
          * 
          * @return builder
          * 
@@ -139,7 +141,9 @@ public Builder firewallPolicy(@Nullable Output firewallPolicy) {
         }
 
         /**
-         * @param firewallPolicy The firewall policy ID of the association.
+         * @param firewallPolicy The firewall policy of the resource.
+         * 
+         * ***
          * 
          * @return builder
          * 
@@ -151,8 +155,6 @@ public Builder firewallPolicy(String firewallPolicy) {
         /**
          * @param name The name for an association.
          * 
-         * ***
-         * 
          * @return builder
          * 
          */
@@ -164,8 +166,6 @@ public Builder name(@Nullable Output name) {
         /**
          * @param name The name for an association.
          * 
-         * ***
-         * 
          * @return builder
          * 
          */
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/InstanceBootDiskInitializeParamsArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/InstanceBootDiskInitializeParamsArgs.java
index 75bd472ee9..014d2551c7 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/InstanceBootDiskInitializeParamsArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/InstanceBootDiskInitializeParamsArgs.java
@@ -153,14 +153,14 @@ public Optional>> 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.
      * 
      */
     @Import(name="resourcePolicies")
     private @Nullable Output resourcePolicies;
 
     /**
-     * @return 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.
+     * @return 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 Optional> resourcePolicies() {
@@ -428,7 +428,7 @@ public Builder resourceManagerTags(Map resourceManagerTags) {
         }
 
         /**
-         * @param resourcePolicies 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.
+         * @param resourcePolicies 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.
          * 
          * @return builder
          * 
@@ -439,7 +439,7 @@ public Builder resourcePolicies(@Nullable Output resourcePolicies) {
         }
 
         /**
-         * @param resourcePolicies 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.
+         * @param resourcePolicies 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.
          * 
          * @return builder
          * 
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/InstanceFromMachineImageSchedulingArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/InstanceFromMachineImageSchedulingArgs.java
index de4e3fd7ae..c9e883d645 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/InstanceFromMachineImageSchedulingArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/InstanceFromMachineImageSchedulingArgs.java
@@ -37,6 +37,21 @@ public Optional> automaticRestart() {
         return Optional.ofNullable(this.automaticRestart);
     }
 
+    /**
+     * Specifies the availability domain, which this instance should be scheduled on.
+     * 
+     */
+    @Import(name="availabilityDomain")
+    private @Nullable Output availabilityDomain;
+
+    /**
+     * @return Specifies the availability domain, which this instance should be scheduled on.
+     * 
+     */
+    public Optional> availabilityDomain() {
+        return Optional.ofNullable(this.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.
      * 
@@ -204,6 +219,7 @@ private InstanceFromMachineImageSchedulingArgs() {}
 
     private InstanceFromMachineImageSchedulingArgs(InstanceFromMachineImageSchedulingArgs $) {
         this.automaticRestart = $.automaticRestart;
+        this.availabilityDomain = $.availabilityDomain;
         this.hostErrorTimeoutSeconds = $.hostErrorTimeoutSeconds;
         this.instanceTerminationAction = $.instanceTerminationAction;
         this.localSsdRecoveryTimeout = $.localSsdRecoveryTimeout;
@@ -256,6 +272,27 @@ public Builder automaticRestart(Boolean automaticRestart) {
             return automaticRestart(Output.of(automaticRestart));
         }
 
+        /**
+         * @param availabilityDomain Specifies the availability domain, which this instance should be scheduled on.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder availabilityDomain(@Nullable Output availabilityDomain) {
+            $.availabilityDomain = availabilityDomain;
+            return this;
+        }
+
+        /**
+         * @param availabilityDomain Specifies the availability domain, which this instance should be scheduled on.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder availabilityDomain(Integer availabilityDomain) {
+            return availabilityDomain(Output.of(availabilityDomain));
+        }
+
         /**
          * @param hostErrorTimeoutSeconds 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/java/src/main/java/com/pulumi/gcp/compute/inputs/InstanceFromTemplateSchedulingArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/InstanceFromTemplateSchedulingArgs.java
index 4f329e3d65..d90ba4a153 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/InstanceFromTemplateSchedulingArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/InstanceFromTemplateSchedulingArgs.java
@@ -37,6 +37,21 @@ public Optional> automaticRestart() {
         return Optional.ofNullable(this.automaticRestart);
     }
 
+    /**
+     * Specifies the availability domain, which this instance should be scheduled on.
+     * 
+     */
+    @Import(name="availabilityDomain")
+    private @Nullable Output availabilityDomain;
+
+    /**
+     * @return Specifies the availability domain, which this instance should be scheduled on.
+     * 
+     */
+    public Optional> availabilityDomain() {
+        return Optional.ofNullable(this.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.
      * 
@@ -204,6 +219,7 @@ private InstanceFromTemplateSchedulingArgs() {}
 
     private InstanceFromTemplateSchedulingArgs(InstanceFromTemplateSchedulingArgs $) {
         this.automaticRestart = $.automaticRestart;
+        this.availabilityDomain = $.availabilityDomain;
         this.hostErrorTimeoutSeconds = $.hostErrorTimeoutSeconds;
         this.instanceTerminationAction = $.instanceTerminationAction;
         this.localSsdRecoveryTimeout = $.localSsdRecoveryTimeout;
@@ -256,6 +272,27 @@ public Builder automaticRestart(Boolean automaticRestart) {
             return automaticRestart(Output.of(automaticRestart));
         }
 
+        /**
+         * @param availabilityDomain Specifies the availability domain, which this instance should be scheduled on.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder availabilityDomain(@Nullable Output availabilityDomain) {
+            $.availabilityDomain = availabilityDomain;
+            return this;
+        }
+
+        /**
+         * @param availabilityDomain Specifies the availability domain, which this instance should be scheduled on.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder availabilityDomain(Integer availabilityDomain) {
+            return availabilityDomain(Output.of(availabilityDomain));
+        }
+
         /**
          * @param hostErrorTimeoutSeconds 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/java/src/main/java/com/pulumi/gcp/compute/inputs/InstanceSchedulingArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/InstanceSchedulingArgs.java
index 41b740e5a5..5c098bc100 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/InstanceSchedulingArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/InstanceSchedulingArgs.java
@@ -41,6 +41,21 @@ public Optional> automaticRestart() {
         return Optional.ofNullable(this.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.
+     * 
+     */
+    @Import(name="availabilityDomain")
+    private @Nullable Output availabilityDomain;
+
+    /**
+     * @return 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 Optional> availabilityDomain() {
+        return Optional.ofNullable(this.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.
      * 
@@ -238,6 +253,7 @@ private InstanceSchedulingArgs() {}
 
     private InstanceSchedulingArgs(InstanceSchedulingArgs $) {
         this.automaticRestart = $.automaticRestart;
+        this.availabilityDomain = $.availabilityDomain;
         this.hostErrorTimeoutSeconds = $.hostErrorTimeoutSeconds;
         this.instanceTerminationAction = $.instanceTerminationAction;
         this.localSsdRecoveryTimeout = $.localSsdRecoveryTimeout;
@@ -294,6 +310,27 @@ public Builder automaticRestart(Boolean automaticRestart) {
             return automaticRestart(Output.of(automaticRestart));
         }
 
+        /**
+         * @param availabilityDomain 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.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder availabilityDomain(@Nullable Output availabilityDomain) {
+            $.availabilityDomain = availabilityDomain;
+            return this;
+        }
+
+        /**
+         * @param availabilityDomain 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.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder availabilityDomain(Integer availabilityDomain) {
+            return availabilityDomain(Output.of(availabilityDomain));
+        }
+
         /**
          * @param hostErrorTimeoutSeconds 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/java/src/main/java/com/pulumi/gcp/compute/inputs/InstanceTemplateSchedulingArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/InstanceTemplateSchedulingArgs.java
index 4df8205b4e..3044c3562a 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/InstanceTemplateSchedulingArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/InstanceTemplateSchedulingArgs.java
@@ -41,6 +41,21 @@ public Optional> automaticRestart() {
         return Optional.ofNullable(this.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.
+     * 
+     */
+    @Import(name="availabilityDomain")
+    private @Nullable Output availabilityDomain;
+
+    /**
+     * @return 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 Optional> availabilityDomain() {
+        return Optional.ofNullable(this.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.
      * 
@@ -236,6 +251,7 @@ private InstanceTemplateSchedulingArgs() {}
 
     private InstanceTemplateSchedulingArgs(InstanceTemplateSchedulingArgs $) {
         this.automaticRestart = $.automaticRestart;
+        this.availabilityDomain = $.availabilityDomain;
         this.hostErrorTimeoutSeconds = $.hostErrorTimeoutSeconds;
         this.instanceTerminationAction = $.instanceTerminationAction;
         this.localSsdRecoveryTimeouts = $.localSsdRecoveryTimeouts;
@@ -292,6 +308,27 @@ public Builder automaticRestart(Boolean automaticRestart) {
             return automaticRestart(Output.of(automaticRestart));
         }
 
+        /**
+         * @param availabilityDomain 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.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder availabilityDomain(@Nullable Output availabilityDomain) {
+            $.availabilityDomain = availabilityDomain;
+            return this;
+        }
+
+        /**
+         * @param availabilityDomain 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.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder availabilityDomain(Integer availabilityDomain) {
+            return availabilityDomain(Output.of(availabilityDomain));
+        }
+
         /**
          * @param hostErrorTimeoutSeconds 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/java/src/main/java/com/pulumi/gcp/compute/inputs/NetworkState.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/NetworkState.java
index 2bfb257272..2a09b5a494 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/NetworkState.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/NetworkState.java
@@ -255,6 +255,21 @@ public Optional> networkFirewallPolicyEnforcementOrder() {
         return Optional.ofNullable(this.networkFirewallPolicyEnforcementOrder);
     }
 
+    /**
+     * The unique identifier for the resource. This identifier is defined by the server.
+     * 
+     */
+    @Import(name="networkId")
+    private @Nullable Output networkId;
+
+    /**
+     * @return The unique identifier for the resource. This identifier is defined by the server.
+     * 
+     */
+    public Optional> networkId() {
+        return Optional.ofNullable(this.networkId);
+    }
+
     /**
      * 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,16 +294,26 @@ public Optional> networkProfile() {
     }
 
     /**
+     * (Deprecated)
      * The unique identifier for the resource. This identifier is defined by the server.
      * 
+     * @deprecated
+     * `numeric_id` is deprecated and will be removed in a future major release. Use `network_id` instead.
+     * 
      */
+    @Deprecated /* `numeric_id` is deprecated and will be removed in a future major release. Use `network_id` instead. */
     @Import(name="numericId")
     private @Nullable Output numericId;
 
     /**
-     * @return The unique identifier for the resource. This identifier is defined by the server.
+     * @return (Deprecated)
+     * The unique identifier for the resource. This identifier is defined by the server.
+     * 
+     * @deprecated
+     * `numeric_id` is deprecated and will be removed in a future major release. Use `network_id` instead.
      * 
      */
+    @Deprecated /* `numeric_id` is deprecated and will be removed in a future major release. Use `network_id` instead. */
     public Optional> numericId() {
         return Optional.ofNullable(this.numericId);
     }
@@ -365,6 +390,7 @@ private NetworkState(NetworkState $) {
         this.mtu = $.mtu;
         this.name = $.name;
         this.networkFirewallPolicyEnforcementOrder = $.networkFirewallPolicyEnforcementOrder;
+        this.networkId = $.networkId;
         this.networkProfile = $.networkProfile;
         this.numericId = $.numericId;
         this.project = $.project;
@@ -700,6 +726,27 @@ public Builder networkFirewallPolicyEnforcementOrder(String networkFirewallPolic
             return networkFirewallPolicyEnforcementOrder(Output.of(networkFirewallPolicyEnforcementOrder));
         }
 
+        /**
+         * @param networkId The unique identifier for the resource. This identifier is defined by the server.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder networkId(@Nullable Output networkId) {
+            $.networkId = networkId;
+            return this;
+        }
+
+        /**
+         * @param networkId The unique identifier for the resource. This identifier is defined by the server.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder networkId(String networkId) {
+            return networkId(Output.of(networkId));
+        }
+
         /**
          * @param networkProfile 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
@@ -730,22 +777,32 @@ public Builder networkProfile(String networkProfile) {
         }
 
         /**
-         * @param numericId The unique identifier for the resource. This identifier is defined by the server.
+         * @param numericId (Deprecated)
+         * The unique identifier for the resource. This identifier is defined by the server.
          * 
          * @return builder
          * 
+         * @deprecated
+         * `numeric_id` is deprecated and will be removed in a future major release. Use `network_id` instead.
+         * 
          */
+        @Deprecated /* `numeric_id` is deprecated and will be removed in a future major release. Use `network_id` instead. */
         public Builder numericId(@Nullable Output numericId) {
             $.numericId = numericId;
             return this;
         }
 
         /**
-         * @param numericId The unique identifier for the resource. This identifier is defined by the server.
+         * @param numericId (Deprecated)
+         * The unique identifier for the resource. This identifier is defined by the server.
          * 
          * @return builder
          * 
+         * @deprecated
+         * `numeric_id` is deprecated and will be removed in a future major release. Use `network_id` instead.
+         * 
          */
+        @Deprecated /* `numeric_id` is deprecated and will be removed in a future major release. Use `network_id` instead. */
         public Builder numericId(String numericId) {
             return numericId(Output.of(numericId));
         }
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionInstanceTemplateSchedulingArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionInstanceTemplateSchedulingArgs.java
index 327df2a612..bd4810b559 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionInstanceTemplateSchedulingArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionInstanceTemplateSchedulingArgs.java
@@ -41,6 +41,21 @@ public Optional> automaticRestart() {
         return Optional.ofNullable(this.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.
+     * 
+     */
+    @Import(name="availabilityDomain")
+    private @Nullable Output availabilityDomain;
+
+    /**
+     * @return 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 Optional> availabilityDomain() {
+        return Optional.ofNullable(this.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.
      * 
@@ -236,6 +251,7 @@ private RegionInstanceTemplateSchedulingArgs() {}
 
     private RegionInstanceTemplateSchedulingArgs(RegionInstanceTemplateSchedulingArgs $) {
         this.automaticRestart = $.automaticRestart;
+        this.availabilityDomain = $.availabilityDomain;
         this.hostErrorTimeoutSeconds = $.hostErrorTimeoutSeconds;
         this.instanceTerminationAction = $.instanceTerminationAction;
         this.localSsdRecoveryTimeouts = $.localSsdRecoveryTimeouts;
@@ -292,6 +308,27 @@ public Builder automaticRestart(Boolean automaticRestart) {
             return automaticRestart(Output.of(automaticRestart));
         }
 
+        /**
+         * @param availabilityDomain 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.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder availabilityDomain(@Nullable Output availabilityDomain) {
+            $.availabilityDomain = availabilityDomain;
+            return this;
+        }
+
+        /**
+         * @param availabilityDomain 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.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder availabilityDomain(Integer availabilityDomain) {
+            return availabilityDomain(Output.of(availabilityDomain));
+        }
+
         /**
          * @param hostErrorTimeoutSeconds 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/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestRequestedRunDurationArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestRequestedRunDurationArgs.java
index 92c7cf471b..ab75182fe5 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestRequestedRunDurationArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestRequestedRunDurationArgs.java
@@ -33,14 +33,14 @@ public Optional> 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.
      * 
      */
     @Import(name="seconds", required=true)
     private Output seconds;
 
     /**
-     * @return 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
+     * @return 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 Output seconds() {
@@ -94,7 +94,7 @@ public Builder nanos(Integer nanos) {
         }
 
         /**
-         * @param seconds 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
+         * @param seconds 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.
          * 
          * @return builder
          * 
@@ -105,7 +105,7 @@ public Builder seconds(Output seconds) {
         }
 
         /**
-         * @param seconds 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
+         * @param seconds 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.
          * 
          * @return builder
          * 
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestState.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestState.java
index 76ccaad10b..113c6a90f1 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestState.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestState.java
@@ -50,9 +50,7 @@ public Optional> description() {
     }
 
     /**
-     * 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.
      * 
      * ***
      * 
@@ -61,9 +59,7 @@ public Optional> description() {
     private @Nullable Output instanceGroupManager;
 
     /**
-     * @return 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
+     * @return The reference of the instance group manager this ResizeRequest is a part of.
      * 
      * ***
      * 
@@ -137,14 +133,14 @@ public Optional> resizeBy() {
     }
 
     /**
-     * [Output only] Current state of the request.
+     * Current state of the request.
      * 
      */
     @Import(name="state")
     private @Nullable Output state;
 
     /**
-     * @return [Output only] Current state of the request.
+     * @return Current state of the request.
      * 
      */
     public Optional> state() {
@@ -152,7 +148,7 @@ public Optional> state() {
     }
 
     /**
-     * [Output only] Status of the request.
+     * Status of the request.
      * Structure is documented below.
      * 
      */
@@ -160,7 +156,7 @@ public Optional> state() {
     private @Nullable Output> statuses;
 
     /**
-     * @return [Output only] Status of the request.
+     * @return Status of the request.
      * Structure is documented below.
      * 
      */
@@ -169,14 +165,14 @@ public Optional>> statuses() {
     }
 
     /**
-     * Name of the compute zone scoping this request. Name should conform to RFC1035.
+     * The reference of the compute zone scoping this request.
      * 
      */
     @Import(name="zone")
     private @Nullable Output zone;
 
     /**
-     * @return Name of the compute zone scoping this request. Name should conform to RFC1035.
+     * @return The reference of the compute zone scoping this request.
      * 
      */
     public Optional> zone() {
@@ -259,9 +255,7 @@ public Builder description(String description) {
         }
 
         /**
-         * @param instanceGroupManager 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
+         * @param instanceGroupManager The reference of the instance group manager this ResizeRequest is a part of.
          * 
          * ***
          * 
@@ -274,9 +268,7 @@ public Builder instanceGroupManager(@Nullable Output instanceGroupManage
         }
 
         /**
-         * @param instanceGroupManager 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
+         * @param instanceGroupManager The reference of the instance group manager this ResizeRequest is a part of.
          * 
          * ***
          * 
@@ -376,7 +368,7 @@ public Builder resizeBy(Integer resizeBy) {
         }
 
         /**
-         * @param state [Output only] Current state of the request.
+         * @param state Current state of the request.
          * 
          * @return builder
          * 
@@ -387,7 +379,7 @@ public Builder state(@Nullable Output state) {
         }
 
         /**
-         * @param state [Output only] Current state of the request.
+         * @param state Current state of the request.
          * 
          * @return builder
          * 
@@ -397,7 +389,7 @@ public Builder state(String state) {
         }
 
         /**
-         * @param statuses [Output only] Status of the request.
+         * @param statuses Status of the request.
          * Structure is documented below.
          * 
          * @return builder
@@ -409,7 +401,7 @@ public Builder statuses(@Nullable Output> statuses
         }
 
         /**
-         * @param statuses [Output only] Status of the request.
+         * @param statuses Status of the request.
          * Structure is documented below.
          * 
          * @return builder
@@ -420,7 +412,7 @@ public Builder statuses(List statuses) {
         }
 
         /**
-         * @param statuses [Output only] Status of the request.
+         * @param statuses Status of the request.
          * Structure is documented below.
          * 
          * @return builder
@@ -431,7 +423,7 @@ public Builder statuses(ResizeRequestStatusArgs... statuses) {
         }
 
         /**
-         * @param zone Name of the compute zone scoping this request. Name should conform to RFC1035.
+         * @param zone The reference of the compute zone scoping this request.
          * 
          * @return builder
          * 
@@ -442,7 +434,7 @@ public Builder zone(@Nullable Output zone) {
         }
 
         /**
-         * @param zone Name of the compute zone scoping this request. Name should conform to RFC1035.
+         * @param zone The reference of the compute zone scoping this request.
          * 
          * @return builder
          * 
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusArgs.java
index b2209bc156..1f3978e4ad 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusArgs.java
@@ -19,7 +19,7 @@ public final class ResizeRequestStatusArgs extends com.pulumi.resources.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.
      * 
      */
@@ -28,7 +28,7 @@ public final class ResizeRequestStatusArgs extends com.pulumi.resources.Resource
 
     /**
      * @return (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.
      * 
      */
@@ -38,7 +38,7 @@ public Optional>> 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.
      * 
      */
@@ -47,7 +47,7 @@ public Optional>> errors() {
 
     /**
      * @return (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.
      * 
      */
@@ -82,7 +82,7 @@ public Builder(ResizeRequestStatusArgs defaults) {
 
         /**
          * @param errors (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.
          * 
          * @return builder
@@ -95,7 +95,7 @@ public Builder errors(@Nullable Output> error
 
         /**
          * @param errors (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.
          * 
          * @return builder
@@ -107,7 +107,7 @@ public Builder errors(List errors) {
 
         /**
          * @param errors (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.
          * 
          * @return builder
@@ -119,7 +119,7 @@ public Builder errors(ResizeRequestStatusErrorArgs... errors) {
 
         /**
          * @param lastAttempts (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.
          * 
          * @return builder
@@ -132,7 +132,7 @@ public Builder lastAttempts(@Nullable Output lastAttempt
 
         /**
          * @param lastAttempts (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.
          * 
          * @return builder
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusErrorArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusErrorArgs.java
index 627244b700..7d0469bd93 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusErrorArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusErrorArgs.java
@@ -18,7 +18,7 @@ public final class ResizeRequestStatusErrorArgs extends com.pulumi.resources.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.
      * 
      */
@@ -27,7 +27,7 @@ public final class ResizeRequestStatusErrorArgs extends com.pulumi.resources.Res
 
     /**
      * @return (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.
      * 
      */
@@ -61,7 +61,7 @@ public Builder(ResizeRequestStatusErrorArgs defaults) {
 
         /**
          * @param errors (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.
          * 
          * @return builder
@@ -74,7 +74,7 @@ public Builder errors(@Nullable Output>
 
         /**
          * @param errors (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.
          * 
          * @return builder
@@ -86,7 +86,7 @@ public Builder errors(List errors) {
 
         /**
          * @param errors (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.
          * 
          * @return builder
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusErrorErrorArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusErrorErrorArgs.java
index 1015d6307b..826f5cff0b 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusErrorErrorArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusErrorErrorArgs.java
@@ -19,7 +19,7 @@ public final class ResizeRequestStatusErrorErrorArgs extends com.pulumi.resource
 
     /**
      * (Output)
-     * [Output Only] The error type identifier for this error.
+     * The error type identifier for this error.
      * 
      */
     @Import(name="code")
@@ -27,7 +27,7 @@ public final class ResizeRequestStatusErrorErrorArgs extends com.pulumi.resource
 
     /**
      * @return (Output)
-     * [Output Only] The error type identifier for this error.
+     * The error type identifier for this error.
      * 
      */
     public Optional> code() {
@@ -36,7 +36,7 @@ public Optional> 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.
      * 
      */
@@ -45,7 +45,7 @@ public Optional> code() {
 
     /**
      * @return (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.
      * 
      */
@@ -55,7 +55,7 @@ public Optional>> erro
 
     /**
      * (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.
      * 
      */
     @Import(name="location")
@@ -63,7 +63,7 @@ public Optional>> erro
 
     /**
      * @return (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 Optional> location() {
@@ -116,7 +116,7 @@ public Builder(ResizeRequestStatusErrorErrorArgs defaults) {
 
         /**
          * @param code (Output)
-         * [Output Only] The error type identifier for this error.
+         * The error type identifier for this error.
          * 
          * @return builder
          * 
@@ -128,7 +128,7 @@ public Builder code(@Nullable Output code) {
 
         /**
          * @param code (Output)
-         * [Output Only] The error type identifier for this error.
+         * The error type identifier for this error.
          * 
          * @return builder
          * 
@@ -139,7 +139,7 @@ public Builder code(String code) {
 
         /**
          * @param errorDetails (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.
          * 
          * @return builder
@@ -152,7 +152,7 @@ public Builder errorDetails(@Nullable Output e
 
         /**
          * @param errorDetails (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.
          * 
          * @return builder
@@ -176,7 +176,7 @@ public Builder errorDetails(ResizeRequestStatusErrorErrorErrorDetailArgs... erro
 
         /**
          * @param location (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.
          * 
          * @return builder
          * 
@@ -188,7 +188,7 @@ public Builder location(@Nullable Output location) {
 
         /**
          * @param location (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.
          * 
          * @return builder
          * 
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusErrorErrorErrorDetailArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusErrorErrorErrorDetailArgs.java
index ee04ec0bb5..097e4fe5f8 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusErrorErrorErrorDetailArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusErrorErrorErrorDetailArgs.java
@@ -21,7 +21,7 @@ public final class ResizeRequestStatusErrorErrorErrorDetailArgs extends com.pulu
 
     /**
      * (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
@@ -30,7 +30,7 @@ public final class ResizeRequestStatusErrorErrorErrorDetailArgs extends com.pulu
 
     /**
      * @return (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
@@ -40,7 +40,7 @@ public Optional>>
 
     /**
      * (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
@@ -68,7 +68,7 @@ public Optional>>
 
     /**
      * @return (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
@@ -78,7 +78,7 @@ public Optional help
 
         /**
          * @param helps (Output)
-         * [Output Only]
+         * A nested object resource.
          * Structure is documented below.
          * 
          * @return builder
@@ -198,7 +198,7 @@ public Builder helps(ResizeRequestStatusErrorErrorErrorDetailHelpArgs... helps)
 
         /**
          * @param localizedMessages (Output)
-         * [Output Only]
+         * A nested object resource.
          * Structure is documented below.
          * 
          * @return builder
@@ -211,7 +211,7 @@ public Builder localizedMessages(@Nullable Output> domain() {
@@ -36,7 +36,6 @@ public Optional> 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.
      * 
      */
     @Import(name="metadatas")
@@ -45,7 +44,6 @@ public Optional> domain() {
     /**
      * @return (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 Optional>> metadatas() {
@@ -54,7 +52,7 @@ public Optional>> 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.
      * 
      */
     @Import(name="reason")
@@ -62,7 +60,7 @@ public Optional>> metadatas() {
 
     /**
      * @return (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 Optional> reason() {
@@ -97,7 +95,7 @@ public Builder(ResizeRequestStatusErrorErrorErrorDetailErrorInfoArgs defaults) {
 
         /**
          * @param domain (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".
          * 
          * @return builder
          * 
@@ -109,7 +107,7 @@ public Builder domain(@Nullable Output domain) {
 
         /**
          * @param domain (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".
          * 
          * @return builder
          * 
@@ -121,7 +119,6 @@ public Builder domain(String domain) {
         /**
          * @param metadatas (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.
          * 
          * @return builder
          * 
@@ -134,7 +131,6 @@ public Builder metadatas(@Nullable Output> metadatas) {
         /**
          * @param metadatas (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.
          * 
          * @return builder
          * 
@@ -145,7 +141,7 @@ public Builder metadatas(Map metadatas) {
 
         /**
          * @param reason (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.
          * 
          * @return builder
          * 
@@ -157,7 +153,7 @@ public Builder reason(@Nullable Output reason) {
 
         /**
          * @param reason (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.
          * 
          * @return builder
          * 
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusErrorErrorErrorDetailHelpArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusErrorErrorErrorDetailHelpArgs.java
index ea4c9b9864..ba3e441f69 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusErrorErrorErrorDetailHelpArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusErrorErrorErrorDetailHelpArgs.java
@@ -18,7 +18,7 @@ public final class ResizeRequestStatusErrorErrorErrorDetailHelpArgs extends com.
 
     /**
      * (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
@@ -27,7 +27,7 @@ public final class ResizeRequestStatusErrorErrorErrorDetailHelpArgs extends com.
 
     /**
      * @return (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
@@ -61,7 +61,7 @@ public Builder(ResizeRequestStatusErrorErrorErrorDetailHelpArgs defaults) {
 
         /**
          * @param links (Output)
-         * [Output Only]
+         * A nested object resource.
          * Structure is documented below.
          * 
          * @return builder
@@ -74,7 +74,7 @@ public Builder links(@Nullable Output
 
         /**
          * @param links (Output)
-         * [Output Only]
+         * A nested object resource.
          * Structure is documented below.
          * 
          * @return builder
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusLastAttemptArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusLastAttemptArgs.java
index 8173b33147..c43de65ef9 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusLastAttemptArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusLastAttemptArgs.java
@@ -18,7 +18,7 @@ public final class ResizeRequestStatusLastAttemptArgs extends com.pulumi.resourc
 
     /**
      * (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.
      * 
      */
@@ -27,7 +27,7 @@ public final class ResizeRequestStatusLastAttemptArgs extends com.pulumi.resourc
 
     /**
      * @return (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.
      * 
      */
@@ -61,7 +61,7 @@ public Builder(ResizeRequestStatusLastAttemptArgs defaults) {
 
         /**
          * @param errors (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.
          * 
          * @return builder
@@ -74,7 +74,7 @@ public Builder errors(@Nullable Output errors) {
 
         /**
          * @param errors (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.
          * 
          * @return builder
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusLastAttemptErrorArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusLastAttemptErrorArgs.java
index 20c0eba2d5..a5639954a7 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusLastAttemptErrorArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusLastAttemptErrorArgs.java
@@ -18,7 +18,7 @@ public final class ResizeRequestStatusLastAttemptErrorArgs extends com.pulumi.re
 
     /**
      * (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.
      * 
      */
@@ -27,7 +27,7 @@ public final class ResizeRequestStatusLastAttemptErrorArgs extends com.pulumi.re
 
     /**
      * @return (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.
      * 
      */
@@ -61,7 +61,7 @@ public Builder(ResizeRequestStatusLastAttemptErrorArgs defaults) {
 
         /**
          * @param errors (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.
          * 
          * @return builder
@@ -74,7 +74,7 @@ public Builder errors(@Nullable Output errors)
 
         /**
          * @param errors (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.
          * 
          * @return builder
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusLastAttemptErrorErrorArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusLastAttemptErrorErrorArgs.java
index 6d3dd351f2..4969895ae7 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusLastAttemptErrorErrorArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusLastAttemptErrorErrorArgs.java
@@ -19,7 +19,7 @@ public final class ResizeRequestStatusLastAttemptErrorErrorArgs extends com.pulu
 
     /**
      * (Output)
-     * [Output Only] The error type identifier for this error.
+     * The error type identifier for this error.
      * 
      */
     @Import(name="code")
@@ -27,7 +27,7 @@ public final class ResizeRequestStatusLastAttemptErrorErrorArgs extends com.pulu
 
     /**
      * @return (Output)
-     * [Output Only] The error type identifier for this error.
+     * The error type identifier for this error.
      * 
      */
     public Optional> code() {
@@ -36,7 +36,7 @@ public Optional> 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.
      * 
      */
@@ -45,7 +45,7 @@ public Optional> code() {
 
     /**
      * @return (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.
      * 
      */
@@ -55,7 +55,7 @@ public Optional> location() {
@@ -116,7 +116,7 @@ public Builder(ResizeRequestStatusLastAttemptErrorErrorArgs defaults) {
 
         /**
          * @param code (Output)
-         * [Output Only] The error type identifier for this error.
+         * The error type identifier for this error.
          * 
          * @return builder
          * 
@@ -128,7 +128,7 @@ public Builder code(@Nullable Output code) {
 
         /**
          * @param code (Output)
-         * [Output Only] The error type identifier for this error.
+         * The error type identifier for this error.
          * 
          * @return builder
          * 
@@ -139,7 +139,7 @@ public Builder code(String code) {
 
         /**
          * @param errorDetails (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.
          * 
          * @return builder
@@ -152,7 +152,7 @@ public Builder errorDetails(@Nullable Output location) {
 
         /**
          * @param location (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.
          * 
          * @return builder
          * 
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailArgs.java
index 9a314b57b5..9dd10fdc05 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailArgs.java
@@ -21,7 +21,7 @@ public final class ResizeRequestStatusLastAttemptErrorErrorErrorDetailArgs exten
 
     /**
      * (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
@@ -30,7 +30,7 @@ public final class ResizeRequestStatusLastAttemptErrorErrorErrorDetailArgs exten
 
     /**
      * @return (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
@@ -40,7 +40,7 @@ public Optional> domain() {
@@ -36,7 +36,6 @@ public Optional> 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.
      * 
      */
     @Import(name="metadatas")
@@ -45,7 +44,6 @@ public Optional> domain() {
     /**
      * @return (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 Optional>> metadatas() {
@@ -54,7 +52,7 @@ public Optional>> 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.
      * 
      */
     @Import(name="reason")
@@ -62,7 +60,7 @@ public Optional>> metadatas() {
 
     /**
      * @return (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 Optional> reason() {
@@ -97,7 +95,7 @@ public Builder(ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfoArgs
 
         /**
          * @param domain (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".
          * 
          * @return builder
          * 
@@ -109,7 +107,7 @@ public Builder domain(@Nullable Output domain) {
 
         /**
          * @param domain (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".
          * 
          * @return builder
          * 
@@ -121,7 +119,6 @@ public Builder domain(String domain) {
         /**
          * @param metadatas (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.
          * 
          * @return builder
          * 
@@ -134,7 +131,6 @@ public Builder metadatas(@Nullable Output> metadatas) {
         /**
          * @param metadatas (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.
          * 
          * @return builder
          * 
@@ -145,7 +141,7 @@ public Builder metadatas(Map metadatas) {
 
         /**
          * @param reason (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.
          * 
          * @return builder
          * 
@@ -157,7 +153,7 @@ public Builder reason(@Nullable Output reason) {
 
         /**
          * @param reason (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.
          * 
          * @return builder
          * 
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpArgs.java
index a79c4a14ce..bcded83cab 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpArgs.java
@@ -18,7 +18,7 @@ public final class ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpArgs e
 
     /**
      * (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
@@ -27,7 +27,7 @@ public final class ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpArgs e
 
     /**
      * @return (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
@@ -61,7 +61,7 @@ public Builder(ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpArgs defau
 
         /**
          * @param links (Output)
-         * [Output Only]
+         * A nested object resource.
          * Structure is documented below.
          * 
          * @return builder
@@ -74,7 +74,7 @@ public Builder links(@Nullable Output localSsdRecoveryTimeouts;
@@ -193,6 +206,7 @@ public Builder() {}
         public Builder(GetInstanceScheduling defaults) {
     	      Objects.requireNonNull(defaults);
     	      this.automaticRestart = defaults.automaticRestart;
+    	      this.availabilityDomain = defaults.availabilityDomain;
     	      this.hostErrorTimeoutSeconds = defaults.hostErrorTimeoutSeconds;
     	      this.instanceTerminationAction = defaults.instanceTerminationAction;
     	      this.localSsdRecoveryTimeouts = defaults.localSsdRecoveryTimeouts;
@@ -215,6 +229,14 @@ public Builder automaticRestart(Boolean automaticRestart) {
             return this;
         }
         @CustomType.Setter
+        public Builder availabilityDomain(Integer availabilityDomain) {
+            if (availabilityDomain == null) {
+              throw new MissingRequiredPropertyException("GetInstanceScheduling", "availabilityDomain");
+            }
+            this.availabilityDomain = availabilityDomain;
+            return this;
+        }
+        @CustomType.Setter
         public Builder hostErrorTimeoutSeconds(Integer hostErrorTimeoutSeconds) {
             if (hostErrorTimeoutSeconds == null) {
               throw new MissingRequiredPropertyException("GetInstanceScheduling", "hostErrorTimeoutSeconds");
@@ -317,6 +339,7 @@ public Builder provisioningModel(String provisioningModel) {
         public GetInstanceScheduling build() {
             final var _resultValue = new GetInstanceScheduling();
             _resultValue.automaticRestart = automaticRestart;
+            _resultValue.availabilityDomain = availabilityDomain;
             _resultValue.hostErrorTimeoutSeconds = hostErrorTimeoutSeconds;
             _resultValue.instanceTerminationAction = instanceTerminationAction;
             _resultValue.localSsdRecoveryTimeouts = localSsdRecoveryTimeouts;
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/GetInstanceTemplateScheduling.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/GetInstanceTemplateScheduling.java
index ef61de99d7..48e27018e5 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/GetInstanceTemplateScheduling.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/GetInstanceTemplateScheduling.java
@@ -24,6 +24,11 @@ public final class GetInstanceTemplateScheduling {
      * 
      */
     private Boolean automaticRestart;
+    /**
+     * @return Specifies the availability domain, which this instance should be scheduled on.
+     * 
+     */
+    private Integer availabilityDomain;
     /**
      * @return Beta Time in seconds for host error detection.
      * 
@@ -100,6 +105,13 @@ private GetInstanceTemplateScheduling() {}
     public Boolean automaticRestart() {
         return this.automaticRestart;
     }
+    /**
+     * @return Specifies the availability domain, which this instance should be scheduled on.
+     * 
+     */
+    public Integer availabilityDomain() {
+        return this.availabilityDomain;
+    }
     /**
      * @return Beta Time in seconds for host error detection.
      * 
@@ -198,6 +210,7 @@ public static Builder builder(GetInstanceTemplateScheduling defaults) {
     @CustomType.Builder
     public static final class Builder {
         private Boolean automaticRestart;
+        private Integer availabilityDomain;
         private Integer hostErrorTimeoutSeconds;
         private String instanceTerminationAction;
         private List localSsdRecoveryTimeouts;
@@ -213,6 +226,7 @@ public Builder() {}
         public Builder(GetInstanceTemplateScheduling defaults) {
     	      Objects.requireNonNull(defaults);
     	      this.automaticRestart = defaults.automaticRestart;
+    	      this.availabilityDomain = defaults.availabilityDomain;
     	      this.hostErrorTimeoutSeconds = defaults.hostErrorTimeoutSeconds;
     	      this.instanceTerminationAction = defaults.instanceTerminationAction;
     	      this.localSsdRecoveryTimeouts = defaults.localSsdRecoveryTimeouts;
@@ -235,6 +249,14 @@ public Builder automaticRestart(Boolean automaticRestart) {
             return this;
         }
         @CustomType.Setter
+        public Builder availabilityDomain(Integer availabilityDomain) {
+            if (availabilityDomain == null) {
+              throw new MissingRequiredPropertyException("GetInstanceTemplateScheduling", "availabilityDomain");
+            }
+            this.availabilityDomain = availabilityDomain;
+            return this;
+        }
+        @CustomType.Setter
         public Builder hostErrorTimeoutSeconds(Integer hostErrorTimeoutSeconds) {
             if (hostErrorTimeoutSeconds == null) {
               throw new MissingRequiredPropertyException("GetInstanceTemplateScheduling", "hostErrorTimeoutSeconds");
@@ -337,6 +359,7 @@ public Builder provisioningModel(String provisioningModel) {
         public GetInstanceTemplateScheduling build() {
             final var _resultValue = new GetInstanceTemplateScheduling();
             _resultValue.automaticRestart = automaticRestart;
+            _resultValue.availabilityDomain = availabilityDomain;
             _resultValue.hostErrorTimeoutSeconds = hostErrorTimeoutSeconds;
             _resultValue.instanceTerminationAction = instanceTerminationAction;
             _resultValue.localSsdRecoveryTimeouts = localSsdRecoveryTimeouts;
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/GetNetworkResult.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/GetNetworkResult.java
index 5450302d33..616d31ed1a 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/GetNetworkResult.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/GetNetworkResult.java
@@ -5,6 +5,7 @@
 
 import com.pulumi.core.annotations.CustomType;
 import com.pulumi.exceptions.MissingRequiredPropertyException;
+import java.lang.Integer;
 import java.lang.String;
 import java.util.List;
 import java.util.Objects;
@@ -34,15 +35,24 @@ public final class GetNetworkResult {
      */
     private String internalIpv6Range;
     private String name;
+    /**
+     * @return The numeric unique identifier for the resource.
+     * 
+     */
+    private Integer networkId;
     /**
      * @return Beta A full or partial URL of the network profile to apply to this network.
      * 
      */
     private @Nullable String networkProfile;
     /**
-     * @return The numeric unique identifier for the resource.
+     * @return (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.
+     * 
+     * @deprecated
+     * `numeric_id` is deprecated and will be removed in a future major release. Use `network_id` instead.
      * 
      */
+    @Deprecated /* `numeric_id` is deprecated and will be removed in a future major release. Use `network_id` instead. */
     private String numericId;
     private @Nullable String project;
     /**
@@ -88,6 +98,13 @@ public String internalIpv6Range() {
     public String name() {
         return this.name;
     }
+    /**
+     * @return The numeric unique identifier for the resource.
+     * 
+     */
+    public Integer networkId() {
+        return this.networkId;
+    }
     /**
      * @return Beta A full or partial URL of the network profile to apply to this network.
      * 
@@ -96,9 +113,13 @@ public Optional networkProfile() {
         return Optional.ofNullable(this.networkProfile);
     }
     /**
-     * @return The numeric unique identifier for the resource.
+     * @return (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.
+     * 
+     * @deprecated
+     * `numeric_id` is deprecated and will be removed in a future major release. Use `network_id` instead.
      * 
      */
+    @Deprecated /* `numeric_id` is deprecated and will be removed in a future major release. Use `network_id` instead. */
     public String numericId() {
         return this.numericId;
     }
@@ -134,6 +155,7 @@ public static final class Builder {
         private String id;
         private String internalIpv6Range;
         private String name;
+        private Integer networkId;
         private @Nullable String networkProfile;
         private String numericId;
         private @Nullable String project;
@@ -147,6 +169,7 @@ public Builder(GetNetworkResult defaults) {
     	      this.id = defaults.id;
     	      this.internalIpv6Range = defaults.internalIpv6Range;
     	      this.name = defaults.name;
+    	      this.networkId = defaults.networkId;
     	      this.networkProfile = defaults.networkProfile;
     	      this.numericId = defaults.numericId;
     	      this.project = defaults.project;
@@ -195,6 +218,14 @@ public Builder name(String name) {
             return this;
         }
         @CustomType.Setter
+        public Builder networkId(Integer networkId) {
+            if (networkId == null) {
+              throw new MissingRequiredPropertyException("GetNetworkResult", "networkId");
+            }
+            this.networkId = networkId;
+            return this;
+        }
+        @CustomType.Setter
         public Builder networkProfile(@Nullable String networkProfile) {
 
             this.networkProfile = networkProfile;
@@ -240,6 +271,7 @@ public GetNetworkResult build() {
             _resultValue.id = id;
             _resultValue.internalIpv6Range = internalIpv6Range;
             _resultValue.name = name;
+            _resultValue.networkId = networkId;
             _resultValue.networkProfile = networkProfile;
             _resultValue.numericId = numericId;
             _resultValue.project = project;
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/GetRegionInstanceTemplateScheduling.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/GetRegionInstanceTemplateScheduling.java
index 471b9b5611..01756c3237 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/GetRegionInstanceTemplateScheduling.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/GetRegionInstanceTemplateScheduling.java
@@ -24,6 +24,11 @@ public final class GetRegionInstanceTemplateScheduling {
      * 
      */
     private Boolean automaticRestart;
+    /**
+     * @return Specifies the availability domain, which this instance should be scheduled on.
+     * 
+     */
+    private Integer availabilityDomain;
     /**
      * @return Beta Time in seconds for host error detection.
      * 
@@ -100,6 +105,13 @@ private GetRegionInstanceTemplateScheduling() {}
     public Boolean automaticRestart() {
         return this.automaticRestart;
     }
+    /**
+     * @return Specifies the availability domain, which this instance should be scheduled on.
+     * 
+     */
+    public Integer availabilityDomain() {
+        return this.availabilityDomain;
+    }
     /**
      * @return Beta Time in seconds for host error detection.
      * 
@@ -198,6 +210,7 @@ public static Builder builder(GetRegionInstanceTemplateScheduling defaults) {
     @CustomType.Builder
     public static final class Builder {
         private Boolean automaticRestart;
+        private Integer availabilityDomain;
         private Integer hostErrorTimeoutSeconds;
         private String instanceTerminationAction;
         private List localSsdRecoveryTimeouts;
@@ -213,6 +226,7 @@ public Builder() {}
         public Builder(GetRegionInstanceTemplateScheduling defaults) {
     	      Objects.requireNonNull(defaults);
     	      this.automaticRestart = defaults.automaticRestart;
+    	      this.availabilityDomain = defaults.availabilityDomain;
     	      this.hostErrorTimeoutSeconds = defaults.hostErrorTimeoutSeconds;
     	      this.instanceTerminationAction = defaults.instanceTerminationAction;
     	      this.localSsdRecoveryTimeouts = defaults.localSsdRecoveryTimeouts;
@@ -235,6 +249,14 @@ public Builder automaticRestart(Boolean automaticRestart) {
             return this;
         }
         @CustomType.Setter
+        public Builder availabilityDomain(Integer availabilityDomain) {
+            if (availabilityDomain == null) {
+              throw new MissingRequiredPropertyException("GetRegionInstanceTemplateScheduling", "availabilityDomain");
+            }
+            this.availabilityDomain = availabilityDomain;
+            return this;
+        }
+        @CustomType.Setter
         public Builder hostErrorTimeoutSeconds(Integer hostErrorTimeoutSeconds) {
             if (hostErrorTimeoutSeconds == null) {
               throw new MissingRequiredPropertyException("GetRegionInstanceTemplateScheduling", "hostErrorTimeoutSeconds");
@@ -337,6 +359,7 @@ public Builder provisioningModel(String provisioningModel) {
         public GetRegionInstanceTemplateScheduling build() {
             final var _resultValue = new GetRegionInstanceTemplateScheduling();
             _resultValue.automaticRestart = automaticRestart;
+            _resultValue.availabilityDomain = availabilityDomain;
             _resultValue.hostErrorTimeoutSeconds = hostErrorTimeoutSeconds;
             _resultValue.instanceTerminationAction = instanceTerminationAction;
             _resultValue.localSsdRecoveryTimeouts = localSsdRecoveryTimeouts;
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/GetSubnetworkResult.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/GetSubnetworkResult.java
index 6d5ecbf60d..7cb8e7a9ba 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/GetSubnetworkResult.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/GetSubnetworkResult.java
@@ -7,6 +7,7 @@
 import com.pulumi.exceptions.MissingRequiredPropertyException;
 import com.pulumi.gcp.compute.outputs.GetSubnetworkSecondaryIpRange;
 import java.lang.Boolean;
+import java.lang.Integer;
 import java.lang.String;
 import java.util.List;
 import java.util.Objects;
@@ -64,6 +65,11 @@ public final class GetSubnetworkResult {
      */
     private List secondaryIpRanges;
     private String selfLink;
+    /**
+     * @return The numeric ID of the resource.
+     * 
+     */
+    private Integer subnetworkId;
 
     private GetSubnetworkResult() {}
     /**
@@ -139,6 +145,13 @@ public List secondaryIpRanges() {
     public String selfLink() {
         return this.selfLink;
     }
+    /**
+     * @return The numeric ID of the resource.
+     * 
+     */
+    public Integer subnetworkId() {
+        return this.subnetworkId;
+    }
 
     public static Builder builder() {
         return new Builder();
@@ -161,6 +174,7 @@ public static final class Builder {
         private String region;
         private List secondaryIpRanges;
         private String selfLink;
+        private Integer subnetworkId;
         public Builder() {}
         public Builder(GetSubnetworkResult defaults) {
     	      Objects.requireNonNull(defaults);
@@ -176,6 +190,7 @@ public Builder(GetSubnetworkResult defaults) {
     	      this.region = defaults.region;
     	      this.secondaryIpRanges = defaults.secondaryIpRanges;
     	      this.selfLink = defaults.selfLink;
+    	      this.subnetworkId = defaults.subnetworkId;
         }
 
         @CustomType.Setter
@@ -275,6 +290,14 @@ public Builder selfLink(String selfLink) {
             this.selfLink = selfLink;
             return this;
         }
+        @CustomType.Setter
+        public Builder subnetworkId(Integer subnetworkId) {
+            if (subnetworkId == null) {
+              throw new MissingRequiredPropertyException("GetSubnetworkResult", "subnetworkId");
+            }
+            this.subnetworkId = subnetworkId;
+            return this;
+        }
         public GetSubnetworkResult build() {
             final var _resultValue = new GetSubnetworkResult();
             _resultValue.description = description;
@@ -289,6 +312,7 @@ public GetSubnetworkResult build() {
             _resultValue.region = region;
             _resultValue.secondaryIpRanges = secondaryIpRanges;
             _resultValue.selfLink = selfLink;
+            _resultValue.subnetworkId = subnetworkId;
             return _resultValue;
         }
     }
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/InstanceBootDiskInitializeParams.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/InstanceBootDiskInitializeParams.java
index e5876cef04..034b275393 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/InstanceBootDiskInitializeParams.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/InstanceBootDiskInitializeParams.java
@@ -67,7 +67,7 @@ public final class InstanceBootDiskInitializeParams {
      */
     private @Nullable Map resourceManagerTags;
     /**
-     * @return 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.
+     * @return 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.
      * 
      */
     private @Nullable String resourcePolicies;
@@ -159,7 +159,7 @@ public Map resourceManagerTags() {
         return this.resourceManagerTags == null ? Map.of() : this.resourceManagerTags;
     }
     /**
-     * @return 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.
+     * @return 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 Optional resourcePolicies() {
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/InstanceFromMachineImageScheduling.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/InstanceFromMachineImageScheduling.java
index 559ee2e04b..230a3e90f3 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/InstanceFromMachineImageScheduling.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/InstanceFromMachineImageScheduling.java
@@ -23,6 +23,11 @@ public final class InstanceFromMachineImageScheduling {
      * 
      */
     private @Nullable Boolean automaticRestart;
+    /**
+     * @return Specifies the availability domain, which this instance should be scheduled on.
+     * 
+     */
+    private @Nullable Integer availabilityDomain;
     /**
      * @return 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.
      * 
@@ -86,6 +91,13 @@ private InstanceFromMachineImageScheduling() {}
     public Optional automaticRestart() {
         return Optional.ofNullable(this.automaticRestart);
     }
+    /**
+     * @return Specifies the availability domain, which this instance should be scheduled on.
+     * 
+     */
+    public Optional availabilityDomain() {
+        return Optional.ofNullable(this.availabilityDomain);
+    }
     /**
      * @return 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.
      * 
@@ -173,6 +185,7 @@ public static Builder builder(InstanceFromMachineImageScheduling defaults) {
     @CustomType.Builder
     public static final class Builder {
         private @Nullable Boolean automaticRestart;
+        private @Nullable Integer availabilityDomain;
         private @Nullable Integer hostErrorTimeoutSeconds;
         private @Nullable String instanceTerminationAction;
         private @Nullable InstanceFromMachineImageSchedulingLocalSsdRecoveryTimeout localSsdRecoveryTimeout;
@@ -188,6 +201,7 @@ public Builder() {}
         public Builder(InstanceFromMachineImageScheduling defaults) {
     	      Objects.requireNonNull(defaults);
     	      this.automaticRestart = defaults.automaticRestart;
+    	      this.availabilityDomain = defaults.availabilityDomain;
     	      this.hostErrorTimeoutSeconds = defaults.hostErrorTimeoutSeconds;
     	      this.instanceTerminationAction = defaults.instanceTerminationAction;
     	      this.localSsdRecoveryTimeout = defaults.localSsdRecoveryTimeout;
@@ -208,6 +222,12 @@ public Builder automaticRestart(@Nullable Boolean automaticRestart) {
             return this;
         }
         @CustomType.Setter
+        public Builder availabilityDomain(@Nullable Integer availabilityDomain) {
+
+            this.availabilityDomain = availabilityDomain;
+            return this;
+        }
+        @CustomType.Setter
         public Builder hostErrorTimeoutSeconds(@Nullable Integer hostErrorTimeoutSeconds) {
 
             this.hostErrorTimeoutSeconds = hostErrorTimeoutSeconds;
@@ -279,6 +299,7 @@ public Builder provisioningModel(@Nullable String provisioningModel) {
         public InstanceFromMachineImageScheduling build() {
             final var _resultValue = new InstanceFromMachineImageScheduling();
             _resultValue.automaticRestart = automaticRestart;
+            _resultValue.availabilityDomain = availabilityDomain;
             _resultValue.hostErrorTimeoutSeconds = hostErrorTimeoutSeconds;
             _resultValue.instanceTerminationAction = instanceTerminationAction;
             _resultValue.localSsdRecoveryTimeout = localSsdRecoveryTimeout;
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/InstanceFromTemplateScheduling.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/InstanceFromTemplateScheduling.java
index 5d1b0c9109..314424243b 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/InstanceFromTemplateScheduling.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/InstanceFromTemplateScheduling.java
@@ -23,6 +23,11 @@ public final class InstanceFromTemplateScheduling {
      * 
      */
     private @Nullable Boolean automaticRestart;
+    /**
+     * @return Specifies the availability domain, which this instance should be scheduled on.
+     * 
+     */
+    private @Nullable Integer availabilityDomain;
     /**
      * @return 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.
      * 
@@ -86,6 +91,13 @@ private InstanceFromTemplateScheduling() {}
     public Optional automaticRestart() {
         return Optional.ofNullable(this.automaticRestart);
     }
+    /**
+     * @return Specifies the availability domain, which this instance should be scheduled on.
+     * 
+     */
+    public Optional availabilityDomain() {
+        return Optional.ofNullable(this.availabilityDomain);
+    }
     /**
      * @return 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.
      * 
@@ -173,6 +185,7 @@ public static Builder builder(InstanceFromTemplateScheduling defaults) {
     @CustomType.Builder
     public static final class Builder {
         private @Nullable Boolean automaticRestart;
+        private @Nullable Integer availabilityDomain;
         private @Nullable Integer hostErrorTimeoutSeconds;
         private @Nullable String instanceTerminationAction;
         private @Nullable InstanceFromTemplateSchedulingLocalSsdRecoveryTimeout localSsdRecoveryTimeout;
@@ -188,6 +201,7 @@ public Builder() {}
         public Builder(InstanceFromTemplateScheduling defaults) {
     	      Objects.requireNonNull(defaults);
     	      this.automaticRestart = defaults.automaticRestart;
+    	      this.availabilityDomain = defaults.availabilityDomain;
     	      this.hostErrorTimeoutSeconds = defaults.hostErrorTimeoutSeconds;
     	      this.instanceTerminationAction = defaults.instanceTerminationAction;
     	      this.localSsdRecoveryTimeout = defaults.localSsdRecoveryTimeout;
@@ -208,6 +222,12 @@ public Builder automaticRestart(@Nullable Boolean automaticRestart) {
             return this;
         }
         @CustomType.Setter
+        public Builder availabilityDomain(@Nullable Integer availabilityDomain) {
+
+            this.availabilityDomain = availabilityDomain;
+            return this;
+        }
+        @CustomType.Setter
         public Builder hostErrorTimeoutSeconds(@Nullable Integer hostErrorTimeoutSeconds) {
 
             this.hostErrorTimeoutSeconds = hostErrorTimeoutSeconds;
@@ -279,6 +299,7 @@ public Builder provisioningModel(@Nullable String provisioningModel) {
         public InstanceFromTemplateScheduling build() {
             final var _resultValue = new InstanceFromTemplateScheduling();
             _resultValue.automaticRestart = automaticRestart;
+            _resultValue.availabilityDomain = availabilityDomain;
             _resultValue.hostErrorTimeoutSeconds = hostErrorTimeoutSeconds;
             _resultValue.instanceTerminationAction = instanceTerminationAction;
             _resultValue.localSsdRecoveryTimeout = localSsdRecoveryTimeout;
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/InstanceScheduling.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/InstanceScheduling.java
index 092344cbe1..2129eb8f7c 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/InstanceScheduling.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/InstanceScheduling.java
@@ -25,6 +25,11 @@ public final class InstanceScheduling {
      * 
      */
     private @Nullable Boolean automaticRestart;
+    /**
+     * @return 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.
+     * 
+     */
+    private @Nullable Integer availabilityDomain;
     /**
      * @return 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.
      * 
@@ -105,6 +110,13 @@ private InstanceScheduling() {}
     public Optional automaticRestart() {
         return Optional.ofNullable(this.automaticRestart);
     }
+    /**
+     * @return 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 Optional availabilityDomain() {
+        return Optional.ofNullable(this.availabilityDomain);
+    }
     /**
      * @return 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.
      * 
@@ -207,6 +219,7 @@ public static Builder builder(InstanceScheduling defaults) {
     @CustomType.Builder
     public static final class Builder {
         private @Nullable Boolean automaticRestart;
+        private @Nullable Integer availabilityDomain;
         private @Nullable Integer hostErrorTimeoutSeconds;
         private @Nullable String instanceTerminationAction;
         private @Nullable InstanceSchedulingLocalSsdRecoveryTimeout localSsdRecoveryTimeout;
@@ -222,6 +235,7 @@ public Builder() {}
         public Builder(InstanceScheduling defaults) {
     	      Objects.requireNonNull(defaults);
     	      this.automaticRestart = defaults.automaticRestart;
+    	      this.availabilityDomain = defaults.availabilityDomain;
     	      this.hostErrorTimeoutSeconds = defaults.hostErrorTimeoutSeconds;
     	      this.instanceTerminationAction = defaults.instanceTerminationAction;
     	      this.localSsdRecoveryTimeout = defaults.localSsdRecoveryTimeout;
@@ -242,6 +256,12 @@ public Builder automaticRestart(@Nullable Boolean automaticRestart) {
             return this;
         }
         @CustomType.Setter
+        public Builder availabilityDomain(@Nullable Integer availabilityDomain) {
+
+            this.availabilityDomain = availabilityDomain;
+            return this;
+        }
+        @CustomType.Setter
         public Builder hostErrorTimeoutSeconds(@Nullable Integer hostErrorTimeoutSeconds) {
 
             this.hostErrorTimeoutSeconds = hostErrorTimeoutSeconds;
@@ -313,6 +333,7 @@ public Builder provisioningModel(@Nullable String provisioningModel) {
         public InstanceScheduling build() {
             final var _resultValue = new InstanceScheduling();
             _resultValue.automaticRestart = automaticRestart;
+            _resultValue.availabilityDomain = availabilityDomain;
             _resultValue.hostErrorTimeoutSeconds = hostErrorTimeoutSeconds;
             _resultValue.instanceTerminationAction = instanceTerminationAction;
             _resultValue.localSsdRecoveryTimeout = localSsdRecoveryTimeout;
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/InstanceTemplateScheduling.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/InstanceTemplateScheduling.java
index 94d4892811..fd4a3fd10e 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/InstanceTemplateScheduling.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/InstanceTemplateScheduling.java
@@ -25,6 +25,11 @@ public final class InstanceTemplateScheduling {
      * 
      */
     private @Nullable Boolean automaticRestart;
+    /**
+     * @return 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.
+     * 
+     */
+    private @Nullable Integer availabilityDomain;
     /**
      * @return 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.
      * 
@@ -104,6 +109,13 @@ private InstanceTemplateScheduling() {}
     public Optional automaticRestart() {
         return Optional.ofNullable(this.automaticRestart);
     }
+    /**
+     * @return 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 Optional availabilityDomain() {
+        return Optional.ofNullable(this.availabilityDomain);
+    }
     /**
      * @return 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.
      * 
@@ -205,6 +217,7 @@ public static Builder builder(InstanceTemplateScheduling defaults) {
     @CustomType.Builder
     public static final class Builder {
         private @Nullable Boolean automaticRestart;
+        private @Nullable Integer availabilityDomain;
         private @Nullable Integer hostErrorTimeoutSeconds;
         private @Nullable String instanceTerminationAction;
         private @Nullable List localSsdRecoveryTimeouts;
@@ -220,6 +233,7 @@ public Builder() {}
         public Builder(InstanceTemplateScheduling defaults) {
     	      Objects.requireNonNull(defaults);
     	      this.automaticRestart = defaults.automaticRestart;
+    	      this.availabilityDomain = defaults.availabilityDomain;
     	      this.hostErrorTimeoutSeconds = defaults.hostErrorTimeoutSeconds;
     	      this.instanceTerminationAction = defaults.instanceTerminationAction;
     	      this.localSsdRecoveryTimeouts = defaults.localSsdRecoveryTimeouts;
@@ -240,6 +254,12 @@ public Builder automaticRestart(@Nullable Boolean automaticRestart) {
             return this;
         }
         @CustomType.Setter
+        public Builder availabilityDomain(@Nullable Integer availabilityDomain) {
+
+            this.availabilityDomain = availabilityDomain;
+            return this;
+        }
+        @CustomType.Setter
         public Builder hostErrorTimeoutSeconds(@Nullable Integer hostErrorTimeoutSeconds) {
 
             this.hostErrorTimeoutSeconds = hostErrorTimeoutSeconds;
@@ -314,6 +334,7 @@ public Builder provisioningModel(@Nullable String provisioningModel) {
         public InstanceTemplateScheduling build() {
             final var _resultValue = new InstanceTemplateScheduling();
             _resultValue.automaticRestart = automaticRestart;
+            _resultValue.availabilityDomain = availabilityDomain;
             _resultValue.hostErrorTimeoutSeconds = hostErrorTimeoutSeconds;
             _resultValue.instanceTerminationAction = instanceTerminationAction;
             _resultValue.localSsdRecoveryTimeouts = localSsdRecoveryTimeouts;
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionInstanceTemplateScheduling.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionInstanceTemplateScheduling.java
index 184ae905aa..1ea4641ecb 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionInstanceTemplateScheduling.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionInstanceTemplateScheduling.java
@@ -25,6 +25,11 @@ public final class RegionInstanceTemplateScheduling {
      * 
      */
     private @Nullable Boolean automaticRestart;
+    /**
+     * @return 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.
+     * 
+     */
+    private @Nullable Integer availabilityDomain;
     /**
      * @return 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.
      * 
@@ -104,6 +109,13 @@ private RegionInstanceTemplateScheduling() {}
     public Optional automaticRestart() {
         return Optional.ofNullable(this.automaticRestart);
     }
+    /**
+     * @return 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 Optional availabilityDomain() {
+        return Optional.ofNullable(this.availabilityDomain);
+    }
     /**
      * @return 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.
      * 
@@ -205,6 +217,7 @@ public static Builder builder(RegionInstanceTemplateScheduling defaults) {
     @CustomType.Builder
     public static final class Builder {
         private @Nullable Boolean automaticRestart;
+        private @Nullable Integer availabilityDomain;
         private @Nullable Integer hostErrorTimeoutSeconds;
         private @Nullable String instanceTerminationAction;
         private @Nullable List localSsdRecoveryTimeouts;
@@ -220,6 +233,7 @@ public Builder() {}
         public Builder(RegionInstanceTemplateScheduling defaults) {
     	      Objects.requireNonNull(defaults);
     	      this.automaticRestart = defaults.automaticRestart;
+    	      this.availabilityDomain = defaults.availabilityDomain;
     	      this.hostErrorTimeoutSeconds = defaults.hostErrorTimeoutSeconds;
     	      this.instanceTerminationAction = defaults.instanceTerminationAction;
     	      this.localSsdRecoveryTimeouts = defaults.localSsdRecoveryTimeouts;
@@ -240,6 +254,12 @@ public Builder automaticRestart(@Nullable Boolean automaticRestart) {
             return this;
         }
         @CustomType.Setter
+        public Builder availabilityDomain(@Nullable Integer availabilityDomain) {
+
+            this.availabilityDomain = availabilityDomain;
+            return this;
+        }
+        @CustomType.Setter
         public Builder hostErrorTimeoutSeconds(@Nullable Integer hostErrorTimeoutSeconds) {
 
             this.hostErrorTimeoutSeconds = hostErrorTimeoutSeconds;
@@ -314,6 +334,7 @@ public Builder provisioningModel(@Nullable String provisioningModel) {
         public RegionInstanceTemplateScheduling build() {
             final var _resultValue = new RegionInstanceTemplateScheduling();
             _resultValue.automaticRestart = automaticRestart;
+            _resultValue.availabilityDomain = availabilityDomain;
             _resultValue.hostErrorTimeoutSeconds = hostErrorTimeoutSeconds;
             _resultValue.instanceTerminationAction = instanceTerminationAction;
             _resultValue.localSsdRecoveryTimeouts = localSsdRecoveryTimeouts;
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestRequestedRunDuration.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestRequestedRunDuration.java
index b07b28dc90..253cb91cc2 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestRequestedRunDuration.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestRequestedRunDuration.java
@@ -19,7 +19,7 @@ public final class ResizeRequestRequestedRunDuration {
      */
     private @Nullable Integer nanos;
     /**
-     * @return 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
+     * @return 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.
      * 
      */
     private String seconds;
@@ -33,7 +33,7 @@ public Optional nanos() {
         return Optional.ofNullable(this.nanos);
     }
     /**
-     * @return 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
+     * @return 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 String seconds() {
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatus.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatus.java
index 1b8487f4a4..8c4bf51d30 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatus.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatus.java
@@ -14,14 +14,14 @@
 public final class ResizeRequestStatus {
     /**
      * @return (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.
      * 
      */
     private @Nullable List errors;
     /**
      * @return (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.
      * 
      */
@@ -30,7 +30,7 @@ public final class ResizeRequestStatus {
     private ResizeRequestStatus() {}
     /**
      * @return (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.
      * 
      */
@@ -39,7 +39,7 @@ public List errors() {
     }
     /**
      * @return (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.
      * 
      */
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusError.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusError.java
index 0acba6f307..35a827e4d9 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusError.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusError.java
@@ -13,7 +13,7 @@
 public final class ResizeRequestStatusError {
     /**
      * @return (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.
      * 
      */
@@ -22,7 +22,7 @@ public final class ResizeRequestStatusError {
     private ResizeRequestStatusError() {}
     /**
      * @return (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.
      * 
      */
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusErrorError.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusErrorError.java
index 2ed0d5a43f..04031dae7d 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusErrorError.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusErrorError.java
@@ -15,20 +15,20 @@
 public final class ResizeRequestStatusErrorError {
     /**
      * @return (Output)
-     * [Output Only] The error type identifier for this error.
+     * The error type identifier for this error.
      * 
      */
     private @Nullable String code;
     /**
      * @return (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.
      * 
      */
     private @Nullable List errorDetails;
     /**
      * @return (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.
      * 
      */
     private @Nullable String location;
@@ -42,7 +42,7 @@ public final class ResizeRequestStatusErrorError {
     private ResizeRequestStatusErrorError() {}
     /**
      * @return (Output)
-     * [Output Only] The error type identifier for this error.
+     * The error type identifier for this error.
      * 
      */
     public Optional code() {
@@ -50,7 +50,7 @@ public Optional code() {
     }
     /**
      * @return (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.
      * 
      */
@@ -59,7 +59,7 @@ public List errorDetails() {
     }
     /**
      * @return (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 Optional location() {
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusErrorErrorErrorDetail.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusErrorErrorErrorDetail.java
index 222bc8ac1c..9a60ff329a 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusErrorErrorErrorDetail.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusErrorErrorErrorDetail.java
@@ -16,28 +16,28 @@
 public final class ResizeRequestStatusErrorErrorErrorDetail {
     /**
      * @return (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
     private @Nullable List errorInfos;
     /**
      * @return (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
     private @Nullable List helps;
     /**
      * @return (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
     private @Nullable List localizedMessages;
     /**
      * @return (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
@@ -46,7 +46,7 @@ public final class ResizeRequestStatusErrorErrorErrorDetail {
     private ResizeRequestStatusErrorErrorErrorDetail() {}
     /**
      * @return (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
@@ -55,7 +55,7 @@ public List errorInfos() {
     }
     /**
      * @return (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
@@ -64,7 +64,7 @@ public List helps() {
     }
     /**
      * @return (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
@@ -73,7 +73,7 @@ public List localizedM
     }
     /**
      * @return (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusErrorErrorErrorDetailErrorInfo.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusErrorErrorErrorDetailErrorInfo.java
index 4e8d341dfc..0c3cbc748e 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusErrorErrorErrorDetailErrorInfo.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusErrorErrorErrorDetailErrorInfo.java
@@ -14,20 +14,19 @@
 public final class ResizeRequestStatusErrorErrorErrorDetailErrorInfo {
     /**
      * @return (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".
      * 
      */
     private @Nullable String domain;
     /**
      * @return (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.
      * 
      */
     private @Nullable Map metadatas;
     /**
      * @return (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.
      * 
      */
     private @Nullable String reason;
@@ -35,7 +34,7 @@ public final class ResizeRequestStatusErrorErrorErrorDetailErrorInfo {
     private ResizeRequestStatusErrorErrorErrorDetailErrorInfo() {}
     /**
      * @return (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 Optional domain() {
@@ -44,7 +43,6 @@ public Optional domain() {
     /**
      * @return (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 Map metadatas() {
@@ -52,7 +50,7 @@ public Map metadatas() {
     }
     /**
      * @return (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 Optional reason() {
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusErrorErrorErrorDetailHelp.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusErrorErrorErrorDetailHelp.java
index daa7eb6a3b..19781d2ad7 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusErrorErrorErrorDetailHelp.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusErrorErrorErrorDetailHelp.java
@@ -13,7 +13,7 @@
 public final class ResizeRequestStatusErrorErrorErrorDetailHelp {
     /**
      * @return (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
@@ -22,7 +22,7 @@ public final class ResizeRequestStatusErrorErrorErrorDetailHelp {
     private ResizeRequestStatusErrorErrorErrorDetailHelp() {}
     /**
      * @return (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusLastAttempt.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusLastAttempt.java
index 031797ef6b..18fef6c837 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusLastAttempt.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusLastAttempt.java
@@ -13,7 +13,7 @@
 public final class ResizeRequestStatusLastAttempt {
     /**
      * @return (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.
      * 
      */
@@ -22,7 +22,7 @@ public final class ResizeRequestStatusLastAttempt {
     private ResizeRequestStatusLastAttempt() {}
     /**
      * @return (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.
      * 
      */
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusLastAttemptError.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusLastAttemptError.java
index 1f35f18eb3..1f00cad45a 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusLastAttemptError.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusLastAttemptError.java
@@ -13,7 +13,7 @@
 public final class ResizeRequestStatusLastAttemptError {
     /**
      * @return (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.
      * 
      */
@@ -22,7 +22,7 @@ public final class ResizeRequestStatusLastAttemptError {
     private ResizeRequestStatusLastAttemptError() {}
     /**
      * @return (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.
      * 
      */
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusLastAttemptErrorError.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusLastAttemptErrorError.java
index f48865b981..a854300843 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusLastAttemptErrorError.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusLastAttemptErrorError.java
@@ -15,20 +15,20 @@
 public final class ResizeRequestStatusLastAttemptErrorError {
     /**
      * @return (Output)
-     * [Output Only] The error type identifier for this error.
+     * The error type identifier for this error.
      * 
      */
     private @Nullable String code;
     /**
      * @return (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.
      * 
      */
     private @Nullable List errorDetails;
     /**
      * @return (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.
      * 
      */
     private @Nullable String location;
@@ -42,7 +42,7 @@ public final class ResizeRequestStatusLastAttemptErrorError {
     private ResizeRequestStatusLastAttemptErrorError() {}
     /**
      * @return (Output)
-     * [Output Only] The error type identifier for this error.
+     * The error type identifier for this error.
      * 
      */
     public Optional code() {
@@ -50,7 +50,7 @@ public Optional code() {
     }
     /**
      * @return (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.
      * 
      */
@@ -59,7 +59,7 @@ public List errorDetails()
     }
     /**
      * @return (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 Optional location() {
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetail.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetail.java
index 2737cad156..3af280f96f 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetail.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetail.java
@@ -16,28 +16,28 @@
 public final class ResizeRequestStatusLastAttemptErrorErrorErrorDetail {
     /**
      * @return (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
     private @Nullable List errorInfos;
     /**
      * @return (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
     private @Nullable List helps;
     /**
      * @return (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
     private @Nullable List localizedMessages;
     /**
      * @return (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
@@ -46,7 +46,7 @@ public final class ResizeRequestStatusLastAttemptErrorErrorErrorDetail {
     private ResizeRequestStatusLastAttemptErrorErrorErrorDetail() {}
     /**
      * @return (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
@@ -55,7 +55,7 @@ public List errorI
     }
     /**
      * @return (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
@@ -64,7 +64,7 @@ public List helps() {
     }
     /**
      * @return (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
@@ -73,7 +73,7 @@ public List
     }
     /**
      * @return (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo.java
index 4e8fcb1c90..c58010fc67 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo.java
@@ -14,20 +14,19 @@
 public final class ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo {
     /**
      * @return (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".
      * 
      */
     private @Nullable String domain;
     /**
      * @return (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.
      * 
      */
     private @Nullable Map metadatas;
     /**
      * @return (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.
      * 
      */
     private @Nullable String reason;
@@ -35,7 +34,7 @@ public final class ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo
     private ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo() {}
     /**
      * @return (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 Optional domain() {
@@ -44,7 +43,6 @@ public Optional domain() {
     /**
      * @return (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 Map metadatas() {
@@ -52,7 +50,7 @@ public Map metadatas() {
     }
     /**
      * @return (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 Optional reason() {
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp.java
index 6b8b8569e6..26cd63bb62 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp.java
@@ -13,7 +13,7 @@
 public final class ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp {
     /**
      * @return (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
@@ -22,7 +22,7 @@ public final class ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp {
     private ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp() {}
     /**
      * @return (Output)
-     * [Output Only]
+     * A nested object resource.
      * Structure is documented below.
      * 
      */
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dataproc/Batch.java b/sdk/java/src/main/java/com/pulumi/gcp/dataproc/Batch.java
index 032ab4799b..787639e293 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/dataproc/Batch.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/dataproc/Batch.java
@@ -110,10 +110,6 @@
  * import com.pulumi.gcp.storage.inputs.GetProjectServiceAccountArgs;
  * import com.pulumi.gcp.storage.Bucket;
  * import com.pulumi.gcp.storage.BucketArgs;
- * import com.pulumi.gcp.kms.KeyRing;
- * import com.pulumi.gcp.kms.KeyRingArgs;
- * import com.pulumi.gcp.kms.CryptoKey;
- * import com.pulumi.gcp.kms.CryptoKeyArgs;
  * import com.pulumi.gcp.kms.CryptoKeyIAMMember;
  * import com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;
  * import com.pulumi.gcp.dataproc.MetastoreService;
@@ -161,19 +157,8 @@
  *             .forceDestroy(true)
  *             .build());
  * 
- *         var keyRing = new KeyRing("keyRing", KeyRingArgs.builder()
- *             .name("example-keyring")
- *             .location("us-central1")
- *             .build());
- * 
- *         var cryptoKey = new CryptoKey("cryptoKey", CryptoKeyArgs.builder()
- *             .name("example-key")
- *             .keyRing(keyRing.id())
- *             .purpose("ENCRYPT_DECRYPT")
- *             .build());
- * 
  *         var cryptoKeyMember1 = new CryptoKeyIAMMember("cryptoKeyMember1", CryptoKeyIAMMemberArgs.builder()
- *             .cryptoKeyId(cryptoKey.id())
+ *             .cryptoKeyId("example-key")
  *             .role("roles/cloudkms.cryptoKeyEncrypterDecrypter")
  *             .member(String.format("serviceAccount:service-%s}{@literal @}{@code dataproc-accounts.iam.gserviceaccount.com", project.applyValue(getProjectResult -> getProjectResult.number())))
  *             .build());
@@ -233,7 +218,7 @@
  *                 .executionConfig(BatchEnvironmentConfigExecutionConfigArgs.builder()
  *                     .ttl("3600s")
  *                     .networkTags("tag1")
- *                     .kmsKey(cryptoKey.id())
+ *                     .kmsKey("example-key")
  *                     .networkUri("default")
  *                     .serviceAccount(String.format("%s-compute}{@literal @}{@code developer.gserviceaccount.com", project.applyValue(getProjectResult -> getProjectResult.number())))
  *                     .stagingBucket(bucket.name())
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/datastream/Stream.java b/sdk/java/src/main/java/com/pulumi/gcp/datastream/Stream.java
index 0812f52900..86a310ea6e 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/datastream/Stream.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/datastream/Stream.java
@@ -823,6 +823,147 @@
  * }
  * 
* <!--End PulumiCodeChooser --> + * ### Datastream Stream Mysql Gtid + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.sql.DatabaseInstance;
+ * import com.pulumi.gcp.sql.DatabaseInstanceArgs;
+ * import com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;
+ * import com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;
+ * import com.pulumi.gcp.sql.User;
+ * import com.pulumi.gcp.sql.UserArgs;
+ * import com.pulumi.gcp.sql.Database;
+ * import com.pulumi.gcp.sql.DatabaseArgs;
+ * import com.pulumi.gcp.datastream.ConnectionProfile;
+ * import com.pulumi.gcp.datastream.ConnectionProfileArgs;
+ * import com.pulumi.gcp.datastream.inputs.ConnectionProfileMysqlProfileArgs;
+ * import com.pulumi.gcp.datastream.inputs.ConnectionProfileBigqueryProfileArgs;
+ * import com.pulumi.gcp.datastream.Stream;
+ * import com.pulumi.gcp.datastream.StreamArgs;
+ * import com.pulumi.gcp.datastream.inputs.StreamSourceConfigArgs;
+ * import com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigArgs;
+ * import com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigIncludeObjectsArgs;
+ * import com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigGtidArgs;
+ * import com.pulumi.gcp.datastream.inputs.StreamDestinationConfigArgs;
+ * import com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigArgs;
+ * import com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs;
+ * import com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs;
+ * import com.pulumi.gcp.datastream.inputs.StreamBackfillNoneArgs;
+ * import com.pulumi.resources.CustomResourceOptions;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var instance = new DatabaseInstance("instance", DatabaseInstanceArgs.builder()
+ *             .name("<%= ctx[:vars]['mysql_name'] %>")
+ *             .databaseVersion("MYSQL_8_0")
+ *             .region("us-central1")
+ *             .rootPassword("<%= ctx[:vars]['mysql_root_password'] %>")
+ *             .deletionProtection("<%= ctx[:vars]['deletion_protection'] %>")
+ *             .settings(DatabaseInstanceSettingsArgs.builder()
+ *                 .tier("db-custom-2-4096")
+ *                 .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()
+ *                     .authorizedNetworks(                    
+ *                         DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()
+ *                             .value("34.71.242.81")
+ *                             .build(),
+ *                         DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()
+ *                             .value("34.72.28.29")
+ *                             .build(),
+ *                         DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()
+ *                             .value("34.67.6.157")
+ *                             .build(),
+ *                         DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()
+ *                             .value("34.67.234.134")
+ *                             .build(),
+ *                         DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()
+ *                             .value("34.72.239.218")
+ *                             .build())
+ *                     .build())
+ *                 .build())
+ *             .build());
+ * 
+ *         var user = new User("user", UserArgs.builder()
+ *             .name("<%= ctx[:vars]['database_user'] %>")
+ *             .instance(instance.name())
+ *             .password("<%= ctx[:vars]['database_password'] %>")
+ *             .build());
+ * 
+ *         var db = new Database("db", DatabaseArgs.builder()
+ *             .name("<%= ctx[:vars]['database_name'] %>")
+ *             .instance(instance.name())
+ *             .build(), CustomResourceOptions.builder()
+ *                 .dependsOn(user)
+ *                 .build());
+ * 
+ *         var source = new ConnectionProfile("source", ConnectionProfileArgs.builder()
+ *             .displayName("MySQL Source")
+ *             .location("us-central1")
+ *             .connectionProfileId("<%= ctx[:vars]['source_connection_profile_id'] %>")
+ *             .mysqlProfile(ConnectionProfileMysqlProfileArgs.builder()
+ *                 .hostname(instance.publicIpAddress())
+ *                 .port(1433)
+ *                 .username(user.name())
+ *                 .password(user.password())
+ *                 .database(db.name())
+ *                 .build())
+ *             .build());
+ * 
+ *         var destination = new ConnectionProfile("destination", ConnectionProfileArgs.builder()
+ *             .displayName("BigQuery Destination")
+ *             .location("us-central1")
+ *             .connectionProfileId("<%= ctx[:vars]['destination_connection_profile_id'] %>")
+ *             .bigqueryProfile()
+ *             .build());
+ * 
+ *         var default_ = new Stream("default", StreamArgs.builder()
+ *             .displayName("MySQL to BigQuery")
+ *             .location("us-central1")
+ *             .streamId("<%= ctx[:vars]['stream_id'] %>")
+ *             .sourceConfig(StreamSourceConfigArgs.builder()
+ *                 .sourceConnectionProfile(source.id())
+ *                 .mysqlSourceConfig(StreamSourceConfigMysqlSourceConfigArgs.builder()
+ *                     .includeObjects(StreamSourceConfigMysqlSourceConfigIncludeObjectsArgs.builder()
+ *                         .schemas(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference))
+ *                         .build())
+ *                     .gtid()
+ *                     .build())
+ *                 .build())
+ *             .destinationConfig(StreamDestinationConfigArgs.builder()
+ *                 .destinationConnectionProfile(destination.id())
+ *                 .bigqueryDestinationConfig(StreamDestinationConfigBigqueryDestinationConfigArgs.builder()
+ *                     .dataFreshness("900s")
+ *                     .sourceHierarchyDatasets(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs.builder()
+ *                         .datasetTemplate(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs.builder()
+ *                             .location("us-central1")
+ *                             .build())
+ *                         .build())
+ *                     .build())
+ *                 .build())
+ *             .backfillNone()
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> * ### Datastream Stream Postgresql Bigquery Dataset Id * * <!--Start PulumiCodeChooser --> diff --git a/sdk/java/src/main/java/com/pulumi/gcp/datastream/inputs/StreamSourceConfigMysqlSourceConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/datastream/inputs/StreamSourceConfigMysqlSourceConfigArgs.java index 7e45301ace..2fb68078ef 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/datastream/inputs/StreamSourceConfigMysqlSourceConfigArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/datastream/inputs/StreamSourceConfigMysqlSourceConfigArgs.java @@ -5,7 +5,9 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs; import com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigExcludeObjectsArgs; +import com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigGtidArgs; import com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigIncludeObjectsArgs; import java.lang.Integer; import java.util.Objects; @@ -17,6 +19,21 @@ public final class StreamSourceConfigMysqlSourceConfigArgs extends com.pulumi.re public static final StreamSourceConfigMysqlSourceConfigArgs Empty = new StreamSourceConfigMysqlSourceConfigArgs(); + /** + * CDC reader reads from binary logs replication cdc method. + * + */ + @Import(name="binaryLogPosition") + private @Nullable Output binaryLogPosition; + + /** + * @return CDC reader reads from binary logs replication cdc method. + * + */ + public Optional> binaryLogPosition() { + return Optional.ofNullable(this.binaryLogPosition); + } + /** * MySQL objects to exclude from the stream. * Structure is documented below. @@ -34,6 +51,21 @@ public Optional> e return Optional.ofNullable(this.excludeObjects); } + /** + * CDC reader reads from gtid based replication. + * + */ + @Import(name="gtid") + private @Nullable Output gtid; + + /** + * @return CDC reader reads from gtid based replication. + * + */ + public Optional> gtid() { + return Optional.ofNullable(this.gtid); + } + /** * MySQL objects to retrieve from the source. * Structure is documented below. @@ -88,7 +120,9 @@ public Optional> maxConcurrentCdcTasks() { private StreamSourceConfigMysqlSourceConfigArgs() {} private StreamSourceConfigMysqlSourceConfigArgs(StreamSourceConfigMysqlSourceConfigArgs $) { + this.binaryLogPosition = $.binaryLogPosition; this.excludeObjects = $.excludeObjects; + this.gtid = $.gtid; this.includeObjects = $.includeObjects; this.maxConcurrentBackfillTasks = $.maxConcurrentBackfillTasks; this.maxConcurrentCdcTasks = $.maxConcurrentCdcTasks; @@ -112,6 +146,27 @@ public Builder(StreamSourceConfigMysqlSourceConfigArgs defaults) { $ = new StreamSourceConfigMysqlSourceConfigArgs(Objects.requireNonNull(defaults)); } + /** + * @param binaryLogPosition CDC reader reads from binary logs replication cdc method. + * + * @return builder + * + */ + public Builder binaryLogPosition(@Nullable Output binaryLogPosition) { + $.binaryLogPosition = binaryLogPosition; + return this; + } + + /** + * @param binaryLogPosition CDC reader reads from binary logs replication cdc method. + * + * @return builder + * + */ + public Builder binaryLogPosition(StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs binaryLogPosition) { + return binaryLogPosition(Output.of(binaryLogPosition)); + } + /** * @param excludeObjects MySQL objects to exclude from the stream. * Structure is documented below. @@ -135,6 +190,27 @@ public Builder excludeObjects(StreamSourceConfigMysqlSourceConfigExcludeObjectsA return excludeObjects(Output.of(excludeObjects)); } + /** + * @param gtid CDC reader reads from gtid based replication. + * + * @return builder + * + */ + public Builder gtid(@Nullable Output gtid) { + $.gtid = gtid; + return this; + } + + /** + * @param gtid CDC reader reads from gtid based replication. + * + * @return builder + * + */ + public Builder gtid(StreamSourceConfigMysqlSourceConfigGtidArgs gtid) { + return gtid(Output.of(gtid)); + } + /** * @param includeObjects MySQL objects to retrieve from the source. * Structure is documented below. diff --git a/sdk/java/src/main/java/com/pulumi/gcp/datastream/inputs/StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/datastream/inputs/StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs.java new file mode 100644 index 0000000000..1355f55bcf --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/datastream/inputs/StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs.java @@ -0,0 +1,28 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.datastream.inputs; + + + + +public final class StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs extends com.pulumi.resources.ResourceArgs { + + public static final StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs Empty = new StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs(); + + public static Builder builder() { + return new Builder(); + } + + public static final class Builder { + private StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs $; + + public Builder() { + $ = new StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs(); + } + public StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/datastream/inputs/StreamSourceConfigMysqlSourceConfigGtidArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/datastream/inputs/StreamSourceConfigMysqlSourceConfigGtidArgs.java new file mode 100644 index 0000000000..8937213757 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/datastream/inputs/StreamSourceConfigMysqlSourceConfigGtidArgs.java @@ -0,0 +1,28 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.datastream.inputs; + + + + +public final class StreamSourceConfigMysqlSourceConfigGtidArgs extends com.pulumi.resources.ResourceArgs { + + public static final StreamSourceConfigMysqlSourceConfigGtidArgs Empty = new StreamSourceConfigMysqlSourceConfigGtidArgs(); + + public static Builder builder() { + return new Builder(); + } + + public static final class Builder { + private StreamSourceConfigMysqlSourceConfigGtidArgs $; + + public Builder() { + $ = new StreamSourceConfigMysqlSourceConfigGtidArgs(); + } + public StreamSourceConfigMysqlSourceConfigGtidArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/datastream/outputs/StreamSourceConfigMysqlSourceConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/datastream/outputs/StreamSourceConfigMysqlSourceConfig.java index 9de69cc1fc..e7f0ff25f6 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/datastream/outputs/StreamSourceConfigMysqlSourceConfig.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/datastream/outputs/StreamSourceConfigMysqlSourceConfig.java @@ -4,7 +4,9 @@ package com.pulumi.gcp.datastream.outputs; import com.pulumi.core.annotations.CustomType; +import com.pulumi.gcp.datastream.outputs.StreamSourceConfigMysqlSourceConfigBinaryLogPosition; import com.pulumi.gcp.datastream.outputs.StreamSourceConfigMysqlSourceConfigExcludeObjects; +import com.pulumi.gcp.datastream.outputs.StreamSourceConfigMysqlSourceConfigGtid; import com.pulumi.gcp.datastream.outputs.StreamSourceConfigMysqlSourceConfigIncludeObjects; import java.lang.Integer; import java.util.Objects; @@ -13,12 +15,22 @@ @CustomType public final class StreamSourceConfigMysqlSourceConfig { + /** + * @return CDC reader reads from binary logs replication cdc method. + * + */ + private @Nullable StreamSourceConfigMysqlSourceConfigBinaryLogPosition binaryLogPosition; /** * @return MySQL objects to exclude from the stream. * Structure is documented below. * */ private @Nullable StreamSourceConfigMysqlSourceConfigExcludeObjects excludeObjects; + /** + * @return CDC reader reads from gtid based replication. + * + */ + private @Nullable StreamSourceConfigMysqlSourceConfigGtid gtid; /** * @return MySQL objects to retrieve from the source. * Structure is documented below. @@ -39,6 +51,13 @@ public final class StreamSourceConfigMysqlSourceConfig { private @Nullable Integer maxConcurrentCdcTasks; private StreamSourceConfigMysqlSourceConfig() {} + /** + * @return CDC reader reads from binary logs replication cdc method. + * + */ + public Optional binaryLogPosition() { + return Optional.ofNullable(this.binaryLogPosition); + } /** * @return MySQL objects to exclude from the stream. * Structure is documented below. @@ -47,6 +66,13 @@ private StreamSourceConfigMysqlSourceConfig() {} public Optional excludeObjects() { return Optional.ofNullable(this.excludeObjects); } + /** + * @return CDC reader reads from gtid based replication. + * + */ + public Optional gtid() { + return Optional.ofNullable(this.gtid); + } /** * @return MySQL objects to retrieve from the source. * Structure is documented below. @@ -81,19 +107,29 @@ public static Builder builder(StreamSourceConfigMysqlSourceConfig defaults) { } @CustomType.Builder public static final class Builder { + private @Nullable StreamSourceConfigMysqlSourceConfigBinaryLogPosition binaryLogPosition; private @Nullable StreamSourceConfigMysqlSourceConfigExcludeObjects excludeObjects; + private @Nullable StreamSourceConfigMysqlSourceConfigGtid gtid; private @Nullable StreamSourceConfigMysqlSourceConfigIncludeObjects includeObjects; private @Nullable Integer maxConcurrentBackfillTasks; private @Nullable Integer maxConcurrentCdcTasks; public Builder() {} public Builder(StreamSourceConfigMysqlSourceConfig defaults) { Objects.requireNonNull(defaults); + this.binaryLogPosition = defaults.binaryLogPosition; this.excludeObjects = defaults.excludeObjects; + this.gtid = defaults.gtid; this.includeObjects = defaults.includeObjects; this.maxConcurrentBackfillTasks = defaults.maxConcurrentBackfillTasks; this.maxConcurrentCdcTasks = defaults.maxConcurrentCdcTasks; } + @CustomType.Setter + public Builder binaryLogPosition(@Nullable StreamSourceConfigMysqlSourceConfigBinaryLogPosition binaryLogPosition) { + + this.binaryLogPosition = binaryLogPosition; + return this; + } @CustomType.Setter public Builder excludeObjects(@Nullable StreamSourceConfigMysqlSourceConfigExcludeObjects excludeObjects) { @@ -101,6 +137,12 @@ public Builder excludeObjects(@Nullable StreamSourceConfigMysqlSourceConfigExclu return this; } @CustomType.Setter + public Builder gtid(@Nullable StreamSourceConfigMysqlSourceConfigGtid gtid) { + + this.gtid = gtid; + return this; + } + @CustomType.Setter public Builder includeObjects(@Nullable StreamSourceConfigMysqlSourceConfigIncludeObjects includeObjects) { this.includeObjects = includeObjects; @@ -120,7 +162,9 @@ public Builder maxConcurrentCdcTasks(@Nullable Integer maxConcurrentCdcTasks) { } public StreamSourceConfigMysqlSourceConfig build() { final var _resultValue = new StreamSourceConfigMysqlSourceConfig(); + _resultValue.binaryLogPosition = binaryLogPosition; _resultValue.excludeObjects = excludeObjects; + _resultValue.gtid = gtid; _resultValue.includeObjects = includeObjects; _resultValue.maxConcurrentBackfillTasks = maxConcurrentBackfillTasks; _resultValue.maxConcurrentCdcTasks = maxConcurrentCdcTasks; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/datastream/outputs/StreamSourceConfigMysqlSourceConfigBinaryLogPosition.java b/sdk/java/src/main/java/com/pulumi/gcp/datastream/outputs/StreamSourceConfigMysqlSourceConfigBinaryLogPosition.java new file mode 100644 index 0000000000..207d4f375a --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/datastream/outputs/StreamSourceConfigMysqlSourceConfigBinaryLogPosition.java @@ -0,0 +1,32 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.datastream.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.util.Objects; + +@CustomType +public final class StreamSourceConfigMysqlSourceConfigBinaryLogPosition { + private StreamSourceConfigMysqlSourceConfigBinaryLogPosition() {} + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(StreamSourceConfigMysqlSourceConfigBinaryLogPosition defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + public Builder() {} + public Builder(StreamSourceConfigMysqlSourceConfigBinaryLogPosition defaults) { + Objects.requireNonNull(defaults); + } + + public StreamSourceConfigMysqlSourceConfigBinaryLogPosition build() { + final var _resultValue = new StreamSourceConfigMysqlSourceConfigBinaryLogPosition(); + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/datastream/outputs/StreamSourceConfigMysqlSourceConfigGtid.java b/sdk/java/src/main/java/com/pulumi/gcp/datastream/outputs/StreamSourceConfigMysqlSourceConfigGtid.java new file mode 100644 index 0000000000..b7f1d8cc12 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/datastream/outputs/StreamSourceConfigMysqlSourceConfigGtid.java @@ -0,0 +1,32 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.datastream.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.util.Objects; + +@CustomType +public final class StreamSourceConfigMysqlSourceConfigGtid { + private StreamSourceConfigMysqlSourceConfigGtid() {} + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(StreamSourceConfigMysqlSourceConfigGtid defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + public Builder() {} + public Builder(StreamSourceConfigMysqlSourceConfigGtid defaults) { + Objects.requireNonNull(defaults); + } + + public StreamSourceConfigMysqlSourceConfigGtid build() { + final var _resultValue = new StreamSourceConfigMysqlSourceConfigGtid(); + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/Connection.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/Connection.java index 79c789838b..4042a2ec48 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/Connection.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/Connection.java @@ -22,7 +22,65 @@ /** * ## Example Usage * - * ### Developer Connect Connection Basic + * ### Developer Connect Connection New + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.projects.ServiceIdentity;
+ * import com.pulumi.gcp.projects.ServiceIdentityArgs;
+ * import com.pulumi.gcp.projects.IAMMember;
+ * import com.pulumi.gcp.projects.IAMMemberArgs;
+ * import com.pulumi.gcp.developerconnect.Connection;
+ * import com.pulumi.gcp.developerconnect.ConnectionArgs;
+ * import com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigArgs;
+ * import com.pulumi.resources.CustomResourceOptions;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         // Setup permissions. Only needed once per project
+ *         var devconnect_p4sa = new ServiceIdentity("devconnect-p4sa", ServiceIdentityArgs.builder()
+ *             .service("developerconnect.googleapis.com")
+ *             .build());
+ * 
+ *         var devconnect_secret = new IAMMember("devconnect-secret", IAMMemberArgs.builder()
+ *             .project("my-project-name")
+ *             .role("roles/secretmanager.admin")
+ *             .member(devconnect_p4sa.member())
+ *             .build());
+ * 
+ *         var my_connection = new Connection("my-connection", ConnectionArgs.builder()
+ *             .location("us-central1")
+ *             .connectionId("tf-test-connection-new")
+ *             .githubConfig(ConnectionGithubConfigArgs.builder()
+ *                 .githubApp("FIREBASE")
+ *                 .build())
+ *             .build(), CustomResourceOptions.builder()
+ *                 .dependsOn(devconnect_secret)
+ *                 .build());
+ * 
+ *         ctx.export("nextSteps", my_connection.installationStates());
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * ### Developer Connect Connection Existing Credentials * * <!--Start PulumiCodeChooser --> *
@@ -51,21 +109,22 @@
  *     public static void stack(Context ctx) {
  *         var my_connection = new Connection("my-connection", ConnectionArgs.builder()
  *             .location("us-central1")
- *             .connectionId("tf-test-connection")
+ *             .connectionId("tf-test-connection-cred")
  *             .githubConfig(ConnectionGithubConfigArgs.builder()
  *                 .githubApp("DEVELOPER_CONNECT")
  *                 .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()
- *                     .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")
  *                     .build())
  *                 .build())
  *             .build());
  * 
+ *         ctx.export("nextSteps", my_connection.installationStates());
  *     }
  * }
  * }
  * 
* <!--End PulumiCodeChooser --> - * ### Developer Connect Connection Github Doc + * ### Developer Connect Connection Existing Installation * * <!--Start PulumiCodeChooser --> *
@@ -81,6 +140,8 @@
  * import com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;
  * import com.pulumi.gcp.secretmanager.SecretVersion;
  * import com.pulumi.gcp.secretmanager.SecretVersionArgs;
+ * import com.pulumi.gcp.projects.ServiceIdentity;
+ * import com.pulumi.gcp.projects.ServiceIdentityArgs;
  * import com.pulumi.gcp.organizations.OrganizationsFunctions;
  * import com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;
  * import com.pulumi.gcp.secretmanager.SecretIamPolicy;
@@ -96,12 +157,12 @@
  * import java.nio.file.Files;
  * import java.nio.file.Paths;
  * 
- * public class App }{{@code
- *     public static void main(String[] args) }{{@code
+ * public class App {
+ *     public static void main(String[] args) {
  *         Pulumi.run(App::stack);
- *     }}{@code
+ *     }
  * 
- *     public static void stack(Context ctx) }{{@code
+ *     public static void stack(Context ctx) {
  *         var github_token_secret = new Secret("github-token-secret", SecretArgs.builder()
  *             .secretId("github-token-secret")
  *             .replication(SecretReplicationArgs.builder()
@@ -116,16 +177,20 @@
  *                 .build()).result())
  *             .build());
  * 
+ *         var devconnect_p4sa = new ServiceIdentity("devconnect-p4sa", ServiceIdentityArgs.builder()
+ *             .service("developerconnect.googleapis.com")
+ *             .build());
+ * 
  *         final var p4sa-secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()
  *             .bindings(GetIAMPolicyBindingArgs.builder()
  *                 .role("roles/secretmanager.secretAccessor")
- *                 .members("serviceAccount:service-123456789}{@literal @}{@code gcp-sa-devconnect.iam.gserviceaccount.com")
+ *                 .members(devconnect_p4sa.member())
  *                 .build())
  *             .build());
  * 
  *         var policy = new SecretIamPolicy("policy", SecretIamPolicyArgs.builder()
  *             .secretId(github_token_secret.secretId())
- *             .policyData(p4sa_secretAccessor.policyData())
+ *             .policyData(p4sa_secretAccessor.applyValue(p4sa_secretAccessor -> p4sa_secretAccessor.policyData()))
  *             .build());
  * 
  *         var my_connection = new Connection("my-connection", ConnectionArgs.builder()
@@ -140,8 +205,8 @@
  *                 .build())
  *             .build());
  * 
- *     }}{@code
- * }}{@code
+ *     }
+ * }
  * }
  * 
* <!--End PulumiCodeChooser --> diff --git a/sdk/java/src/main/java/com/pulumi/gcp/diagflow/inputs/CxAgentAdvancedSettingsSpeechSettingsArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/diagflow/inputs/CxAgentAdvancedSettingsSpeechSettingsArgs.java index 673f4b5362..9a4122f583 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/diagflow/inputs/CxAgentAdvancedSettingsSpeechSettingsArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/diagflow/inputs/CxAgentAdvancedSettingsSpeechSettingsArgs.java @@ -68,14 +68,14 @@ public Optional> 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. * */ @Import(name="useTimeoutBasedEndpointing") private @Nullable Output useTimeoutBasedEndpointing; /** - * @return Use timeout based endpointing, interpreting endpointer sensitivy as seconds of timeout value. + * @return Use timeout based endpointing, interpreting endpointer sensitivity as seconds of timeout value. * */ public Optional> useTimeoutBasedEndpointing() { @@ -177,7 +177,7 @@ public Builder noSpeechTimeout(String noSpeechTimeout) { } /** - * @param useTimeoutBasedEndpointing Use timeout based endpointing, interpreting endpointer sensitivy as seconds of timeout value. + * @param useTimeoutBasedEndpointing Use timeout based endpointing, interpreting endpointer sensitivity as seconds of timeout value. * * @return builder * @@ -188,7 +188,7 @@ public Builder useTimeoutBasedEndpointing(@Nullable Output useTimeoutBa } /** - * @param useTimeoutBasedEndpointing Use timeout based endpointing, interpreting endpointer sensitivy as seconds of timeout value. + * @param useTimeoutBasedEndpointing Use timeout based endpointing, interpreting endpointer sensitivity as seconds of timeout value. * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/diagflow/outputs/CxAgentAdvancedSettingsSpeechSettings.java b/sdk/java/src/main/java/com/pulumi/gcp/diagflow/outputs/CxAgentAdvancedSettingsSpeechSettings.java index 9d17a26059..dfb229eea0 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/diagflow/outputs/CxAgentAdvancedSettingsSpeechSettings.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/diagflow/outputs/CxAgentAdvancedSettingsSpeechSettings.java @@ -32,7 +32,7 @@ public final class CxAgentAdvancedSettingsSpeechSettings { */ private @Nullable String noSpeechTimeout; /** - * @return Use timeout based endpointing, interpreting endpointer sensitivy as seconds of timeout value. + * @return Use timeout based endpointing, interpreting endpointer sensitivity as seconds of timeout value. * */ private @Nullable Boolean useTimeoutBasedEndpointing; @@ -62,7 +62,7 @@ public Optional noSpeechTimeout() { return Optional.ofNullable(this.noSpeechTimeout); } /** - * @return Use timeout based endpointing, interpreting endpointer sensitivy as seconds of timeout value. + * @return Use timeout based endpointing, interpreting endpointer sensitivity as seconds of timeout value. * */ public Optional useTimeoutBasedEndpointing() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/filestore/Backup.java b/sdk/java/src/main/java/com/pulumi/gcp/filestore/Backup.java index ad1f40fad6..4a52363308 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/filestore/Backup.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/filestore/Backup.java @@ -367,6 +367,26 @@ public Output state() { public Output storageBytes() { return this.storageBytes; } + /** + * 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. + * + */ + @Export(name="tags", refs={Map.class,String.class}, tree="[0,1,1]") + private Output> tags; + + /** + * @return 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 Output>> tags() { + return Codegen.optional(this.tags); + } /** * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/filestore/BackupArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/filestore/BackupArgs.java index e7e4b6bb16..bb320b3638 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/filestore/BackupArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/filestore/BackupArgs.java @@ -146,6 +146,27 @@ public Output sourceInstance() { return this.sourceInstance; } + /** + * 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. + * + */ + @Import(name="tags") + private @Nullable Output> tags; + + /** + * @return 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 Optional>> tags() { + return Optional.ofNullable(this.tags); + } + private BackupArgs() {} private BackupArgs(BackupArgs $) { @@ -156,6 +177,7 @@ private BackupArgs(BackupArgs $) { this.project = $.project; this.sourceFileShare = $.sourceFileShare; this.sourceInstance = $.sourceInstance; + this.tags = $.tags; } public static Builder builder() { @@ -347,6 +369,33 @@ public Builder sourceInstance(String sourceInstance) { return sourceInstance(Output.of(sourceInstance)); } + /** + * @param 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. + * + * @return builder + * + */ + public Builder tags(@Nullable Output> tags) { + $.tags = tags; + return this; + } + + /** + * @param 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. + * + * @return builder + * + */ + public Builder tags(Map tags) { + return tags(Output.of(tags)); + } + public BackupArgs build() { if ($.location == null) { throw new MissingRequiredPropertyException("BackupArgs", "location"); diff --git a/sdk/java/src/main/java/com/pulumi/gcp/filestore/inputs/BackupState.java b/sdk/java/src/main/java/com/pulumi/gcp/filestore/inputs/BackupState.java index 1fdfc345d5..46f5246aae 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/filestore/inputs/BackupState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/filestore/inputs/BackupState.java @@ -282,6 +282,27 @@ public Optional> storageBytes() { return Optional.ofNullable(this.storageBytes); } + /** + * 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. + * + */ + @Import(name="tags") + private @Nullable Output> tags; + + /** + * @return 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 Optional>> tags() { + return Optional.ofNullable(this.tags); + } + private BackupState() {} private BackupState(BackupState $) { @@ -301,6 +322,7 @@ private BackupState(BackupState $) { this.sourceInstanceTier = $.sourceInstanceTier; this.state = $.state; this.storageBytes = $.storageBytes; + this.tags = $.tags; } public static Builder builder() { @@ -683,6 +705,33 @@ public Builder storageBytes(String storageBytes) { return storageBytes(Output.of(storageBytes)); } + /** + * @param 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. + * + * @return builder + * + */ + public Builder tags(@Nullable Output> tags) { + $.tags = tags; + return this; + } + + /** + * @param 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. + * + * @return builder + * + */ + public Builder tags(Map tags) { + return tags(Output.of(tags)); + } + public BackupState build() { return $; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/firebase/HostingCustomDomain.java b/sdk/java/src/main/java/com/pulumi/gcp/firebase/HostingCustomDomain.java index 04e7d9a5ce..48a69d15a0 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/firebase/HostingCustomDomain.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/firebase/HostingCustomDomain.java @@ -525,7 +525,7 @@ public Output project() { return this.project; } /** - * 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` @@ -535,7 +535,7 @@ public Output project() { private Output reconciling; /** - * @return if true, indicates that Hosting's systems are attmepting to + * @return 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/java/src/main/java/com/pulumi/gcp/firebase/inputs/HostingCustomDomainState.java b/sdk/java/src/main/java/com/pulumi/gcp/firebase/inputs/HostingCustomDomainState.java index d8097f2839..31656917d6 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/firebase/inputs/HostingCustomDomainState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/firebase/inputs/HostingCustomDomainState.java @@ -335,7 +335,7 @@ public Optional> project() { } /** - * 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` @@ -345,7 +345,7 @@ public Optional> project() { private @Nullable Output reconciling; /** - * @return if true, indicates that Hosting's systems are attmepting to + * @return 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` @@ -887,7 +887,7 @@ public Builder project(String project) { } /** - * @param reconciling if true, indicates that Hosting's systems are attmepting to + * @param reconciling 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` @@ -901,7 +901,7 @@ public Builder reconciling(@Nullable Output reconciling) { } /** - * @param reconciling if true, indicates that Hosting's systems are attmepting to + * @param reconciling 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/java/src/main/java/com/pulumi/gcp/firestore/inputs/DatabaseCmekConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/firestore/inputs/DatabaseCmekConfigArgs.java index cbda218465..5edbb7e819 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/firestore/inputs/DatabaseCmekConfigArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/firestore/inputs/DatabaseCmekConfigArgs.java @@ -52,7 +52,7 @@ public Optional>> 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. * */ @@ -69,7 +69,7 @@ public Optional>> 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. * */ @@ -158,7 +158,7 @@ public Builder activeKeyVersions(String... 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. * * @return builder @@ -179,7 +179,7 @@ public Builder kmsKeyName(Output kmsKeyName) { * 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. * * @return builder diff --git a/sdk/java/src/main/java/com/pulumi/gcp/firestore/outputs/DatabaseCmekConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/firestore/outputs/DatabaseCmekConfig.java index 72fde21868..6c07e6e5ef 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/firestore/outputs/DatabaseCmekConfig.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/firestore/outputs/DatabaseCmekConfig.java @@ -32,7 +32,7 @@ public final 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. * */ @@ -61,7 +61,7 @@ public List 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. * */ diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/GkehubFunctions.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/GkehubFunctions.java index f66da996a8..d34d09b150 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/GkehubFunctions.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/GkehubFunctions.java @@ -9,8 +9,10 @@ import com.pulumi.deployment.InvokeOptions; import com.pulumi.deployment.InvokeOutputOptions; import com.pulumi.gcp.Utilities; +import com.pulumi.gcp.gkehub.inputs.GetFeatureArgs; import com.pulumi.gcp.gkehub.inputs.GetFeatureIamPolicyArgs; import com.pulumi.gcp.gkehub.inputs.GetFeatureIamPolicyPlainArgs; +import com.pulumi.gcp.gkehub.inputs.GetFeaturePlainArgs; import com.pulumi.gcp.gkehub.inputs.GetMembershipBindingArgs; import com.pulumi.gcp.gkehub.inputs.GetMembershipBindingPlainArgs; import com.pulumi.gcp.gkehub.inputs.GetMembershipIamPolicyArgs; @@ -18,12 +20,28 @@ import com.pulumi.gcp.gkehub.inputs.GetScopeIamPolicyArgs; import com.pulumi.gcp.gkehub.inputs.GetScopeIamPolicyPlainArgs; import com.pulumi.gcp.gkehub.outputs.GetFeatureIamPolicyResult; +import com.pulumi.gcp.gkehub.outputs.GetFeatureResult; import com.pulumi.gcp.gkehub.outputs.GetMembershipBindingResult; import com.pulumi.gcp.gkehub.outputs.GetMembershipIamPolicyResult; import com.pulumi.gcp.gkehub.outputs.GetScopeIamPolicyResult; import java.util.concurrent.CompletableFuture; public final class GkehubFunctions { + public static Output getFeature(GetFeatureArgs args) { + return getFeature(args, InvokeOptions.Empty); + } + public static CompletableFuture getFeaturePlain(GetFeaturePlainArgs args) { + return getFeaturePlain(args, InvokeOptions.Empty); + } + public static Output getFeature(GetFeatureArgs args, InvokeOptions options) { + return Deployment.getInstance().invoke("gcp:gkehub/getFeature:getFeature", TypeShape.of(GetFeatureResult.class), args, Utilities.withVersion(options)); + } + public static Output getFeature(GetFeatureArgs args, InvokeOutputOptions options) { + return Deployment.getInstance().invoke("gcp:gkehub/getFeature:getFeature", TypeShape.of(GetFeatureResult.class), args, Utilities.withVersion(options)); + } + public static CompletableFuture getFeaturePlain(GetFeaturePlainArgs args, InvokeOptions options) { + return Deployment.getInstance().invokeAsync("gcp:gkehub/getFeature:getFeature", TypeShape.of(GetFeatureResult.class), args, Utilities.withVersion(options)); + } /** * Retrieves the current IAM policy data for feature * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/inputs/GetFeatureArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/inputs/GetFeatureArgs.java new file mode 100644 index 0000000000..7bfb548719 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/inputs/GetFeatureArgs.java @@ -0,0 +1,104 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class GetFeatureArgs extends com.pulumi.resources.InvokeArgs { + + public static final GetFeatureArgs Empty = new GetFeatureArgs(); + + @Import(name="location", required=true) + private Output location; + + public Output location() { + return this.location; + } + + @Import(name="name", required=true) + private Output name; + + public Output name() { + return this.name; + } + + @Import(name="project") + private @Nullable Output project; + + public Optional> project() { + return Optional.ofNullable(this.project); + } + + private GetFeatureArgs() {} + + private GetFeatureArgs(GetFeatureArgs $) { + this.location = $.location; + this.name = $.name; + this.project = $.project; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(GetFeatureArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private GetFeatureArgs $; + + public Builder() { + $ = new GetFeatureArgs(); + } + + public Builder(GetFeatureArgs defaults) { + $ = new GetFeatureArgs(Objects.requireNonNull(defaults)); + } + + public Builder location(Output location) { + $.location = location; + return this; + } + + public Builder location(String location) { + return location(Output.of(location)); + } + + public Builder name(Output name) { + $.name = name; + return this; + } + + public Builder name(String name) { + return name(Output.of(name)); + } + + public Builder project(@Nullable Output project) { + $.project = project; + return this; + } + + public Builder project(String project) { + return project(Output.of(project)); + } + + public GetFeatureArgs build() { + if ($.location == null) { + throw new MissingRequiredPropertyException("GetFeatureArgs", "location"); + } + if ($.name == null) { + throw new MissingRequiredPropertyException("GetFeatureArgs", "name"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/inputs/GetFeaturePlainArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/inputs/GetFeaturePlainArgs.java new file mode 100644 index 0000000000..4ae38f6fa7 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/inputs/GetFeaturePlainArgs.java @@ -0,0 +1,91 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.inputs; + +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class GetFeaturePlainArgs extends com.pulumi.resources.InvokeArgs { + + public static final GetFeaturePlainArgs Empty = new GetFeaturePlainArgs(); + + @Import(name="location", required=true) + private String location; + + public String location() { + return this.location; + } + + @Import(name="name", required=true) + private String name; + + public String name() { + return this.name; + } + + @Import(name="project") + private @Nullable String project; + + public Optional project() { + return Optional.ofNullable(this.project); + } + + private GetFeaturePlainArgs() {} + + private GetFeaturePlainArgs(GetFeaturePlainArgs $) { + this.location = $.location; + this.name = $.name; + this.project = $.project; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(GetFeaturePlainArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private GetFeaturePlainArgs $; + + public Builder() { + $ = new GetFeaturePlainArgs(); + } + + public Builder(GetFeaturePlainArgs defaults) { + $ = new GetFeaturePlainArgs(Objects.requireNonNull(defaults)); + } + + public Builder location(String location) { + $.location = location; + return this; + } + + public Builder name(String name) { + $.name = name; + return this; + } + + public Builder project(@Nullable String project) { + $.project = project; + return this; + } + + public GetFeaturePlainArgs build() { + if ($.location == null) { + throw new MissingRequiredPropertyException("GetFeaturePlainArgs", "location"); + } + if ($.name == null) { + throw new MissingRequiredPropertyException("GetFeaturePlainArgs", "name"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfig.java new file mode 100644 index 0000000000..a8893bbbba --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfig.java @@ -0,0 +1,116 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.gkehub.outputs.GetFeatureFleetDefaultMemberConfigConfigmanagement; +import com.pulumi.gcp.gkehub.outputs.GetFeatureFleetDefaultMemberConfigMesh; +import com.pulumi.gcp.gkehub.outputs.GetFeatureFleetDefaultMemberConfigPolicycontroller; +import java.util.List; +import java.util.Objects; + +@CustomType +public final class GetFeatureFleetDefaultMemberConfig { + /** + * @return Config Management spec + * + */ + private List configmanagements; + /** + * @return Service Mesh spec + * + */ + private List meshes; + /** + * @return Policy Controller spec + * + */ + private List policycontrollers; + + private GetFeatureFleetDefaultMemberConfig() {} + /** + * @return Config Management spec + * + */ + public List configmanagements() { + return this.configmanagements; + } + /** + * @return Service Mesh spec + * + */ + public List meshes() { + return this.meshes; + } + /** + * @return Policy Controller spec + * + */ + public List policycontrollers() { + return this.policycontrollers; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureFleetDefaultMemberConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private List configmanagements; + private List meshes; + private List policycontrollers; + public Builder() {} + public Builder(GetFeatureFleetDefaultMemberConfig defaults) { + Objects.requireNonNull(defaults); + this.configmanagements = defaults.configmanagements; + this.meshes = defaults.meshes; + this.policycontrollers = defaults.policycontrollers; + } + + @CustomType.Setter + public Builder configmanagements(List configmanagements) { + if (configmanagements == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfig", "configmanagements"); + } + this.configmanagements = configmanagements; + return this; + } + public Builder configmanagements(GetFeatureFleetDefaultMemberConfigConfigmanagement... configmanagements) { + return configmanagements(List.of(configmanagements)); + } + @CustomType.Setter + public Builder meshes(List meshes) { + if (meshes == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfig", "meshes"); + } + this.meshes = meshes; + return this; + } + public Builder meshes(GetFeatureFleetDefaultMemberConfigMesh... meshes) { + return meshes(List.of(meshes)); + } + @CustomType.Setter + public Builder policycontrollers(List policycontrollers) { + if (policycontrollers == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfig", "policycontrollers"); + } + this.policycontrollers = policycontrollers; + return this; + } + public Builder policycontrollers(GetFeatureFleetDefaultMemberConfigPolicycontroller... policycontrollers) { + return policycontrollers(List.of(policycontrollers)); + } + public GetFeatureFleetDefaultMemberConfig build() { + final var _resultValue = new GetFeatureFleetDefaultMemberConfig(); + _resultValue.configmanagements = configmanagements; + _resultValue.meshes = meshes; + _resultValue.policycontrollers = policycontrollers; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigConfigmanagement.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigConfigmanagement.java new file mode 100644 index 0000000000..d3a1d1779b --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigConfigmanagement.java @@ -0,0 +1,109 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.gkehub.outputs.GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync; +import java.lang.String; +import java.util.List; +import java.util.Objects; + +@CustomType +public final class GetFeatureFleetDefaultMemberConfigConfigmanagement { + /** + * @return ConfigSync configuration for the cluster + * + */ + private List configSyncs; + /** + * @return 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"] + * + */ + private String management; + /** + * @return Version of Config Sync installed + * + */ + private String version; + + private GetFeatureFleetDefaultMemberConfigConfigmanagement() {} + /** + * @return ConfigSync configuration for the cluster + * + */ + public List configSyncs() { + return this.configSyncs; + } + /** + * @return 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 String management() { + return this.management; + } + /** + * @return Version of Config Sync installed + * + */ + public String version() { + return this.version; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureFleetDefaultMemberConfigConfigmanagement defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private List configSyncs; + private String management; + private String version; + public Builder() {} + public Builder(GetFeatureFleetDefaultMemberConfigConfigmanagement defaults) { + Objects.requireNonNull(defaults); + this.configSyncs = defaults.configSyncs; + this.management = defaults.management; + this.version = defaults.version; + } + + @CustomType.Setter + public Builder configSyncs(List configSyncs) { + if (configSyncs == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigConfigmanagement", "configSyncs"); + } + this.configSyncs = configSyncs; + return this; + } + public Builder configSyncs(GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync... configSyncs) { + return configSyncs(List.of(configSyncs)); + } + @CustomType.Setter + public Builder management(String management) { + if (management == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigConfigmanagement", "management"); + } + this.management = management; + return this; + } + @CustomType.Setter + public Builder version(String version) { + if (version == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigConfigmanagement", "version"); + } + this.version = version; + return this; + } + public GetFeatureFleetDefaultMemberConfigConfigmanagement build() { + final var _resultValue = new GetFeatureFleetDefaultMemberConfigConfigmanagement(); + _resultValue.configSyncs = configSyncs; + _resultValue.management = management; + _resultValue.version = version; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync.java new file mode 100644 index 0000000000..0e4a914580 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync.java @@ -0,0 +1,160 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.gkehub.outputs.GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit; +import com.pulumi.gcp.gkehub.outputs.GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci; +import java.lang.Boolean; +import java.lang.String; +import java.util.List; +import java.util.Objects; + +@CustomType +public final class GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync { + /** + * @return 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. + * + */ + private Boolean enabled; + /** + * @return Git repo configuration for the cluster + * + */ + private List gits; + /** + * @return OCI repo configuration for the cluster + * + */ + private List ocis; + /** + * @return 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. + * + */ + private Boolean preventDrift; + /** + * @return Specifies whether the Config Sync Repo is in hierarchical or unstructured mode + * + */ + private String sourceFormat; + + private GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync() {} + /** + * @return 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 Boolean enabled() { + return this.enabled; + } + /** + * @return Git repo configuration for the cluster + * + */ + public List gits() { + return this.gits; + } + /** + * @return OCI repo configuration for the cluster + * + */ + public List ocis() { + return this.ocis; + } + /** + * @return 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 Boolean preventDrift() { + return this.preventDrift; + } + /** + * @return Specifies whether the Config Sync Repo is in hierarchical or unstructured mode + * + */ + public String sourceFormat() { + return this.sourceFormat; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private Boolean enabled; + private List gits; + private List ocis; + private Boolean preventDrift; + private String sourceFormat; + public Builder() {} + public Builder(GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync defaults) { + Objects.requireNonNull(defaults); + this.enabled = defaults.enabled; + this.gits = defaults.gits; + this.ocis = defaults.ocis; + this.preventDrift = defaults.preventDrift; + this.sourceFormat = defaults.sourceFormat; + } + + @CustomType.Setter + public Builder enabled(Boolean enabled) { + if (enabled == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync", "enabled"); + } + this.enabled = enabled; + return this; + } + @CustomType.Setter + public Builder gits(List gits) { + if (gits == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync", "gits"); + } + this.gits = gits; + return this; + } + public Builder gits(GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit... gits) { + return gits(List.of(gits)); + } + @CustomType.Setter + public Builder ocis(List ocis) { + if (ocis == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync", "ocis"); + } + this.ocis = ocis; + return this; + } + public Builder ocis(GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci... ocis) { + return ocis(List.of(ocis)); + } + @CustomType.Setter + public Builder preventDrift(Boolean preventDrift) { + if (preventDrift == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync", "preventDrift"); + } + this.preventDrift = preventDrift; + return this; + } + @CustomType.Setter + public Builder sourceFormat(String sourceFormat) { + if (sourceFormat == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync", "sourceFormat"); + } + this.sourceFormat = sourceFormat; + return this; + } + public GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync build() { + final var _resultValue = new GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync(); + _resultValue.enabled = enabled; + _resultValue.gits = gits; + _resultValue.ocis = ocis; + _resultValue.preventDrift = preventDrift; + _resultValue.sourceFormat = sourceFormat; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit.java new file mode 100644 index 0000000000..ca7a4c2621 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit.java @@ -0,0 +1,219 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit { + /** + * @return The Google Cloud Service Account Email used for auth when secretType is gcpServiceAccount + * + */ + private String gcpServiceAccountEmail; + /** + * @return URL for the HTTPS Proxy to be used when communicating with the Git repo + * + */ + private String httpsProxy; + /** + * @return The path within the Git repository that represents the top level of the repo to sync + * + */ + private String policyDir; + /** + * @return Type of secret configured for access to the Git repo + * + */ + private String secretType; + /** + * @return The branch of the repository to sync from. Default: master + * + */ + private String syncBranch; + /** + * @return The URL of the Git repository to use as the source of truth + * + */ + private String syncRepo; + /** + * @return Git revision (tag or hash) to check out. Default HEAD + * + */ + private String syncRev; + /** + * @return Period in seconds between consecutive syncs. Default: 15 + * + */ + private String syncWaitSecs; + + private GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit() {} + /** + * @return The Google Cloud Service Account Email used for auth when secretType is gcpServiceAccount + * + */ + public String gcpServiceAccountEmail() { + return this.gcpServiceAccountEmail; + } + /** + * @return URL for the HTTPS Proxy to be used when communicating with the Git repo + * + */ + public String httpsProxy() { + return this.httpsProxy; + } + /** + * @return The path within the Git repository that represents the top level of the repo to sync + * + */ + public String policyDir() { + return this.policyDir; + } + /** + * @return Type of secret configured for access to the Git repo + * + */ + public String secretType() { + return this.secretType; + } + /** + * @return The branch of the repository to sync from. Default: master + * + */ + public String syncBranch() { + return this.syncBranch; + } + /** + * @return The URL of the Git repository to use as the source of truth + * + */ + public String syncRepo() { + return this.syncRepo; + } + /** + * @return Git revision (tag or hash) to check out. Default HEAD + * + */ + public String syncRev() { + return this.syncRev; + } + /** + * @return Period in seconds between consecutive syncs. Default: 15 + * + */ + public String syncWaitSecs() { + return this.syncWaitSecs; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String gcpServiceAccountEmail; + private String httpsProxy; + private String policyDir; + private String secretType; + private String syncBranch; + private String syncRepo; + private String syncRev; + private String syncWaitSecs; + public Builder() {} + public Builder(GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit defaults) { + Objects.requireNonNull(defaults); + this.gcpServiceAccountEmail = defaults.gcpServiceAccountEmail; + this.httpsProxy = defaults.httpsProxy; + this.policyDir = defaults.policyDir; + this.secretType = defaults.secretType; + this.syncBranch = defaults.syncBranch; + this.syncRepo = defaults.syncRepo; + this.syncRev = defaults.syncRev; + this.syncWaitSecs = defaults.syncWaitSecs; + } + + @CustomType.Setter + public Builder gcpServiceAccountEmail(String gcpServiceAccountEmail) { + if (gcpServiceAccountEmail == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit", "gcpServiceAccountEmail"); + } + this.gcpServiceAccountEmail = gcpServiceAccountEmail; + return this; + } + @CustomType.Setter + public Builder httpsProxy(String httpsProxy) { + if (httpsProxy == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit", "httpsProxy"); + } + this.httpsProxy = httpsProxy; + return this; + } + @CustomType.Setter + public Builder policyDir(String policyDir) { + if (policyDir == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit", "policyDir"); + } + this.policyDir = policyDir; + return this; + } + @CustomType.Setter + public Builder secretType(String secretType) { + if (secretType == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit", "secretType"); + } + this.secretType = secretType; + return this; + } + @CustomType.Setter + public Builder syncBranch(String syncBranch) { + if (syncBranch == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit", "syncBranch"); + } + this.syncBranch = syncBranch; + return this; + } + @CustomType.Setter + public Builder syncRepo(String syncRepo) { + if (syncRepo == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit", "syncRepo"); + } + this.syncRepo = syncRepo; + return this; + } + @CustomType.Setter + public Builder syncRev(String syncRev) { + if (syncRev == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit", "syncRev"); + } + this.syncRev = syncRev; + return this; + } + @CustomType.Setter + public Builder syncWaitSecs(String syncWaitSecs) { + if (syncWaitSecs == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit", "syncWaitSecs"); + } + this.syncWaitSecs = syncWaitSecs; + return this; + } + public GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit build() { + final var _resultValue = new GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit(); + _resultValue.gcpServiceAccountEmail = gcpServiceAccountEmail; + _resultValue.httpsProxy = httpsProxy; + _resultValue.policyDir = policyDir; + _resultValue.secretType = secretType; + _resultValue.syncBranch = syncBranch; + _resultValue.syncRepo = syncRepo; + _resultValue.syncRev = syncRev; + _resultValue.syncWaitSecs = syncWaitSecs; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci.java new file mode 100644 index 0000000000..3b52ab271f --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci.java @@ -0,0 +1,173 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci { + /** + * @return The Google Cloud Service Account Email used for auth when secretType is gcpServiceAccount + * + */ + private String gcpServiceAccountEmail; + /** + * @return The absolute path of the directory that contains the local resources. Default: the root directory of the image + * + */ + private String policyDir; + /** + * @return Type of secret configured for access to the Git repo + * + */ + private String secretType; + /** + * @return The OCI image repository URL for the package to sync from + * + */ + private String syncRepo; + /** + * @return Period in seconds between consecutive syncs. Default: 15 + * + */ + private String syncWaitSecs; + /** + * @return Version of Config Sync installed + * + */ + private String version; + + private GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci() {} + /** + * @return The Google Cloud Service Account Email used for auth when secretType is gcpServiceAccount + * + */ + public String gcpServiceAccountEmail() { + return this.gcpServiceAccountEmail; + } + /** + * @return The absolute path of the directory that contains the local resources. Default: the root directory of the image + * + */ + public String policyDir() { + return this.policyDir; + } + /** + * @return Type of secret configured for access to the Git repo + * + */ + public String secretType() { + return this.secretType; + } + /** + * @return The OCI image repository URL for the package to sync from + * + */ + public String syncRepo() { + return this.syncRepo; + } + /** + * @return Period in seconds between consecutive syncs. Default: 15 + * + */ + public String syncWaitSecs() { + return this.syncWaitSecs; + } + /** + * @return Version of Config Sync installed + * + */ + public String version() { + return this.version; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String gcpServiceAccountEmail; + private String policyDir; + private String secretType; + private String syncRepo; + private String syncWaitSecs; + private String version; + public Builder() {} + public Builder(GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci defaults) { + Objects.requireNonNull(defaults); + this.gcpServiceAccountEmail = defaults.gcpServiceAccountEmail; + this.policyDir = defaults.policyDir; + this.secretType = defaults.secretType; + this.syncRepo = defaults.syncRepo; + this.syncWaitSecs = defaults.syncWaitSecs; + this.version = defaults.version; + } + + @CustomType.Setter + public Builder gcpServiceAccountEmail(String gcpServiceAccountEmail) { + if (gcpServiceAccountEmail == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci", "gcpServiceAccountEmail"); + } + this.gcpServiceAccountEmail = gcpServiceAccountEmail; + return this; + } + @CustomType.Setter + public Builder policyDir(String policyDir) { + if (policyDir == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci", "policyDir"); + } + this.policyDir = policyDir; + return this; + } + @CustomType.Setter + public Builder secretType(String secretType) { + if (secretType == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci", "secretType"); + } + this.secretType = secretType; + return this; + } + @CustomType.Setter + public Builder syncRepo(String syncRepo) { + if (syncRepo == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci", "syncRepo"); + } + this.syncRepo = syncRepo; + return this; + } + @CustomType.Setter + public Builder syncWaitSecs(String syncWaitSecs) { + if (syncWaitSecs == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci", "syncWaitSecs"); + } + this.syncWaitSecs = syncWaitSecs; + return this; + } + @CustomType.Setter + public Builder version(String version) { + if (version == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci", "version"); + } + this.version = version; + return this; + } + public GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci build() { + final var _resultValue = new GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci(); + _resultValue.gcpServiceAccountEmail = gcpServiceAccountEmail; + _resultValue.policyDir = policyDir; + _resultValue.secretType = secretType; + _resultValue.syncRepo = syncRepo; + _resultValue.syncWaitSecs = syncWaitSecs; + _resultValue.version = version; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigMesh.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigMesh.java new file mode 100644 index 0000000000..455c11f32f --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigMesh.java @@ -0,0 +1,58 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetFeatureFleetDefaultMemberConfigMesh { + /** + * @return Whether to automatically manage Service Mesh Possible values: ["MANAGEMENT_UNSPECIFIED", "MANAGEMENT_AUTOMATIC", "MANAGEMENT_MANUAL"] + * + */ + private String management; + + private GetFeatureFleetDefaultMemberConfigMesh() {} + /** + * @return Whether to automatically manage Service Mesh Possible values: ["MANAGEMENT_UNSPECIFIED", "MANAGEMENT_AUTOMATIC", "MANAGEMENT_MANUAL"] + * + */ + public String management() { + return this.management; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureFleetDefaultMemberConfigMesh defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String management; + public Builder() {} + public Builder(GetFeatureFleetDefaultMemberConfigMesh defaults) { + Objects.requireNonNull(defaults); + this.management = defaults.management; + } + + @CustomType.Setter + public Builder management(String management) { + if (management == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigMesh", "management"); + } + this.management = management; + return this; + } + public GetFeatureFleetDefaultMemberConfigMesh build() { + final var _resultValue = new GetFeatureFleetDefaultMemberConfigMesh(); + _resultValue.management = management; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontroller.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontroller.java new file mode 100644 index 0000000000..c78d2391d6 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontroller.java @@ -0,0 +1,86 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.gkehub.outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig; +import java.lang.String; +import java.util.List; +import java.util.Objects; + +@CustomType +public final class GetFeatureFleetDefaultMemberConfigPolicycontroller { + /** + * @return Configuration of Policy Controller + * + */ + private List policyControllerHubConfigs; + /** + * @return Configures the version of Policy Controller + * + */ + private String version; + + private GetFeatureFleetDefaultMemberConfigPolicycontroller() {} + /** + * @return Configuration of Policy Controller + * + */ + public List policyControllerHubConfigs() { + return this.policyControllerHubConfigs; + } + /** + * @return Configures the version of Policy Controller + * + */ + public String version() { + return this.version; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureFleetDefaultMemberConfigPolicycontroller defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private List policyControllerHubConfigs; + private String version; + public Builder() {} + public Builder(GetFeatureFleetDefaultMemberConfigPolicycontroller defaults) { + Objects.requireNonNull(defaults); + this.policyControllerHubConfigs = defaults.policyControllerHubConfigs; + this.version = defaults.version; + } + + @CustomType.Setter + public Builder policyControllerHubConfigs(List policyControllerHubConfigs) { + if (policyControllerHubConfigs == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontroller", "policyControllerHubConfigs"); + } + this.policyControllerHubConfigs = policyControllerHubConfigs; + return this; + } + public Builder policyControllerHubConfigs(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig... policyControllerHubConfigs) { + return policyControllerHubConfigs(List.of(policyControllerHubConfigs)); + } + @CustomType.Setter + public Builder version(String version) { + if (version == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontroller", "version"); + } + this.version = version; + return this; + } + public GetFeatureFleetDefaultMemberConfigPolicycontroller build() { + final var _resultValue = new GetFeatureFleetDefaultMemberConfigPolicycontroller(); + _resultValue.policyControllerHubConfigs = policyControllerHubConfigs; + _resultValue.version = version; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig.java new file mode 100644 index 0000000000..9a1d7941e7 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig.java @@ -0,0 +1,283 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.gkehub.outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig; +import com.pulumi.gcp.gkehub.outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoring; +import com.pulumi.gcp.gkehub.outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent; +import java.lang.Boolean; +import java.lang.Integer; +import java.lang.String; +import java.util.List; +import java.util.Objects; + +@CustomType +public final class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig { + /** + * @return Interval for Policy Controller Audit scans (in seconds). When set to 0, this disables audit functionality altogether. + * + */ + private Integer auditIntervalSeconds; + /** + * @return The maximum number of audit violations to be stored in a constraint. If not set, the internal default of 20 will be used. + * + */ + private Integer constraintViolationLimit; + /** + * @return Map of deployment configs to deployments ("admission", "audit", "mutation"). + * + */ + private List deploymentConfigs; + /** + * @return The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster. + * + */ + private List exemptableNamespaces; + /** + * @return 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"] + * + */ + private String installSpec; + /** + * @return Logs all denies and dry run failures. + * + */ + private Boolean logDeniesEnabled; + /** + * @return Monitoring specifies the configuration of monitoring Policy Controller. + * + */ + private List monitorings; + /** + * @return Enables the ability to mutate resources using Policy Controller. + * + */ + private Boolean mutationEnabled; + /** + * @return Specifies the desired policy content on the cluster. + * + */ + private List policyContents; + /** + * @return Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated. + * + */ + private Boolean referentialRulesEnabled; + + private GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig() {} + /** + * @return Interval for Policy Controller Audit scans (in seconds). When set to 0, this disables audit functionality altogether. + * + */ + public Integer auditIntervalSeconds() { + return this.auditIntervalSeconds; + } + /** + * @return The maximum number of audit violations to be stored in a constraint. If not set, the internal default of 20 will be used. + * + */ + public Integer constraintViolationLimit() { + return this.constraintViolationLimit; + } + /** + * @return Map of deployment configs to deployments ("admission", "audit", "mutation"). + * + */ + public List deploymentConfigs() { + return this.deploymentConfigs; + } + /** + * @return The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster. + * + */ + public List exemptableNamespaces() { + return this.exemptableNamespaces; + } + /** + * @return 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 String installSpec() { + return this.installSpec; + } + /** + * @return Logs all denies and dry run failures. + * + */ + public Boolean logDeniesEnabled() { + return this.logDeniesEnabled; + } + /** + * @return Monitoring specifies the configuration of monitoring Policy Controller. + * + */ + public List monitorings() { + return this.monitorings; + } + /** + * @return Enables the ability to mutate resources using Policy Controller. + * + */ + public Boolean mutationEnabled() { + return this.mutationEnabled; + } + /** + * @return Specifies the desired policy content on the cluster. + * + */ + public List policyContents() { + return this.policyContents; + } + /** + * @return Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated. + * + */ + public Boolean referentialRulesEnabled() { + return this.referentialRulesEnabled; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private Integer auditIntervalSeconds; + private Integer constraintViolationLimit; + private List deploymentConfigs; + private List exemptableNamespaces; + private String installSpec; + private Boolean logDeniesEnabled; + private List monitorings; + private Boolean mutationEnabled; + private List policyContents; + private Boolean referentialRulesEnabled; + public Builder() {} + public Builder(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig defaults) { + Objects.requireNonNull(defaults); + this.auditIntervalSeconds = defaults.auditIntervalSeconds; + this.constraintViolationLimit = defaults.constraintViolationLimit; + this.deploymentConfigs = defaults.deploymentConfigs; + this.exemptableNamespaces = defaults.exemptableNamespaces; + this.installSpec = defaults.installSpec; + this.logDeniesEnabled = defaults.logDeniesEnabled; + this.monitorings = defaults.monitorings; + this.mutationEnabled = defaults.mutationEnabled; + this.policyContents = defaults.policyContents; + this.referentialRulesEnabled = defaults.referentialRulesEnabled; + } + + @CustomType.Setter + public Builder auditIntervalSeconds(Integer auditIntervalSeconds) { + if (auditIntervalSeconds == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig", "auditIntervalSeconds"); + } + this.auditIntervalSeconds = auditIntervalSeconds; + return this; + } + @CustomType.Setter + public Builder constraintViolationLimit(Integer constraintViolationLimit) { + if (constraintViolationLimit == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig", "constraintViolationLimit"); + } + this.constraintViolationLimit = constraintViolationLimit; + return this; + } + @CustomType.Setter + public Builder deploymentConfigs(List deploymentConfigs) { + if (deploymentConfigs == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig", "deploymentConfigs"); + } + this.deploymentConfigs = deploymentConfigs; + return this; + } + public Builder deploymentConfigs(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig... deploymentConfigs) { + return deploymentConfigs(List.of(deploymentConfigs)); + } + @CustomType.Setter + public Builder exemptableNamespaces(List exemptableNamespaces) { + if (exemptableNamespaces == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig", "exemptableNamespaces"); + } + this.exemptableNamespaces = exemptableNamespaces; + return this; + } + public Builder exemptableNamespaces(String... exemptableNamespaces) { + return exemptableNamespaces(List.of(exemptableNamespaces)); + } + @CustomType.Setter + public Builder installSpec(String installSpec) { + if (installSpec == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig", "installSpec"); + } + this.installSpec = installSpec; + return this; + } + @CustomType.Setter + public Builder logDeniesEnabled(Boolean logDeniesEnabled) { + if (logDeniesEnabled == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig", "logDeniesEnabled"); + } + this.logDeniesEnabled = logDeniesEnabled; + return this; + } + @CustomType.Setter + public Builder monitorings(List monitorings) { + if (monitorings == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig", "monitorings"); + } + this.monitorings = monitorings; + return this; + } + public Builder monitorings(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoring... monitorings) { + return monitorings(List.of(monitorings)); + } + @CustomType.Setter + public Builder mutationEnabled(Boolean mutationEnabled) { + if (mutationEnabled == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig", "mutationEnabled"); + } + this.mutationEnabled = mutationEnabled; + return this; + } + @CustomType.Setter + public Builder policyContents(List policyContents) { + if (policyContents == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig", "policyContents"); + } + this.policyContents = policyContents; + return this; + } + public Builder policyContents(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent... policyContents) { + return policyContents(List.of(policyContents)); + } + @CustomType.Setter + public Builder referentialRulesEnabled(Boolean referentialRulesEnabled) { + if (referentialRulesEnabled == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig", "referentialRulesEnabled"); + } + this.referentialRulesEnabled = referentialRulesEnabled; + return this; + } + public GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig build() { + final var _resultValue = new GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig(); + _resultValue.auditIntervalSeconds = auditIntervalSeconds; + _resultValue.constraintViolationLimit = constraintViolationLimit; + _resultValue.deploymentConfigs = deploymentConfigs; + _resultValue.exemptableNamespaces = exemptableNamespaces; + _resultValue.installSpec = installSpec; + _resultValue.logDeniesEnabled = logDeniesEnabled; + _resultValue.monitorings = monitorings; + _resultValue.mutationEnabled = mutationEnabled; + _resultValue.policyContents = policyContents; + _resultValue.referentialRulesEnabled = referentialRulesEnabled; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig.java new file mode 100644 index 0000000000..2b67a43315 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig.java @@ -0,0 +1,152 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.gkehub.outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource; +import com.pulumi.gcp.gkehub.outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration; +import java.lang.Integer; +import java.lang.String; +import java.util.List; +import java.util.Objects; + +@CustomType +public final class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig { + private String component; + /** + * @return Container resource requirements. + * + */ + private List containerResources; + /** + * @return Pod affinity configuration. Possible values: ["AFFINITY_UNSPECIFIED", "NO_AFFINITY", "ANTI_AFFINITY"] + * + */ + private String podAffinity; + /** + * @return Pod tolerations of node taints. + * + */ + private List podTolerations; + /** + * @return Pod replica count. + * + */ + private Integer replicaCount; + + private GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig() {} + public String component() { + return this.component; + } + /** + * @return Container resource requirements. + * + */ + public List containerResources() { + return this.containerResources; + } + /** + * @return Pod affinity configuration. Possible values: ["AFFINITY_UNSPECIFIED", "NO_AFFINITY", "ANTI_AFFINITY"] + * + */ + public String podAffinity() { + return this.podAffinity; + } + /** + * @return Pod tolerations of node taints. + * + */ + public List podTolerations() { + return this.podTolerations; + } + /** + * @return Pod replica count. + * + */ + public Integer replicaCount() { + return this.replicaCount; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String component; + private List containerResources; + private String podAffinity; + private List podTolerations; + private Integer replicaCount; + public Builder() {} + public Builder(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig defaults) { + Objects.requireNonNull(defaults); + this.component = defaults.component; + this.containerResources = defaults.containerResources; + this.podAffinity = defaults.podAffinity; + this.podTolerations = defaults.podTolerations; + this.replicaCount = defaults.replicaCount; + } + + @CustomType.Setter + public Builder component(String component) { + if (component == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig", "component"); + } + this.component = component; + return this; + } + @CustomType.Setter + public Builder containerResources(List containerResources) { + if (containerResources == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig", "containerResources"); + } + this.containerResources = containerResources; + return this; + } + public Builder containerResources(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource... containerResources) { + return containerResources(List.of(containerResources)); + } + @CustomType.Setter + public Builder podAffinity(String podAffinity) { + if (podAffinity == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig", "podAffinity"); + } + this.podAffinity = podAffinity; + return this; + } + @CustomType.Setter + public Builder podTolerations(List podTolerations) { + if (podTolerations == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig", "podTolerations"); + } + this.podTolerations = podTolerations; + return this; + } + public Builder podTolerations(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration... podTolerations) { + return podTolerations(List.of(podTolerations)); + } + @CustomType.Setter + public Builder replicaCount(Integer replicaCount) { + if (replicaCount == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig", "replicaCount"); + } + this.replicaCount = replicaCount; + return this; + } + public GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig build() { + final var _resultValue = new GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig(); + _resultValue.component = component; + _resultValue.containerResources = containerResources; + _resultValue.podAffinity = podAffinity; + _resultValue.podTolerations = podTolerations; + _resultValue.replicaCount = replicaCount; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource.java new file mode 100644 index 0000000000..fd31b8479c --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource.java @@ -0,0 +1,89 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.gkehub.outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit; +import com.pulumi.gcp.gkehub.outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest; +import java.util.List; +import java.util.Objects; + +@CustomType +public final class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource { + /** + * @return Limits describes the maximum amount of compute resources allowed for use by the running container. + * + */ + private List limits; + /** + * @return Requests describes the amount of compute resources reserved for the container by the kube-scheduler. + * + */ + private List requests; + + private GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource() {} + /** + * @return Limits describes the maximum amount of compute resources allowed for use by the running container. + * + */ + public List limits() { + return this.limits; + } + /** + * @return Requests describes the amount of compute resources reserved for the container by the kube-scheduler. + * + */ + public List requests() { + return this.requests; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private List limits; + private List requests; + public Builder() {} + public Builder(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource defaults) { + Objects.requireNonNull(defaults); + this.limits = defaults.limits; + this.requests = defaults.requests; + } + + @CustomType.Setter + public Builder limits(List limits) { + if (limits == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource", "limits"); + } + this.limits = limits; + return this; + } + public Builder limits(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit... limits) { + return limits(List.of(limits)); + } + @CustomType.Setter + public Builder requests(List requests) { + if (requests == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource", "requests"); + } + this.requests = requests; + return this; + } + public Builder requests(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest... requests) { + return requests(List.of(requests)); + } + public GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource build() { + final var _resultValue = new GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource(); + _resultValue.limits = limits; + _resultValue.requests = requests; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit.java new file mode 100644 index 0000000000..3eaa764394 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit.java @@ -0,0 +1,81 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit { + /** + * @return CPU requirement expressed in Kubernetes resource units. + * + */ + private String cpu; + /** + * @return Memory requirement expressed in Kubernetes resource units. + * + */ + private String memory; + + private GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit() {} + /** + * @return CPU requirement expressed in Kubernetes resource units. + * + */ + public String cpu() { + return this.cpu; + } + /** + * @return Memory requirement expressed in Kubernetes resource units. + * + */ + public String memory() { + return this.memory; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String cpu; + private String memory; + public Builder() {} + public Builder(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit defaults) { + Objects.requireNonNull(defaults); + this.cpu = defaults.cpu; + this.memory = defaults.memory; + } + + @CustomType.Setter + public Builder cpu(String cpu) { + if (cpu == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit", "cpu"); + } + this.cpu = cpu; + return this; + } + @CustomType.Setter + public Builder memory(String memory) { + if (memory == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit", "memory"); + } + this.memory = memory; + return this; + } + public GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit build() { + final var _resultValue = new GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit(); + _resultValue.cpu = cpu; + _resultValue.memory = memory; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest.java new file mode 100644 index 0000000000..4587e67825 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest.java @@ -0,0 +1,81 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest { + /** + * @return CPU requirement expressed in Kubernetes resource units. + * + */ + private String cpu; + /** + * @return Memory requirement expressed in Kubernetes resource units. + * + */ + private String memory; + + private GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest() {} + /** + * @return CPU requirement expressed in Kubernetes resource units. + * + */ + public String cpu() { + return this.cpu; + } + /** + * @return Memory requirement expressed in Kubernetes resource units. + * + */ + public String memory() { + return this.memory; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String cpu; + private String memory; + public Builder() {} + public Builder(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest defaults) { + Objects.requireNonNull(defaults); + this.cpu = defaults.cpu; + this.memory = defaults.memory; + } + + @CustomType.Setter + public Builder cpu(String cpu) { + if (cpu == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest", "cpu"); + } + this.cpu = cpu; + return this; + } + @CustomType.Setter + public Builder memory(String memory) { + if (memory == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest", "memory"); + } + this.memory = memory; + return this; + } + public GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest build() { + final var _resultValue = new GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest(); + _resultValue.cpu = cpu; + _resultValue.memory = memory; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration.java new file mode 100644 index 0000000000..ac72c846ee --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration.java @@ -0,0 +1,127 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration { + /** + * @return Matches a taint effect. + * + */ + private String effect; + /** + * @return Matches a taint key (not necessarily unique). + * + */ + private String key; + /** + * @return Matches a taint operator. + * + */ + private String operator; + /** + * @return Matches a taint value. + * + */ + private String value; + + private GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration() {} + /** + * @return Matches a taint effect. + * + */ + public String effect() { + return this.effect; + } + /** + * @return Matches a taint key (not necessarily unique). + * + */ + public String key() { + return this.key; + } + /** + * @return Matches a taint operator. + * + */ + public String operator() { + return this.operator; + } + /** + * @return Matches a taint value. + * + */ + public String value() { + return this.value; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String effect; + private String key; + private String operator; + private String value; + public Builder() {} + public Builder(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration defaults) { + Objects.requireNonNull(defaults); + this.effect = defaults.effect; + this.key = defaults.key; + this.operator = defaults.operator; + this.value = defaults.value; + } + + @CustomType.Setter + public Builder effect(String effect) { + if (effect == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration", "effect"); + } + this.effect = effect; + return this; + } + @CustomType.Setter + public Builder key(String key) { + if (key == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration", "key"); + } + this.key = key; + return this; + } + @CustomType.Setter + public Builder operator(String operator) { + if (operator == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration", "operator"); + } + this.operator = operator; + return this; + } + @CustomType.Setter + public Builder value(String value) { + if (value == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration", "value"); + } + this.value = value; + return this; + } + public GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration build() { + final var _resultValue = new GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration(); + _resultValue.effect = effect; + _resultValue.key = key; + _resultValue.operator = operator; + _resultValue.value = value; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoring.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoring.java new file mode 100644 index 0000000000..a668945e28 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoring.java @@ -0,0 +1,62 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.List; +import java.util.Objects; + +@CustomType +public final class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoring { + /** + * @return 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"] + * + */ + private List backends; + + private GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoring() {} + /** + * @return 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 List backends() { + return this.backends; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoring defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private List backends; + public Builder() {} + public Builder(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoring defaults) { + Objects.requireNonNull(defaults); + this.backends = defaults.backends; + } + + @CustomType.Setter + public Builder backends(List backends) { + if (backends == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoring", "backends"); + } + this.backends = backends; + return this; + } + public Builder backends(String... backends) { + return backends(List.of(backends)); + } + public GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoring build() { + final var _resultValue = new GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoring(); + _resultValue.backends = backends; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent.java new file mode 100644 index 0000000000..6d6603d5f7 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent.java @@ -0,0 +1,89 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.gkehub.outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle; +import com.pulumi.gcp.gkehub.outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibrary; +import java.util.List; +import java.util.Objects; + +@CustomType +public final class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent { + /** + * @return Configures which bundles to install and their corresponding install specs. + * + */ + private List bundles; + /** + * @return Configures the installation of the Template Library. + * + */ + private List templateLibraries; + + private GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent() {} + /** + * @return Configures which bundles to install and their corresponding install specs. + * + */ + public List bundles() { + return this.bundles; + } + /** + * @return Configures the installation of the Template Library. + * + */ + public List templateLibraries() { + return this.templateLibraries; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private List bundles; + private List templateLibraries; + public Builder() {} + public Builder(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent defaults) { + Objects.requireNonNull(defaults); + this.bundles = defaults.bundles; + this.templateLibraries = defaults.templateLibraries; + } + + @CustomType.Setter + public Builder bundles(List bundles) { + if (bundles == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent", "bundles"); + } + this.bundles = bundles; + return this; + } + public Builder bundles(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle... bundles) { + return bundles(List.of(bundles)); + } + @CustomType.Setter + public Builder templateLibraries(List templateLibraries) { + if (templateLibraries == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent", "templateLibraries"); + } + this.templateLibraries = templateLibraries; + return this; + } + public Builder templateLibraries(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibrary... templateLibraries) { + return templateLibraries(List.of(templateLibraries)); + } + public GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent build() { + final var _resultValue = new GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent(); + _resultValue.bundles = bundles; + _resultValue.templateLibraries = templateLibraries; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle.java new file mode 100644 index 0000000000..3abae63868 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle.java @@ -0,0 +1,77 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.List; +import java.util.Objects; + +@CustomType +public final class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle { + private String bundle; + /** + * @return The set of namespaces to be exempted from the bundle. + * + */ + private List exemptedNamespaces; + + private GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle() {} + public String bundle() { + return this.bundle; + } + /** + * @return The set of namespaces to be exempted from the bundle. + * + */ + public List exemptedNamespaces() { + return this.exemptedNamespaces; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String bundle; + private List exemptedNamespaces; + public Builder() {} + public Builder(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle defaults) { + Objects.requireNonNull(defaults); + this.bundle = defaults.bundle; + this.exemptedNamespaces = defaults.exemptedNamespaces; + } + + @CustomType.Setter + public Builder bundle(String bundle) { + if (bundle == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle", "bundle"); + } + this.bundle = bundle; + return this; + } + @CustomType.Setter + public Builder exemptedNamespaces(List exemptedNamespaces) { + if (exemptedNamespaces == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle", "exemptedNamespaces"); + } + this.exemptedNamespaces = exemptedNamespaces; + return this; + } + public Builder exemptedNamespaces(String... exemptedNamespaces) { + return exemptedNamespaces(List.of(exemptedNamespaces)); + } + public GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle build() { + final var _resultValue = new GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle(); + _resultValue.bundle = bundle; + _resultValue.exemptedNamespaces = exemptedNamespaces; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibrary.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibrary.java new file mode 100644 index 0000000000..2aa339f215 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibrary.java @@ -0,0 +1,58 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibrary { + /** + * @return Configures the manner in which the template library is installed on the cluster. Possible values: ["INSTALLATION_UNSPECIFIED", "NOT_INSTALLED", "ALL"] + * + */ + private String installation; + + private GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibrary() {} + /** + * @return Configures the manner in which the template library is installed on the cluster. Possible values: ["INSTALLATION_UNSPECIFIED", "NOT_INSTALLED", "ALL"] + * + */ + public String installation() { + return this.installation; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibrary defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String installation; + public Builder() {} + public Builder(GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibrary defaults) { + Objects.requireNonNull(defaults); + this.installation = defaults.installation; + } + + @CustomType.Setter + public Builder installation(String installation) { + if (installation == null) { + throw new MissingRequiredPropertyException("GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibrary", "installation"); + } + this.installation = installation; + return this; + } + public GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibrary build() { + final var _resultValue = new GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibrary(); + _resultValue.installation = installation; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureResourceState.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureResourceState.java new file mode 100644 index 0000000000..87509fb62b --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureResourceState.java @@ -0,0 +1,82 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetFeatureResourceState { + /** + * @return Whether this Feature has outstanding resources that need to be cleaned up before it can be disabled. + * + */ + private Boolean hasResources; + /** + * @return The current state of the Feature resource in the Hub API. + * + */ + private String state; + + private GetFeatureResourceState() {} + /** + * @return Whether this Feature has outstanding resources that need to be cleaned up before it can be disabled. + * + */ + public Boolean hasResources() { + return this.hasResources; + } + /** + * @return The current state of the Feature resource in the Hub API. + * + */ + public String state() { + return this.state; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureResourceState defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private Boolean hasResources; + private String state; + public Builder() {} + public Builder(GetFeatureResourceState defaults) { + Objects.requireNonNull(defaults); + this.hasResources = defaults.hasResources; + this.state = defaults.state; + } + + @CustomType.Setter + public Builder hasResources(Boolean hasResources) { + if (hasResources == null) { + throw new MissingRequiredPropertyException("GetFeatureResourceState", "hasResources"); + } + this.hasResources = hasResources; + return this; + } + @CustomType.Setter + public Builder state(String state) { + if (state == null) { + throw new MissingRequiredPropertyException("GetFeatureResourceState", "state"); + } + this.state = state; + return this; + } + public GetFeatureResourceState build() { + final var _resultValue = new GetFeatureResourceState(); + _resultValue.hasResources = hasResources; + _resultValue.state = state; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureResult.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureResult.java new file mode 100644 index 0000000000..09d188aac3 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureResult.java @@ -0,0 +1,271 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.gkehub.outputs.GetFeatureFleetDefaultMemberConfig; +import com.pulumi.gcp.gkehub.outputs.GetFeatureResourceState; +import com.pulumi.gcp.gkehub.outputs.GetFeatureSpec; +import com.pulumi.gcp.gkehub.outputs.GetFeatureState; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class GetFeatureResult { + private String createTime; + private String deleteTime; + private Map effectiveLabels; + private List fleetDefaultMemberConfigs; + /** + * @return The provider-assigned unique ID for this managed resource. + * + */ + private String id; + private Map labels; + private String location; + private String name; + private @Nullable String project; + private Map pulumiLabels; + private List resourceStates; + private List specs; + private List states; + private String updateTime; + + private GetFeatureResult() {} + public String createTime() { + return this.createTime; + } + public String deleteTime() { + return this.deleteTime; + } + public Map effectiveLabels() { + return this.effectiveLabels; + } + public List fleetDefaultMemberConfigs() { + return this.fleetDefaultMemberConfigs; + } + /** + * @return The provider-assigned unique ID for this managed resource. + * + */ + public String id() { + return this.id; + } + public Map labels() { + return this.labels; + } + public String location() { + return this.location; + } + public String name() { + return this.name; + } + public Optional project() { + return Optional.ofNullable(this.project); + } + public Map pulumiLabels() { + return this.pulumiLabels; + } + public List resourceStates() { + return this.resourceStates; + } + public List specs() { + return this.specs; + } + public List states() { + return this.states; + } + public String updateTime() { + return this.updateTime; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureResult defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String createTime; + private String deleteTime; + private Map effectiveLabels; + private List fleetDefaultMemberConfigs; + private String id; + private Map labels; + private String location; + private String name; + private @Nullable String project; + private Map pulumiLabels; + private List resourceStates; + private List specs; + private List states; + private String updateTime; + public Builder() {} + public Builder(GetFeatureResult defaults) { + Objects.requireNonNull(defaults); + this.createTime = defaults.createTime; + this.deleteTime = defaults.deleteTime; + this.effectiveLabels = defaults.effectiveLabels; + this.fleetDefaultMemberConfigs = defaults.fleetDefaultMemberConfigs; + this.id = defaults.id; + this.labels = defaults.labels; + this.location = defaults.location; + this.name = defaults.name; + this.project = defaults.project; + this.pulumiLabels = defaults.pulumiLabels; + this.resourceStates = defaults.resourceStates; + this.specs = defaults.specs; + this.states = defaults.states; + this.updateTime = defaults.updateTime; + } + + @CustomType.Setter + public Builder createTime(String createTime) { + if (createTime == null) { + throw new MissingRequiredPropertyException("GetFeatureResult", "createTime"); + } + this.createTime = createTime; + return this; + } + @CustomType.Setter + public Builder deleteTime(String deleteTime) { + if (deleteTime == null) { + throw new MissingRequiredPropertyException("GetFeatureResult", "deleteTime"); + } + this.deleteTime = deleteTime; + return this; + } + @CustomType.Setter + public Builder effectiveLabels(Map effectiveLabels) { + if (effectiveLabels == null) { + throw new MissingRequiredPropertyException("GetFeatureResult", "effectiveLabels"); + } + this.effectiveLabels = effectiveLabels; + return this; + } + @CustomType.Setter + public Builder fleetDefaultMemberConfigs(List fleetDefaultMemberConfigs) { + if (fleetDefaultMemberConfigs == null) { + throw new MissingRequiredPropertyException("GetFeatureResult", "fleetDefaultMemberConfigs"); + } + this.fleetDefaultMemberConfigs = fleetDefaultMemberConfigs; + return this; + } + public Builder fleetDefaultMemberConfigs(GetFeatureFleetDefaultMemberConfig... fleetDefaultMemberConfigs) { + return fleetDefaultMemberConfigs(List.of(fleetDefaultMemberConfigs)); + } + @CustomType.Setter + public Builder id(String id) { + if (id == null) { + throw new MissingRequiredPropertyException("GetFeatureResult", "id"); + } + this.id = id; + return this; + } + @CustomType.Setter + public Builder labels(Map labels) { + if (labels == null) { + throw new MissingRequiredPropertyException("GetFeatureResult", "labels"); + } + this.labels = labels; + return this; + } + @CustomType.Setter + public Builder location(String location) { + if (location == null) { + throw new MissingRequiredPropertyException("GetFeatureResult", "location"); + } + this.location = location; + return this; + } + @CustomType.Setter + public Builder name(String name) { + if (name == null) { + throw new MissingRequiredPropertyException("GetFeatureResult", "name"); + } + this.name = name; + return this; + } + @CustomType.Setter + public Builder project(@Nullable String project) { + + this.project = project; + return this; + } + @CustomType.Setter + public Builder pulumiLabels(Map pulumiLabels) { + if (pulumiLabels == null) { + throw new MissingRequiredPropertyException("GetFeatureResult", "pulumiLabels"); + } + this.pulumiLabels = pulumiLabels; + return this; + } + @CustomType.Setter + public Builder resourceStates(List resourceStates) { + if (resourceStates == null) { + throw new MissingRequiredPropertyException("GetFeatureResult", "resourceStates"); + } + this.resourceStates = resourceStates; + return this; + } + public Builder resourceStates(GetFeatureResourceState... resourceStates) { + return resourceStates(List.of(resourceStates)); + } + @CustomType.Setter + public Builder specs(List specs) { + if (specs == null) { + throw new MissingRequiredPropertyException("GetFeatureResult", "specs"); + } + this.specs = specs; + return this; + } + public Builder specs(GetFeatureSpec... specs) { + return specs(List.of(specs)); + } + @CustomType.Setter + public Builder states(List states) { + if (states == null) { + throw new MissingRequiredPropertyException("GetFeatureResult", "states"); + } + this.states = states; + return this; + } + public Builder states(GetFeatureState... states) { + return states(List.of(states)); + } + @CustomType.Setter + public Builder updateTime(String updateTime) { + if (updateTime == null) { + throw new MissingRequiredPropertyException("GetFeatureResult", "updateTime"); + } + this.updateTime = updateTime; + return this; + } + public GetFeatureResult build() { + final var _resultValue = new GetFeatureResult(); + _resultValue.createTime = createTime; + _resultValue.deleteTime = deleteTime; + _resultValue.effectiveLabels = effectiveLabels; + _resultValue.fleetDefaultMemberConfigs = fleetDefaultMemberConfigs; + _resultValue.id = id; + _resultValue.labels = labels; + _resultValue.location = location; + _resultValue.name = name; + _resultValue.project = project; + _resultValue.pulumiLabels = pulumiLabels; + _resultValue.resourceStates = resourceStates; + _resultValue.specs = specs; + _resultValue.states = states; + _resultValue.updateTime = updateTime; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpec.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpec.java new file mode 100644 index 0000000000..07ff4486d3 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpec.java @@ -0,0 +1,116 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.gkehub.outputs.GetFeatureSpecClusterupgrade; +import com.pulumi.gcp.gkehub.outputs.GetFeatureSpecFleetobservability; +import com.pulumi.gcp.gkehub.outputs.GetFeatureSpecMulticlusteringress; +import java.util.List; +import java.util.Objects; + +@CustomType +public final class GetFeatureSpec { + /** + * @return Clusterupgrade feature spec. + * + */ + private List clusterupgrades; + /** + * @return Fleet Observability feature spec. + * + */ + private List fleetobservabilities; + /** + * @return Multicluster Ingress-specific spec. + * + */ + private List multiclusteringresses; + + private GetFeatureSpec() {} + /** + * @return Clusterupgrade feature spec. + * + */ + public List clusterupgrades() { + return this.clusterupgrades; + } + /** + * @return Fleet Observability feature spec. + * + */ + public List fleetobservabilities() { + return this.fleetobservabilities; + } + /** + * @return Multicluster Ingress-specific spec. + * + */ + public List multiclusteringresses() { + return this.multiclusteringresses; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureSpec defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private List clusterupgrades; + private List fleetobservabilities; + private List multiclusteringresses; + public Builder() {} + public Builder(GetFeatureSpec defaults) { + Objects.requireNonNull(defaults); + this.clusterupgrades = defaults.clusterupgrades; + this.fleetobservabilities = defaults.fleetobservabilities; + this.multiclusteringresses = defaults.multiclusteringresses; + } + + @CustomType.Setter + public Builder clusterupgrades(List clusterupgrades) { + if (clusterupgrades == null) { + throw new MissingRequiredPropertyException("GetFeatureSpec", "clusterupgrades"); + } + this.clusterupgrades = clusterupgrades; + return this; + } + public Builder clusterupgrades(GetFeatureSpecClusterupgrade... clusterupgrades) { + return clusterupgrades(List.of(clusterupgrades)); + } + @CustomType.Setter + public Builder fleetobservabilities(List fleetobservabilities) { + if (fleetobservabilities == null) { + throw new MissingRequiredPropertyException("GetFeatureSpec", "fleetobservabilities"); + } + this.fleetobservabilities = fleetobservabilities; + return this; + } + public Builder fleetobservabilities(GetFeatureSpecFleetobservability... fleetobservabilities) { + return fleetobservabilities(List.of(fleetobservabilities)); + } + @CustomType.Setter + public Builder multiclusteringresses(List multiclusteringresses) { + if (multiclusteringresses == null) { + throw new MissingRequiredPropertyException("GetFeatureSpec", "multiclusteringresses"); + } + this.multiclusteringresses = multiclusteringresses; + return this; + } + public Builder multiclusteringresses(GetFeatureSpecMulticlusteringress... multiclusteringresses) { + return multiclusteringresses(List.of(multiclusteringresses)); + } + public GetFeatureSpec build() { + final var _resultValue = new GetFeatureSpec(); + _resultValue.clusterupgrades = clusterupgrades; + _resultValue.fleetobservabilities = fleetobservabilities; + _resultValue.multiclusteringresses = multiclusteringresses; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecClusterupgrade.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecClusterupgrade.java new file mode 100644 index 0000000000..449ea25515 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecClusterupgrade.java @@ -0,0 +1,116 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.gkehub.outputs.GetFeatureSpecClusterupgradeGkeUpgradeOverride; +import com.pulumi.gcp.gkehub.outputs.GetFeatureSpecClusterupgradePostCondition; +import java.lang.String; +import java.util.List; +import java.util.Objects; + +@CustomType +public final class GetFeatureSpecClusterupgrade { + /** + * @return Configuration overrides for individual upgrades. + * + */ + private List gkeUpgradeOverrides; + /** + * @return Post conditions to override for the specified upgrade. + * + */ + private List postConditions; + /** + * @return 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. + * + */ + private List upstreamFleets; + + private GetFeatureSpecClusterupgrade() {} + /** + * @return Configuration overrides for individual upgrades. + * + */ + public List gkeUpgradeOverrides() { + return this.gkeUpgradeOverrides; + } + /** + * @return Post conditions to override for the specified upgrade. + * + */ + public List postConditions() { + return this.postConditions; + } + /** + * @return 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 List upstreamFleets() { + return this.upstreamFleets; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureSpecClusterupgrade defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private List gkeUpgradeOverrides; + private List postConditions; + private List upstreamFleets; + public Builder() {} + public Builder(GetFeatureSpecClusterupgrade defaults) { + Objects.requireNonNull(defaults); + this.gkeUpgradeOverrides = defaults.gkeUpgradeOverrides; + this.postConditions = defaults.postConditions; + this.upstreamFleets = defaults.upstreamFleets; + } + + @CustomType.Setter + public Builder gkeUpgradeOverrides(List gkeUpgradeOverrides) { + if (gkeUpgradeOverrides == null) { + throw new MissingRequiredPropertyException("GetFeatureSpecClusterupgrade", "gkeUpgradeOverrides"); + } + this.gkeUpgradeOverrides = gkeUpgradeOverrides; + return this; + } + public Builder gkeUpgradeOverrides(GetFeatureSpecClusterupgradeGkeUpgradeOverride... gkeUpgradeOverrides) { + return gkeUpgradeOverrides(List.of(gkeUpgradeOverrides)); + } + @CustomType.Setter + public Builder postConditions(List postConditions) { + if (postConditions == null) { + throw new MissingRequiredPropertyException("GetFeatureSpecClusterupgrade", "postConditions"); + } + this.postConditions = postConditions; + return this; + } + public Builder postConditions(GetFeatureSpecClusterupgradePostCondition... postConditions) { + return postConditions(List.of(postConditions)); + } + @CustomType.Setter + public Builder upstreamFleets(List upstreamFleets) { + if (upstreamFleets == null) { + throw new MissingRequiredPropertyException("GetFeatureSpecClusterupgrade", "upstreamFleets"); + } + this.upstreamFleets = upstreamFleets; + return this; + } + public Builder upstreamFleets(String... upstreamFleets) { + return upstreamFleets(List.of(upstreamFleets)); + } + public GetFeatureSpecClusterupgrade build() { + final var _resultValue = new GetFeatureSpecClusterupgrade(); + _resultValue.gkeUpgradeOverrides = gkeUpgradeOverrides; + _resultValue.postConditions = postConditions; + _resultValue.upstreamFleets = upstreamFleets; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecClusterupgradeGkeUpgradeOverride.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecClusterupgradeGkeUpgradeOverride.java new file mode 100644 index 0000000000..c626e28a89 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecClusterupgradeGkeUpgradeOverride.java @@ -0,0 +1,89 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.gkehub.outputs.GetFeatureSpecClusterupgradeGkeUpgradeOverridePostCondition; +import com.pulumi.gcp.gkehub.outputs.GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade; +import java.util.List; +import java.util.Objects; + +@CustomType +public final class GetFeatureSpecClusterupgradeGkeUpgradeOverride { + /** + * @return Post conditions to override for the specified upgrade. + * + */ + private List postConditions; + /** + * @return Which upgrade to override. + * + */ + private List upgrades; + + private GetFeatureSpecClusterupgradeGkeUpgradeOverride() {} + /** + * @return Post conditions to override for the specified upgrade. + * + */ + public List postConditions() { + return this.postConditions; + } + /** + * @return Which upgrade to override. + * + */ + public List upgrades() { + return this.upgrades; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureSpecClusterupgradeGkeUpgradeOverride defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private List postConditions; + private List upgrades; + public Builder() {} + public Builder(GetFeatureSpecClusterupgradeGkeUpgradeOverride defaults) { + Objects.requireNonNull(defaults); + this.postConditions = defaults.postConditions; + this.upgrades = defaults.upgrades; + } + + @CustomType.Setter + public Builder postConditions(List postConditions) { + if (postConditions == null) { + throw new MissingRequiredPropertyException("GetFeatureSpecClusterupgradeGkeUpgradeOverride", "postConditions"); + } + this.postConditions = postConditions; + return this; + } + public Builder postConditions(GetFeatureSpecClusterupgradeGkeUpgradeOverridePostCondition... postConditions) { + return postConditions(List.of(postConditions)); + } + @CustomType.Setter + public Builder upgrades(List upgrades) { + if (upgrades == null) { + throw new MissingRequiredPropertyException("GetFeatureSpecClusterupgradeGkeUpgradeOverride", "upgrades"); + } + this.upgrades = upgrades; + return this; + } + public Builder upgrades(GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade... upgrades) { + return upgrades(List.of(upgrades)); + } + public GetFeatureSpecClusterupgradeGkeUpgradeOverride build() { + final var _resultValue = new GetFeatureSpecClusterupgradeGkeUpgradeOverride(); + _resultValue.postConditions = postConditions; + _resultValue.upgrades = upgrades; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecClusterupgradeGkeUpgradeOverridePostCondition.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecClusterupgradeGkeUpgradeOverridePostCondition.java new file mode 100644 index 0000000000..ab0fd5015c --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecClusterupgradeGkeUpgradeOverridePostCondition.java @@ -0,0 +1,58 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetFeatureSpecClusterupgradeGkeUpgradeOverridePostCondition { + /** + * @return Amount of time to "soak" after a rollout has been finished before marking it COMPLETE. Cannot exceed 30 days. + * + */ + private String soaking; + + private GetFeatureSpecClusterupgradeGkeUpgradeOverridePostCondition() {} + /** + * @return Amount of time to "soak" after a rollout has been finished before marking it COMPLETE. Cannot exceed 30 days. + * + */ + public String soaking() { + return this.soaking; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureSpecClusterupgradeGkeUpgradeOverridePostCondition defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String soaking; + public Builder() {} + public Builder(GetFeatureSpecClusterupgradeGkeUpgradeOverridePostCondition defaults) { + Objects.requireNonNull(defaults); + this.soaking = defaults.soaking; + } + + @CustomType.Setter + public Builder soaking(String soaking) { + if (soaking == null) { + throw new MissingRequiredPropertyException("GetFeatureSpecClusterupgradeGkeUpgradeOverridePostCondition", "soaking"); + } + this.soaking = soaking; + return this; + } + public GetFeatureSpecClusterupgradeGkeUpgradeOverridePostCondition build() { + final var _resultValue = new GetFeatureSpecClusterupgradeGkeUpgradeOverridePostCondition(); + _resultValue.soaking = soaking; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade.java new file mode 100644 index 0000000000..fa72115d28 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade.java @@ -0,0 +1,81 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade { + /** + * @return Name of the upgrade, e.g., "k8s_control_plane". It should be a valid upgrade name. It must not exceet 99 characters. + * + */ + private String name; + /** + * @return Version of the upgrade, e.g., "1.22.1-gke.100". It should be a valid version. It must not exceet 99 characters. + * + */ + private String version; + + private GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade() {} + /** + * @return Name of the upgrade, e.g., "k8s_control_plane". It should be a valid upgrade name. It must not exceet 99 characters. + * + */ + public String name() { + return this.name; + } + /** + * @return Version of the upgrade, e.g., "1.22.1-gke.100". It should be a valid version. It must not exceet 99 characters. + * + */ + public String version() { + return this.version; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String name; + private String version; + public Builder() {} + public Builder(GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade defaults) { + Objects.requireNonNull(defaults); + this.name = defaults.name; + this.version = defaults.version; + } + + @CustomType.Setter + public Builder name(String name) { + if (name == null) { + throw new MissingRequiredPropertyException("GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade", "name"); + } + this.name = name; + return this; + } + @CustomType.Setter + public Builder version(String version) { + if (version == null) { + throw new MissingRequiredPropertyException("GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade", "version"); + } + this.version = version; + return this; + } + public GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade build() { + final var _resultValue = new GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade(); + _resultValue.name = name; + _resultValue.version = version; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecClusterupgradePostCondition.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecClusterupgradePostCondition.java new file mode 100644 index 0000000000..0a3ea722d4 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecClusterupgradePostCondition.java @@ -0,0 +1,58 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetFeatureSpecClusterupgradePostCondition { + /** + * @return Amount of time to "soak" after a rollout has been finished before marking it COMPLETE. Cannot exceed 30 days. + * + */ + private String soaking; + + private GetFeatureSpecClusterupgradePostCondition() {} + /** + * @return Amount of time to "soak" after a rollout has been finished before marking it COMPLETE. Cannot exceed 30 days. + * + */ + public String soaking() { + return this.soaking; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureSpecClusterupgradePostCondition defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String soaking; + public Builder() {} + public Builder(GetFeatureSpecClusterupgradePostCondition defaults) { + Objects.requireNonNull(defaults); + this.soaking = defaults.soaking; + } + + @CustomType.Setter + public Builder soaking(String soaking) { + if (soaking == null) { + throw new MissingRequiredPropertyException("GetFeatureSpecClusterupgradePostCondition", "soaking"); + } + this.soaking = soaking; + return this; + } + public GetFeatureSpecClusterupgradePostCondition build() { + final var _resultValue = new GetFeatureSpecClusterupgradePostCondition(); + _resultValue.soaking = soaking; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecFleetobservability.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecFleetobservability.java new file mode 100644 index 0000000000..a511a5eb54 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecFleetobservability.java @@ -0,0 +1,62 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.gkehub.outputs.GetFeatureSpecFleetobservabilityLoggingConfig; +import java.util.List; +import java.util.Objects; + +@CustomType +public final class GetFeatureSpecFleetobservability { + /** + * @return Specified if fleet logging feature is enabled for the entire fleet. If UNSPECIFIED, fleet logging feature is disabled for the entire fleet. + * + */ + private List loggingConfigs; + + private GetFeatureSpecFleetobservability() {} + /** + * @return Specified if fleet logging feature is enabled for the entire fleet. If UNSPECIFIED, fleet logging feature is disabled for the entire fleet. + * + */ + public List loggingConfigs() { + return this.loggingConfigs; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureSpecFleetobservability defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private List loggingConfigs; + public Builder() {} + public Builder(GetFeatureSpecFleetobservability defaults) { + Objects.requireNonNull(defaults); + this.loggingConfigs = defaults.loggingConfigs; + } + + @CustomType.Setter + public Builder loggingConfigs(List loggingConfigs) { + if (loggingConfigs == null) { + throw new MissingRequiredPropertyException("GetFeatureSpecFleetobservability", "loggingConfigs"); + } + this.loggingConfigs = loggingConfigs; + return this; + } + public Builder loggingConfigs(GetFeatureSpecFleetobservabilityLoggingConfig... loggingConfigs) { + return loggingConfigs(List.of(loggingConfigs)); + } + public GetFeatureSpecFleetobservability build() { + final var _resultValue = new GetFeatureSpecFleetobservability(); + _resultValue.loggingConfigs = loggingConfigs; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecFleetobservabilityLoggingConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecFleetobservabilityLoggingConfig.java new file mode 100644 index 0000000000..2dd12138e0 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecFleetobservabilityLoggingConfig.java @@ -0,0 +1,89 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.gkehub.outputs.GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfig; +import com.pulumi.gcp.gkehub.outputs.GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfig; +import java.util.List; +import java.util.Objects; + +@CustomType +public final class GetFeatureSpecFleetobservabilityLoggingConfig { + /** + * @return Specified if applying the default routing config to logs not specified in other configs. + * + */ + private List defaultConfigs; + /** + * @return Specified if applying the routing config to all logs for all fleet scopes. + * + */ + private List fleetScopeLogsConfigs; + + private GetFeatureSpecFleetobservabilityLoggingConfig() {} + /** + * @return Specified if applying the default routing config to logs not specified in other configs. + * + */ + public List defaultConfigs() { + return this.defaultConfigs; + } + /** + * @return Specified if applying the routing config to all logs for all fleet scopes. + * + */ + public List fleetScopeLogsConfigs() { + return this.fleetScopeLogsConfigs; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureSpecFleetobservabilityLoggingConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private List defaultConfigs; + private List fleetScopeLogsConfigs; + public Builder() {} + public Builder(GetFeatureSpecFleetobservabilityLoggingConfig defaults) { + Objects.requireNonNull(defaults); + this.defaultConfigs = defaults.defaultConfigs; + this.fleetScopeLogsConfigs = defaults.fleetScopeLogsConfigs; + } + + @CustomType.Setter + public Builder defaultConfigs(List defaultConfigs) { + if (defaultConfigs == null) { + throw new MissingRequiredPropertyException("GetFeatureSpecFleetobservabilityLoggingConfig", "defaultConfigs"); + } + this.defaultConfigs = defaultConfigs; + return this; + } + public Builder defaultConfigs(GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfig... defaultConfigs) { + return defaultConfigs(List.of(defaultConfigs)); + } + @CustomType.Setter + public Builder fleetScopeLogsConfigs(List fleetScopeLogsConfigs) { + if (fleetScopeLogsConfigs == null) { + throw new MissingRequiredPropertyException("GetFeatureSpecFleetobservabilityLoggingConfig", "fleetScopeLogsConfigs"); + } + this.fleetScopeLogsConfigs = fleetScopeLogsConfigs; + return this; + } + public Builder fleetScopeLogsConfigs(GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfig... fleetScopeLogsConfigs) { + return fleetScopeLogsConfigs(List.of(fleetScopeLogsConfigs)); + } + public GetFeatureSpecFleetobservabilityLoggingConfig build() { + final var _resultValue = new GetFeatureSpecFleetobservabilityLoggingConfig(); + _resultValue.defaultConfigs = defaultConfigs; + _resultValue.fleetScopeLogsConfigs = fleetScopeLogsConfigs; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfig.java new file mode 100644 index 0000000000..7b90f89491 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfig.java @@ -0,0 +1,58 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfig { + /** + * @return Specified if fleet logging feature is enabled. Possible values: ["MODE_UNSPECIFIED", "COPY", "MOVE"] + * + */ + private String mode; + + private GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfig() {} + /** + * @return Specified if fleet logging feature is enabled. Possible values: ["MODE_UNSPECIFIED", "COPY", "MOVE"] + * + */ + public String mode() { + return this.mode; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String mode; + public Builder() {} + public Builder(GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfig defaults) { + Objects.requireNonNull(defaults); + this.mode = defaults.mode; + } + + @CustomType.Setter + public Builder mode(String mode) { + if (mode == null) { + throw new MissingRequiredPropertyException("GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfig", "mode"); + } + this.mode = mode; + return this; + } + public GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfig build() { + final var _resultValue = new GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfig(); + _resultValue.mode = mode; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfig.java new file mode 100644 index 0000000000..93e95f1ff1 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfig.java @@ -0,0 +1,58 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfig { + /** + * @return Specified if fleet logging feature is enabled. Possible values: ["MODE_UNSPECIFIED", "COPY", "MOVE"] + * + */ + private String mode; + + private GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfig() {} + /** + * @return Specified if fleet logging feature is enabled. Possible values: ["MODE_UNSPECIFIED", "COPY", "MOVE"] + * + */ + public String mode() { + return this.mode; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String mode; + public Builder() {} + public Builder(GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfig defaults) { + Objects.requireNonNull(defaults); + this.mode = defaults.mode; + } + + @CustomType.Setter + public Builder mode(String mode) { + if (mode == null) { + throw new MissingRequiredPropertyException("GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfig", "mode"); + } + this.mode = mode; + return this; + } + public GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfig build() { + final var _resultValue = new GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfig(); + _resultValue.mode = mode; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecMulticlusteringress.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecMulticlusteringress.java new file mode 100644 index 0000000000..e07ba8df08 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureSpecMulticlusteringress.java @@ -0,0 +1,58 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetFeatureSpecMulticlusteringress { + /** + * @return Fully-qualified Membership name which hosts the MultiClusterIngress CRD. Example: 'projects/foo-proj/locations/global/memberships/bar' + * + */ + private String configMembership; + + private GetFeatureSpecMulticlusteringress() {} + /** + * @return Fully-qualified Membership name which hosts the MultiClusterIngress CRD. Example: 'projects/foo-proj/locations/global/memberships/bar' + * + */ + public String configMembership() { + return this.configMembership; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureSpecMulticlusteringress defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String configMembership; + public Builder() {} + public Builder(GetFeatureSpecMulticlusteringress defaults) { + Objects.requireNonNull(defaults); + this.configMembership = defaults.configMembership; + } + + @CustomType.Setter + public Builder configMembership(String configMembership) { + if (configMembership == null) { + throw new MissingRequiredPropertyException("GetFeatureSpecMulticlusteringress", "configMembership"); + } + this.configMembership = configMembership; + return this; + } + public GetFeatureSpecMulticlusteringress build() { + final var _resultValue = new GetFeatureSpecMulticlusteringress(); + _resultValue.configMembership = configMembership; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureState.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureState.java new file mode 100644 index 0000000000..75721fa00f --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureState.java @@ -0,0 +1,62 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.gkehub.outputs.GetFeatureStateState; +import java.util.List; +import java.util.Objects; + +@CustomType +public final class GetFeatureState { + /** + * @return Output only. The "running state" of the Feature in this Hub. + * + */ + private List states; + + private GetFeatureState() {} + /** + * @return Output only. The "running state" of the Feature in this Hub. + * + */ + public List states() { + return this.states; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureState defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private List states; + public Builder() {} + public Builder(GetFeatureState defaults) { + Objects.requireNonNull(defaults); + this.states = defaults.states; + } + + @CustomType.Setter + public Builder states(List states) { + if (states == null) { + throw new MissingRequiredPropertyException("GetFeatureState", "states"); + } + this.states = states; + return this; + } + public Builder states(GetFeatureStateState... states) { + return states(List.of(states)); + } + public GetFeatureState build() { + final var _resultValue = new GetFeatureState(); + _resultValue.states = states; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureStateState.java b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureStateState.java new file mode 100644 index 0000000000..a986ca2a4a --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkehub/outputs/GetFeatureStateState.java @@ -0,0 +1,104 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkehub.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetFeatureStateState { + /** + * @return The high-level, machine-readable status of this Feature. + * + */ + private String code; + /** + * @return A human-readable description of the current status. + * + */ + private String description; + /** + * @return 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" + * + */ + private String updateTime; + + private GetFeatureStateState() {} + /** + * @return The high-level, machine-readable status of this Feature. + * + */ + public String code() { + return this.code; + } + /** + * @return A human-readable description of the current status. + * + */ + public String description() { + return this.description; + } + /** + * @return 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 String updateTime() { + return this.updateTime; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetFeatureStateState defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String code; + private String description; + private String updateTime; + public Builder() {} + public Builder(GetFeatureStateState defaults) { + Objects.requireNonNull(defaults); + this.code = defaults.code; + this.description = defaults.description; + this.updateTime = defaults.updateTime; + } + + @CustomType.Setter + public Builder code(String code) { + if (code == null) { + throw new MissingRequiredPropertyException("GetFeatureStateState", "code"); + } + this.code = code; + return this; + } + @CustomType.Setter + public Builder description(String description) { + if (description == null) { + throw new MissingRequiredPropertyException("GetFeatureStateState", "description"); + } + this.description = description; + return this; + } + @CustomType.Setter + public Builder updateTime(String updateTime) { + if (updateTime == null) { + throw new MissingRequiredPropertyException("GetFeatureStateState", "updateTime"); + } + this.updateTime = updateTime; + return this; + } + public GetFeatureStateState build() { + final var _resultValue = new GetFeatureStateState(); + _resultValue.code = code; + _resultValue.description = description; + _resultValue.updateTime = updateTime; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/VmwareAdminCluster.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/VmwareAdminCluster.java new file mode 100644 index 0000000000..7cb8515f65 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/VmwareAdminCluster.java @@ -0,0 +1,826 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import com.pulumi.gcp.Utilities; +import com.pulumi.gcp.gkeonprem.VmwareAdminClusterArgs; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterState; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterAddonNode; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterAntiAffinityGroups; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterAuthorization; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterAutoRepairConfig; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterControlPlaneNode; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterFleet; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterLoadBalancer; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterNetworkConfig; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterPlatformConfig; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterStatus; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterVcenter; +import java.lang.Boolean; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import javax.annotation.Nullable; + +/** + * ## Example Usage + * + * ### Gkeonprem Vmware Admin Cluster Basic + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.gkeonprem.VmwareAdminCluster;
+ * import com.pulumi.gcp.gkeonprem.VmwareAdminClusterArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterVcenterArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterNetworkConfigArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterNetworkConfigDhcpIpConfigArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterControlPlaneNodeArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterLoadBalancerArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterLoadBalancerVipConfigArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterLoadBalancerF5ConfigArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var admin_cluster_basic = new VmwareAdminCluster("admin-cluster-basic", VmwareAdminClusterArgs.builder()
+ *             .name("basic")
+ *             .location("us-west1")
+ *             .description("test admin cluster")
+ *             .bootstrapClusterMembership("projects/870316890899/locations/global/memberships/gkeonprem-terraform-test")
+ *             .onPremVersion("1.31.0-gke.35")
+ *             .imageType("ubuntu_containerd")
+ *             .vcenter(VmwareAdminClusterVcenterArgs.builder()
+ *                 .resourcePool("test resource pool")
+ *                 .datastore("test data store")
+ *                 .datacenter("test data center")
+ *                 .cluster("test cluster")
+ *                 .folder("test folder")
+ *                 .caCertData("test ca cert data")
+ *                 .address("10.0.0.1")
+ *                 .dataDisk("test data disk")
+ *                 .build())
+ *             .networkConfig(VmwareAdminClusterNetworkConfigArgs.builder()
+ *                 .serviceAddressCidrBlocks("10.96.0.0/12")
+ *                 .podAddressCidrBlocks("192.168.0.0/16")
+ *                 .dhcpIpConfig(VmwareAdminClusterNetworkConfigDhcpIpConfigArgs.builder()
+ *                     .enabled(true)
+ *                     .build())
+ *                 .build())
+ *             .controlPlaneNode(VmwareAdminClusterControlPlaneNodeArgs.builder()
+ *                 .cpus(4)
+ *                 .memory(8192)
+ *                 .build())
+ *             .loadBalancer(VmwareAdminClusterLoadBalancerArgs.builder()
+ *                 .vipConfig(VmwareAdminClusterLoadBalancerVipConfigArgs.builder()
+ *                     .controlPlaneVip("10.251.133.5")
+ *                     .addonsVip("10.251.135.19")
+ *                     .build())
+ *                 .f5Config(VmwareAdminClusterLoadBalancerF5ConfigArgs.builder()
+ *                     .address("10.251.135.22")
+ *                     .partition("test-parition")
+ *                     .snatPool("test-snat-pool")
+ *                     .build())
+ *                 .build())
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * ### Gkeonprem Vmware Admin Cluster Full + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.gkeonprem.VmwareAdminCluster;
+ * import com.pulumi.gcp.gkeonprem.VmwareAdminClusterArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterVcenterArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterNetworkConfigArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterNetworkConfigHostConfigArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterNetworkConfigStaticIpConfigArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterControlPlaneNodeArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterLoadBalancerArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterLoadBalancerVipConfigArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterLoadBalancerManualLbConfigArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterAddonNodeArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterAddonNodeAutoResizeConfigArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterAntiAffinityGroupsArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterAuthorizationArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterAutoRepairConfigArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterPlatformConfigArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App }{{@code
+ *     public static void main(String[] args) }{{@code
+ *         Pulumi.run(App::stack);
+ *     }}{@code
+ * 
+ *     public static void stack(Context ctx) }{{@code
+ *         var admin_cluster_full = new VmwareAdminCluster("admin-cluster-full", VmwareAdminClusterArgs.builder()
+ *             .name("full")
+ *             .location("us-west1")
+ *             .description("test admin cluster")
+ *             .bootstrapClusterMembership("projects/870316890899/locations/global/memberships/gkeonprem-terraform-test")
+ *             .onPremVersion("1.31.0-gke.35")
+ *             .imageType("ubuntu_containerd")
+ *             .annotations()
+ *             .vcenter(VmwareAdminClusterVcenterArgs.builder()
+ *                 .resourcePool("test resource pool")
+ *                 .datastore("test data store")
+ *                 .datacenter("test data center")
+ *                 .cluster("test cluster")
+ *                 .folder("test folder")
+ *                 .caCertData("test ca cert data")
+ *                 .address("10.0.0.1")
+ *                 .dataDisk("test data disk")
+ *                 .storagePolicyName("storage_policy_name")
+ *                 .build())
+ *             .networkConfig(VmwareAdminClusterNetworkConfigArgs.builder()
+ *                 .serviceAddressCidrBlocks("10.96.0.0/12")
+ *                 .podAddressCidrBlocks("192.168.0.0/16")
+ *                 .haControlPlaneConfig(VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs.builder()
+ *                     .controlPlaneIpBlock(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs.builder()
+ *                         .gateway("10.0.0.3")
+ *                         .ips(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs.builder()
+ *                             .hostname("hostname")
+ *                             .ip("10.0.0.4")
+ *                             .build())
+ *                         .netmask("10.0.0.3/32")
+ *                         .build())
+ *                     .build())
+ *                 .hostConfig(VmwareAdminClusterNetworkConfigHostConfigArgs.builder()
+ *                     .dnsServers("10.254.41.1")
+ *                     .ntpServers("216.239.35.8")
+ *                     .dnsSearchDomains("test-domain")
+ *                     .build())
+ *                 .staticIpConfig(VmwareAdminClusterNetworkConfigStaticIpConfigArgs.builder()
+ *                     .ipBlocks(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs.builder()
+ *                         .gateway("10.0.0.1")
+ *                         .ips(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs.builder()
+ *                             .hostname("hostname")
+ *                             .ip("10.0.0.2")
+ *                             .build())
+ *                         .netmask("10.0.0.3/32")
+ *                         .build())
+ *                     .build())
+ *                 .vcenterNetwork("test-vcenter-network")
+ *                 .build())
+ *             .controlPlaneNode(VmwareAdminClusterControlPlaneNodeArgs.builder()
+ *                 .cpus(4)
+ *                 .memory(8192)
+ *                 .replicas(3)
+ *                 .build())
+ *             .loadBalancer(VmwareAdminClusterLoadBalancerArgs.builder()
+ *                 .vipConfig(VmwareAdminClusterLoadBalancerVipConfigArgs.builder()
+ *                     .controlPlaneVip("10.251.133.5")
+ *                     .addonsVip("10.251.135.19")
+ *                     .build())
+ *                 .manualLbConfig(VmwareAdminClusterLoadBalancerManualLbConfigArgs.builder()
+ *                     .addonsNodePort(30005)
+ *                     .controlPlaneNodePort(30006)
+ *                     .ingressHttpNodePort(30007)
+ *                     .ingressHttpsNodePort(30008)
+ *                     .konnectivityServerNodePort(30009)
+ *                     .build())
+ *                 .build())
+ *             .addonNode(VmwareAdminClusterAddonNodeArgs.builder()
+ *                 .autoResizeConfig(VmwareAdminClusterAddonNodeAutoResizeConfigArgs.builder()
+ *                     .enabled(true)
+ *                     .build())
+ *                 .build())
+ *             .antiAffinityGroups(VmwareAdminClusterAntiAffinityGroupsArgs.builder()
+ *                 .aagConfigDisabled(true)
+ *                 .build())
+ *             .authorization(VmwareAdminClusterAuthorizationArgs.builder()
+ *                 .viewerUsers(VmwareAdminClusterAuthorizationViewerUserArgs.builder()
+ *                     .username("user1}{@literal @}{@code gmail.com")
+ *                     .build())
+ *                 .build())
+ *             .autoRepairConfig(VmwareAdminClusterAutoRepairConfigArgs.builder()
+ *                 .enabled(true)
+ *                 .build())
+ *             .platformConfig(VmwareAdminClusterPlatformConfigArgs.builder()
+ *                 .requiredPlatformVersion("1.31.0")
+ *                 .build())
+ *             .build());
+ * 
+ *     }}{@code
+ * }}{@code
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * ### Gkeonprem Vmware Admin Cluster Metallb + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.gkeonprem.VmwareAdminCluster;
+ * import com.pulumi.gcp.gkeonprem.VmwareAdminClusterArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterVcenterArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterNetworkConfigArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterNetworkConfigDhcpIpConfigArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterControlPlaneNodeArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterLoadBalancerArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterLoadBalancerVipConfigArgs;
+ * import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterLoadBalancerMetalLbConfigArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var admin_cluster_metallb = new VmwareAdminCluster("admin-cluster-metallb", VmwareAdminClusterArgs.builder()
+ *             .name("metallb")
+ *             .location("us-west1")
+ *             .description("test admin cluster")
+ *             .bootstrapClusterMembership("projects/870316890899/locations/global/memberships/gkeonprem-terraform-test")
+ *             .onPremVersion("1.31.0-gke.35")
+ *             .imageType("ubuntu_containerd")
+ *             .vcenter(VmwareAdminClusterVcenterArgs.builder()
+ *                 .resourcePool("test resource pool")
+ *                 .datastore("test data store")
+ *                 .datacenter("test data center")
+ *                 .cluster("test cluster")
+ *                 .folder("test folder")
+ *                 .caCertData("test ca cert data")
+ *                 .address("10.0.0.1")
+ *                 .dataDisk("test data disk")
+ *                 .build())
+ *             .networkConfig(VmwareAdminClusterNetworkConfigArgs.builder()
+ *                 .serviceAddressCidrBlocks("10.96.0.0/12")
+ *                 .podAddressCidrBlocks("192.168.0.0/16")
+ *                 .dhcpIpConfig(VmwareAdminClusterNetworkConfigDhcpIpConfigArgs.builder()
+ *                     .enabled(true)
+ *                     .build())
+ *                 .build())
+ *             .controlPlaneNode(VmwareAdminClusterControlPlaneNodeArgs.builder()
+ *                 .cpus(4)
+ *                 .memory(8192)
+ *                 .build())
+ *             .loadBalancer(VmwareAdminClusterLoadBalancerArgs.builder()
+ *                 .vipConfig(VmwareAdminClusterLoadBalancerVipConfigArgs.builder()
+ *                     .controlPlaneVip("10.251.133.5")
+ *                     .addonsVip("10.251.135.19")
+ *                     .build())
+ *                 .metalLbConfig(VmwareAdminClusterLoadBalancerMetalLbConfigArgs.builder()
+ *                     .enabled(true)
+ *                     .build())
+ *                 .build())
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * + * ## Import + * + * VmwareAdminCluster can be imported using any of these accepted formats: + * + * * `projects/{{project}}/locations/{{location}}/vmwareAdminClusters/{{name}}` + * + * * `{{project}}/{{location}}/{{name}}` + * + * * `{{location}}/{{name}}` + * + * When using the `pulumi import` command, VmwareAdminCluster can be imported using one of the formats above. For example: + * + * ```sh + * $ pulumi import gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster default projects/{{project}}/locations/{{location}}/vmwareAdminClusters/{{name}} + * ``` + * + * ```sh + * $ pulumi import gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster default {{project}}/{{location}}/{{name}} + * ``` + * + * ```sh + * $ pulumi import gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster default {{location}}/{{name}} + * ``` + * + */ +@ResourceType(type="gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster") +public class VmwareAdminCluster extends com.pulumi.resources.CustomResource { + /** + * The VMware admin cluster addon node configuration. + * + */ + @Export(name="addonNode", refs={VmwareAdminClusterAddonNode.class}, tree="[0]") + private Output addonNode; + + /** + * @return The VMware admin cluster addon node configuration. + * + */ + public Output addonNode() { + return this.addonNode; + } + /** + * Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size + * of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), + * separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with + * alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is + * non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field + * 'effective_annotations' for all of the annotations present on the resource. + * + */ + @Export(name="annotations", refs={Map.class,String.class}, tree="[0,1,1]") + private Output> annotations; + + /** + * @return Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size + * of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), + * separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with + * alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is + * non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field + * 'effective_annotations' for all of the annotations present on the resource. + * + */ + public Output> annotations() { + return this.annotations; + } + /** + * AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter. + * + */ + @Export(name="antiAffinityGroups", refs={VmwareAdminClusterAntiAffinityGroups.class}, tree="[0]") + private Output antiAffinityGroups; + + /** + * @return AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter. + * + */ + public Output antiAffinityGroups() { + return this.antiAffinityGroups; + } + /** + * The VMware admin cluster authorization configuration. + * + */ + @Export(name="authorization", refs={VmwareAdminClusterAuthorization.class}, tree="[0]") + private Output authorization; + + /** + * @return The VMware admin cluster authorization configuration. + * + */ + public Output> authorization() { + return Codegen.optional(this.authorization); + } + /** + * Configuration for auto repairing. + * + */ + @Export(name="autoRepairConfig", refs={VmwareAdminClusterAutoRepairConfig.class}, tree="[0]") + private Output autoRepairConfig; + + /** + * @return Configuration for auto repairing. + * + */ + public Output autoRepairConfig() { + return this.autoRepairConfig; + } + /** + * The bootstrap cluster this VMware admin cluster belongs to. + * + */ + @Export(name="bootstrapClusterMembership", refs={String.class}, tree="[0]") + private Output bootstrapClusterMembership; + + /** + * @return The bootstrap cluster this VMware admin cluster belongs to. + * + */ + public Output bootstrapClusterMembership() { + return this.bootstrapClusterMembership; + } + /** + * The VMware admin cluster control plane node configuration. + * + */ + @Export(name="controlPlaneNode", refs={VmwareAdminClusterControlPlaneNode.class}, tree="[0]") + private Output controlPlaneNode; + + /** + * @return The VMware admin cluster control plane node configuration. + * + */ + public Output> controlPlaneNode() { + return Codegen.optional(this.controlPlaneNode); + } + /** + * The time the cluster was created, in RFC3339 text format. + * + */ + @Export(name="createTime", refs={String.class}, tree="[0]") + private Output createTime; + + /** + * @return The time the cluster was created, in RFC3339 text format. + * + */ + public Output createTime() { + return this.createTime; + } + /** + * A human readable description of this VMware admin cluster. + * + */ + @Export(name="description", refs={String.class}, tree="[0]") + private Output description; + + /** + * @return A human readable description of this VMware admin cluster. + * + */ + public Output description() { + return this.description; + } + @Export(name="effectiveAnnotations", refs={Map.class,String.class}, tree="[0,1,1]") + private Output> effectiveAnnotations; + + public Output> effectiveAnnotations() { + return this.effectiveAnnotations; + } + /** + * The DNS name of VMware admin cluster's API server. + * + */ + @Export(name="endpoint", refs={String.class}, tree="[0]") + private Output endpoint; + + /** + * @return The DNS name of VMware admin cluster's API server. + * + */ + public Output endpoint() { + return this.endpoint; + } + /** + * This checksum is computed by the server based on the value of other + * fields, and may be sent on update and delete requests to ensure the + * client has an up-to-date value before proceeding. + * Allows clients to perform consistent read-modify-writes + * through optimistic concurrency control. + * + */ + @Export(name="etag", refs={String.class}, tree="[0]") + private Output etag; + + /** + * @return This checksum is computed by the server based on the value of other + * fields, and may be sent on update and delete requests to ensure the + * client has an up-to-date value before proceeding. + * Allows clients to perform consistent read-modify-writes + * through optimistic concurrency control. + * + */ + public Output etag() { + return this.etag; + } + /** + * Fleet configuration for the cluster. + * Structure is documented below. + * + */ + @Export(name="fleets", refs={List.class,VmwareAdminClusterFleet.class}, tree="[0,1]") + private Output> fleets; + + /** + * @return Fleet configuration for the cluster. + * Structure is documented below. + * + */ + public Output> fleets() { + return this.fleets; + } + /** + * The OS image type for the VMware admin cluster. + * + */ + @Export(name="imageType", refs={String.class}, tree="[0]") + private Output imageType; + + /** + * @return The OS image type for the VMware admin cluster. + * + */ + public Output imageType() { + return this.imageType; + } + /** + * Specifies the load balancer configuration for VMware admin cluster. + * + */ + @Export(name="loadBalancer", refs={VmwareAdminClusterLoadBalancer.class}, tree="[0]") + private Output loadBalancer; + + /** + * @return Specifies the load balancer configuration for VMware admin cluster. + * + */ + public Output> loadBalancer() { + return Codegen.optional(this.loadBalancer); + } + /** + * The object name of the VMwareAdminCluster custom resource on the + * associated admin cluster. This field is used to support conflicting + * names when enrolling existing clusters to the API. When used as a part of + * cluster enrollment, this field will differ from the ID in the resource + * name. For new clusters, this field will match the user provided cluster ID + * and be visible in the last component of the resource name. It is not + * modifiable. + * All users should use this name to access their cluster using gkectl or + * kubectl and should expect to see the local name when viewing admin + * cluster controller logs. + * + */ + @Export(name="localName", refs={String.class}, tree="[0]") + private Output localName; + + /** + * @return The object name of the VMwareAdminCluster custom resource on the + * associated admin cluster. This field is used to support conflicting + * names when enrolling existing clusters to the API. When used as a part of + * cluster enrollment, this field will differ from the ID in the resource + * name. For new clusters, this field will match the user provided cluster ID + * and be visible in the last component of the resource name. It is not + * modifiable. + * All users should use this name to access their cluster using gkectl or + * kubectl and should expect to see the local name when viewing admin + * cluster controller logs. + * + */ + public Output localName() { + return this.localName; + } + /** + * The location of the resource. + * + */ + @Export(name="location", refs={String.class}, tree="[0]") + private Output location; + + /** + * @return The location of the resource. + * + */ + public Output location() { + return this.location; + } + /** + * The VMware admin cluster resource name. + * + */ + @Export(name="name", refs={String.class}, tree="[0]") + private Output name; + + /** + * @return The VMware admin cluster resource name. + * + */ + public Output name() { + return this.name; + } + /** + * The VMware admin cluster network configuration. + * Structure is documented below. + * + */ + @Export(name="networkConfig", refs={VmwareAdminClusterNetworkConfig.class}, tree="[0]") + private Output networkConfig; + + /** + * @return The VMware admin cluster network configuration. + * Structure is documented below. + * + */ + public Output networkConfig() { + return this.networkConfig; + } + /** + * The Anthos clusters on the VMware version for the admin cluster. + * + */ + @Export(name="onPremVersion", refs={String.class}, tree="[0]") + private Output onPremVersion; + + /** + * @return The Anthos clusters on the VMware version for the admin cluster. + * + */ + public Output> onPremVersion() { + return Codegen.optional(this.onPremVersion); + } + /** + * The VMware platform configuration. + * + */ + @Export(name="platformConfig", refs={VmwareAdminClusterPlatformConfig.class}, tree="[0]") + private Output platformConfig; + + /** + * @return The VMware platform configuration. + * + */ + public Output> platformConfig() { + return Codegen.optional(this.platformConfig); + } + @Export(name="project", refs={String.class}, tree="[0]") + private Output project; + + public Output project() { + return this.project; + } + /** + * If set, there are currently changes in flight to the VMware admin cluster. + * + */ + @Export(name="reconciling", refs={Boolean.class}, tree="[0]") + private Output reconciling; + + /** + * @return If set, there are currently changes in flight to the VMware admin cluster. + * + */ + public Output reconciling() { + return this.reconciling; + } + /** + * (Output) + * The lifecycle state of the condition. + * + */ + @Export(name="state", refs={String.class}, tree="[0]") + private Output state; + + /** + * @return (Output) + * The lifecycle state of the condition. + * + */ + public Output state() { + return this.state; + } + /** + * ResourceStatus representing detailed cluster state. + * Structure is documented below. + * + */ + @Export(name="statuses", refs={List.class,VmwareAdminClusterStatus.class}, tree="[0,1]") + private Output> statuses; + + /** + * @return ResourceStatus representing detailed cluster state. + * Structure is documented below. + * + */ + public Output> statuses() { + return this.statuses; + } + /** + * The unique identifier of the VMware Admin Cluster. + * + */ + @Export(name="uid", refs={String.class}, tree="[0]") + private Output uid; + + /** + * @return The unique identifier of the VMware Admin Cluster. + * + */ + public Output uid() { + return this.uid; + } + /** + * The time the cluster was last updated, in RFC3339 text format. + * + */ + @Export(name="updateTime", refs={String.class}, tree="[0]") + private Output updateTime; + + /** + * @return The time the cluster was last updated, in RFC3339 text format. + * + */ + public Output updateTime() { + return this.updateTime; + } + /** + * Specifies vCenter config for the admin cluster. + * + */ + @Export(name="vcenter", refs={VmwareAdminClusterVcenter.class}, tree="[0]") + private Output vcenter; + + /** + * @return Specifies vCenter config for the admin cluster. + * + */ + public Output> vcenter() { + return Codegen.optional(this.vcenter); + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public VmwareAdminCluster(java.lang.String name) { + this(name, VmwareAdminClusterArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public VmwareAdminCluster(java.lang.String name, VmwareAdminClusterArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public VmwareAdminCluster(java.lang.String name, VmwareAdminClusterArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster", name, makeArgs(args, options), makeResourceOptions(options, Codegen.empty()), false); + } + + private VmwareAdminCluster(java.lang.String name, Output id, @Nullable VmwareAdminClusterState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster", name, state, makeResourceOptions(options, id), false); + } + + private static VmwareAdminClusterArgs makeArgs(VmwareAdminClusterArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + if (options != null && options.getUrn().isPresent()) { + return null; + } + return args == null ? VmwareAdminClusterArgs.Empty : args; + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static VmwareAdminCluster get(java.lang.String name, Output id, @Nullable VmwareAdminClusterState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new VmwareAdminCluster(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/VmwareAdminClusterArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/VmwareAdminClusterArgs.java new file mode 100644 index 0000000000..07fe6382c5 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/VmwareAdminClusterArgs.java @@ -0,0 +1,696 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterAddonNodeArgs; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterAntiAffinityGroupsArgs; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterAuthorizationArgs; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterAutoRepairConfigArgs; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterControlPlaneNodeArgs; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterLoadBalancerArgs; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterNetworkConfigArgs; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterPlatformConfigArgs; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterVcenterArgs; +import java.lang.String; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class VmwareAdminClusterArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterArgs Empty = new VmwareAdminClusterArgs(); + + /** + * The VMware admin cluster addon node configuration. + * + */ + @Import(name="addonNode") + private @Nullable Output addonNode; + + /** + * @return The VMware admin cluster addon node configuration. + * + */ + public Optional> addonNode() { + return Optional.ofNullable(this.addonNode); + } + + /** + * Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size + * of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), + * separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with + * alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is + * non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field + * 'effective_annotations' for all of the annotations present on the resource. + * + */ + @Import(name="annotations") + private @Nullable Output> annotations; + + /** + * @return Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size + * of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), + * separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with + * alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is + * non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field + * 'effective_annotations' for all of the annotations present on the resource. + * + */ + public Optional>> annotations() { + return Optional.ofNullable(this.annotations); + } + + /** + * AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter. + * + */ + @Import(name="antiAffinityGroups") + private @Nullable Output antiAffinityGroups; + + /** + * @return AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter. + * + */ + public Optional> antiAffinityGroups() { + return Optional.ofNullable(this.antiAffinityGroups); + } + + /** + * The VMware admin cluster authorization configuration. + * + */ + @Import(name="authorization") + private @Nullable Output authorization; + + /** + * @return The VMware admin cluster authorization configuration. + * + */ + public Optional> authorization() { + return Optional.ofNullable(this.authorization); + } + + /** + * Configuration for auto repairing. + * + */ + @Import(name="autoRepairConfig") + private @Nullable Output autoRepairConfig; + + /** + * @return Configuration for auto repairing. + * + */ + public Optional> autoRepairConfig() { + return Optional.ofNullable(this.autoRepairConfig); + } + + /** + * The bootstrap cluster this VMware admin cluster belongs to. + * + */ + @Import(name="bootstrapClusterMembership") + private @Nullable Output bootstrapClusterMembership; + + /** + * @return The bootstrap cluster this VMware admin cluster belongs to. + * + */ + public Optional> bootstrapClusterMembership() { + return Optional.ofNullable(this.bootstrapClusterMembership); + } + + /** + * The VMware admin cluster control plane node configuration. + * + */ + @Import(name="controlPlaneNode") + private @Nullable Output controlPlaneNode; + + /** + * @return The VMware admin cluster control plane node configuration. + * + */ + public Optional> controlPlaneNode() { + return Optional.ofNullable(this.controlPlaneNode); + } + + /** + * A human readable description of this VMware admin cluster. + * + */ + @Import(name="description") + private @Nullable Output description; + + /** + * @return A human readable description of this VMware admin cluster. + * + */ + public Optional> description() { + return Optional.ofNullable(this.description); + } + + /** + * The OS image type for the VMware admin cluster. + * + */ + @Import(name="imageType") + private @Nullable Output imageType; + + /** + * @return The OS image type for the VMware admin cluster. + * + */ + public Optional> imageType() { + return Optional.ofNullable(this.imageType); + } + + /** + * Specifies the load balancer configuration for VMware admin cluster. + * + */ + @Import(name="loadBalancer") + private @Nullable Output loadBalancer; + + /** + * @return Specifies the load balancer configuration for VMware admin cluster. + * + */ + public Optional> loadBalancer() { + return Optional.ofNullable(this.loadBalancer); + } + + /** + * The location of the resource. + * + */ + @Import(name="location", required=true) + private Output location; + + /** + * @return The location of the resource. + * + */ + public Output location() { + return this.location; + } + + /** + * The VMware admin cluster resource name. + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The VMware admin cluster resource name. + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * The VMware admin cluster network configuration. + * Structure is documented below. + * + */ + @Import(name="networkConfig", required=true) + private Output networkConfig; + + /** + * @return The VMware admin cluster network configuration. + * Structure is documented below. + * + */ + public Output networkConfig() { + return this.networkConfig; + } + + /** + * The Anthos clusters on the VMware version for the admin cluster. + * + */ + @Import(name="onPremVersion") + private @Nullable Output onPremVersion; + + /** + * @return The Anthos clusters on the VMware version for the admin cluster. + * + */ + public Optional> onPremVersion() { + return Optional.ofNullable(this.onPremVersion); + } + + /** + * The VMware platform configuration. + * + */ + @Import(name="platformConfig") + private @Nullable Output platformConfig; + + /** + * @return The VMware platform configuration. + * + */ + public Optional> platformConfig() { + return Optional.ofNullable(this.platformConfig); + } + + @Import(name="project") + private @Nullable Output project; + + public Optional> project() { + return Optional.ofNullable(this.project); + } + + /** + * Specifies vCenter config for the admin cluster. + * + */ + @Import(name="vcenter") + private @Nullable Output vcenter; + + /** + * @return Specifies vCenter config for the admin cluster. + * + */ + public Optional> vcenter() { + return Optional.ofNullable(this.vcenter); + } + + private VmwareAdminClusterArgs() {} + + private VmwareAdminClusterArgs(VmwareAdminClusterArgs $) { + this.addonNode = $.addonNode; + this.annotations = $.annotations; + this.antiAffinityGroups = $.antiAffinityGroups; + this.authorization = $.authorization; + this.autoRepairConfig = $.autoRepairConfig; + this.bootstrapClusterMembership = $.bootstrapClusterMembership; + this.controlPlaneNode = $.controlPlaneNode; + this.description = $.description; + this.imageType = $.imageType; + this.loadBalancer = $.loadBalancer; + this.location = $.location; + this.name = $.name; + this.networkConfig = $.networkConfig; + this.onPremVersion = $.onPremVersion; + this.platformConfig = $.platformConfig; + this.project = $.project; + this.vcenter = $.vcenter; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterArgs $; + + public Builder() { + $ = new VmwareAdminClusterArgs(); + } + + public Builder(VmwareAdminClusterArgs defaults) { + $ = new VmwareAdminClusterArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param addonNode The VMware admin cluster addon node configuration. + * + * @return builder + * + */ + public Builder addonNode(@Nullable Output addonNode) { + $.addonNode = addonNode; + return this; + } + + /** + * @param addonNode The VMware admin cluster addon node configuration. + * + * @return builder + * + */ + public Builder addonNode(VmwareAdminClusterAddonNodeArgs addonNode) { + return addonNode(Output.of(addonNode)); + } + + /** + * @param annotations Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size + * of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), + * separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with + * alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is + * non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field + * 'effective_annotations' for all of the annotations present on the resource. + * + * @return builder + * + */ + public Builder annotations(@Nullable Output> annotations) { + $.annotations = annotations; + return this; + } + + /** + * @param annotations Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size + * of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), + * separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with + * alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is + * non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field + * 'effective_annotations' for all of the annotations present on the resource. + * + * @return builder + * + */ + public Builder annotations(Map annotations) { + return annotations(Output.of(annotations)); + } + + /** + * @param antiAffinityGroups AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter. + * + * @return builder + * + */ + public Builder antiAffinityGroups(@Nullable Output antiAffinityGroups) { + $.antiAffinityGroups = antiAffinityGroups; + return this; + } + + /** + * @param antiAffinityGroups AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter. + * + * @return builder + * + */ + public Builder antiAffinityGroups(VmwareAdminClusterAntiAffinityGroupsArgs antiAffinityGroups) { + return antiAffinityGroups(Output.of(antiAffinityGroups)); + } + + /** + * @param authorization The VMware admin cluster authorization configuration. + * + * @return builder + * + */ + public Builder authorization(@Nullable Output authorization) { + $.authorization = authorization; + return this; + } + + /** + * @param authorization The VMware admin cluster authorization configuration. + * + * @return builder + * + */ + public Builder authorization(VmwareAdminClusterAuthorizationArgs authorization) { + return authorization(Output.of(authorization)); + } + + /** + * @param autoRepairConfig Configuration for auto repairing. + * + * @return builder + * + */ + public Builder autoRepairConfig(@Nullable Output autoRepairConfig) { + $.autoRepairConfig = autoRepairConfig; + return this; + } + + /** + * @param autoRepairConfig Configuration for auto repairing. + * + * @return builder + * + */ + public Builder autoRepairConfig(VmwareAdminClusterAutoRepairConfigArgs autoRepairConfig) { + return autoRepairConfig(Output.of(autoRepairConfig)); + } + + /** + * @param bootstrapClusterMembership The bootstrap cluster this VMware admin cluster belongs to. + * + * @return builder + * + */ + public Builder bootstrapClusterMembership(@Nullable Output bootstrapClusterMembership) { + $.bootstrapClusterMembership = bootstrapClusterMembership; + return this; + } + + /** + * @param bootstrapClusterMembership The bootstrap cluster this VMware admin cluster belongs to. + * + * @return builder + * + */ + public Builder bootstrapClusterMembership(String bootstrapClusterMembership) { + return bootstrapClusterMembership(Output.of(bootstrapClusterMembership)); + } + + /** + * @param controlPlaneNode The VMware admin cluster control plane node configuration. + * + * @return builder + * + */ + public Builder controlPlaneNode(@Nullable Output controlPlaneNode) { + $.controlPlaneNode = controlPlaneNode; + return this; + } + + /** + * @param controlPlaneNode The VMware admin cluster control plane node configuration. + * + * @return builder + * + */ + public Builder controlPlaneNode(VmwareAdminClusterControlPlaneNodeArgs controlPlaneNode) { + return controlPlaneNode(Output.of(controlPlaneNode)); + } + + /** + * @param description A human readable description of this VMware admin cluster. + * + * @return builder + * + */ + public Builder description(@Nullable Output description) { + $.description = description; + return this; + } + + /** + * @param description A human readable description of this VMware admin cluster. + * + * @return builder + * + */ + public Builder description(String description) { + return description(Output.of(description)); + } + + /** + * @param imageType The OS image type for the VMware admin cluster. + * + * @return builder + * + */ + public Builder imageType(@Nullable Output imageType) { + $.imageType = imageType; + return this; + } + + /** + * @param imageType The OS image type for the VMware admin cluster. + * + * @return builder + * + */ + public Builder imageType(String imageType) { + return imageType(Output.of(imageType)); + } + + /** + * @param loadBalancer Specifies the load balancer configuration for VMware admin cluster. + * + * @return builder + * + */ + public Builder loadBalancer(@Nullable Output loadBalancer) { + $.loadBalancer = loadBalancer; + return this; + } + + /** + * @param loadBalancer Specifies the load balancer configuration for VMware admin cluster. + * + * @return builder + * + */ + public Builder loadBalancer(VmwareAdminClusterLoadBalancerArgs loadBalancer) { + return loadBalancer(Output.of(loadBalancer)); + } + + /** + * @param location The location of the resource. + * + * @return builder + * + */ + public Builder location(Output location) { + $.location = location; + return this; + } + + /** + * @param location The location of the resource. + * + * @return builder + * + */ + public Builder location(String location) { + return location(Output.of(location)); + } + + /** + * @param name The VMware admin cluster resource name. + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The VMware admin cluster resource name. + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param networkConfig The VMware admin cluster network configuration. + * Structure is documented below. + * + * @return builder + * + */ + public Builder networkConfig(Output networkConfig) { + $.networkConfig = networkConfig; + return this; + } + + /** + * @param networkConfig The VMware admin cluster network configuration. + * Structure is documented below. + * + * @return builder + * + */ + public Builder networkConfig(VmwareAdminClusterNetworkConfigArgs networkConfig) { + return networkConfig(Output.of(networkConfig)); + } + + /** + * @param onPremVersion The Anthos clusters on the VMware version for the admin cluster. + * + * @return builder + * + */ + public Builder onPremVersion(@Nullable Output onPremVersion) { + $.onPremVersion = onPremVersion; + return this; + } + + /** + * @param onPremVersion The Anthos clusters on the VMware version for the admin cluster. + * + * @return builder + * + */ + public Builder onPremVersion(String onPremVersion) { + return onPremVersion(Output.of(onPremVersion)); + } + + /** + * @param platformConfig The VMware platform configuration. + * + * @return builder + * + */ + public Builder platformConfig(@Nullable Output platformConfig) { + $.platformConfig = platformConfig; + return this; + } + + /** + * @param platformConfig The VMware platform configuration. + * + * @return builder + * + */ + public Builder platformConfig(VmwareAdminClusterPlatformConfigArgs platformConfig) { + return platformConfig(Output.of(platformConfig)); + } + + public Builder project(@Nullable Output project) { + $.project = project; + return this; + } + + public Builder project(String project) { + return project(Output.of(project)); + } + + /** + * @param vcenter Specifies vCenter config for the admin cluster. + * + * @return builder + * + */ + public Builder vcenter(@Nullable Output vcenter) { + $.vcenter = vcenter; + return this; + } + + /** + * @param vcenter Specifies vCenter config for the admin cluster. + * + * @return builder + * + */ + public Builder vcenter(VmwareAdminClusterVcenterArgs vcenter) { + return vcenter(Output.of(vcenter)); + } + + public VmwareAdminClusterArgs build() { + if ($.location == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterArgs", "location"); + } + if ($.networkConfig == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterArgs", "networkConfig"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterAddonNodeArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterAddonNodeArgs.java new file mode 100644 index 0000000000..7ed3d9abe8 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterAddonNodeArgs.java @@ -0,0 +1,87 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterAddonNodeAutoResizeConfigArgs; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class VmwareAdminClusterAddonNodeArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterAddonNodeArgs Empty = new VmwareAdminClusterAddonNodeArgs(); + + /** + * Specifies auto resize config. + * Structure is documented below. + * + */ + @Import(name="autoResizeConfig") + private @Nullable Output autoResizeConfig; + + /** + * @return Specifies auto resize config. + * Structure is documented below. + * + */ + public Optional> autoResizeConfig() { + return Optional.ofNullable(this.autoResizeConfig); + } + + private VmwareAdminClusterAddonNodeArgs() {} + + private VmwareAdminClusterAddonNodeArgs(VmwareAdminClusterAddonNodeArgs $) { + this.autoResizeConfig = $.autoResizeConfig; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterAddonNodeArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterAddonNodeArgs $; + + public Builder() { + $ = new VmwareAdminClusterAddonNodeArgs(); + } + + public Builder(VmwareAdminClusterAddonNodeArgs defaults) { + $ = new VmwareAdminClusterAddonNodeArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param autoResizeConfig Specifies auto resize config. + * Structure is documented below. + * + * @return builder + * + */ + public Builder autoResizeConfig(@Nullable Output autoResizeConfig) { + $.autoResizeConfig = autoResizeConfig; + return this; + } + + /** + * @param autoResizeConfig Specifies auto resize config. + * Structure is documented below. + * + * @return builder + * + */ + public Builder autoResizeConfig(VmwareAdminClusterAddonNodeAutoResizeConfigArgs autoResizeConfig) { + return autoResizeConfig(Output.of(autoResizeConfig)); + } + + public VmwareAdminClusterAddonNodeArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterAddonNodeAutoResizeConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterAddonNodeAutoResizeConfigArgs.java new file mode 100644 index 0000000000..69895eedea --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterAddonNodeAutoResizeConfigArgs.java @@ -0,0 +1,85 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; +import java.util.Objects; + + +public final class VmwareAdminClusterAddonNodeAutoResizeConfigArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterAddonNodeAutoResizeConfigArgs Empty = new VmwareAdminClusterAddonNodeAutoResizeConfigArgs(); + + /** + * Whether to enable controle plane node auto resizing. + * + */ + @Import(name="enabled", required=true) + private Output enabled; + + /** + * @return Whether to enable controle plane node auto resizing. + * + */ + public Output enabled() { + return this.enabled; + } + + private VmwareAdminClusterAddonNodeAutoResizeConfigArgs() {} + + private VmwareAdminClusterAddonNodeAutoResizeConfigArgs(VmwareAdminClusterAddonNodeAutoResizeConfigArgs $) { + this.enabled = $.enabled; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterAddonNodeAutoResizeConfigArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterAddonNodeAutoResizeConfigArgs $; + + public Builder() { + $ = new VmwareAdminClusterAddonNodeAutoResizeConfigArgs(); + } + + public Builder(VmwareAdminClusterAddonNodeAutoResizeConfigArgs defaults) { + $ = new VmwareAdminClusterAddonNodeAutoResizeConfigArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param enabled Whether to enable controle plane node auto resizing. + * + * @return builder + * + */ + public Builder enabled(Output enabled) { + $.enabled = enabled; + return this; + } + + /** + * @param enabled Whether to enable controle plane node auto resizing. + * + * @return builder + * + */ + public Builder enabled(Boolean enabled) { + return enabled(Output.of(enabled)); + } + + public VmwareAdminClusterAddonNodeAutoResizeConfigArgs build() { + if ($.enabled == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterAddonNodeAutoResizeConfigArgs", "enabled"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterAntiAffinityGroupsArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterAntiAffinityGroupsArgs.java new file mode 100644 index 0000000000..278332d029 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterAntiAffinityGroupsArgs.java @@ -0,0 +1,93 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; +import java.util.Objects; + + +public final class VmwareAdminClusterAntiAffinityGroupsArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterAntiAffinityGroupsArgs Empty = new VmwareAdminClusterAntiAffinityGroupsArgs(); + + /** + * Spread nodes across at least three physical hosts (requires at least three + * hosts). + * Enabled by default. + * + */ + @Import(name="aagConfigDisabled", required=true) + private Output aagConfigDisabled; + + /** + * @return Spread nodes across at least three physical hosts (requires at least three + * hosts). + * Enabled by default. + * + */ + public Output aagConfigDisabled() { + return this.aagConfigDisabled; + } + + private VmwareAdminClusterAntiAffinityGroupsArgs() {} + + private VmwareAdminClusterAntiAffinityGroupsArgs(VmwareAdminClusterAntiAffinityGroupsArgs $) { + this.aagConfigDisabled = $.aagConfigDisabled; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterAntiAffinityGroupsArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterAntiAffinityGroupsArgs $; + + public Builder() { + $ = new VmwareAdminClusterAntiAffinityGroupsArgs(); + } + + public Builder(VmwareAdminClusterAntiAffinityGroupsArgs defaults) { + $ = new VmwareAdminClusterAntiAffinityGroupsArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param aagConfigDisabled Spread nodes across at least three physical hosts (requires at least three + * hosts). + * Enabled by default. + * + * @return builder + * + */ + public Builder aagConfigDisabled(Output aagConfigDisabled) { + $.aagConfigDisabled = aagConfigDisabled; + return this; + } + + /** + * @param aagConfigDisabled Spread nodes across at least three physical hosts (requires at least three + * hosts). + * Enabled by default. + * + * @return builder + * + */ + public Builder aagConfigDisabled(Boolean aagConfigDisabled) { + return aagConfigDisabled(Output.of(aagConfigDisabled)); + } + + public VmwareAdminClusterAntiAffinityGroupsArgs build() { + if ($.aagConfigDisabled == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterAntiAffinityGroupsArgs", "aagConfigDisabled"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterAuthorizationArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterAuthorizationArgs.java new file mode 100644 index 0000000000..53ae66bd42 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterAuthorizationArgs.java @@ -0,0 +1,104 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterAuthorizationViewerUserArgs; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class VmwareAdminClusterAuthorizationArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterAuthorizationArgs Empty = new VmwareAdminClusterAuthorizationArgs(); + + /** + * Users that will be granted the cluster-admin role on the cluster, providing + * full access to the cluster. + * Structure is documented below. + * + */ + @Import(name="viewerUsers") + private @Nullable Output> viewerUsers; + + /** + * @return Users that will be granted the cluster-admin role on the cluster, providing + * full access to the cluster. + * Structure is documented below. + * + */ + public Optional>> viewerUsers() { + return Optional.ofNullable(this.viewerUsers); + } + + private VmwareAdminClusterAuthorizationArgs() {} + + private VmwareAdminClusterAuthorizationArgs(VmwareAdminClusterAuthorizationArgs $) { + this.viewerUsers = $.viewerUsers; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterAuthorizationArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterAuthorizationArgs $; + + public Builder() { + $ = new VmwareAdminClusterAuthorizationArgs(); + } + + public Builder(VmwareAdminClusterAuthorizationArgs defaults) { + $ = new VmwareAdminClusterAuthorizationArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param viewerUsers Users that will be granted the cluster-admin role on the cluster, providing + * full access to the cluster. + * Structure is documented below. + * + * @return builder + * + */ + public Builder viewerUsers(@Nullable Output> viewerUsers) { + $.viewerUsers = viewerUsers; + return this; + } + + /** + * @param viewerUsers Users that will be granted the cluster-admin role on the cluster, providing + * full access to the cluster. + * Structure is documented below. + * + * @return builder + * + */ + public Builder viewerUsers(List viewerUsers) { + return viewerUsers(Output.of(viewerUsers)); + } + + /** + * @param viewerUsers Users that will be granted the cluster-admin role on the cluster, providing + * full access to the cluster. + * Structure is documented below. + * + * @return builder + * + */ + public Builder viewerUsers(VmwareAdminClusterAuthorizationViewerUserArgs... viewerUsers) { + return viewerUsers(List.of(viewerUsers)); + } + + public VmwareAdminClusterAuthorizationArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterAuthorizationViewerUserArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterAuthorizationViewerUserArgs.java new file mode 100644 index 0000000000..0e6bce838a --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterAuthorizationViewerUserArgs.java @@ -0,0 +1,85 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + + +public final class VmwareAdminClusterAuthorizationViewerUserArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterAuthorizationViewerUserArgs Empty = new VmwareAdminClusterAuthorizationViewerUserArgs(); + + /** + * The name of the user, e.g. `my-gcp-id{@literal @}gmail.com`. + * + */ + @Import(name="username", required=true) + private Output username; + + /** + * @return The name of the user, e.g. `my-gcp-id{@literal @}gmail.com`. + * + */ + public Output username() { + return this.username; + } + + private VmwareAdminClusterAuthorizationViewerUserArgs() {} + + private VmwareAdminClusterAuthorizationViewerUserArgs(VmwareAdminClusterAuthorizationViewerUserArgs $) { + this.username = $.username; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterAuthorizationViewerUserArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterAuthorizationViewerUserArgs $; + + public Builder() { + $ = new VmwareAdminClusterAuthorizationViewerUserArgs(); + } + + public Builder(VmwareAdminClusterAuthorizationViewerUserArgs defaults) { + $ = new VmwareAdminClusterAuthorizationViewerUserArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param username The name of the user, e.g. `my-gcp-id{@literal @}gmail.com`. + * + * @return builder + * + */ + public Builder username(Output username) { + $.username = username; + return this; + } + + /** + * @param username The name of the user, e.g. `my-gcp-id{@literal @}gmail.com`. + * + * @return builder + * + */ + public Builder username(String username) { + return username(Output.of(username)); + } + + public VmwareAdminClusterAuthorizationViewerUserArgs build() { + if ($.username == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterAuthorizationViewerUserArgs", "username"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterAutoRepairConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterAutoRepairConfigArgs.java new file mode 100644 index 0000000000..21a4ac4c71 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterAutoRepairConfigArgs.java @@ -0,0 +1,85 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; +import java.util.Objects; + + +public final class VmwareAdminClusterAutoRepairConfigArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterAutoRepairConfigArgs Empty = new VmwareAdminClusterAutoRepairConfigArgs(); + + /** + * Whether auto repair is enabled. + * + */ + @Import(name="enabled", required=true) + private Output enabled; + + /** + * @return Whether auto repair is enabled. + * + */ + public Output enabled() { + return this.enabled; + } + + private VmwareAdminClusterAutoRepairConfigArgs() {} + + private VmwareAdminClusterAutoRepairConfigArgs(VmwareAdminClusterAutoRepairConfigArgs $) { + this.enabled = $.enabled; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterAutoRepairConfigArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterAutoRepairConfigArgs $; + + public Builder() { + $ = new VmwareAdminClusterAutoRepairConfigArgs(); + } + + public Builder(VmwareAdminClusterAutoRepairConfigArgs defaults) { + $ = new VmwareAdminClusterAutoRepairConfigArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param enabled Whether auto repair is enabled. + * + * @return builder + * + */ + public Builder enabled(Output enabled) { + $.enabled = enabled; + return this; + } + + /** + * @param enabled Whether auto repair is enabled. + * + * @return builder + * + */ + public Builder enabled(Boolean enabled) { + return enabled(Output.of(enabled)); + } + + public VmwareAdminClusterAutoRepairConfigArgs build() { + if ($.enabled == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterAutoRepairConfigArgs", "enabled"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterControlPlaneNodeArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterControlPlaneNodeArgs.java new file mode 100644 index 0000000000..792a0b27a0 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterControlPlaneNodeArgs.java @@ -0,0 +1,157 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Integer; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class VmwareAdminClusterControlPlaneNodeArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterControlPlaneNodeArgs Empty = new VmwareAdminClusterControlPlaneNodeArgs(); + + /** + * The number of vCPUs for the control-plane node of the admin cluster. + * + */ + @Import(name="cpus") + private @Nullable Output cpus; + + /** + * @return The number of vCPUs for the control-plane node of the admin cluster. + * + */ + public Optional> cpus() { + return Optional.ofNullable(this.cpus); + } + + /** + * The number of mebibytes of memory for the control-plane node of the admin cluster. + * + */ + @Import(name="memory") + private @Nullable Output memory; + + /** + * @return The number of mebibytes of memory for the control-plane node of the admin cluster. + * + */ + public Optional> memory() { + return Optional.ofNullable(this.memory); + } + + /** + * The number of control plane nodes for this VMware admin cluster. + * + */ + @Import(name="replicas") + private @Nullable Output replicas; + + /** + * @return The number of control plane nodes for this VMware admin cluster. + * + */ + public Optional> replicas() { + return Optional.ofNullable(this.replicas); + } + + private VmwareAdminClusterControlPlaneNodeArgs() {} + + private VmwareAdminClusterControlPlaneNodeArgs(VmwareAdminClusterControlPlaneNodeArgs $) { + this.cpus = $.cpus; + this.memory = $.memory; + this.replicas = $.replicas; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterControlPlaneNodeArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterControlPlaneNodeArgs $; + + public Builder() { + $ = new VmwareAdminClusterControlPlaneNodeArgs(); + } + + public Builder(VmwareAdminClusterControlPlaneNodeArgs defaults) { + $ = new VmwareAdminClusterControlPlaneNodeArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param cpus The number of vCPUs for the control-plane node of the admin cluster. + * + * @return builder + * + */ + public Builder cpus(@Nullable Output cpus) { + $.cpus = cpus; + return this; + } + + /** + * @param cpus The number of vCPUs for the control-plane node of the admin cluster. + * + * @return builder + * + */ + public Builder cpus(Integer cpus) { + return cpus(Output.of(cpus)); + } + + /** + * @param memory The number of mebibytes of memory for the control-plane node of the admin cluster. + * + * @return builder + * + */ + public Builder memory(@Nullable Output memory) { + $.memory = memory; + return this; + } + + /** + * @param memory The number of mebibytes of memory for the control-plane node of the admin cluster. + * + * @return builder + * + */ + public Builder memory(Integer memory) { + return memory(Output.of(memory)); + } + + /** + * @param replicas The number of control plane nodes for this VMware admin cluster. + * + * @return builder + * + */ + public Builder replicas(@Nullable Output replicas) { + $.replicas = replicas; + return this; + } + + /** + * @param replicas The number of control plane nodes for this VMware admin cluster. + * + * @return builder + * + */ + public Builder replicas(Integer replicas) { + return replicas(Output.of(replicas)); + } + + public VmwareAdminClusterControlPlaneNodeArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterFleetArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterFleetArgs.java new file mode 100644 index 0000000000..b38de33dbf --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterFleetArgs.java @@ -0,0 +1,95 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class VmwareAdminClusterFleetArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterFleetArgs Empty = new VmwareAdminClusterFleetArgs(); + + /** + * (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>`. + * + */ + @Import(name="membership") + private @Nullable Output membership; + + /** + * @return (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>`. + * + */ + public Optional> membership() { + return Optional.ofNullable(this.membership); + } + + private VmwareAdminClusterFleetArgs() {} + + private VmwareAdminClusterFleetArgs(VmwareAdminClusterFleetArgs $) { + this.membership = $.membership; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterFleetArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterFleetArgs $; + + public Builder() { + $ = new VmwareAdminClusterFleetArgs(); + } + + public Builder(VmwareAdminClusterFleetArgs defaults) { + $ = new VmwareAdminClusterFleetArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param membership (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>`. + * + * @return builder + * + */ + public Builder membership(@Nullable Output membership) { + $.membership = membership; + return this; + } + + /** + * @param membership (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>`. + * + * @return builder + * + */ + public Builder membership(String membership) { + return membership(Output.of(membership)); + } + + public VmwareAdminClusterFleetArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterLoadBalancerArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterLoadBalancerArgs.java new file mode 100644 index 0000000000..ce608be7a4 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterLoadBalancerArgs.java @@ -0,0 +1,217 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterLoadBalancerF5ConfigArgs; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterLoadBalancerManualLbConfigArgs; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterLoadBalancerMetalLbConfigArgs; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterLoadBalancerVipConfigArgs; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class VmwareAdminClusterLoadBalancerArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterLoadBalancerArgs Empty = new VmwareAdminClusterLoadBalancerArgs(); + + /** + * Configuration for F5 Big IP typed load balancers. + * Structure is documented below. + * + */ + @Import(name="f5Config") + private @Nullable Output f5Config; + + /** + * @return Configuration for F5 Big IP typed load balancers. + * Structure is documented below. + * + */ + public Optional> f5Config() { + return Optional.ofNullable(this.f5Config); + } + + /** + * Manually configured load balancers. + * Structure is documented below. + * + */ + @Import(name="manualLbConfig") + private @Nullable Output manualLbConfig; + + /** + * @return Manually configured load balancers. + * Structure is documented below. + * + */ + public Optional> manualLbConfig() { + return Optional.ofNullable(this.manualLbConfig); + } + + /** + * Metal LB load balancers. + * Structure is documented below. + * + */ + @Import(name="metalLbConfig") + private @Nullable Output metalLbConfig; + + /** + * @return Metal LB load balancers. + * Structure is documented below. + * + */ + public Optional> metalLbConfig() { + return Optional.ofNullable(this.metalLbConfig); + } + + /** + * Specified the VMware Load Balancer Config + * Structure is documented below. + * + */ + @Import(name="vipConfig", required=true) + private Output vipConfig; + + /** + * @return Specified the VMware Load Balancer Config + * Structure is documented below. + * + */ + public Output vipConfig() { + return this.vipConfig; + } + + private VmwareAdminClusterLoadBalancerArgs() {} + + private VmwareAdminClusterLoadBalancerArgs(VmwareAdminClusterLoadBalancerArgs $) { + this.f5Config = $.f5Config; + this.manualLbConfig = $.manualLbConfig; + this.metalLbConfig = $.metalLbConfig; + this.vipConfig = $.vipConfig; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterLoadBalancerArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterLoadBalancerArgs $; + + public Builder() { + $ = new VmwareAdminClusterLoadBalancerArgs(); + } + + public Builder(VmwareAdminClusterLoadBalancerArgs defaults) { + $ = new VmwareAdminClusterLoadBalancerArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param f5Config Configuration for F5 Big IP typed load balancers. + * Structure is documented below. + * + * @return builder + * + */ + public Builder f5Config(@Nullable Output f5Config) { + $.f5Config = f5Config; + return this; + } + + /** + * @param f5Config Configuration for F5 Big IP typed load balancers. + * Structure is documented below. + * + * @return builder + * + */ + public Builder f5Config(VmwareAdminClusterLoadBalancerF5ConfigArgs f5Config) { + return f5Config(Output.of(f5Config)); + } + + /** + * @param manualLbConfig Manually configured load balancers. + * Structure is documented below. + * + * @return builder + * + */ + public Builder manualLbConfig(@Nullable Output manualLbConfig) { + $.manualLbConfig = manualLbConfig; + return this; + } + + /** + * @param manualLbConfig Manually configured load balancers. + * Structure is documented below. + * + * @return builder + * + */ + public Builder manualLbConfig(VmwareAdminClusterLoadBalancerManualLbConfigArgs manualLbConfig) { + return manualLbConfig(Output.of(manualLbConfig)); + } + + /** + * @param metalLbConfig Metal LB load balancers. + * Structure is documented below. + * + * @return builder + * + */ + public Builder metalLbConfig(@Nullable Output metalLbConfig) { + $.metalLbConfig = metalLbConfig; + return this; + } + + /** + * @param metalLbConfig Metal LB load balancers. + * Structure is documented below. + * + * @return builder + * + */ + public Builder metalLbConfig(VmwareAdminClusterLoadBalancerMetalLbConfigArgs metalLbConfig) { + return metalLbConfig(Output.of(metalLbConfig)); + } + + /** + * @param vipConfig Specified the VMware Load Balancer Config + * Structure is documented below. + * + * @return builder + * + */ + public Builder vipConfig(Output vipConfig) { + $.vipConfig = vipConfig; + return this; + } + + /** + * @param vipConfig Specified the VMware Load Balancer Config + * Structure is documented below. + * + * @return builder + * + */ + public Builder vipConfig(VmwareAdminClusterLoadBalancerVipConfigArgs vipConfig) { + return vipConfig(Output.of(vipConfig)); + } + + public VmwareAdminClusterLoadBalancerArgs build() { + if ($.vipConfig == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterLoadBalancerArgs", "vipConfig"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterLoadBalancerF5ConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterLoadBalancerF5ConfigArgs.java new file mode 100644 index 0000000000..7ae1dce728 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterLoadBalancerF5ConfigArgs.java @@ -0,0 +1,165 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class VmwareAdminClusterLoadBalancerF5ConfigArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterLoadBalancerF5ConfigArgs Empty = new VmwareAdminClusterLoadBalancerF5ConfigArgs(); + + /** + * The load balancer's IP address. + * + */ + @Import(name="address") + private @Nullable Output address; + + /** + * @return The load balancer's IP address. + * + */ + public Optional> address() { + return Optional.ofNullable(this.address); + } + + /** + * 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'. + * + */ + @Import(name="partition") + private @Nullable Output partition; + + /** + * @return 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'. + * + */ + public Optional> partition() { + return Optional.ofNullable(this.partition); + } + + /** + * The pool name. Only necessary, if using SNAT. + * + */ + @Import(name="snatPool") + private @Nullable Output snatPool; + + /** + * @return The pool name. Only necessary, if using SNAT. + * + */ + public Optional> snatPool() { + return Optional.ofNullable(this.snatPool); + } + + private VmwareAdminClusterLoadBalancerF5ConfigArgs() {} + + private VmwareAdminClusterLoadBalancerF5ConfigArgs(VmwareAdminClusterLoadBalancerF5ConfigArgs $) { + this.address = $.address; + this.partition = $.partition; + this.snatPool = $.snatPool; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterLoadBalancerF5ConfigArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterLoadBalancerF5ConfigArgs $; + + public Builder() { + $ = new VmwareAdminClusterLoadBalancerF5ConfigArgs(); + } + + public Builder(VmwareAdminClusterLoadBalancerF5ConfigArgs defaults) { + $ = new VmwareAdminClusterLoadBalancerF5ConfigArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param address The load balancer's IP address. + * + * @return builder + * + */ + public Builder address(@Nullable Output address) { + $.address = address; + return this; + } + + /** + * @param address The load balancer's IP address. + * + * @return builder + * + */ + public Builder address(String address) { + return address(Output.of(address)); + } + + /** + * @param partition 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'. + * + * @return builder + * + */ + public Builder partition(@Nullable Output partition) { + $.partition = partition; + return this; + } + + /** + * @param partition 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'. + * + * @return builder + * + */ + public Builder partition(String partition) { + return partition(Output.of(partition)); + } + + /** + * @param snatPool The pool name. Only necessary, if using SNAT. + * + * @return builder + * + */ + public Builder snatPool(@Nullable Output snatPool) { + $.snatPool = snatPool; + return this; + } + + /** + * @param snatPool The pool name. Only necessary, if using SNAT. + * + * @return builder + * + */ + public Builder snatPool(String snatPool) { + return snatPool(Output.of(snatPool)); + } + + public VmwareAdminClusterLoadBalancerF5ConfigArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterLoadBalancerManualLbConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterLoadBalancerManualLbConfigArgs.java new file mode 100644 index 0000000000..3076f115cb --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterLoadBalancerManualLbConfigArgs.java @@ -0,0 +1,247 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Integer; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class VmwareAdminClusterLoadBalancerManualLbConfigArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterLoadBalancerManualLbConfigArgs Empty = new VmwareAdminClusterLoadBalancerManualLbConfigArgs(); + + /** + * NodePort for add-ons server in the admin cluster. + * + */ + @Import(name="addonsNodePort") + private @Nullable Output addonsNodePort; + + /** + * @return NodePort for add-ons server in the admin cluster. + * + */ + public Optional> addonsNodePort() { + return Optional.ofNullable(this.addonsNodePort); + } + + /** + * NodePort for control plane service. The Kubernetes API server in the admin + * cluster is implemented as a Service of type NodePort (ex. 30968). + * + */ + @Import(name="controlPlaneNodePort") + private @Nullable Output controlPlaneNodePort; + + /** + * @return NodePort for control plane service. The Kubernetes API server in the admin + * cluster is implemented as a Service of type NodePort (ex. 30968). + * + */ + public Optional> controlPlaneNodePort() { + return Optional.ofNullable(this.controlPlaneNodePort); + } + + /** + * NodePort for ingress service's http. The ingress service in the admin + * cluster is implemented as a Service of type NodePort (ex. 32527). + * + */ + @Import(name="ingressHttpNodePort") + private @Nullable Output ingressHttpNodePort; + + /** + * @return NodePort for ingress service's http. The ingress service in the admin + * cluster is implemented as a Service of type NodePort (ex. 32527). + * + */ + public Optional> ingressHttpNodePort() { + return Optional.ofNullable(this.ingressHttpNodePort); + } + + /** + * NodePort for ingress service's https. The ingress service in the admin + * cluster is implemented as a Service of type NodePort (ex. 30139). + * + */ + @Import(name="ingressHttpsNodePort") + private @Nullable Output ingressHttpsNodePort; + + /** + * @return NodePort for ingress service's https. The ingress service in the admin + * cluster is implemented as a Service of type NodePort (ex. 30139). + * + */ + public Optional> ingressHttpsNodePort() { + return Optional.ofNullable(this.ingressHttpsNodePort); + } + + /** + * NodePort for konnectivity server service running as a sidecar in each + * kube-apiserver pod (ex. 30564). + * + */ + @Import(name="konnectivityServerNodePort") + private @Nullable Output konnectivityServerNodePort; + + /** + * @return NodePort for konnectivity server service running as a sidecar in each + * kube-apiserver pod (ex. 30564). + * + */ + public Optional> konnectivityServerNodePort() { + return Optional.ofNullable(this.konnectivityServerNodePort); + } + + private VmwareAdminClusterLoadBalancerManualLbConfigArgs() {} + + private VmwareAdminClusterLoadBalancerManualLbConfigArgs(VmwareAdminClusterLoadBalancerManualLbConfigArgs $) { + this.addonsNodePort = $.addonsNodePort; + this.controlPlaneNodePort = $.controlPlaneNodePort; + this.ingressHttpNodePort = $.ingressHttpNodePort; + this.ingressHttpsNodePort = $.ingressHttpsNodePort; + this.konnectivityServerNodePort = $.konnectivityServerNodePort; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterLoadBalancerManualLbConfigArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterLoadBalancerManualLbConfigArgs $; + + public Builder() { + $ = new VmwareAdminClusterLoadBalancerManualLbConfigArgs(); + } + + public Builder(VmwareAdminClusterLoadBalancerManualLbConfigArgs defaults) { + $ = new VmwareAdminClusterLoadBalancerManualLbConfigArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param addonsNodePort NodePort for add-ons server in the admin cluster. + * + * @return builder + * + */ + public Builder addonsNodePort(@Nullable Output addonsNodePort) { + $.addonsNodePort = addonsNodePort; + return this; + } + + /** + * @param addonsNodePort NodePort for add-ons server in the admin cluster. + * + * @return builder + * + */ + public Builder addonsNodePort(Integer addonsNodePort) { + return addonsNodePort(Output.of(addonsNodePort)); + } + + /** + * @param controlPlaneNodePort NodePort for control plane service. The Kubernetes API server in the admin + * cluster is implemented as a Service of type NodePort (ex. 30968). + * + * @return builder + * + */ + public Builder controlPlaneNodePort(@Nullable Output controlPlaneNodePort) { + $.controlPlaneNodePort = controlPlaneNodePort; + return this; + } + + /** + * @param controlPlaneNodePort NodePort for control plane service. The Kubernetes API server in the admin + * cluster is implemented as a Service of type NodePort (ex. 30968). + * + * @return builder + * + */ + public Builder controlPlaneNodePort(Integer controlPlaneNodePort) { + return controlPlaneNodePort(Output.of(controlPlaneNodePort)); + } + + /** + * @param ingressHttpNodePort NodePort for ingress service's http. The ingress service in the admin + * cluster is implemented as a Service of type NodePort (ex. 32527). + * + * @return builder + * + */ + public Builder ingressHttpNodePort(@Nullable Output ingressHttpNodePort) { + $.ingressHttpNodePort = ingressHttpNodePort; + return this; + } + + /** + * @param ingressHttpNodePort NodePort for ingress service's http. The ingress service in the admin + * cluster is implemented as a Service of type NodePort (ex. 32527). + * + * @return builder + * + */ + public Builder ingressHttpNodePort(Integer ingressHttpNodePort) { + return ingressHttpNodePort(Output.of(ingressHttpNodePort)); + } + + /** + * @param ingressHttpsNodePort NodePort for ingress service's https. The ingress service in the admin + * cluster is implemented as a Service of type NodePort (ex. 30139). + * + * @return builder + * + */ + public Builder ingressHttpsNodePort(@Nullable Output ingressHttpsNodePort) { + $.ingressHttpsNodePort = ingressHttpsNodePort; + return this; + } + + /** + * @param ingressHttpsNodePort NodePort for ingress service's https. The ingress service in the admin + * cluster is implemented as a Service of type NodePort (ex. 30139). + * + * @return builder + * + */ + public Builder ingressHttpsNodePort(Integer ingressHttpsNodePort) { + return ingressHttpsNodePort(Output.of(ingressHttpsNodePort)); + } + + /** + * @param konnectivityServerNodePort NodePort for konnectivity server service running as a sidecar in each + * kube-apiserver pod (ex. 30564). + * + * @return builder + * + */ + public Builder konnectivityServerNodePort(@Nullable Output konnectivityServerNodePort) { + $.konnectivityServerNodePort = konnectivityServerNodePort; + return this; + } + + /** + * @param konnectivityServerNodePort NodePort for konnectivity server service running as a sidecar in each + * kube-apiserver pod (ex. 30564). + * + * @return builder + * + */ + public Builder konnectivityServerNodePort(Integer konnectivityServerNodePort) { + return konnectivityServerNodePort(Output.of(konnectivityServerNodePort)); + } + + public VmwareAdminClusterLoadBalancerManualLbConfigArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterLoadBalancerMetalLbConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterLoadBalancerMetalLbConfigArgs.java new file mode 100644 index 0000000000..080b4c84b2 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterLoadBalancerMetalLbConfigArgs.java @@ -0,0 +1,83 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class VmwareAdminClusterLoadBalancerMetalLbConfigArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterLoadBalancerMetalLbConfigArgs Empty = new VmwareAdminClusterLoadBalancerMetalLbConfigArgs(); + + /** + * Metal LB is enabled. + * + */ + @Import(name="enabled") + private @Nullable Output enabled; + + /** + * @return Metal LB is enabled. + * + */ + public Optional> enabled() { + return Optional.ofNullable(this.enabled); + } + + private VmwareAdminClusterLoadBalancerMetalLbConfigArgs() {} + + private VmwareAdminClusterLoadBalancerMetalLbConfigArgs(VmwareAdminClusterLoadBalancerMetalLbConfigArgs $) { + this.enabled = $.enabled; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterLoadBalancerMetalLbConfigArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterLoadBalancerMetalLbConfigArgs $; + + public Builder() { + $ = new VmwareAdminClusterLoadBalancerMetalLbConfigArgs(); + } + + public Builder(VmwareAdminClusterLoadBalancerMetalLbConfigArgs defaults) { + $ = new VmwareAdminClusterLoadBalancerMetalLbConfigArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param enabled Metal LB is enabled. + * + * @return builder + * + */ + public Builder enabled(@Nullable Output enabled) { + $.enabled = enabled; + return this; + } + + /** + * @param enabled Metal LB is enabled. + * + * @return builder + * + */ + public Builder enabled(Boolean enabled) { + return enabled(Output.of(enabled)); + } + + public VmwareAdminClusterLoadBalancerMetalLbConfigArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterLoadBalancerVipConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterLoadBalancerVipConfigArgs.java new file mode 100644 index 0000000000..2eccaa5913 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterLoadBalancerVipConfigArgs.java @@ -0,0 +1,136 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class VmwareAdminClusterLoadBalancerVipConfigArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterLoadBalancerVipConfigArgs Empty = new VmwareAdminClusterLoadBalancerVipConfigArgs(); + + /** + * The VIP to configure the load balancer for add-ons. + * + * <a name="nested_f5_config"></a>The `f5_config` block supports: + * + */ + @Import(name="addonsVip") + private @Nullable Output addonsVip; + + /** + * @return The VIP to configure the load balancer for add-ons. + * + * <a name="nested_f5_config"></a>The `f5_config` block supports: + * + */ + public Optional> addonsVip() { + return Optional.ofNullable(this.addonsVip); + } + + /** + * The VIP which you previously set aside for the Kubernetes + * API of this VMware Admin Cluster. + * + */ + @Import(name="controlPlaneVip", required=true) + private Output controlPlaneVip; + + /** + * @return The VIP which you previously set aside for the Kubernetes + * API of this VMware Admin Cluster. + * + */ + public Output controlPlaneVip() { + return this.controlPlaneVip; + } + + private VmwareAdminClusterLoadBalancerVipConfigArgs() {} + + private VmwareAdminClusterLoadBalancerVipConfigArgs(VmwareAdminClusterLoadBalancerVipConfigArgs $) { + this.addonsVip = $.addonsVip; + this.controlPlaneVip = $.controlPlaneVip; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterLoadBalancerVipConfigArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterLoadBalancerVipConfigArgs $; + + public Builder() { + $ = new VmwareAdminClusterLoadBalancerVipConfigArgs(); + } + + public Builder(VmwareAdminClusterLoadBalancerVipConfigArgs defaults) { + $ = new VmwareAdminClusterLoadBalancerVipConfigArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param addonsVip The VIP to configure the load balancer for add-ons. + * + * <a name="nested_f5_config"></a>The `f5_config` block supports: + * + * @return builder + * + */ + public Builder addonsVip(@Nullable Output addonsVip) { + $.addonsVip = addonsVip; + return this; + } + + /** + * @param addonsVip The VIP to configure the load balancer for add-ons. + * + * <a name="nested_f5_config"></a>The `f5_config` block supports: + * + * @return builder + * + */ + public Builder addonsVip(String addonsVip) { + return addonsVip(Output.of(addonsVip)); + } + + /** + * @param controlPlaneVip The VIP which you previously set aside for the Kubernetes + * API of this VMware Admin Cluster. + * + * @return builder + * + */ + public Builder controlPlaneVip(Output controlPlaneVip) { + $.controlPlaneVip = controlPlaneVip; + return this; + } + + /** + * @param controlPlaneVip The VIP which you previously set aside for the Kubernetes + * API of this VMware Admin Cluster. + * + * @return builder + * + */ + public Builder controlPlaneVip(String controlPlaneVip) { + return controlPlaneVip(Output.of(controlPlaneVip)); + } + + public VmwareAdminClusterLoadBalancerVipConfigArgs build() { + if ($.controlPlaneVip == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterLoadBalancerVipConfigArgs", "controlPlaneVip"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterNetworkConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterNetworkConfigArgs.java new file mode 100644 index 0000000000..27f44bf594 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterNetworkConfigArgs.java @@ -0,0 +1,368 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterNetworkConfigDhcpIpConfigArgs; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterNetworkConfigHostConfigArgs; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterNetworkConfigStaticIpConfigArgs; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class VmwareAdminClusterNetworkConfigArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterNetworkConfigArgs Empty = new VmwareAdminClusterNetworkConfigArgs(); + + /** + * Configuration settings for a DHCP IP configuration. + * Structure is documented below. + * + */ + @Import(name="dhcpIpConfig") + private @Nullable Output dhcpIpConfig; + + /** + * @return Configuration settings for a DHCP IP configuration. + * Structure is documented below. + * + */ + public Optional> dhcpIpConfig() { + return Optional.ofNullable(this.dhcpIpConfig); + } + + /** + * Configuration for HA admin cluster control plane. + * Structure is documented below. + * + */ + @Import(name="haControlPlaneConfig") + private @Nullable Output haControlPlaneConfig; + + /** + * @return Configuration for HA admin cluster control plane. + * Structure is documented below. + * + */ + public Optional> haControlPlaneConfig() { + return Optional.ofNullable(this.haControlPlaneConfig); + } + + /** + * Represents common network settings irrespective of the host's IP address. + * Structure is documented below. + * + */ + @Import(name="hostConfig") + private @Nullable Output hostConfig; + + /** + * @return Represents common network settings irrespective of the host's IP address. + * Structure is documented below. + * + */ + public Optional> hostConfig() { + return Optional.ofNullable(this.hostConfig); + } + + /** + * 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. + * + */ + @Import(name="podAddressCidrBlocks", required=true) + private Output> podAddressCidrBlocks; + + /** + * @return 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 Output> podAddressCidrBlocks() { + return this.podAddressCidrBlocks; + } + + /** + * 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. + * + */ + @Import(name="serviceAddressCidrBlocks", required=true) + private Output> serviceAddressCidrBlocks; + + /** + * @return 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 Output> serviceAddressCidrBlocks() { + return this.serviceAddressCidrBlocks; + } + + /** + * Configuration settings for a static IP configuration. + * Structure is documented below. + * + */ + @Import(name="staticIpConfig") + private @Nullable Output staticIpConfig; + + /** + * @return Configuration settings for a static IP configuration. + * Structure is documented below. + * + */ + public Optional> staticIpConfig() { + return Optional.ofNullable(this.staticIpConfig); + } + + /** + * vcenter_network specifies vCenter network name. + * + */ + @Import(name="vcenterNetwork") + private @Nullable Output vcenterNetwork; + + /** + * @return vcenter_network specifies vCenter network name. + * + */ + public Optional> vcenterNetwork() { + return Optional.ofNullable(this.vcenterNetwork); + } + + private VmwareAdminClusterNetworkConfigArgs() {} + + private VmwareAdminClusterNetworkConfigArgs(VmwareAdminClusterNetworkConfigArgs $) { + this.dhcpIpConfig = $.dhcpIpConfig; + this.haControlPlaneConfig = $.haControlPlaneConfig; + this.hostConfig = $.hostConfig; + this.podAddressCidrBlocks = $.podAddressCidrBlocks; + this.serviceAddressCidrBlocks = $.serviceAddressCidrBlocks; + this.staticIpConfig = $.staticIpConfig; + this.vcenterNetwork = $.vcenterNetwork; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterNetworkConfigArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterNetworkConfigArgs $; + + public Builder() { + $ = new VmwareAdminClusterNetworkConfigArgs(); + } + + public Builder(VmwareAdminClusterNetworkConfigArgs defaults) { + $ = new VmwareAdminClusterNetworkConfigArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param dhcpIpConfig Configuration settings for a DHCP IP configuration. + * Structure is documented below. + * + * @return builder + * + */ + public Builder dhcpIpConfig(@Nullable Output dhcpIpConfig) { + $.dhcpIpConfig = dhcpIpConfig; + return this; + } + + /** + * @param dhcpIpConfig Configuration settings for a DHCP IP configuration. + * Structure is documented below. + * + * @return builder + * + */ + public Builder dhcpIpConfig(VmwareAdminClusterNetworkConfigDhcpIpConfigArgs dhcpIpConfig) { + return dhcpIpConfig(Output.of(dhcpIpConfig)); + } + + /** + * @param haControlPlaneConfig Configuration for HA admin cluster control plane. + * Structure is documented below. + * + * @return builder + * + */ + public Builder haControlPlaneConfig(@Nullable Output haControlPlaneConfig) { + $.haControlPlaneConfig = haControlPlaneConfig; + return this; + } + + /** + * @param haControlPlaneConfig Configuration for HA admin cluster control plane. + * Structure is documented below. + * + * @return builder + * + */ + public Builder haControlPlaneConfig(VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs haControlPlaneConfig) { + return haControlPlaneConfig(Output.of(haControlPlaneConfig)); + } + + /** + * @param hostConfig Represents common network settings irrespective of the host's IP address. + * Structure is documented below. + * + * @return builder + * + */ + public Builder hostConfig(@Nullable Output hostConfig) { + $.hostConfig = hostConfig; + return this; + } + + /** + * @param hostConfig Represents common network settings irrespective of the host's IP address. + * Structure is documented below. + * + * @return builder + * + */ + public Builder hostConfig(VmwareAdminClusterNetworkConfigHostConfigArgs hostConfig) { + return hostConfig(Output.of(hostConfig)); + } + + /** + * @param 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. + * + * @return builder + * + */ + public Builder podAddressCidrBlocks(Output> podAddressCidrBlocks) { + $.podAddressCidrBlocks = podAddressCidrBlocks; + return this; + } + + /** + * @param 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. + * + * @return builder + * + */ + public Builder podAddressCidrBlocks(List podAddressCidrBlocks) { + return podAddressCidrBlocks(Output.of(podAddressCidrBlocks)); + } + + /** + * @param 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. + * + * @return builder + * + */ + public Builder podAddressCidrBlocks(String... podAddressCidrBlocks) { + return podAddressCidrBlocks(List.of(podAddressCidrBlocks)); + } + + /** + * @param 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. + * + * @return builder + * + */ + public Builder serviceAddressCidrBlocks(Output> serviceAddressCidrBlocks) { + $.serviceAddressCidrBlocks = serviceAddressCidrBlocks; + return this; + } + + /** + * @param 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. + * + * @return builder + * + */ + public Builder serviceAddressCidrBlocks(List serviceAddressCidrBlocks) { + return serviceAddressCidrBlocks(Output.of(serviceAddressCidrBlocks)); + } + + /** + * @param 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. + * + * @return builder + * + */ + public Builder serviceAddressCidrBlocks(String... serviceAddressCidrBlocks) { + return serviceAddressCidrBlocks(List.of(serviceAddressCidrBlocks)); + } + + /** + * @param staticIpConfig Configuration settings for a static IP configuration. + * Structure is documented below. + * + * @return builder + * + */ + public Builder staticIpConfig(@Nullable Output staticIpConfig) { + $.staticIpConfig = staticIpConfig; + return this; + } + + /** + * @param staticIpConfig Configuration settings for a static IP configuration. + * Structure is documented below. + * + * @return builder + * + */ + public Builder staticIpConfig(VmwareAdminClusterNetworkConfigStaticIpConfigArgs staticIpConfig) { + return staticIpConfig(Output.of(staticIpConfig)); + } + + /** + * @param vcenterNetwork vcenter_network specifies vCenter network name. + * + * @return builder + * + */ + public Builder vcenterNetwork(@Nullable Output vcenterNetwork) { + $.vcenterNetwork = vcenterNetwork; + return this; + } + + /** + * @param vcenterNetwork vcenter_network specifies vCenter network name. + * + * @return builder + * + */ + public Builder vcenterNetwork(String vcenterNetwork) { + return vcenterNetwork(Output.of(vcenterNetwork)); + } + + public VmwareAdminClusterNetworkConfigArgs build() { + if ($.podAddressCidrBlocks == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterNetworkConfigArgs", "podAddressCidrBlocks"); + } + if ($.serviceAddressCidrBlocks == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterNetworkConfigArgs", "serviceAddressCidrBlocks"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterNetworkConfigDhcpIpConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterNetworkConfigDhcpIpConfigArgs.java new file mode 100644 index 0000000000..37293a2ffa --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterNetworkConfigDhcpIpConfigArgs.java @@ -0,0 +1,89 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; +import java.util.Objects; + + +public final class VmwareAdminClusterNetworkConfigDhcpIpConfigArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterNetworkConfigDhcpIpConfigArgs Empty = new VmwareAdminClusterNetworkConfigDhcpIpConfigArgs(); + + /** + * enabled is a flag to mark if DHCP IP allocation is + * used for VMware admin clusters. + * + */ + @Import(name="enabled", required=true) + private Output enabled; + + /** + * @return enabled is a flag to mark if DHCP IP allocation is + * used for VMware admin clusters. + * + */ + public Output enabled() { + return this.enabled; + } + + private VmwareAdminClusterNetworkConfigDhcpIpConfigArgs() {} + + private VmwareAdminClusterNetworkConfigDhcpIpConfigArgs(VmwareAdminClusterNetworkConfigDhcpIpConfigArgs $) { + this.enabled = $.enabled; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterNetworkConfigDhcpIpConfigArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterNetworkConfigDhcpIpConfigArgs $; + + public Builder() { + $ = new VmwareAdminClusterNetworkConfigDhcpIpConfigArgs(); + } + + public Builder(VmwareAdminClusterNetworkConfigDhcpIpConfigArgs defaults) { + $ = new VmwareAdminClusterNetworkConfigDhcpIpConfigArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param enabled enabled is a flag to mark if DHCP IP allocation is + * used for VMware admin clusters. + * + * @return builder + * + */ + public Builder enabled(Output enabled) { + $.enabled = enabled; + return this; + } + + /** + * @param enabled enabled is a flag to mark if DHCP IP allocation is + * used for VMware admin clusters. + * + * @return builder + * + */ + public Builder enabled(Boolean enabled) { + return enabled(Output.of(enabled)); + } + + public VmwareAdminClusterNetworkConfigDhcpIpConfigArgs build() { + if ($.enabled == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterNetworkConfigDhcpIpConfigArgs", "enabled"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs.java new file mode 100644 index 0000000000..3c036efc9b --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs.java @@ -0,0 +1,87 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs Empty = new VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs(); + + /** + * Static IP addresses for the control plane nodes. + * Structure is documented below. + * + */ + @Import(name="controlPlaneIpBlock") + private @Nullable Output controlPlaneIpBlock; + + /** + * @return Static IP addresses for the control plane nodes. + * Structure is documented below. + * + */ + public Optional> controlPlaneIpBlock() { + return Optional.ofNullable(this.controlPlaneIpBlock); + } + + private VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs() {} + + private VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs(VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs $) { + this.controlPlaneIpBlock = $.controlPlaneIpBlock; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs $; + + public Builder() { + $ = new VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs(); + } + + public Builder(VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs defaults) { + $ = new VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param controlPlaneIpBlock Static IP addresses for the control plane nodes. + * Structure is documented below. + * + * @return builder + * + */ + public Builder controlPlaneIpBlock(@Nullable Output controlPlaneIpBlock) { + $.controlPlaneIpBlock = controlPlaneIpBlock; + return this; + } + + /** + * @param controlPlaneIpBlock Static IP addresses for the control plane nodes. + * Structure is documented below. + * + * @return builder + * + */ + public Builder controlPlaneIpBlock(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs controlPlaneIpBlock) { + return controlPlaneIpBlock(Output.of(controlPlaneIpBlock)); + } + + public VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs.java new file mode 100644 index 0000000000..2a2ff49c62 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs.java @@ -0,0 +1,182 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs; +import java.lang.String; +import java.util.List; +import java.util.Objects; + + +public final class VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs Empty = new VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs(); + + /** + * The network gateway used by the VMware Admin Cluster. + * + */ + @Import(name="gateway", required=true) + private Output gateway; + + /** + * @return The network gateway used by the VMware Admin Cluster. + * + */ + public Output gateway() { + return this.gateway; + } + + /** + * The node's network configurations used by the VMware Admin Cluster. + * Structure is documented below. + * + */ + @Import(name="ips", required=true) + private Output> ips; + + /** + * @return The node's network configurations used by the VMware Admin Cluster. + * Structure is documented below. + * + */ + public Output> ips() { + return this.ips; + } + + /** + * The netmask used by the VMware Admin Cluster. + * + */ + @Import(name="netmask", required=true) + private Output netmask; + + /** + * @return The netmask used by the VMware Admin Cluster. + * + */ + public Output netmask() { + return this.netmask; + } + + private VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs() {} + + private VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs $) { + this.gateway = $.gateway; + this.ips = $.ips; + this.netmask = $.netmask; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs $; + + public Builder() { + $ = new VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs(); + } + + public Builder(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs defaults) { + $ = new VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param gateway The network gateway used by the VMware Admin Cluster. + * + * @return builder + * + */ + public Builder gateway(Output gateway) { + $.gateway = gateway; + return this; + } + + /** + * @param gateway The network gateway used by the VMware Admin Cluster. + * + * @return builder + * + */ + public Builder gateway(String gateway) { + return gateway(Output.of(gateway)); + } + + /** + * @param ips The node's network configurations used by the VMware Admin Cluster. + * Structure is documented below. + * + * @return builder + * + */ + public Builder ips(Output> ips) { + $.ips = ips; + return this; + } + + /** + * @param ips The node's network configurations used by the VMware Admin Cluster. + * Structure is documented below. + * + * @return builder + * + */ + public Builder ips(List ips) { + return ips(Output.of(ips)); + } + + /** + * @param ips The node's network configurations used by the VMware Admin Cluster. + * Structure is documented below. + * + * @return builder + * + */ + public Builder ips(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs... ips) { + return ips(List.of(ips)); + } + + /** + * @param netmask The netmask used by the VMware Admin Cluster. + * + * @return builder + * + */ + public Builder netmask(Output netmask) { + $.netmask = netmask; + return this; + } + + /** + * @param netmask The netmask used by the VMware Admin Cluster. + * + * @return builder + * + */ + public Builder netmask(String netmask) { + return netmask(Output.of(netmask)); + } + + public VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs build() { + if ($.gateway == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs", "gateway"); + } + if ($.ips == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs", "ips"); + } + if ($.netmask == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs", "netmask"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs.java new file mode 100644 index 0000000000..5aa4dc2b68 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs.java @@ -0,0 +1,132 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs Empty = new VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs(); + + /** + * Hostname of the machine. VM's name will be used if this field is empty. + * + * *** + * + */ + @Import(name="hostname") + private @Nullable Output hostname; + + /** + * @return Hostname of the machine. VM's name will be used if this field is empty. + * + * *** + * + */ + public Optional> hostname() { + return Optional.ofNullable(this.hostname); + } + + /** + * IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + * + */ + @Import(name="ip", required=true) + private Output ip; + + /** + * @return IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + * + */ + public Output ip() { + return this.ip; + } + + private VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs() {} + + private VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs $) { + this.hostname = $.hostname; + this.ip = $.ip; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs $; + + public Builder() { + $ = new VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs(); + } + + public Builder(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs defaults) { + $ = new VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param hostname Hostname of the machine. VM's name will be used if this field is empty. + * + * *** + * + * @return builder + * + */ + public Builder hostname(@Nullable Output hostname) { + $.hostname = hostname; + return this; + } + + /** + * @param hostname Hostname of the machine. VM's name will be used if this field is empty. + * + * *** + * + * @return builder + * + */ + public Builder hostname(String hostname) { + return hostname(Output.of(hostname)); + } + + /** + * @param ip IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + * + * @return builder + * + */ + public Builder ip(Output ip) { + $.ip = ip; + return this; + } + + /** + * @param ip IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + * + * @return builder + * + */ + public Builder ip(String ip) { + return ip(Output.of(ip)); + } + + public VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs build() { + if ($.ip == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs", "ip"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterNetworkConfigHostConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterNetworkConfigHostConfigArgs.java new file mode 100644 index 0000000000..0954c00468 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterNetworkConfigHostConfigArgs.java @@ -0,0 +1,188 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class VmwareAdminClusterNetworkConfigHostConfigArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterNetworkConfigHostConfigArgs Empty = new VmwareAdminClusterNetworkConfigHostConfigArgs(); + + /** + * DNS search domains. + * + */ + @Import(name="dnsSearchDomains") + private @Nullable Output> dnsSearchDomains; + + /** + * @return DNS search domains. + * + */ + public Optional>> dnsSearchDomains() { + return Optional.ofNullable(this.dnsSearchDomains); + } + + /** + * DNS servers. + * + */ + @Import(name="dnsServers") + private @Nullable Output> dnsServers; + + /** + * @return DNS servers. + * + */ + public Optional>> dnsServers() { + return Optional.ofNullable(this.dnsServers); + } + + /** + * NTP servers. + * + */ + @Import(name="ntpServers") + private @Nullable Output> ntpServers; + + /** + * @return NTP servers. + * + */ + public Optional>> ntpServers() { + return Optional.ofNullable(this.ntpServers); + } + + private VmwareAdminClusterNetworkConfigHostConfigArgs() {} + + private VmwareAdminClusterNetworkConfigHostConfigArgs(VmwareAdminClusterNetworkConfigHostConfigArgs $) { + this.dnsSearchDomains = $.dnsSearchDomains; + this.dnsServers = $.dnsServers; + this.ntpServers = $.ntpServers; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterNetworkConfigHostConfigArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterNetworkConfigHostConfigArgs $; + + public Builder() { + $ = new VmwareAdminClusterNetworkConfigHostConfigArgs(); + } + + public Builder(VmwareAdminClusterNetworkConfigHostConfigArgs defaults) { + $ = new VmwareAdminClusterNetworkConfigHostConfigArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param dnsSearchDomains DNS search domains. + * + * @return builder + * + */ + public Builder dnsSearchDomains(@Nullable Output> dnsSearchDomains) { + $.dnsSearchDomains = dnsSearchDomains; + return this; + } + + /** + * @param dnsSearchDomains DNS search domains. + * + * @return builder + * + */ + public Builder dnsSearchDomains(List dnsSearchDomains) { + return dnsSearchDomains(Output.of(dnsSearchDomains)); + } + + /** + * @param dnsSearchDomains DNS search domains. + * + * @return builder + * + */ + public Builder dnsSearchDomains(String... dnsSearchDomains) { + return dnsSearchDomains(List.of(dnsSearchDomains)); + } + + /** + * @param dnsServers DNS servers. + * + * @return builder + * + */ + public Builder dnsServers(@Nullable Output> dnsServers) { + $.dnsServers = dnsServers; + return this; + } + + /** + * @param dnsServers DNS servers. + * + * @return builder + * + */ + public Builder dnsServers(List dnsServers) { + return dnsServers(Output.of(dnsServers)); + } + + /** + * @param dnsServers DNS servers. + * + * @return builder + * + */ + public Builder dnsServers(String... dnsServers) { + return dnsServers(List.of(dnsServers)); + } + + /** + * @param ntpServers NTP servers. + * + * @return builder + * + */ + public Builder ntpServers(@Nullable Output> ntpServers) { + $.ntpServers = ntpServers; + return this; + } + + /** + * @param ntpServers NTP servers. + * + * @return builder + * + */ + public Builder ntpServers(List ntpServers) { + return ntpServers(Output.of(ntpServers)); + } + + /** + * @param ntpServers NTP servers. + * + * @return builder + * + */ + public Builder ntpServers(String... ntpServers) { + return ntpServers(List.of(ntpServers)); + } + + public VmwareAdminClusterNetworkConfigHostConfigArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterNetworkConfigStaticIpConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterNetworkConfigStaticIpConfigArgs.java new file mode 100644 index 0000000000..d1f0f8a2d8 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterNetworkConfigStaticIpConfigArgs.java @@ -0,0 +1,99 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class VmwareAdminClusterNetworkConfigStaticIpConfigArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterNetworkConfigStaticIpConfigArgs Empty = new VmwareAdminClusterNetworkConfigStaticIpConfigArgs(); + + /** + * Represents the configuration values for static IP allocation to nodes. + * Structure is documented below. + * + */ + @Import(name="ipBlocks") + private @Nullable Output> ipBlocks; + + /** + * @return Represents the configuration values for static IP allocation to nodes. + * Structure is documented below. + * + */ + public Optional>> ipBlocks() { + return Optional.ofNullable(this.ipBlocks); + } + + private VmwareAdminClusterNetworkConfigStaticIpConfigArgs() {} + + private VmwareAdminClusterNetworkConfigStaticIpConfigArgs(VmwareAdminClusterNetworkConfigStaticIpConfigArgs $) { + this.ipBlocks = $.ipBlocks; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterNetworkConfigStaticIpConfigArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterNetworkConfigStaticIpConfigArgs $; + + public Builder() { + $ = new VmwareAdminClusterNetworkConfigStaticIpConfigArgs(); + } + + public Builder(VmwareAdminClusterNetworkConfigStaticIpConfigArgs defaults) { + $ = new VmwareAdminClusterNetworkConfigStaticIpConfigArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param ipBlocks Represents the configuration values for static IP allocation to nodes. + * Structure is documented below. + * + * @return builder + * + */ + public Builder ipBlocks(@Nullable Output> ipBlocks) { + $.ipBlocks = ipBlocks; + return this; + } + + /** + * @param ipBlocks Represents the configuration values for static IP allocation to nodes. + * Structure is documented below. + * + * @return builder + * + */ + public Builder ipBlocks(List ipBlocks) { + return ipBlocks(Output.of(ipBlocks)); + } + + /** + * @param ipBlocks Represents the configuration values for static IP allocation to nodes. + * Structure is documented below. + * + * @return builder + * + */ + public Builder ipBlocks(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs... ipBlocks) { + return ipBlocks(List.of(ipBlocks)); + } + + public VmwareAdminClusterNetworkConfigStaticIpConfigArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs.java new file mode 100644 index 0000000000..625f8ac32a --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs.java @@ -0,0 +1,182 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs; +import java.lang.String; +import java.util.List; +import java.util.Objects; + + +public final class VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs Empty = new VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs(); + + /** + * The network gateway used by the VMware Admin Cluster. + * + */ + @Import(name="gateway", required=true) + private Output gateway; + + /** + * @return The network gateway used by the VMware Admin Cluster. + * + */ + public Output gateway() { + return this.gateway; + } + + /** + * The node's network configurations used by the VMware Admin Cluster. + * Structure is documented below. + * + */ + @Import(name="ips", required=true) + private Output> ips; + + /** + * @return The node's network configurations used by the VMware Admin Cluster. + * Structure is documented below. + * + */ + public Output> ips() { + return this.ips; + } + + /** + * The netmask used by the VMware Admin Cluster. + * + */ + @Import(name="netmask", required=true) + private Output netmask; + + /** + * @return The netmask used by the VMware Admin Cluster. + * + */ + public Output netmask() { + return this.netmask; + } + + private VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs() {} + + private VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs $) { + this.gateway = $.gateway; + this.ips = $.ips; + this.netmask = $.netmask; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs $; + + public Builder() { + $ = new VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs(); + } + + public Builder(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs defaults) { + $ = new VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param gateway The network gateway used by the VMware Admin Cluster. + * + * @return builder + * + */ + public Builder gateway(Output gateway) { + $.gateway = gateway; + return this; + } + + /** + * @param gateway The network gateway used by the VMware Admin Cluster. + * + * @return builder + * + */ + public Builder gateway(String gateway) { + return gateway(Output.of(gateway)); + } + + /** + * @param ips The node's network configurations used by the VMware Admin Cluster. + * Structure is documented below. + * + * @return builder + * + */ + public Builder ips(Output> ips) { + $.ips = ips; + return this; + } + + /** + * @param ips The node's network configurations used by the VMware Admin Cluster. + * Structure is documented below. + * + * @return builder + * + */ + public Builder ips(List ips) { + return ips(Output.of(ips)); + } + + /** + * @param ips The node's network configurations used by the VMware Admin Cluster. + * Structure is documented below. + * + * @return builder + * + */ + public Builder ips(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs... ips) { + return ips(List.of(ips)); + } + + /** + * @param netmask The netmask used by the VMware Admin Cluster. + * + * @return builder + * + */ + public Builder netmask(Output netmask) { + $.netmask = netmask; + return this; + } + + /** + * @param netmask The netmask used by the VMware Admin Cluster. + * + * @return builder + * + */ + public Builder netmask(String netmask) { + return netmask(Output.of(netmask)); + } + + public VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs build() { + if ($.gateway == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs", "gateway"); + } + if ($.ips == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs", "ips"); + } + if ($.netmask == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs", "netmask"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs.java new file mode 100644 index 0000000000..41b962beb4 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs.java @@ -0,0 +1,132 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs Empty = new VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs(); + + /** + * Hostname of the machine. VM's name will be used if this field is empty. + * + * *** + * + */ + @Import(name="hostname") + private @Nullable Output hostname; + + /** + * @return Hostname of the machine. VM's name will be used if this field is empty. + * + * *** + * + */ + public Optional> hostname() { + return Optional.ofNullable(this.hostname); + } + + /** + * IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + * + */ + @Import(name="ip", required=true) + private Output ip; + + /** + * @return IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + * + */ + public Output ip() { + return this.ip; + } + + private VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs() {} + + private VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs $) { + this.hostname = $.hostname; + this.ip = $.ip; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs $; + + public Builder() { + $ = new VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs(); + } + + public Builder(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs defaults) { + $ = new VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param hostname Hostname of the machine. VM's name will be used if this field is empty. + * + * *** + * + * @return builder + * + */ + public Builder hostname(@Nullable Output hostname) { + $.hostname = hostname; + return this; + } + + /** + * @param hostname Hostname of the machine. VM's name will be used if this field is empty. + * + * *** + * + * @return builder + * + */ + public Builder hostname(String hostname) { + return hostname(Output.of(hostname)); + } + + /** + * @param ip IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + * + * @return builder + * + */ + public Builder ip(Output ip) { + $.ip = ip; + return this; + } + + /** + * @param ip IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + * + * @return builder + * + */ + public Builder ip(String ip) { + return ip(Output.of(ip)); + } + + public VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs build() { + if ($.ip == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs", "ip"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterPlatformConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterPlatformConfigArgs.java new file mode 100644 index 0000000000..a643f9c6d4 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterPlatformConfigArgs.java @@ -0,0 +1,267 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterPlatformConfigBundleArgs; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterPlatformConfigStatusArgs; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class VmwareAdminClusterPlatformConfigArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterPlatformConfigArgs Empty = new VmwareAdminClusterPlatformConfigArgs(); + + /** + * (Output) + * The list of bundles installed in the admin cluster. + * Structure is documented below. + * + */ + @Import(name="bundles") + private @Nullable Output> bundles; + + /** + * @return (Output) + * The list of bundles installed in the admin cluster. + * Structure is documented below. + * + */ + public Optional>> bundles() { + return Optional.ofNullable(this.bundles); + } + + /** + * (Output) + * The platform version e.g. 1.13.2. + * + */ + @Import(name="platformVersion") + private @Nullable Output platformVersion; + + /** + * @return (Output) + * The platform version e.g. 1.13.2. + * + */ + public Optional> platformVersion() { + return Optional.ofNullable(this.platformVersion); + } + + /** + * The required platform version e.g. 1.13.1. + * If the current platform version is lower than the target version, + * the platform version will be updated to the target version. + * If the target version is not installed in the platform + * (bundle versions), download the target version bundle. + * + */ + @Import(name="requiredPlatformVersion") + private @Nullable Output requiredPlatformVersion; + + /** + * @return The required platform version e.g. 1.13.1. + * If the current platform version is lower than the target version, + * the platform version will be updated to the target version. + * If the target version is not installed in the platform + * (bundle versions), download the target version bundle. + * + */ + public Optional> requiredPlatformVersion() { + return Optional.ofNullable(this.requiredPlatformVersion); + } + + /** + * (Output) + * ResourceStatus representing detailed cluster state. + * Structure is documented below. + * + * <a name="nested_status"></a>The `status` block contains: + * + */ + @Import(name="statuses") + private @Nullable Output> statuses; + + /** + * @return (Output) + * ResourceStatus representing detailed cluster state. + * Structure is documented below. + * + * <a name="nested_status"></a>The `status` block contains: + * + */ + public Optional>> statuses() { + return Optional.ofNullable(this.statuses); + } + + private VmwareAdminClusterPlatformConfigArgs() {} + + private VmwareAdminClusterPlatformConfigArgs(VmwareAdminClusterPlatformConfigArgs $) { + this.bundles = $.bundles; + this.platformVersion = $.platformVersion; + this.requiredPlatformVersion = $.requiredPlatformVersion; + this.statuses = $.statuses; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterPlatformConfigArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterPlatformConfigArgs $; + + public Builder() { + $ = new VmwareAdminClusterPlatformConfigArgs(); + } + + public Builder(VmwareAdminClusterPlatformConfigArgs defaults) { + $ = new VmwareAdminClusterPlatformConfigArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param bundles (Output) + * The list of bundles installed in the admin cluster. + * Structure is documented below. + * + * @return builder + * + */ + public Builder bundles(@Nullable Output> bundles) { + $.bundles = bundles; + return this; + } + + /** + * @param bundles (Output) + * The list of bundles installed in the admin cluster. + * Structure is documented below. + * + * @return builder + * + */ + public Builder bundles(List bundles) { + return bundles(Output.of(bundles)); + } + + /** + * @param bundles (Output) + * The list of bundles installed in the admin cluster. + * Structure is documented below. + * + * @return builder + * + */ + public Builder bundles(VmwareAdminClusterPlatformConfigBundleArgs... bundles) { + return bundles(List.of(bundles)); + } + + /** + * @param platformVersion (Output) + * The platform version e.g. 1.13.2. + * + * @return builder + * + */ + public Builder platformVersion(@Nullable Output platformVersion) { + $.platformVersion = platformVersion; + return this; + } + + /** + * @param platformVersion (Output) + * The platform version e.g. 1.13.2. + * + * @return builder + * + */ + public Builder platformVersion(String platformVersion) { + return platformVersion(Output.of(platformVersion)); + } + + /** + * @param requiredPlatformVersion The required platform version e.g. 1.13.1. + * If the current platform version is lower than the target version, + * the platform version will be updated to the target version. + * If the target version is not installed in the platform + * (bundle versions), download the target version bundle. + * + * @return builder + * + */ + public Builder requiredPlatformVersion(@Nullable Output requiredPlatformVersion) { + $.requiredPlatformVersion = requiredPlatformVersion; + return this; + } + + /** + * @param requiredPlatformVersion The required platform version e.g. 1.13.1. + * If the current platform version is lower than the target version, + * the platform version will be updated to the target version. + * If the target version is not installed in the platform + * (bundle versions), download the target version bundle. + * + * @return builder + * + */ + public Builder requiredPlatformVersion(String requiredPlatformVersion) { + return requiredPlatformVersion(Output.of(requiredPlatformVersion)); + } + + /** + * @param statuses (Output) + * ResourceStatus representing detailed cluster state. + * Structure is documented below. + * + * <a name="nested_status"></a>The `status` block contains: + * + * @return builder + * + */ + public Builder statuses(@Nullable Output> statuses) { + $.statuses = statuses; + return this; + } + + /** + * @param statuses (Output) + * ResourceStatus representing detailed cluster state. + * Structure is documented below. + * + * <a name="nested_status"></a>The `status` block contains: + * + * @return builder + * + */ + public Builder statuses(List statuses) { + return statuses(Output.of(statuses)); + } + + /** + * @param statuses (Output) + * ResourceStatus representing detailed cluster state. + * Structure is documented below. + * + * <a name="nested_status"></a>The `status` block contains: + * + * @return builder + * + */ + public Builder statuses(VmwareAdminClusterPlatformConfigStatusArgs... statuses) { + return statuses(List.of(statuses)); + } + + public VmwareAdminClusterPlatformConfigArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterPlatformConfigBundleArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterPlatformConfigBundleArgs.java new file mode 100644 index 0000000000..e76b4deb1d --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterPlatformConfigBundleArgs.java @@ -0,0 +1,137 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterPlatformConfigBundleStatusArgs; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class VmwareAdminClusterPlatformConfigBundleArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterPlatformConfigBundleArgs Empty = new VmwareAdminClusterPlatformConfigBundleArgs(); + + /** + * ResourceStatus representing detailed cluster state. + * Structure is documented below. + * + */ + @Import(name="statuses") + private @Nullable Output> statuses; + + /** + * @return ResourceStatus representing detailed cluster state. + * Structure is documented below. + * + */ + public Optional>> statuses() { + return Optional.ofNullable(this.statuses); + } + + /** + * The version of the bundle. + * + */ + @Import(name="version") + private @Nullable Output version; + + /** + * @return The version of the bundle. + * + */ + public Optional> version() { + return Optional.ofNullable(this.version); + } + + private VmwareAdminClusterPlatformConfigBundleArgs() {} + + private VmwareAdminClusterPlatformConfigBundleArgs(VmwareAdminClusterPlatformConfigBundleArgs $) { + this.statuses = $.statuses; + this.version = $.version; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterPlatformConfigBundleArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterPlatformConfigBundleArgs $; + + public Builder() { + $ = new VmwareAdminClusterPlatformConfigBundleArgs(); + } + + public Builder(VmwareAdminClusterPlatformConfigBundleArgs defaults) { + $ = new VmwareAdminClusterPlatformConfigBundleArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param statuses ResourceStatus representing detailed cluster state. + * Structure is documented below. + * + * @return builder + * + */ + public Builder statuses(@Nullable Output> statuses) { + $.statuses = statuses; + return this; + } + + /** + * @param statuses ResourceStatus representing detailed cluster state. + * Structure is documented below. + * + * @return builder + * + */ + public Builder statuses(List statuses) { + return statuses(Output.of(statuses)); + } + + /** + * @param statuses ResourceStatus representing detailed cluster state. + * Structure is documented below. + * + * @return builder + * + */ + public Builder statuses(VmwareAdminClusterPlatformConfigBundleStatusArgs... statuses) { + return statuses(List.of(statuses)); + } + + /** + * @param version The version of the bundle. + * + * @return builder + * + */ + public Builder version(@Nullable Output version) { + $.version = version; + return this; + } + + /** + * @param version The version of the bundle. + * + * @return builder + * + */ + public Builder version(String version) { + return version(Output.of(version)); + } + + public VmwareAdminClusterPlatformConfigBundleArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterPlatformConfigBundleStatusArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterPlatformConfigBundleStatusArgs.java new file mode 100644 index 0000000000..f850669431 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterPlatformConfigBundleStatusArgs.java @@ -0,0 +1,162 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterPlatformConfigBundleStatusConditionArgs; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class VmwareAdminClusterPlatformConfigBundleStatusArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterPlatformConfigBundleStatusArgs Empty = new VmwareAdminClusterPlatformConfigBundleStatusArgs(); + + /** + * (Output) + * ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + * Structure is documented below. + * + */ + @Import(name="conditions") + private @Nullable Output> conditions; + + /** + * @return (Output) + * ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + * Structure is documented below. + * + */ + public Optional>> conditions() { + return Optional.ofNullable(this.conditions); + } + + /** + * (Output) + * Human-friendly representation of the error message from the admin cluster + * controller. The error message can be temporary as the admin cluster + * controller creates a cluster or node pool. If the error message persists + * for a longer period of time, it can be used to surface error message to + * indicate real problems requiring user intervention. + * + */ + @Import(name="errorMessage") + private @Nullable Output errorMessage; + + /** + * @return (Output) + * Human-friendly representation of the error message from the admin cluster + * controller. The error message can be temporary as the admin cluster + * controller creates a cluster or node pool. If the error message persists + * for a longer period of time, it can be used to surface error message to + * indicate real problems requiring user intervention. + * + */ + public Optional> errorMessage() { + return Optional.ofNullable(this.errorMessage); + } + + private VmwareAdminClusterPlatformConfigBundleStatusArgs() {} + + private VmwareAdminClusterPlatformConfigBundleStatusArgs(VmwareAdminClusterPlatformConfigBundleStatusArgs $) { + this.conditions = $.conditions; + this.errorMessage = $.errorMessage; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterPlatformConfigBundleStatusArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterPlatformConfigBundleStatusArgs $; + + public Builder() { + $ = new VmwareAdminClusterPlatformConfigBundleStatusArgs(); + } + + public Builder(VmwareAdminClusterPlatformConfigBundleStatusArgs defaults) { + $ = new VmwareAdminClusterPlatformConfigBundleStatusArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param conditions (Output) + * ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + * Structure is documented below. + * + * @return builder + * + */ + public Builder conditions(@Nullable Output> conditions) { + $.conditions = conditions; + return this; + } + + /** + * @param conditions (Output) + * ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + * Structure is documented below. + * + * @return builder + * + */ + public Builder conditions(List conditions) { + return conditions(Output.of(conditions)); + } + + /** + * @param conditions (Output) + * ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + * Structure is documented below. + * + * @return builder + * + */ + public Builder conditions(VmwareAdminClusterPlatformConfigBundleStatusConditionArgs... conditions) { + return conditions(List.of(conditions)); + } + + /** + * @param errorMessage (Output) + * Human-friendly representation of the error message from the admin cluster + * controller. The error message can be temporary as the admin cluster + * controller creates a cluster or node pool. If the error message persists + * for a longer period of time, it can be used to surface error message to + * indicate real problems requiring user intervention. + * + * @return builder + * + */ + public Builder errorMessage(@Nullable Output errorMessage) { + $.errorMessage = errorMessage; + return this; + } + + /** + * @param errorMessage (Output) + * Human-friendly representation of the error message from the admin cluster + * controller. The error message can be temporary as the admin cluster + * controller creates a cluster or node pool. If the error message persists + * for a longer period of time, it can be used to surface error message to + * indicate real problems requiring user intervention. + * + * @return builder + * + */ + public Builder errorMessage(String errorMessage) { + return errorMessage(Output.of(errorMessage)); + } + + public VmwareAdminClusterPlatformConfigBundleStatusArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterPlatformConfigBundleStatusConditionArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterPlatformConfigBundleStatusConditionArgs.java new file mode 100644 index 0000000000..64a04fba62 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterPlatformConfigBundleStatusConditionArgs.java @@ -0,0 +1,255 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class VmwareAdminClusterPlatformConfigBundleStatusConditionArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterPlatformConfigBundleStatusConditionArgs Empty = new VmwareAdminClusterPlatformConfigBundleStatusConditionArgs(); + + /** + * (Output) + * Last time the condition transit from one status to another. + * + */ + @Import(name="lastTransitionTime") + private @Nullable Output lastTransitionTime; + + /** + * @return (Output) + * Last time the condition transit from one status to another. + * + */ + public Optional> lastTransitionTime() { + return Optional.ofNullable(this.lastTransitionTime); + } + + /** + * (Output) + * Human-readable message indicating details about last transition. + * + */ + @Import(name="message") + private @Nullable Output message; + + /** + * @return (Output) + * Human-readable message indicating details about last transition. + * + */ + public Optional> message() { + return Optional.ofNullable(this.message); + } + + /** + * (Output) + * Machine-readable message indicating details about last transition. + * + */ + @Import(name="reason") + private @Nullable Output reason; + + /** + * @return (Output) + * Machine-readable message indicating details about last transition. + * + */ + public Optional> reason() { + return Optional.ofNullable(this.reason); + } + + /** + * (Output) + * The lifecycle state of the condition. + * + */ + @Import(name="state") + private @Nullable Output state; + + /** + * @return (Output) + * The lifecycle state of the condition. + * + */ + public Optional> state() { + return Optional.ofNullable(this.state); + } + + /** + * (Output) + * Type of the condition. + * (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + * + */ + @Import(name="type") + private @Nullable Output type; + + /** + * @return (Output) + * Type of the condition. + * (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + * + */ + public Optional> type() { + return Optional.ofNullable(this.type); + } + + private VmwareAdminClusterPlatformConfigBundleStatusConditionArgs() {} + + private VmwareAdminClusterPlatformConfigBundleStatusConditionArgs(VmwareAdminClusterPlatformConfigBundleStatusConditionArgs $) { + this.lastTransitionTime = $.lastTransitionTime; + this.message = $.message; + this.reason = $.reason; + this.state = $.state; + this.type = $.type; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterPlatformConfigBundleStatusConditionArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterPlatformConfigBundleStatusConditionArgs $; + + public Builder() { + $ = new VmwareAdminClusterPlatformConfigBundleStatusConditionArgs(); + } + + public Builder(VmwareAdminClusterPlatformConfigBundleStatusConditionArgs defaults) { + $ = new VmwareAdminClusterPlatformConfigBundleStatusConditionArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param lastTransitionTime (Output) + * Last time the condition transit from one status to another. + * + * @return builder + * + */ + public Builder lastTransitionTime(@Nullable Output lastTransitionTime) { + $.lastTransitionTime = lastTransitionTime; + return this; + } + + /** + * @param lastTransitionTime (Output) + * Last time the condition transit from one status to another. + * + * @return builder + * + */ + public Builder lastTransitionTime(String lastTransitionTime) { + return lastTransitionTime(Output.of(lastTransitionTime)); + } + + /** + * @param message (Output) + * Human-readable message indicating details about last transition. + * + * @return builder + * + */ + public Builder message(@Nullable Output message) { + $.message = message; + return this; + } + + /** + * @param message (Output) + * Human-readable message indicating details about last transition. + * + * @return builder + * + */ + public Builder message(String message) { + return message(Output.of(message)); + } + + /** + * @param reason (Output) + * Machine-readable message indicating details about last transition. + * + * @return builder + * + */ + public Builder reason(@Nullable Output reason) { + $.reason = reason; + return this; + } + + /** + * @param reason (Output) + * Machine-readable message indicating details about last transition. + * + * @return builder + * + */ + public Builder reason(String reason) { + return reason(Output.of(reason)); + } + + /** + * @param state (Output) + * The lifecycle state of the condition. + * + * @return builder + * + */ + public Builder state(@Nullable Output state) { + $.state = state; + return this; + } + + /** + * @param state (Output) + * The lifecycle state of the condition. + * + * @return builder + * + */ + public Builder state(String state) { + return state(Output.of(state)); + } + + /** + * @param type (Output) + * Type of the condition. + * (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + * + * @return builder + * + */ + public Builder type(@Nullable Output type) { + $.type = type; + return this; + } + + /** + * @param type (Output) + * Type of the condition. + * (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + * + * @return builder + * + */ + public Builder type(String type) { + return type(Output.of(type)); + } + + public VmwareAdminClusterPlatformConfigBundleStatusConditionArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterPlatformConfigStatusArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterPlatformConfigStatusArgs.java new file mode 100644 index 0000000000..17d6297952 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterPlatformConfigStatusArgs.java @@ -0,0 +1,162 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterPlatformConfigStatusConditionArgs; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class VmwareAdminClusterPlatformConfigStatusArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterPlatformConfigStatusArgs Empty = new VmwareAdminClusterPlatformConfigStatusArgs(); + + /** + * (Output) + * ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + * Structure is documented below. + * + */ + @Import(name="conditions") + private @Nullable Output> conditions; + + /** + * @return (Output) + * ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + * Structure is documented below. + * + */ + public Optional>> conditions() { + return Optional.ofNullable(this.conditions); + } + + /** + * (Output) + * Human-friendly representation of the error message from the admin cluster + * controller. The error message can be temporary as the admin cluster + * controller creates a cluster or node pool. If the error message persists + * for a longer period of time, it can be used to surface error message to + * indicate real problems requiring user intervention. + * + */ + @Import(name="errorMessage") + private @Nullable Output errorMessage; + + /** + * @return (Output) + * Human-friendly representation of the error message from the admin cluster + * controller. The error message can be temporary as the admin cluster + * controller creates a cluster or node pool. If the error message persists + * for a longer period of time, it can be used to surface error message to + * indicate real problems requiring user intervention. + * + */ + public Optional> errorMessage() { + return Optional.ofNullable(this.errorMessage); + } + + private VmwareAdminClusterPlatformConfigStatusArgs() {} + + private VmwareAdminClusterPlatformConfigStatusArgs(VmwareAdminClusterPlatformConfigStatusArgs $) { + this.conditions = $.conditions; + this.errorMessage = $.errorMessage; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterPlatformConfigStatusArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterPlatformConfigStatusArgs $; + + public Builder() { + $ = new VmwareAdminClusterPlatformConfigStatusArgs(); + } + + public Builder(VmwareAdminClusterPlatformConfigStatusArgs defaults) { + $ = new VmwareAdminClusterPlatformConfigStatusArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param conditions (Output) + * ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + * Structure is documented below. + * + * @return builder + * + */ + public Builder conditions(@Nullable Output> conditions) { + $.conditions = conditions; + return this; + } + + /** + * @param conditions (Output) + * ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + * Structure is documented below. + * + * @return builder + * + */ + public Builder conditions(List conditions) { + return conditions(Output.of(conditions)); + } + + /** + * @param conditions (Output) + * ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + * Structure is documented below. + * + * @return builder + * + */ + public Builder conditions(VmwareAdminClusterPlatformConfigStatusConditionArgs... conditions) { + return conditions(List.of(conditions)); + } + + /** + * @param errorMessage (Output) + * Human-friendly representation of the error message from the admin cluster + * controller. The error message can be temporary as the admin cluster + * controller creates a cluster or node pool. If the error message persists + * for a longer period of time, it can be used to surface error message to + * indicate real problems requiring user intervention. + * + * @return builder + * + */ + public Builder errorMessage(@Nullable Output errorMessage) { + $.errorMessage = errorMessage; + return this; + } + + /** + * @param errorMessage (Output) + * Human-friendly representation of the error message from the admin cluster + * controller. The error message can be temporary as the admin cluster + * controller creates a cluster or node pool. If the error message persists + * for a longer period of time, it can be used to surface error message to + * indicate real problems requiring user intervention. + * + * @return builder + * + */ + public Builder errorMessage(String errorMessage) { + return errorMessage(Output.of(errorMessage)); + } + + public VmwareAdminClusterPlatformConfigStatusArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterPlatformConfigStatusConditionArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterPlatformConfigStatusConditionArgs.java new file mode 100644 index 0000000000..0ca6d20119 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterPlatformConfigStatusConditionArgs.java @@ -0,0 +1,255 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class VmwareAdminClusterPlatformConfigStatusConditionArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterPlatformConfigStatusConditionArgs Empty = new VmwareAdminClusterPlatformConfigStatusConditionArgs(); + + /** + * (Output) + * Last time the condition transit from one status to another. + * + */ + @Import(name="lastTransitionTime") + private @Nullable Output lastTransitionTime; + + /** + * @return (Output) + * Last time the condition transit from one status to another. + * + */ + public Optional> lastTransitionTime() { + return Optional.ofNullable(this.lastTransitionTime); + } + + /** + * (Output) + * Human-readable message indicating details about last transition. + * + */ + @Import(name="message") + private @Nullable Output message; + + /** + * @return (Output) + * Human-readable message indicating details about last transition. + * + */ + public Optional> message() { + return Optional.ofNullable(this.message); + } + + /** + * (Output) + * Machine-readable message indicating details about last transition. + * + */ + @Import(name="reason") + private @Nullable Output reason; + + /** + * @return (Output) + * Machine-readable message indicating details about last transition. + * + */ + public Optional> reason() { + return Optional.ofNullable(this.reason); + } + + /** + * (Output) + * The lifecycle state of the condition. + * + */ + @Import(name="state") + private @Nullable Output state; + + /** + * @return (Output) + * The lifecycle state of the condition. + * + */ + public Optional> state() { + return Optional.ofNullable(this.state); + } + + /** + * (Output) + * Type of the condition. + * (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + * + */ + @Import(name="type") + private @Nullable Output type; + + /** + * @return (Output) + * Type of the condition. + * (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + * + */ + public Optional> type() { + return Optional.ofNullable(this.type); + } + + private VmwareAdminClusterPlatformConfigStatusConditionArgs() {} + + private VmwareAdminClusterPlatformConfigStatusConditionArgs(VmwareAdminClusterPlatformConfigStatusConditionArgs $) { + this.lastTransitionTime = $.lastTransitionTime; + this.message = $.message; + this.reason = $.reason; + this.state = $.state; + this.type = $.type; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterPlatformConfigStatusConditionArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterPlatformConfigStatusConditionArgs $; + + public Builder() { + $ = new VmwareAdminClusterPlatformConfigStatusConditionArgs(); + } + + public Builder(VmwareAdminClusterPlatformConfigStatusConditionArgs defaults) { + $ = new VmwareAdminClusterPlatformConfigStatusConditionArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param lastTransitionTime (Output) + * Last time the condition transit from one status to another. + * + * @return builder + * + */ + public Builder lastTransitionTime(@Nullable Output lastTransitionTime) { + $.lastTransitionTime = lastTransitionTime; + return this; + } + + /** + * @param lastTransitionTime (Output) + * Last time the condition transit from one status to another. + * + * @return builder + * + */ + public Builder lastTransitionTime(String lastTransitionTime) { + return lastTransitionTime(Output.of(lastTransitionTime)); + } + + /** + * @param message (Output) + * Human-readable message indicating details about last transition. + * + * @return builder + * + */ + public Builder message(@Nullable Output message) { + $.message = message; + return this; + } + + /** + * @param message (Output) + * Human-readable message indicating details about last transition. + * + * @return builder + * + */ + public Builder message(String message) { + return message(Output.of(message)); + } + + /** + * @param reason (Output) + * Machine-readable message indicating details about last transition. + * + * @return builder + * + */ + public Builder reason(@Nullable Output reason) { + $.reason = reason; + return this; + } + + /** + * @param reason (Output) + * Machine-readable message indicating details about last transition. + * + * @return builder + * + */ + public Builder reason(String reason) { + return reason(Output.of(reason)); + } + + /** + * @param state (Output) + * The lifecycle state of the condition. + * + * @return builder + * + */ + public Builder state(@Nullable Output state) { + $.state = state; + return this; + } + + /** + * @param state (Output) + * The lifecycle state of the condition. + * + * @return builder + * + */ + public Builder state(String state) { + return state(Output.of(state)); + } + + /** + * @param type (Output) + * Type of the condition. + * (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + * + * @return builder + * + */ + public Builder type(@Nullable Output type) { + $.type = type; + return this; + } + + /** + * @param type (Output) + * Type of the condition. + * (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + * + * @return builder + * + */ + public Builder type(String type) { + return type(Output.of(type)); + } + + public VmwareAdminClusterPlatformConfigStatusConditionArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterState.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterState.java new file mode 100644 index 0000000000..be234146fe --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterState.java @@ -0,0 +1,1166 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterAddonNodeArgs; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterAntiAffinityGroupsArgs; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterAuthorizationArgs; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterAutoRepairConfigArgs; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterControlPlaneNodeArgs; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterFleetArgs; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterLoadBalancerArgs; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterNetworkConfigArgs; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterPlatformConfigArgs; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterStatusArgs; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterVcenterArgs; +import java.lang.Boolean; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class VmwareAdminClusterState extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterState Empty = new VmwareAdminClusterState(); + + /** + * The VMware admin cluster addon node configuration. + * + */ + @Import(name="addonNode") + private @Nullable Output addonNode; + + /** + * @return The VMware admin cluster addon node configuration. + * + */ + public Optional> addonNode() { + return Optional.ofNullable(this.addonNode); + } + + /** + * Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size + * of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), + * separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with + * alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is + * non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field + * 'effective_annotations' for all of the annotations present on the resource. + * + */ + @Import(name="annotations") + private @Nullable Output> annotations; + + /** + * @return Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size + * of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), + * separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with + * alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is + * non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field + * 'effective_annotations' for all of the annotations present on the resource. + * + */ + public Optional>> annotations() { + return Optional.ofNullable(this.annotations); + } + + /** + * AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter. + * + */ + @Import(name="antiAffinityGroups") + private @Nullable Output antiAffinityGroups; + + /** + * @return AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter. + * + */ + public Optional> antiAffinityGroups() { + return Optional.ofNullable(this.antiAffinityGroups); + } + + /** + * The VMware admin cluster authorization configuration. + * + */ + @Import(name="authorization") + private @Nullable Output authorization; + + /** + * @return The VMware admin cluster authorization configuration. + * + */ + public Optional> authorization() { + return Optional.ofNullable(this.authorization); + } + + /** + * Configuration for auto repairing. + * + */ + @Import(name="autoRepairConfig") + private @Nullable Output autoRepairConfig; + + /** + * @return Configuration for auto repairing. + * + */ + public Optional> autoRepairConfig() { + return Optional.ofNullable(this.autoRepairConfig); + } + + /** + * The bootstrap cluster this VMware admin cluster belongs to. + * + */ + @Import(name="bootstrapClusterMembership") + private @Nullable Output bootstrapClusterMembership; + + /** + * @return The bootstrap cluster this VMware admin cluster belongs to. + * + */ + public Optional> bootstrapClusterMembership() { + return Optional.ofNullable(this.bootstrapClusterMembership); + } + + /** + * The VMware admin cluster control plane node configuration. + * + */ + @Import(name="controlPlaneNode") + private @Nullable Output controlPlaneNode; + + /** + * @return The VMware admin cluster control plane node configuration. + * + */ + public Optional> controlPlaneNode() { + return Optional.ofNullable(this.controlPlaneNode); + } + + /** + * The time the cluster was created, in RFC3339 text format. + * + */ + @Import(name="createTime") + private @Nullable Output createTime; + + /** + * @return The time the cluster was created, in RFC3339 text format. + * + */ + public Optional> createTime() { + return Optional.ofNullable(this.createTime); + } + + /** + * A human readable description of this VMware admin cluster. + * + */ + @Import(name="description") + private @Nullable Output description; + + /** + * @return A human readable description of this VMware admin cluster. + * + */ + public Optional> description() { + return Optional.ofNullable(this.description); + } + + @Import(name="effectiveAnnotations") + private @Nullable Output> effectiveAnnotations; + + public Optional>> effectiveAnnotations() { + return Optional.ofNullable(this.effectiveAnnotations); + } + + /** + * The DNS name of VMware admin cluster's API server. + * + */ + @Import(name="endpoint") + private @Nullable Output endpoint; + + /** + * @return The DNS name of VMware admin cluster's API server. + * + */ + public Optional> endpoint() { + return Optional.ofNullable(this.endpoint); + } + + /** + * This checksum is computed by the server based on the value of other + * fields, and may be sent on update and delete requests to ensure the + * client has an up-to-date value before proceeding. + * Allows clients to perform consistent read-modify-writes + * through optimistic concurrency control. + * + */ + @Import(name="etag") + private @Nullable Output etag; + + /** + * @return This checksum is computed by the server based on the value of other + * fields, and may be sent on update and delete requests to ensure the + * client has an up-to-date value before proceeding. + * Allows clients to perform consistent read-modify-writes + * through optimistic concurrency control. + * + */ + public Optional> etag() { + return Optional.ofNullable(this.etag); + } + + /** + * Fleet configuration for the cluster. + * Structure is documented below. + * + */ + @Import(name="fleets") + private @Nullable Output> fleets; + + /** + * @return Fleet configuration for the cluster. + * Structure is documented below. + * + */ + public Optional>> fleets() { + return Optional.ofNullable(this.fleets); + } + + /** + * The OS image type for the VMware admin cluster. + * + */ + @Import(name="imageType") + private @Nullable Output imageType; + + /** + * @return The OS image type for the VMware admin cluster. + * + */ + public Optional> imageType() { + return Optional.ofNullable(this.imageType); + } + + /** + * Specifies the load balancer configuration for VMware admin cluster. + * + */ + @Import(name="loadBalancer") + private @Nullable Output loadBalancer; + + /** + * @return Specifies the load balancer configuration for VMware admin cluster. + * + */ + public Optional> loadBalancer() { + return Optional.ofNullable(this.loadBalancer); + } + + /** + * The object name of the VMwareAdminCluster custom resource on the + * associated admin cluster. This field is used to support conflicting + * names when enrolling existing clusters to the API. When used as a part of + * cluster enrollment, this field will differ from the ID in the resource + * name. For new clusters, this field will match the user provided cluster ID + * and be visible in the last component of the resource name. It is not + * modifiable. + * All users should use this name to access their cluster using gkectl or + * kubectl and should expect to see the local name when viewing admin + * cluster controller logs. + * + */ + @Import(name="localName") + private @Nullable Output localName; + + /** + * @return The object name of the VMwareAdminCluster custom resource on the + * associated admin cluster. This field is used to support conflicting + * names when enrolling existing clusters to the API. When used as a part of + * cluster enrollment, this field will differ from the ID in the resource + * name. For new clusters, this field will match the user provided cluster ID + * and be visible in the last component of the resource name. It is not + * modifiable. + * All users should use this name to access their cluster using gkectl or + * kubectl and should expect to see the local name when viewing admin + * cluster controller logs. + * + */ + public Optional> localName() { + return Optional.ofNullable(this.localName); + } + + /** + * The location of the resource. + * + */ + @Import(name="location") + private @Nullable Output location; + + /** + * @return The location of the resource. + * + */ + public Optional> location() { + return Optional.ofNullable(this.location); + } + + /** + * The VMware admin cluster resource name. + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The VMware admin cluster resource name. + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * The VMware admin cluster network configuration. + * Structure is documented below. + * + */ + @Import(name="networkConfig") + private @Nullable Output networkConfig; + + /** + * @return The VMware admin cluster network configuration. + * Structure is documented below. + * + */ + public Optional> networkConfig() { + return Optional.ofNullable(this.networkConfig); + } + + /** + * The Anthos clusters on the VMware version for the admin cluster. + * + */ + @Import(name="onPremVersion") + private @Nullable Output onPremVersion; + + /** + * @return The Anthos clusters on the VMware version for the admin cluster. + * + */ + public Optional> onPremVersion() { + return Optional.ofNullable(this.onPremVersion); + } + + /** + * The VMware platform configuration. + * + */ + @Import(name="platformConfig") + private @Nullable Output platformConfig; + + /** + * @return The VMware platform configuration. + * + */ + public Optional> platformConfig() { + return Optional.ofNullable(this.platformConfig); + } + + @Import(name="project") + private @Nullable Output project; + + public Optional> project() { + return Optional.ofNullable(this.project); + } + + /** + * If set, there are currently changes in flight to the VMware admin cluster. + * + */ + @Import(name="reconciling") + private @Nullable Output reconciling; + + /** + * @return If set, there are currently changes in flight to the VMware admin cluster. + * + */ + public Optional> reconciling() { + return Optional.ofNullable(this.reconciling); + } + + /** + * (Output) + * The lifecycle state of the condition. + * + */ + @Import(name="state") + private @Nullable Output state; + + /** + * @return (Output) + * The lifecycle state of the condition. + * + */ + public Optional> state() { + return Optional.ofNullable(this.state); + } + + /** + * ResourceStatus representing detailed cluster state. + * Structure is documented below. + * + */ + @Import(name="statuses") + private @Nullable Output> statuses; + + /** + * @return ResourceStatus representing detailed cluster state. + * Structure is documented below. + * + */ + public Optional>> statuses() { + return Optional.ofNullable(this.statuses); + } + + /** + * The unique identifier of the VMware Admin Cluster. + * + */ + @Import(name="uid") + private @Nullable Output uid; + + /** + * @return The unique identifier of the VMware Admin Cluster. + * + */ + public Optional> uid() { + return Optional.ofNullable(this.uid); + } + + /** + * The time the cluster was last updated, in RFC3339 text format. + * + */ + @Import(name="updateTime") + private @Nullable Output updateTime; + + /** + * @return The time the cluster was last updated, in RFC3339 text format. + * + */ + public Optional> updateTime() { + return Optional.ofNullable(this.updateTime); + } + + /** + * Specifies vCenter config for the admin cluster. + * + */ + @Import(name="vcenter") + private @Nullable Output vcenter; + + /** + * @return Specifies vCenter config for the admin cluster. + * + */ + public Optional> vcenter() { + return Optional.ofNullable(this.vcenter); + } + + private VmwareAdminClusterState() {} + + private VmwareAdminClusterState(VmwareAdminClusterState $) { + this.addonNode = $.addonNode; + this.annotations = $.annotations; + this.antiAffinityGroups = $.antiAffinityGroups; + this.authorization = $.authorization; + this.autoRepairConfig = $.autoRepairConfig; + this.bootstrapClusterMembership = $.bootstrapClusterMembership; + this.controlPlaneNode = $.controlPlaneNode; + this.createTime = $.createTime; + this.description = $.description; + this.effectiveAnnotations = $.effectiveAnnotations; + this.endpoint = $.endpoint; + this.etag = $.etag; + this.fleets = $.fleets; + this.imageType = $.imageType; + this.loadBalancer = $.loadBalancer; + this.localName = $.localName; + this.location = $.location; + this.name = $.name; + this.networkConfig = $.networkConfig; + this.onPremVersion = $.onPremVersion; + this.platformConfig = $.platformConfig; + this.project = $.project; + this.reconciling = $.reconciling; + this.state = $.state; + this.statuses = $.statuses; + this.uid = $.uid; + this.updateTime = $.updateTime; + this.vcenter = $.vcenter; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterState $; + + public Builder() { + $ = new VmwareAdminClusterState(); + } + + public Builder(VmwareAdminClusterState defaults) { + $ = new VmwareAdminClusterState(Objects.requireNonNull(defaults)); + } + + /** + * @param addonNode The VMware admin cluster addon node configuration. + * + * @return builder + * + */ + public Builder addonNode(@Nullable Output addonNode) { + $.addonNode = addonNode; + return this; + } + + /** + * @param addonNode The VMware admin cluster addon node configuration. + * + * @return builder + * + */ + public Builder addonNode(VmwareAdminClusterAddonNodeArgs addonNode) { + return addonNode(Output.of(addonNode)); + } + + /** + * @param annotations Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size + * of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), + * separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with + * alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is + * non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field + * 'effective_annotations' for all of the annotations present on the resource. + * + * @return builder + * + */ + public Builder annotations(@Nullable Output> annotations) { + $.annotations = annotations; + return this; + } + + /** + * @param annotations Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size + * of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), + * separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with + * alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is + * non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field + * 'effective_annotations' for all of the annotations present on the resource. + * + * @return builder + * + */ + public Builder annotations(Map annotations) { + return annotations(Output.of(annotations)); + } + + /** + * @param antiAffinityGroups AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter. + * + * @return builder + * + */ + public Builder antiAffinityGroups(@Nullable Output antiAffinityGroups) { + $.antiAffinityGroups = antiAffinityGroups; + return this; + } + + /** + * @param antiAffinityGroups AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter. + * + * @return builder + * + */ + public Builder antiAffinityGroups(VmwareAdminClusterAntiAffinityGroupsArgs antiAffinityGroups) { + return antiAffinityGroups(Output.of(antiAffinityGroups)); + } + + /** + * @param authorization The VMware admin cluster authorization configuration. + * + * @return builder + * + */ + public Builder authorization(@Nullable Output authorization) { + $.authorization = authorization; + return this; + } + + /** + * @param authorization The VMware admin cluster authorization configuration. + * + * @return builder + * + */ + public Builder authorization(VmwareAdminClusterAuthorizationArgs authorization) { + return authorization(Output.of(authorization)); + } + + /** + * @param autoRepairConfig Configuration for auto repairing. + * + * @return builder + * + */ + public Builder autoRepairConfig(@Nullable Output autoRepairConfig) { + $.autoRepairConfig = autoRepairConfig; + return this; + } + + /** + * @param autoRepairConfig Configuration for auto repairing. + * + * @return builder + * + */ + public Builder autoRepairConfig(VmwareAdminClusterAutoRepairConfigArgs autoRepairConfig) { + return autoRepairConfig(Output.of(autoRepairConfig)); + } + + /** + * @param bootstrapClusterMembership The bootstrap cluster this VMware admin cluster belongs to. + * + * @return builder + * + */ + public Builder bootstrapClusterMembership(@Nullable Output bootstrapClusterMembership) { + $.bootstrapClusterMembership = bootstrapClusterMembership; + return this; + } + + /** + * @param bootstrapClusterMembership The bootstrap cluster this VMware admin cluster belongs to. + * + * @return builder + * + */ + public Builder bootstrapClusterMembership(String bootstrapClusterMembership) { + return bootstrapClusterMembership(Output.of(bootstrapClusterMembership)); + } + + /** + * @param controlPlaneNode The VMware admin cluster control plane node configuration. + * + * @return builder + * + */ + public Builder controlPlaneNode(@Nullable Output controlPlaneNode) { + $.controlPlaneNode = controlPlaneNode; + return this; + } + + /** + * @param controlPlaneNode The VMware admin cluster control plane node configuration. + * + * @return builder + * + */ + public Builder controlPlaneNode(VmwareAdminClusterControlPlaneNodeArgs controlPlaneNode) { + return controlPlaneNode(Output.of(controlPlaneNode)); + } + + /** + * @param createTime The time the cluster was created, in RFC3339 text format. + * + * @return builder + * + */ + public Builder createTime(@Nullable Output createTime) { + $.createTime = createTime; + return this; + } + + /** + * @param createTime The time the cluster was created, in RFC3339 text format. + * + * @return builder + * + */ + public Builder createTime(String createTime) { + return createTime(Output.of(createTime)); + } + + /** + * @param description A human readable description of this VMware admin cluster. + * + * @return builder + * + */ + public Builder description(@Nullable Output description) { + $.description = description; + return this; + } + + /** + * @param description A human readable description of this VMware admin cluster. + * + * @return builder + * + */ + public Builder description(String description) { + return description(Output.of(description)); + } + + public Builder effectiveAnnotations(@Nullable Output> effectiveAnnotations) { + $.effectiveAnnotations = effectiveAnnotations; + return this; + } + + public Builder effectiveAnnotations(Map effectiveAnnotations) { + return effectiveAnnotations(Output.of(effectiveAnnotations)); + } + + /** + * @param endpoint The DNS name of VMware admin cluster's API server. + * + * @return builder + * + */ + public Builder endpoint(@Nullable Output endpoint) { + $.endpoint = endpoint; + return this; + } + + /** + * @param endpoint The DNS name of VMware admin cluster's API server. + * + * @return builder + * + */ + public Builder endpoint(String endpoint) { + return endpoint(Output.of(endpoint)); + } + + /** + * @param etag This checksum is computed by the server based on the value of other + * fields, and may be sent on update and delete requests to ensure the + * client has an up-to-date value before proceeding. + * Allows clients to perform consistent read-modify-writes + * through optimistic concurrency control. + * + * @return builder + * + */ + public Builder etag(@Nullable Output etag) { + $.etag = etag; + return this; + } + + /** + * @param etag This checksum is computed by the server based on the value of other + * fields, and may be sent on update and delete requests to ensure the + * client has an up-to-date value before proceeding. + * Allows clients to perform consistent read-modify-writes + * through optimistic concurrency control. + * + * @return builder + * + */ + public Builder etag(String etag) { + return etag(Output.of(etag)); + } + + /** + * @param fleets Fleet configuration for the cluster. + * Structure is documented below. + * + * @return builder + * + */ + public Builder fleets(@Nullable Output> fleets) { + $.fleets = fleets; + return this; + } + + /** + * @param fleets Fleet configuration for the cluster. + * Structure is documented below. + * + * @return builder + * + */ + public Builder fleets(List fleets) { + return fleets(Output.of(fleets)); + } + + /** + * @param fleets Fleet configuration for the cluster. + * Structure is documented below. + * + * @return builder + * + */ + public Builder fleets(VmwareAdminClusterFleetArgs... fleets) { + return fleets(List.of(fleets)); + } + + /** + * @param imageType The OS image type for the VMware admin cluster. + * + * @return builder + * + */ + public Builder imageType(@Nullable Output imageType) { + $.imageType = imageType; + return this; + } + + /** + * @param imageType The OS image type for the VMware admin cluster. + * + * @return builder + * + */ + public Builder imageType(String imageType) { + return imageType(Output.of(imageType)); + } + + /** + * @param loadBalancer Specifies the load balancer configuration for VMware admin cluster. + * + * @return builder + * + */ + public Builder loadBalancer(@Nullable Output loadBalancer) { + $.loadBalancer = loadBalancer; + return this; + } + + /** + * @param loadBalancer Specifies the load balancer configuration for VMware admin cluster. + * + * @return builder + * + */ + public Builder loadBalancer(VmwareAdminClusterLoadBalancerArgs loadBalancer) { + return loadBalancer(Output.of(loadBalancer)); + } + + /** + * @param localName The object name of the VMwareAdminCluster custom resource on the + * associated admin cluster. This field is used to support conflicting + * names when enrolling existing clusters to the API. When used as a part of + * cluster enrollment, this field will differ from the ID in the resource + * name. For new clusters, this field will match the user provided cluster ID + * and be visible in the last component of the resource name. It is not + * modifiable. + * All users should use this name to access their cluster using gkectl or + * kubectl and should expect to see the local name when viewing admin + * cluster controller logs. + * + * @return builder + * + */ + public Builder localName(@Nullable Output localName) { + $.localName = localName; + return this; + } + + /** + * @param localName The object name of the VMwareAdminCluster custom resource on the + * associated admin cluster. This field is used to support conflicting + * names when enrolling existing clusters to the API. When used as a part of + * cluster enrollment, this field will differ from the ID in the resource + * name. For new clusters, this field will match the user provided cluster ID + * and be visible in the last component of the resource name. It is not + * modifiable. + * All users should use this name to access their cluster using gkectl or + * kubectl and should expect to see the local name when viewing admin + * cluster controller logs. + * + * @return builder + * + */ + public Builder localName(String localName) { + return localName(Output.of(localName)); + } + + /** + * @param location The location of the resource. + * + * @return builder + * + */ + public Builder location(@Nullable Output location) { + $.location = location; + return this; + } + + /** + * @param location The location of the resource. + * + * @return builder + * + */ + public Builder location(String location) { + return location(Output.of(location)); + } + + /** + * @param name The VMware admin cluster resource name. + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The VMware admin cluster resource name. + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param networkConfig The VMware admin cluster network configuration. + * Structure is documented below. + * + * @return builder + * + */ + public Builder networkConfig(@Nullable Output networkConfig) { + $.networkConfig = networkConfig; + return this; + } + + /** + * @param networkConfig The VMware admin cluster network configuration. + * Structure is documented below. + * + * @return builder + * + */ + public Builder networkConfig(VmwareAdminClusterNetworkConfigArgs networkConfig) { + return networkConfig(Output.of(networkConfig)); + } + + /** + * @param onPremVersion The Anthos clusters on the VMware version for the admin cluster. + * + * @return builder + * + */ + public Builder onPremVersion(@Nullable Output onPremVersion) { + $.onPremVersion = onPremVersion; + return this; + } + + /** + * @param onPremVersion The Anthos clusters on the VMware version for the admin cluster. + * + * @return builder + * + */ + public Builder onPremVersion(String onPremVersion) { + return onPremVersion(Output.of(onPremVersion)); + } + + /** + * @param platformConfig The VMware platform configuration. + * + * @return builder + * + */ + public Builder platformConfig(@Nullable Output platformConfig) { + $.platformConfig = platformConfig; + return this; + } + + /** + * @param platformConfig The VMware platform configuration. + * + * @return builder + * + */ + public Builder platformConfig(VmwareAdminClusterPlatformConfigArgs platformConfig) { + return platformConfig(Output.of(platformConfig)); + } + + public Builder project(@Nullable Output project) { + $.project = project; + return this; + } + + public Builder project(String project) { + return project(Output.of(project)); + } + + /** + * @param reconciling If set, there are currently changes in flight to the VMware admin cluster. + * + * @return builder + * + */ + public Builder reconciling(@Nullable Output reconciling) { + $.reconciling = reconciling; + return this; + } + + /** + * @param reconciling If set, there are currently changes in flight to the VMware admin cluster. + * + * @return builder + * + */ + public Builder reconciling(Boolean reconciling) { + return reconciling(Output.of(reconciling)); + } + + /** + * @param state (Output) + * The lifecycle state of the condition. + * + * @return builder + * + */ + public Builder state(@Nullable Output state) { + $.state = state; + return this; + } + + /** + * @param state (Output) + * The lifecycle state of the condition. + * + * @return builder + * + */ + public Builder state(String state) { + return state(Output.of(state)); + } + + /** + * @param statuses ResourceStatus representing detailed cluster state. + * Structure is documented below. + * + * @return builder + * + */ + public Builder statuses(@Nullable Output> statuses) { + $.statuses = statuses; + return this; + } + + /** + * @param statuses ResourceStatus representing detailed cluster state. + * Structure is documented below. + * + * @return builder + * + */ + public Builder statuses(List statuses) { + return statuses(Output.of(statuses)); + } + + /** + * @param statuses ResourceStatus representing detailed cluster state. + * Structure is documented below. + * + * @return builder + * + */ + public Builder statuses(VmwareAdminClusterStatusArgs... statuses) { + return statuses(List.of(statuses)); + } + + /** + * @param uid The unique identifier of the VMware Admin Cluster. + * + * @return builder + * + */ + public Builder uid(@Nullable Output uid) { + $.uid = uid; + return this; + } + + /** + * @param uid The unique identifier of the VMware Admin Cluster. + * + * @return builder + * + */ + public Builder uid(String uid) { + return uid(Output.of(uid)); + } + + /** + * @param updateTime The time the cluster was last updated, in RFC3339 text format. + * + * @return builder + * + */ + public Builder updateTime(@Nullable Output updateTime) { + $.updateTime = updateTime; + return this; + } + + /** + * @param updateTime The time the cluster was last updated, in RFC3339 text format. + * + * @return builder + * + */ + public Builder updateTime(String updateTime) { + return updateTime(Output.of(updateTime)); + } + + /** + * @param vcenter Specifies vCenter config for the admin cluster. + * + * @return builder + * + */ + public Builder vcenter(@Nullable Output vcenter) { + $.vcenter = vcenter; + return this; + } + + /** + * @param vcenter Specifies vCenter config for the admin cluster. + * + * @return builder + * + */ + public Builder vcenter(VmwareAdminClusterVcenterArgs vcenter) { + return vcenter(Output.of(vcenter)); + } + + public VmwareAdminClusterState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterStatusArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterStatusArgs.java new file mode 100644 index 0000000000..0283cc1ab0 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterStatusArgs.java @@ -0,0 +1,162 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.gkeonprem.inputs.VmwareAdminClusterStatusConditionArgs; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class VmwareAdminClusterStatusArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterStatusArgs Empty = new VmwareAdminClusterStatusArgs(); + + /** + * (Output) + * ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + * Structure is documented below. + * + */ + @Import(name="conditions") + private @Nullable Output> conditions; + + /** + * @return (Output) + * ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + * Structure is documented below. + * + */ + public Optional>> conditions() { + return Optional.ofNullable(this.conditions); + } + + /** + * (Output) + * Human-friendly representation of the error message from the admin cluster + * controller. The error message can be temporary as the admin cluster + * controller creates a cluster or node pool. If the error message persists + * for a longer period of time, it can be used to surface error message to + * indicate real problems requiring user intervention. + * + */ + @Import(name="errorMessage") + private @Nullable Output errorMessage; + + /** + * @return (Output) + * Human-friendly representation of the error message from the admin cluster + * controller. The error message can be temporary as the admin cluster + * controller creates a cluster or node pool. If the error message persists + * for a longer period of time, it can be used to surface error message to + * indicate real problems requiring user intervention. + * + */ + public Optional> errorMessage() { + return Optional.ofNullable(this.errorMessage); + } + + private VmwareAdminClusterStatusArgs() {} + + private VmwareAdminClusterStatusArgs(VmwareAdminClusterStatusArgs $) { + this.conditions = $.conditions; + this.errorMessage = $.errorMessage; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterStatusArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterStatusArgs $; + + public Builder() { + $ = new VmwareAdminClusterStatusArgs(); + } + + public Builder(VmwareAdminClusterStatusArgs defaults) { + $ = new VmwareAdminClusterStatusArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param conditions (Output) + * ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + * Structure is documented below. + * + * @return builder + * + */ + public Builder conditions(@Nullable Output> conditions) { + $.conditions = conditions; + return this; + } + + /** + * @param conditions (Output) + * ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + * Structure is documented below. + * + * @return builder + * + */ + public Builder conditions(List conditions) { + return conditions(Output.of(conditions)); + } + + /** + * @param conditions (Output) + * ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + * Structure is documented below. + * + * @return builder + * + */ + public Builder conditions(VmwareAdminClusterStatusConditionArgs... conditions) { + return conditions(List.of(conditions)); + } + + /** + * @param errorMessage (Output) + * Human-friendly representation of the error message from the admin cluster + * controller. The error message can be temporary as the admin cluster + * controller creates a cluster or node pool. If the error message persists + * for a longer period of time, it can be used to surface error message to + * indicate real problems requiring user intervention. + * + * @return builder + * + */ + public Builder errorMessage(@Nullable Output errorMessage) { + $.errorMessage = errorMessage; + return this; + } + + /** + * @param errorMessage (Output) + * Human-friendly representation of the error message from the admin cluster + * controller. The error message can be temporary as the admin cluster + * controller creates a cluster or node pool. If the error message persists + * for a longer period of time, it can be used to surface error message to + * indicate real problems requiring user intervention. + * + * @return builder + * + */ + public Builder errorMessage(String errorMessage) { + return errorMessage(Output.of(errorMessage)); + } + + public VmwareAdminClusterStatusArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterStatusConditionArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterStatusConditionArgs.java new file mode 100644 index 0000000000..5e81663d3a --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterStatusConditionArgs.java @@ -0,0 +1,255 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class VmwareAdminClusterStatusConditionArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterStatusConditionArgs Empty = new VmwareAdminClusterStatusConditionArgs(); + + /** + * (Output) + * Last time the condition transit from one status to another. + * + */ + @Import(name="lastTransitionTime") + private @Nullable Output lastTransitionTime; + + /** + * @return (Output) + * Last time the condition transit from one status to another. + * + */ + public Optional> lastTransitionTime() { + return Optional.ofNullable(this.lastTransitionTime); + } + + /** + * (Output) + * Human-readable message indicating details about last transition. + * + */ + @Import(name="message") + private @Nullable Output message; + + /** + * @return (Output) + * Human-readable message indicating details about last transition. + * + */ + public Optional> message() { + return Optional.ofNullable(this.message); + } + + /** + * (Output) + * Machine-readable message indicating details about last transition. + * + */ + @Import(name="reason") + private @Nullable Output reason; + + /** + * @return (Output) + * Machine-readable message indicating details about last transition. + * + */ + public Optional> reason() { + return Optional.ofNullable(this.reason); + } + + /** + * (Output) + * The lifecycle state of the condition. + * + */ + @Import(name="state") + private @Nullable Output state; + + /** + * @return (Output) + * The lifecycle state of the condition. + * + */ + public Optional> state() { + return Optional.ofNullable(this.state); + } + + /** + * (Output) + * Type of the condition. + * (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + * + */ + @Import(name="type") + private @Nullable Output type; + + /** + * @return (Output) + * Type of the condition. + * (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + * + */ + public Optional> type() { + return Optional.ofNullable(this.type); + } + + private VmwareAdminClusterStatusConditionArgs() {} + + private VmwareAdminClusterStatusConditionArgs(VmwareAdminClusterStatusConditionArgs $) { + this.lastTransitionTime = $.lastTransitionTime; + this.message = $.message; + this.reason = $.reason; + this.state = $.state; + this.type = $.type; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterStatusConditionArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterStatusConditionArgs $; + + public Builder() { + $ = new VmwareAdminClusterStatusConditionArgs(); + } + + public Builder(VmwareAdminClusterStatusConditionArgs defaults) { + $ = new VmwareAdminClusterStatusConditionArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param lastTransitionTime (Output) + * Last time the condition transit from one status to another. + * + * @return builder + * + */ + public Builder lastTransitionTime(@Nullable Output lastTransitionTime) { + $.lastTransitionTime = lastTransitionTime; + return this; + } + + /** + * @param lastTransitionTime (Output) + * Last time the condition transit from one status to another. + * + * @return builder + * + */ + public Builder lastTransitionTime(String lastTransitionTime) { + return lastTransitionTime(Output.of(lastTransitionTime)); + } + + /** + * @param message (Output) + * Human-readable message indicating details about last transition. + * + * @return builder + * + */ + public Builder message(@Nullable Output message) { + $.message = message; + return this; + } + + /** + * @param message (Output) + * Human-readable message indicating details about last transition. + * + * @return builder + * + */ + public Builder message(String message) { + return message(Output.of(message)); + } + + /** + * @param reason (Output) + * Machine-readable message indicating details about last transition. + * + * @return builder + * + */ + public Builder reason(@Nullable Output reason) { + $.reason = reason; + return this; + } + + /** + * @param reason (Output) + * Machine-readable message indicating details about last transition. + * + * @return builder + * + */ + public Builder reason(String reason) { + return reason(Output.of(reason)); + } + + /** + * @param state (Output) + * The lifecycle state of the condition. + * + * @return builder + * + */ + public Builder state(@Nullable Output state) { + $.state = state; + return this; + } + + /** + * @param state (Output) + * The lifecycle state of the condition. + * + * @return builder + * + */ + public Builder state(String state) { + return state(Output.of(state)); + } + + /** + * @param type (Output) + * Type of the condition. + * (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + * + * @return builder + * + */ + public Builder type(@Nullable Output type) { + $.type = type; + return this; + } + + /** + * @param type (Output) + * Type of the condition. + * (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + * + * @return builder + * + */ + public Builder type(String type) { + return type(Output.of(type)); + } + + public VmwareAdminClusterStatusConditionArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterVcenterArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterVcenterArgs.java new file mode 100644 index 0000000000..288976fde0 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VmwareAdminClusterVcenterArgs.java @@ -0,0 +1,379 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class VmwareAdminClusterVcenterArgs extends com.pulumi.resources.ResourceArgs { + + public static final VmwareAdminClusterVcenterArgs Empty = new VmwareAdminClusterVcenterArgs(); + + /** + * The vCenter IP address. + * + */ + @Import(name="address") + private @Nullable Output address; + + /** + * @return The vCenter IP address. + * + */ + public Optional> address() { + return Optional.ofNullable(this.address); + } + + /** + * Contains the vCenter CA certificate public key for SSL verification. + * + */ + @Import(name="caCertData") + private @Nullable Output caCertData; + + /** + * @return Contains the vCenter CA certificate public key for SSL verification. + * + */ + public Optional> caCertData() { + return Optional.ofNullable(this.caCertData); + } + + /** + * The name of the vCenter cluster for the admin cluster. + * + */ + @Import(name="cluster") + private @Nullable Output cluster; + + /** + * @return The name of the vCenter cluster for the admin cluster. + * + */ + public Optional> cluster() { + return Optional.ofNullable(this.cluster); + } + + /** + * The name of the virtual machine disk (VMDK) for the admin cluster. + * + */ + @Import(name="dataDisk") + private @Nullable Output dataDisk; + + /** + * @return The name of the virtual machine disk (VMDK) for the admin cluster. + * + */ + public Optional> dataDisk() { + return Optional.ofNullable(this.dataDisk); + } + + /** + * The name of the vCenter datacenter for the admin cluster. + * + */ + @Import(name="datacenter") + private @Nullable Output datacenter; + + /** + * @return The name of the vCenter datacenter for the admin cluster. + * + */ + public Optional> datacenter() { + return Optional.ofNullable(this.datacenter); + } + + /** + * The name of the vCenter datastore for the admin cluster. + * + */ + @Import(name="datastore") + private @Nullable Output datastore; + + /** + * @return The name of the vCenter datastore for the admin cluster. + * + */ + public Optional> datastore() { + return Optional.ofNullable(this.datastore); + } + + /** + * The name of the vCenter folder for the admin cluster. + * + */ + @Import(name="folder") + private @Nullable Output folder; + + /** + * @return The name of the vCenter folder for the admin cluster. + * + */ + public Optional> folder() { + return Optional.ofNullable(this.folder); + } + + /** + * The name of the vCenter resource pool for the admin cluster. + * + */ + @Import(name="resourcePool") + private @Nullable Output resourcePool; + + /** + * @return The name of the vCenter resource pool for the admin cluster. + * + */ + public Optional> resourcePool() { + return Optional.ofNullable(this.resourcePool); + } + + /** + * The name of the vCenter storage policy for the user cluster. + * + */ + @Import(name="storagePolicyName") + private @Nullable Output storagePolicyName; + + /** + * @return The name of the vCenter storage policy for the user cluster. + * + */ + public Optional> storagePolicyName() { + return Optional.ofNullable(this.storagePolicyName); + } + + private VmwareAdminClusterVcenterArgs() {} + + private VmwareAdminClusterVcenterArgs(VmwareAdminClusterVcenterArgs $) { + this.address = $.address; + this.caCertData = $.caCertData; + this.cluster = $.cluster; + this.dataDisk = $.dataDisk; + this.datacenter = $.datacenter; + this.datastore = $.datastore; + this.folder = $.folder; + this.resourcePool = $.resourcePool; + this.storagePolicyName = $.storagePolicyName; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(VmwareAdminClusterVcenterArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private VmwareAdminClusterVcenterArgs $; + + public Builder() { + $ = new VmwareAdminClusterVcenterArgs(); + } + + public Builder(VmwareAdminClusterVcenterArgs defaults) { + $ = new VmwareAdminClusterVcenterArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param address The vCenter IP address. + * + * @return builder + * + */ + public Builder address(@Nullable Output address) { + $.address = address; + return this; + } + + /** + * @param address The vCenter IP address. + * + * @return builder + * + */ + public Builder address(String address) { + return address(Output.of(address)); + } + + /** + * @param caCertData Contains the vCenter CA certificate public key for SSL verification. + * + * @return builder + * + */ + public Builder caCertData(@Nullable Output caCertData) { + $.caCertData = caCertData; + return this; + } + + /** + * @param caCertData Contains the vCenter CA certificate public key for SSL verification. + * + * @return builder + * + */ + public Builder caCertData(String caCertData) { + return caCertData(Output.of(caCertData)); + } + + /** + * @param cluster The name of the vCenter cluster for the admin cluster. + * + * @return builder + * + */ + public Builder cluster(@Nullable Output cluster) { + $.cluster = cluster; + return this; + } + + /** + * @param cluster The name of the vCenter cluster for the admin cluster. + * + * @return builder + * + */ + public Builder cluster(String cluster) { + return cluster(Output.of(cluster)); + } + + /** + * @param dataDisk The name of the virtual machine disk (VMDK) for the admin cluster. + * + * @return builder + * + */ + public Builder dataDisk(@Nullable Output dataDisk) { + $.dataDisk = dataDisk; + return this; + } + + /** + * @param dataDisk The name of the virtual machine disk (VMDK) for the admin cluster. + * + * @return builder + * + */ + public Builder dataDisk(String dataDisk) { + return dataDisk(Output.of(dataDisk)); + } + + /** + * @param datacenter The name of the vCenter datacenter for the admin cluster. + * + * @return builder + * + */ + public Builder datacenter(@Nullable Output datacenter) { + $.datacenter = datacenter; + return this; + } + + /** + * @param datacenter The name of the vCenter datacenter for the admin cluster. + * + * @return builder + * + */ + public Builder datacenter(String datacenter) { + return datacenter(Output.of(datacenter)); + } + + /** + * @param datastore The name of the vCenter datastore for the admin cluster. + * + * @return builder + * + */ + public Builder datastore(@Nullable Output datastore) { + $.datastore = datastore; + return this; + } + + /** + * @param datastore The name of the vCenter datastore for the admin cluster. + * + * @return builder + * + */ + public Builder datastore(String datastore) { + return datastore(Output.of(datastore)); + } + + /** + * @param folder The name of the vCenter folder for the admin cluster. + * + * @return builder + * + */ + public Builder folder(@Nullable Output folder) { + $.folder = folder; + return this; + } + + /** + * @param folder The name of the vCenter folder for the admin cluster. + * + * @return builder + * + */ + public Builder folder(String folder) { + return folder(Output.of(folder)); + } + + /** + * @param resourcePool The name of the vCenter resource pool for the admin cluster. + * + * @return builder + * + */ + public Builder resourcePool(@Nullable Output resourcePool) { + $.resourcePool = resourcePool; + return this; + } + + /** + * @param resourcePool The name of the vCenter resource pool for the admin cluster. + * + * @return builder + * + */ + public Builder resourcePool(String resourcePool) { + return resourcePool(Output.of(resourcePool)); + } + + /** + * @param storagePolicyName The name of the vCenter storage policy for the user cluster. + * + * @return builder + * + */ + public Builder storagePolicyName(@Nullable Output storagePolicyName) { + $.storagePolicyName = storagePolicyName; + return this; + } + + /** + * @param storagePolicyName The name of the vCenter storage policy for the user cluster. + * + * @return builder + * + */ + public Builder storagePolicyName(String storagePolicyName) { + return storagePolicyName(Output.of(storagePolicyName)); + } + + public VmwareAdminClusterVcenterArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterAddonNode.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterAddonNode.java new file mode 100644 index 0000000000..cefc9793a0 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterAddonNode.java @@ -0,0 +1,59 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterAddonNodeAutoResizeConfig; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class VmwareAdminClusterAddonNode { + /** + * @return Specifies auto resize config. + * Structure is documented below. + * + */ + private @Nullable VmwareAdminClusterAddonNodeAutoResizeConfig autoResizeConfig; + + private VmwareAdminClusterAddonNode() {} + /** + * @return Specifies auto resize config. + * Structure is documented below. + * + */ + public Optional autoResizeConfig() { + return Optional.ofNullable(this.autoResizeConfig); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterAddonNode defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable VmwareAdminClusterAddonNodeAutoResizeConfig autoResizeConfig; + public Builder() {} + public Builder(VmwareAdminClusterAddonNode defaults) { + Objects.requireNonNull(defaults); + this.autoResizeConfig = defaults.autoResizeConfig; + } + + @CustomType.Setter + public Builder autoResizeConfig(@Nullable VmwareAdminClusterAddonNodeAutoResizeConfig autoResizeConfig) { + + this.autoResizeConfig = autoResizeConfig; + return this; + } + public VmwareAdminClusterAddonNode build() { + final var _resultValue = new VmwareAdminClusterAddonNode(); + _resultValue.autoResizeConfig = autoResizeConfig; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterAddonNodeAutoResizeConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterAddonNodeAutoResizeConfig.java new file mode 100644 index 0000000000..d5df787c95 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterAddonNodeAutoResizeConfig.java @@ -0,0 +1,58 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; +import java.util.Objects; + +@CustomType +public final class VmwareAdminClusterAddonNodeAutoResizeConfig { + /** + * @return Whether to enable controle plane node auto resizing. + * + */ + private Boolean enabled; + + private VmwareAdminClusterAddonNodeAutoResizeConfig() {} + /** + * @return Whether to enable controle plane node auto resizing. + * + */ + public Boolean enabled() { + return this.enabled; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterAddonNodeAutoResizeConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private Boolean enabled; + public Builder() {} + public Builder(VmwareAdminClusterAddonNodeAutoResizeConfig defaults) { + Objects.requireNonNull(defaults); + this.enabled = defaults.enabled; + } + + @CustomType.Setter + public Builder enabled(Boolean enabled) { + if (enabled == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterAddonNodeAutoResizeConfig", "enabled"); + } + this.enabled = enabled; + return this; + } + public VmwareAdminClusterAddonNodeAutoResizeConfig build() { + final var _resultValue = new VmwareAdminClusterAddonNodeAutoResizeConfig(); + _resultValue.enabled = enabled; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterAntiAffinityGroups.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterAntiAffinityGroups.java new file mode 100644 index 0000000000..c07117af40 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterAntiAffinityGroups.java @@ -0,0 +1,62 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; +import java.util.Objects; + +@CustomType +public final class VmwareAdminClusterAntiAffinityGroups { + /** + * @return Spread nodes across at least three physical hosts (requires at least three + * hosts). + * Enabled by default. + * + */ + private Boolean aagConfigDisabled; + + private VmwareAdminClusterAntiAffinityGroups() {} + /** + * @return Spread nodes across at least three physical hosts (requires at least three + * hosts). + * Enabled by default. + * + */ + public Boolean aagConfigDisabled() { + return this.aagConfigDisabled; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterAntiAffinityGroups defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private Boolean aagConfigDisabled; + public Builder() {} + public Builder(VmwareAdminClusterAntiAffinityGroups defaults) { + Objects.requireNonNull(defaults); + this.aagConfigDisabled = defaults.aagConfigDisabled; + } + + @CustomType.Setter + public Builder aagConfigDisabled(Boolean aagConfigDisabled) { + if (aagConfigDisabled == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterAntiAffinityGroups", "aagConfigDisabled"); + } + this.aagConfigDisabled = aagConfigDisabled; + return this; + } + public VmwareAdminClusterAntiAffinityGroups build() { + final var _resultValue = new VmwareAdminClusterAntiAffinityGroups(); + _resultValue.aagConfigDisabled = aagConfigDisabled; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterAuthorization.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterAuthorization.java new file mode 100644 index 0000000000..a112cd1bd7 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterAuthorization.java @@ -0,0 +1,64 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterAuthorizationViewerUser; +import java.util.List; +import java.util.Objects; +import javax.annotation.Nullable; + +@CustomType +public final class VmwareAdminClusterAuthorization { + /** + * @return Users that will be granted the cluster-admin role on the cluster, providing + * full access to the cluster. + * Structure is documented below. + * + */ + private @Nullable List viewerUsers; + + private VmwareAdminClusterAuthorization() {} + /** + * @return Users that will be granted the cluster-admin role on the cluster, providing + * full access to the cluster. + * Structure is documented below. + * + */ + public List viewerUsers() { + return this.viewerUsers == null ? List.of() : this.viewerUsers; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterAuthorization defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable List viewerUsers; + public Builder() {} + public Builder(VmwareAdminClusterAuthorization defaults) { + Objects.requireNonNull(defaults); + this.viewerUsers = defaults.viewerUsers; + } + + @CustomType.Setter + public Builder viewerUsers(@Nullable List viewerUsers) { + + this.viewerUsers = viewerUsers; + return this; + } + public Builder viewerUsers(VmwareAdminClusterAuthorizationViewerUser... viewerUsers) { + return viewerUsers(List.of(viewerUsers)); + } + public VmwareAdminClusterAuthorization build() { + final var _resultValue = new VmwareAdminClusterAuthorization(); + _resultValue.viewerUsers = viewerUsers; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterAuthorizationViewerUser.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterAuthorizationViewerUser.java new file mode 100644 index 0000000000..2107950b95 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterAuthorizationViewerUser.java @@ -0,0 +1,58 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class VmwareAdminClusterAuthorizationViewerUser { + /** + * @return The name of the user, e.g. `my-gcp-id{@literal @}gmail.com`. + * + */ + private String username; + + private VmwareAdminClusterAuthorizationViewerUser() {} + /** + * @return The name of the user, e.g. `my-gcp-id{@literal @}gmail.com`. + * + */ + public String username() { + return this.username; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterAuthorizationViewerUser defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String username; + public Builder() {} + public Builder(VmwareAdminClusterAuthorizationViewerUser defaults) { + Objects.requireNonNull(defaults); + this.username = defaults.username; + } + + @CustomType.Setter + public Builder username(String username) { + if (username == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterAuthorizationViewerUser", "username"); + } + this.username = username; + return this; + } + public VmwareAdminClusterAuthorizationViewerUser build() { + final var _resultValue = new VmwareAdminClusterAuthorizationViewerUser(); + _resultValue.username = username; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterAutoRepairConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterAutoRepairConfig.java new file mode 100644 index 0000000000..0df4c4d45b --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterAutoRepairConfig.java @@ -0,0 +1,58 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; +import java.util.Objects; + +@CustomType +public final class VmwareAdminClusterAutoRepairConfig { + /** + * @return Whether auto repair is enabled. + * + */ + private Boolean enabled; + + private VmwareAdminClusterAutoRepairConfig() {} + /** + * @return Whether auto repair is enabled. + * + */ + public Boolean enabled() { + return this.enabled; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterAutoRepairConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private Boolean enabled; + public Builder() {} + public Builder(VmwareAdminClusterAutoRepairConfig defaults) { + Objects.requireNonNull(defaults); + this.enabled = defaults.enabled; + } + + @CustomType.Setter + public Builder enabled(Boolean enabled) { + if (enabled == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterAutoRepairConfig", "enabled"); + } + this.enabled = enabled; + return this; + } + public VmwareAdminClusterAutoRepairConfig build() { + final var _resultValue = new VmwareAdminClusterAutoRepairConfig(); + _resultValue.enabled = enabled; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterControlPlaneNode.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterControlPlaneNode.java new file mode 100644 index 0000000000..bc2e80f066 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterControlPlaneNode.java @@ -0,0 +1,99 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.Integer; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class VmwareAdminClusterControlPlaneNode { + /** + * @return The number of vCPUs for the control-plane node of the admin cluster. + * + */ + private @Nullable Integer cpus; + /** + * @return The number of mebibytes of memory for the control-plane node of the admin cluster. + * + */ + private @Nullable Integer memory; + /** + * @return The number of control plane nodes for this VMware admin cluster. + * + */ + private @Nullable Integer replicas; + + private VmwareAdminClusterControlPlaneNode() {} + /** + * @return The number of vCPUs for the control-plane node of the admin cluster. + * + */ + public Optional cpus() { + return Optional.ofNullable(this.cpus); + } + /** + * @return The number of mebibytes of memory for the control-plane node of the admin cluster. + * + */ + public Optional memory() { + return Optional.ofNullable(this.memory); + } + /** + * @return The number of control plane nodes for this VMware admin cluster. + * + */ + public Optional replicas() { + return Optional.ofNullable(this.replicas); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterControlPlaneNode defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable Integer cpus; + private @Nullable Integer memory; + private @Nullable Integer replicas; + public Builder() {} + public Builder(VmwareAdminClusterControlPlaneNode defaults) { + Objects.requireNonNull(defaults); + this.cpus = defaults.cpus; + this.memory = defaults.memory; + this.replicas = defaults.replicas; + } + + @CustomType.Setter + public Builder cpus(@Nullable Integer cpus) { + + this.cpus = cpus; + return this; + } + @CustomType.Setter + public Builder memory(@Nullable Integer memory) { + + this.memory = memory; + return this; + } + @CustomType.Setter + public Builder replicas(@Nullable Integer replicas) { + + this.replicas = replicas; + return this; + } + public VmwareAdminClusterControlPlaneNode build() { + final var _resultValue = new VmwareAdminClusterControlPlaneNode(); + _resultValue.cpus = cpus; + _resultValue.memory = memory; + _resultValue.replicas = replicas; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterFleet.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterFleet.java new file mode 100644 index 0000000000..056869417a --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterFleet.java @@ -0,0 +1,63 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class VmwareAdminClusterFleet { + /** + * @return (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>`. + * + */ + private @Nullable String membership; + + private VmwareAdminClusterFleet() {} + /** + * @return (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>`. + * + */ + public Optional membership() { + return Optional.ofNullable(this.membership); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterFleet defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String membership; + public Builder() {} + public Builder(VmwareAdminClusterFleet defaults) { + Objects.requireNonNull(defaults); + this.membership = defaults.membership; + } + + @CustomType.Setter + public Builder membership(@Nullable String membership) { + + this.membership = membership; + return this; + } + public VmwareAdminClusterFleet build() { + final var _resultValue = new VmwareAdminClusterFleet(); + _resultValue.membership = membership; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterLoadBalancer.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterLoadBalancer.java new file mode 100644 index 0000000000..44929d723e --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterLoadBalancer.java @@ -0,0 +1,134 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterLoadBalancerF5Config; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterLoadBalancerManualLbConfig; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterLoadBalancerMetalLbConfig; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterLoadBalancerVipConfig; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class VmwareAdminClusterLoadBalancer { + /** + * @return Configuration for F5 Big IP typed load balancers. + * Structure is documented below. + * + */ + private @Nullable VmwareAdminClusterLoadBalancerF5Config f5Config; + /** + * @return Manually configured load balancers. + * Structure is documented below. + * + */ + private @Nullable VmwareAdminClusterLoadBalancerManualLbConfig manualLbConfig; + /** + * @return Metal LB load balancers. + * Structure is documented below. + * + */ + private @Nullable VmwareAdminClusterLoadBalancerMetalLbConfig metalLbConfig; + /** + * @return Specified the VMware Load Balancer Config + * Structure is documented below. + * + */ + private VmwareAdminClusterLoadBalancerVipConfig vipConfig; + + private VmwareAdminClusterLoadBalancer() {} + /** + * @return Configuration for F5 Big IP typed load balancers. + * Structure is documented below. + * + */ + public Optional f5Config() { + return Optional.ofNullable(this.f5Config); + } + /** + * @return Manually configured load balancers. + * Structure is documented below. + * + */ + public Optional manualLbConfig() { + return Optional.ofNullable(this.manualLbConfig); + } + /** + * @return Metal LB load balancers. + * Structure is documented below. + * + */ + public Optional metalLbConfig() { + return Optional.ofNullable(this.metalLbConfig); + } + /** + * @return Specified the VMware Load Balancer Config + * Structure is documented below. + * + */ + public VmwareAdminClusterLoadBalancerVipConfig vipConfig() { + return this.vipConfig; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterLoadBalancer defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable VmwareAdminClusterLoadBalancerF5Config f5Config; + private @Nullable VmwareAdminClusterLoadBalancerManualLbConfig manualLbConfig; + private @Nullable VmwareAdminClusterLoadBalancerMetalLbConfig metalLbConfig; + private VmwareAdminClusterLoadBalancerVipConfig vipConfig; + public Builder() {} + public Builder(VmwareAdminClusterLoadBalancer defaults) { + Objects.requireNonNull(defaults); + this.f5Config = defaults.f5Config; + this.manualLbConfig = defaults.manualLbConfig; + this.metalLbConfig = defaults.metalLbConfig; + this.vipConfig = defaults.vipConfig; + } + + @CustomType.Setter + public Builder f5Config(@Nullable VmwareAdminClusterLoadBalancerF5Config f5Config) { + + this.f5Config = f5Config; + return this; + } + @CustomType.Setter + public Builder manualLbConfig(@Nullable VmwareAdminClusterLoadBalancerManualLbConfig manualLbConfig) { + + this.manualLbConfig = manualLbConfig; + return this; + } + @CustomType.Setter + public Builder metalLbConfig(@Nullable VmwareAdminClusterLoadBalancerMetalLbConfig metalLbConfig) { + + this.metalLbConfig = metalLbConfig; + return this; + } + @CustomType.Setter + public Builder vipConfig(VmwareAdminClusterLoadBalancerVipConfig vipConfig) { + if (vipConfig == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterLoadBalancer", "vipConfig"); + } + this.vipConfig = vipConfig; + return this; + } + public VmwareAdminClusterLoadBalancer build() { + final var _resultValue = new VmwareAdminClusterLoadBalancer(); + _resultValue.f5Config = f5Config; + _resultValue.manualLbConfig = manualLbConfig; + _resultValue.metalLbConfig = metalLbConfig; + _resultValue.vipConfig = vipConfig; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterLoadBalancerF5Config.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterLoadBalancerF5Config.java new file mode 100644 index 0000000000..31d14c3fcc --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterLoadBalancerF5Config.java @@ -0,0 +1,103 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class VmwareAdminClusterLoadBalancerF5Config { + /** + * @return The load balancer's IP address. + * + */ + private @Nullable String address; + /** + * @return 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'. + * + */ + private @Nullable String partition; + /** + * @return The pool name. Only necessary, if using SNAT. + * + */ + private @Nullable String snatPool; + + private VmwareAdminClusterLoadBalancerF5Config() {} + /** + * @return The load balancer's IP address. + * + */ + public Optional address() { + return Optional.ofNullable(this.address); + } + /** + * @return 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'. + * + */ + public Optional partition() { + return Optional.ofNullable(this.partition); + } + /** + * @return The pool name. Only necessary, if using SNAT. + * + */ + public Optional snatPool() { + return Optional.ofNullable(this.snatPool); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterLoadBalancerF5Config defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String address; + private @Nullable String partition; + private @Nullable String snatPool; + public Builder() {} + public Builder(VmwareAdminClusterLoadBalancerF5Config defaults) { + Objects.requireNonNull(defaults); + this.address = defaults.address; + this.partition = defaults.partition; + this.snatPool = defaults.snatPool; + } + + @CustomType.Setter + public Builder address(@Nullable String address) { + + this.address = address; + return this; + } + @CustomType.Setter + public Builder partition(@Nullable String partition) { + + this.partition = partition; + return this; + } + @CustomType.Setter + public Builder snatPool(@Nullable String snatPool) { + + this.snatPool = snatPool; + return this; + } + public VmwareAdminClusterLoadBalancerF5Config build() { + final var _resultValue = new VmwareAdminClusterLoadBalancerF5Config(); + _resultValue.address = address; + _resultValue.partition = partition; + _resultValue.snatPool = snatPool; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterLoadBalancerManualLbConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterLoadBalancerManualLbConfig.java new file mode 100644 index 0000000000..7710f85064 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterLoadBalancerManualLbConfig.java @@ -0,0 +1,149 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.Integer; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class VmwareAdminClusterLoadBalancerManualLbConfig { + /** + * @return NodePort for add-ons server in the admin cluster. + * + */ + private @Nullable Integer addonsNodePort; + /** + * @return NodePort for control plane service. The Kubernetes API server in the admin + * cluster is implemented as a Service of type NodePort (ex. 30968). + * + */ + private @Nullable Integer controlPlaneNodePort; + /** + * @return NodePort for ingress service's http. The ingress service in the admin + * cluster is implemented as a Service of type NodePort (ex. 32527). + * + */ + private @Nullable Integer ingressHttpNodePort; + /** + * @return NodePort for ingress service's https. The ingress service in the admin + * cluster is implemented as a Service of type NodePort (ex. 30139). + * + */ + private @Nullable Integer ingressHttpsNodePort; + /** + * @return NodePort for konnectivity server service running as a sidecar in each + * kube-apiserver pod (ex. 30564). + * + */ + private @Nullable Integer konnectivityServerNodePort; + + private VmwareAdminClusterLoadBalancerManualLbConfig() {} + /** + * @return NodePort for add-ons server in the admin cluster. + * + */ + public Optional addonsNodePort() { + return Optional.ofNullable(this.addonsNodePort); + } + /** + * @return NodePort for control plane service. The Kubernetes API server in the admin + * cluster is implemented as a Service of type NodePort (ex. 30968). + * + */ + public Optional controlPlaneNodePort() { + return Optional.ofNullable(this.controlPlaneNodePort); + } + /** + * @return NodePort for ingress service's http. The ingress service in the admin + * cluster is implemented as a Service of type NodePort (ex. 32527). + * + */ + public Optional ingressHttpNodePort() { + return Optional.ofNullable(this.ingressHttpNodePort); + } + /** + * @return NodePort for ingress service's https. The ingress service in the admin + * cluster is implemented as a Service of type NodePort (ex. 30139). + * + */ + public Optional ingressHttpsNodePort() { + return Optional.ofNullable(this.ingressHttpsNodePort); + } + /** + * @return NodePort for konnectivity server service running as a sidecar in each + * kube-apiserver pod (ex. 30564). + * + */ + public Optional konnectivityServerNodePort() { + return Optional.ofNullable(this.konnectivityServerNodePort); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterLoadBalancerManualLbConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable Integer addonsNodePort; + private @Nullable Integer controlPlaneNodePort; + private @Nullable Integer ingressHttpNodePort; + private @Nullable Integer ingressHttpsNodePort; + private @Nullable Integer konnectivityServerNodePort; + public Builder() {} + public Builder(VmwareAdminClusterLoadBalancerManualLbConfig defaults) { + Objects.requireNonNull(defaults); + this.addonsNodePort = defaults.addonsNodePort; + this.controlPlaneNodePort = defaults.controlPlaneNodePort; + this.ingressHttpNodePort = defaults.ingressHttpNodePort; + this.ingressHttpsNodePort = defaults.ingressHttpsNodePort; + this.konnectivityServerNodePort = defaults.konnectivityServerNodePort; + } + + @CustomType.Setter + public Builder addonsNodePort(@Nullable Integer addonsNodePort) { + + this.addonsNodePort = addonsNodePort; + return this; + } + @CustomType.Setter + public Builder controlPlaneNodePort(@Nullable Integer controlPlaneNodePort) { + + this.controlPlaneNodePort = controlPlaneNodePort; + return this; + } + @CustomType.Setter + public Builder ingressHttpNodePort(@Nullable Integer ingressHttpNodePort) { + + this.ingressHttpNodePort = ingressHttpNodePort; + return this; + } + @CustomType.Setter + public Builder ingressHttpsNodePort(@Nullable Integer ingressHttpsNodePort) { + + this.ingressHttpsNodePort = ingressHttpsNodePort; + return this; + } + @CustomType.Setter + public Builder konnectivityServerNodePort(@Nullable Integer konnectivityServerNodePort) { + + this.konnectivityServerNodePort = konnectivityServerNodePort; + return this; + } + public VmwareAdminClusterLoadBalancerManualLbConfig build() { + final var _resultValue = new VmwareAdminClusterLoadBalancerManualLbConfig(); + _resultValue.addonsNodePort = addonsNodePort; + _resultValue.controlPlaneNodePort = controlPlaneNodePort; + _resultValue.ingressHttpNodePort = ingressHttpNodePort; + _resultValue.ingressHttpsNodePort = ingressHttpsNodePort; + _resultValue.konnectivityServerNodePort = konnectivityServerNodePort; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterLoadBalancerMetalLbConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterLoadBalancerMetalLbConfig.java new file mode 100644 index 0000000000..d2e6a714ba --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterLoadBalancerMetalLbConfig.java @@ -0,0 +1,57 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.Boolean; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class VmwareAdminClusterLoadBalancerMetalLbConfig { + /** + * @return Metal LB is enabled. + * + */ + private @Nullable Boolean enabled; + + private VmwareAdminClusterLoadBalancerMetalLbConfig() {} + /** + * @return Metal LB is enabled. + * + */ + public Optional enabled() { + return Optional.ofNullable(this.enabled); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterLoadBalancerMetalLbConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable Boolean enabled; + public Builder() {} + public Builder(VmwareAdminClusterLoadBalancerMetalLbConfig defaults) { + Objects.requireNonNull(defaults); + this.enabled = defaults.enabled; + } + + @CustomType.Setter + public Builder enabled(@Nullable Boolean enabled) { + + this.enabled = enabled; + return this; + } + public VmwareAdminClusterLoadBalancerMetalLbConfig build() { + final var _resultValue = new VmwareAdminClusterLoadBalancerMetalLbConfig(); + _resultValue.enabled = enabled; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterLoadBalancerVipConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterLoadBalancerVipConfig.java new file mode 100644 index 0000000000..48273f8049 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterLoadBalancerVipConfig.java @@ -0,0 +1,87 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class VmwareAdminClusterLoadBalancerVipConfig { + /** + * @return The VIP to configure the load balancer for add-ons. + * + * <a name="nested_f5_config"></a>The `f5_config` block supports: + * + */ + private @Nullable String addonsVip; + /** + * @return The VIP which you previously set aside for the Kubernetes + * API of this VMware Admin Cluster. + * + */ + private String controlPlaneVip; + + private VmwareAdminClusterLoadBalancerVipConfig() {} + /** + * @return The VIP to configure the load balancer for add-ons. + * + * <a name="nested_f5_config"></a>The `f5_config` block supports: + * + */ + public Optional addonsVip() { + return Optional.ofNullable(this.addonsVip); + } + /** + * @return The VIP which you previously set aside for the Kubernetes + * API of this VMware Admin Cluster. + * + */ + public String controlPlaneVip() { + return this.controlPlaneVip; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterLoadBalancerVipConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String addonsVip; + private String controlPlaneVip; + public Builder() {} + public Builder(VmwareAdminClusterLoadBalancerVipConfig defaults) { + Objects.requireNonNull(defaults); + this.addonsVip = defaults.addonsVip; + this.controlPlaneVip = defaults.controlPlaneVip; + } + + @CustomType.Setter + public Builder addonsVip(@Nullable String addonsVip) { + + this.addonsVip = addonsVip; + return this; + } + @CustomType.Setter + public Builder controlPlaneVip(String controlPlaneVip) { + if (controlPlaneVip == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterLoadBalancerVipConfig", "controlPlaneVip"); + } + this.controlPlaneVip = controlPlaneVip; + return this; + } + public VmwareAdminClusterLoadBalancerVipConfig build() { + final var _resultValue = new VmwareAdminClusterLoadBalancerVipConfig(); + _resultValue.addonsVip = addonsVip; + _resultValue.controlPlaneVip = controlPlaneVip; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterNetworkConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterNetworkConfig.java new file mode 100644 index 0000000000..d970998358 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterNetworkConfig.java @@ -0,0 +1,213 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterNetworkConfigDhcpIpConfig; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterNetworkConfigHaControlPlaneConfig; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterNetworkConfigHostConfig; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterNetworkConfigStaticIpConfig; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class VmwareAdminClusterNetworkConfig { + /** + * @return Configuration settings for a DHCP IP configuration. + * Structure is documented below. + * + */ + private @Nullable VmwareAdminClusterNetworkConfigDhcpIpConfig dhcpIpConfig; + /** + * @return Configuration for HA admin cluster control plane. + * Structure is documented below. + * + */ + private @Nullable VmwareAdminClusterNetworkConfigHaControlPlaneConfig haControlPlaneConfig; + /** + * @return Represents common network settings irrespective of the host's IP address. + * Structure is documented below. + * + */ + private @Nullable VmwareAdminClusterNetworkConfigHostConfig hostConfig; + /** + * @return 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. + * + */ + private List podAddressCidrBlocks; + /** + * @return 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. + * + */ + private List serviceAddressCidrBlocks; + /** + * @return Configuration settings for a static IP configuration. + * Structure is documented below. + * + */ + private @Nullable VmwareAdminClusterNetworkConfigStaticIpConfig staticIpConfig; + /** + * @return vcenter_network specifies vCenter network name. + * + */ + private @Nullable String vcenterNetwork; + + private VmwareAdminClusterNetworkConfig() {} + /** + * @return Configuration settings for a DHCP IP configuration. + * Structure is documented below. + * + */ + public Optional dhcpIpConfig() { + return Optional.ofNullable(this.dhcpIpConfig); + } + /** + * @return Configuration for HA admin cluster control plane. + * Structure is documented below. + * + */ + public Optional haControlPlaneConfig() { + return Optional.ofNullable(this.haControlPlaneConfig); + } + /** + * @return Represents common network settings irrespective of the host's IP address. + * Structure is documented below. + * + */ + public Optional hostConfig() { + return Optional.ofNullable(this.hostConfig); + } + /** + * @return 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 List podAddressCidrBlocks() { + return this.podAddressCidrBlocks; + } + /** + * @return 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 List serviceAddressCidrBlocks() { + return this.serviceAddressCidrBlocks; + } + /** + * @return Configuration settings for a static IP configuration. + * Structure is documented below. + * + */ + public Optional staticIpConfig() { + return Optional.ofNullable(this.staticIpConfig); + } + /** + * @return vcenter_network specifies vCenter network name. + * + */ + public Optional vcenterNetwork() { + return Optional.ofNullable(this.vcenterNetwork); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterNetworkConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable VmwareAdminClusterNetworkConfigDhcpIpConfig dhcpIpConfig; + private @Nullable VmwareAdminClusterNetworkConfigHaControlPlaneConfig haControlPlaneConfig; + private @Nullable VmwareAdminClusterNetworkConfigHostConfig hostConfig; + private List podAddressCidrBlocks; + private List serviceAddressCidrBlocks; + private @Nullable VmwareAdminClusterNetworkConfigStaticIpConfig staticIpConfig; + private @Nullable String vcenterNetwork; + public Builder() {} + public Builder(VmwareAdminClusterNetworkConfig defaults) { + Objects.requireNonNull(defaults); + this.dhcpIpConfig = defaults.dhcpIpConfig; + this.haControlPlaneConfig = defaults.haControlPlaneConfig; + this.hostConfig = defaults.hostConfig; + this.podAddressCidrBlocks = defaults.podAddressCidrBlocks; + this.serviceAddressCidrBlocks = defaults.serviceAddressCidrBlocks; + this.staticIpConfig = defaults.staticIpConfig; + this.vcenterNetwork = defaults.vcenterNetwork; + } + + @CustomType.Setter + public Builder dhcpIpConfig(@Nullable VmwareAdminClusterNetworkConfigDhcpIpConfig dhcpIpConfig) { + + this.dhcpIpConfig = dhcpIpConfig; + return this; + } + @CustomType.Setter + public Builder haControlPlaneConfig(@Nullable VmwareAdminClusterNetworkConfigHaControlPlaneConfig haControlPlaneConfig) { + + this.haControlPlaneConfig = haControlPlaneConfig; + return this; + } + @CustomType.Setter + public Builder hostConfig(@Nullable VmwareAdminClusterNetworkConfigHostConfig hostConfig) { + + this.hostConfig = hostConfig; + return this; + } + @CustomType.Setter + public Builder podAddressCidrBlocks(List podAddressCidrBlocks) { + if (podAddressCidrBlocks == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterNetworkConfig", "podAddressCidrBlocks"); + } + this.podAddressCidrBlocks = podAddressCidrBlocks; + return this; + } + public Builder podAddressCidrBlocks(String... podAddressCidrBlocks) { + return podAddressCidrBlocks(List.of(podAddressCidrBlocks)); + } + @CustomType.Setter + public Builder serviceAddressCidrBlocks(List serviceAddressCidrBlocks) { + if (serviceAddressCidrBlocks == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterNetworkConfig", "serviceAddressCidrBlocks"); + } + this.serviceAddressCidrBlocks = serviceAddressCidrBlocks; + return this; + } + public Builder serviceAddressCidrBlocks(String... serviceAddressCidrBlocks) { + return serviceAddressCidrBlocks(List.of(serviceAddressCidrBlocks)); + } + @CustomType.Setter + public Builder staticIpConfig(@Nullable VmwareAdminClusterNetworkConfigStaticIpConfig staticIpConfig) { + + this.staticIpConfig = staticIpConfig; + return this; + } + @CustomType.Setter + public Builder vcenterNetwork(@Nullable String vcenterNetwork) { + + this.vcenterNetwork = vcenterNetwork; + return this; + } + public VmwareAdminClusterNetworkConfig build() { + final var _resultValue = new VmwareAdminClusterNetworkConfig(); + _resultValue.dhcpIpConfig = dhcpIpConfig; + _resultValue.haControlPlaneConfig = haControlPlaneConfig; + _resultValue.hostConfig = hostConfig; + _resultValue.podAddressCidrBlocks = podAddressCidrBlocks; + _resultValue.serviceAddressCidrBlocks = serviceAddressCidrBlocks; + _resultValue.staticIpConfig = staticIpConfig; + _resultValue.vcenterNetwork = vcenterNetwork; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterNetworkConfigDhcpIpConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterNetworkConfigDhcpIpConfig.java new file mode 100644 index 0000000000..f23288958d --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterNetworkConfigDhcpIpConfig.java @@ -0,0 +1,60 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; +import java.util.Objects; + +@CustomType +public final class VmwareAdminClusterNetworkConfigDhcpIpConfig { + /** + * @return enabled is a flag to mark if DHCP IP allocation is + * used for VMware admin clusters. + * + */ + private Boolean enabled; + + private VmwareAdminClusterNetworkConfigDhcpIpConfig() {} + /** + * @return enabled is a flag to mark if DHCP IP allocation is + * used for VMware admin clusters. + * + */ + public Boolean enabled() { + return this.enabled; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterNetworkConfigDhcpIpConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private Boolean enabled; + public Builder() {} + public Builder(VmwareAdminClusterNetworkConfigDhcpIpConfig defaults) { + Objects.requireNonNull(defaults); + this.enabled = defaults.enabled; + } + + @CustomType.Setter + public Builder enabled(Boolean enabled) { + if (enabled == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterNetworkConfigDhcpIpConfig", "enabled"); + } + this.enabled = enabled; + return this; + } + public VmwareAdminClusterNetworkConfigDhcpIpConfig build() { + final var _resultValue = new VmwareAdminClusterNetworkConfigDhcpIpConfig(); + _resultValue.enabled = enabled; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfig.java new file mode 100644 index 0000000000..34821f66a4 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfig.java @@ -0,0 +1,59 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class VmwareAdminClusterNetworkConfigHaControlPlaneConfig { + /** + * @return Static IP addresses for the control plane nodes. + * Structure is documented below. + * + */ + private @Nullable VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock controlPlaneIpBlock; + + private VmwareAdminClusterNetworkConfigHaControlPlaneConfig() {} + /** + * @return Static IP addresses for the control plane nodes. + * Structure is documented below. + * + */ + public Optional controlPlaneIpBlock() { + return Optional.ofNullable(this.controlPlaneIpBlock); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterNetworkConfigHaControlPlaneConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock controlPlaneIpBlock; + public Builder() {} + public Builder(VmwareAdminClusterNetworkConfigHaControlPlaneConfig defaults) { + Objects.requireNonNull(defaults); + this.controlPlaneIpBlock = defaults.controlPlaneIpBlock; + } + + @CustomType.Setter + public Builder controlPlaneIpBlock(@Nullable VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock controlPlaneIpBlock) { + + this.controlPlaneIpBlock = controlPlaneIpBlock; + return this; + } + public VmwareAdminClusterNetworkConfigHaControlPlaneConfig build() { + final var _resultValue = new VmwareAdminClusterNetworkConfigHaControlPlaneConfig(); + _resultValue.controlPlaneIpBlock = controlPlaneIpBlock; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock.java new file mode 100644 index 0000000000..adca61d3b4 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock.java @@ -0,0 +1,111 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp; +import java.lang.String; +import java.util.List; +import java.util.Objects; + +@CustomType +public final class VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock { + /** + * @return The network gateway used by the VMware Admin Cluster. + * + */ + private String gateway; + /** + * @return The node's network configurations used by the VMware Admin Cluster. + * Structure is documented below. + * + */ + private List ips; + /** + * @return The netmask used by the VMware Admin Cluster. + * + */ + private String netmask; + + private VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock() {} + /** + * @return The network gateway used by the VMware Admin Cluster. + * + */ + public String gateway() { + return this.gateway; + } + /** + * @return The node's network configurations used by the VMware Admin Cluster. + * Structure is documented below. + * + */ + public List ips() { + return this.ips; + } + /** + * @return The netmask used by the VMware Admin Cluster. + * + */ + public String netmask() { + return this.netmask; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String gateway; + private List ips; + private String netmask; + public Builder() {} + public Builder(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock defaults) { + Objects.requireNonNull(defaults); + this.gateway = defaults.gateway; + this.ips = defaults.ips; + this.netmask = defaults.netmask; + } + + @CustomType.Setter + public Builder gateway(String gateway) { + if (gateway == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock", "gateway"); + } + this.gateway = gateway; + return this; + } + @CustomType.Setter + public Builder ips(List ips) { + if (ips == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock", "ips"); + } + this.ips = ips; + return this; + } + public Builder ips(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp... ips) { + return ips(List.of(ips)); + } + @CustomType.Setter + public Builder netmask(String netmask) { + if (netmask == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock", "netmask"); + } + this.netmask = netmask; + return this; + } + public VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock build() { + final var _resultValue = new VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock(); + _resultValue.gateway = gateway; + _resultValue.ips = ips; + _resultValue.netmask = netmask; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp.java new file mode 100644 index 0000000000..5dad415e8d --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp.java @@ -0,0 +1,85 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp { + /** + * @return Hostname of the machine. VM's name will be used if this field is empty. + * + * *** + * + */ + private @Nullable String hostname; + /** + * @return IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + * + */ + private String ip; + + private VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp() {} + /** + * @return Hostname of the machine. VM's name will be used if this field is empty. + * + * *** + * + */ + public Optional hostname() { + return Optional.ofNullable(this.hostname); + } + /** + * @return IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + * + */ + public String ip() { + return this.ip; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String hostname; + private String ip; + public Builder() {} + public Builder(VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp defaults) { + Objects.requireNonNull(defaults); + this.hostname = defaults.hostname; + this.ip = defaults.ip; + } + + @CustomType.Setter + public Builder hostname(@Nullable String hostname) { + + this.hostname = hostname; + return this; + } + @CustomType.Setter + public Builder ip(String ip) { + if (ip == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp", "ip"); + } + this.ip = ip; + return this; + } + public VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp build() { + final var _resultValue = new VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp(); + _resultValue.hostname = hostname; + _resultValue.ip = ip; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterNetworkConfigHostConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterNetworkConfigHostConfig.java new file mode 100644 index 0000000000..c357051948 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterNetworkConfigHostConfig.java @@ -0,0 +1,108 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import javax.annotation.Nullable; + +@CustomType +public final class VmwareAdminClusterNetworkConfigHostConfig { + /** + * @return DNS search domains. + * + */ + private @Nullable List dnsSearchDomains; + /** + * @return DNS servers. + * + */ + private @Nullable List dnsServers; + /** + * @return NTP servers. + * + */ + private @Nullable List ntpServers; + + private VmwareAdminClusterNetworkConfigHostConfig() {} + /** + * @return DNS search domains. + * + */ + public List dnsSearchDomains() { + return this.dnsSearchDomains == null ? List.of() : this.dnsSearchDomains; + } + /** + * @return DNS servers. + * + */ + public List dnsServers() { + return this.dnsServers == null ? List.of() : this.dnsServers; + } + /** + * @return NTP servers. + * + */ + public List ntpServers() { + return this.ntpServers == null ? List.of() : this.ntpServers; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterNetworkConfigHostConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable List dnsSearchDomains; + private @Nullable List dnsServers; + private @Nullable List ntpServers; + public Builder() {} + public Builder(VmwareAdminClusterNetworkConfigHostConfig defaults) { + Objects.requireNonNull(defaults); + this.dnsSearchDomains = defaults.dnsSearchDomains; + this.dnsServers = defaults.dnsServers; + this.ntpServers = defaults.ntpServers; + } + + @CustomType.Setter + public Builder dnsSearchDomains(@Nullable List dnsSearchDomains) { + + this.dnsSearchDomains = dnsSearchDomains; + return this; + } + public Builder dnsSearchDomains(String... dnsSearchDomains) { + return dnsSearchDomains(List.of(dnsSearchDomains)); + } + @CustomType.Setter + public Builder dnsServers(@Nullable List dnsServers) { + + this.dnsServers = dnsServers; + return this; + } + public Builder dnsServers(String... dnsServers) { + return dnsServers(List.of(dnsServers)); + } + @CustomType.Setter + public Builder ntpServers(@Nullable List ntpServers) { + + this.ntpServers = ntpServers; + return this; + } + public Builder ntpServers(String... ntpServers) { + return ntpServers(List.of(ntpServers)); + } + public VmwareAdminClusterNetworkConfigHostConfig build() { + final var _resultValue = new VmwareAdminClusterNetworkConfigHostConfig(); + _resultValue.dnsSearchDomains = dnsSearchDomains; + _resultValue.dnsServers = dnsServers; + _resultValue.ntpServers = ntpServers; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterNetworkConfigStaticIpConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterNetworkConfigStaticIpConfig.java new file mode 100644 index 0000000000..ed02a8265f --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterNetworkConfigStaticIpConfig.java @@ -0,0 +1,62 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock; +import java.util.List; +import java.util.Objects; +import javax.annotation.Nullable; + +@CustomType +public final class VmwareAdminClusterNetworkConfigStaticIpConfig { + /** + * @return Represents the configuration values for static IP allocation to nodes. + * Structure is documented below. + * + */ + private @Nullable List ipBlocks; + + private VmwareAdminClusterNetworkConfigStaticIpConfig() {} + /** + * @return Represents the configuration values for static IP allocation to nodes. + * Structure is documented below. + * + */ + public List ipBlocks() { + return this.ipBlocks == null ? List.of() : this.ipBlocks; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterNetworkConfigStaticIpConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable List ipBlocks; + public Builder() {} + public Builder(VmwareAdminClusterNetworkConfigStaticIpConfig defaults) { + Objects.requireNonNull(defaults); + this.ipBlocks = defaults.ipBlocks; + } + + @CustomType.Setter + public Builder ipBlocks(@Nullable List ipBlocks) { + + this.ipBlocks = ipBlocks; + return this; + } + public Builder ipBlocks(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock... ipBlocks) { + return ipBlocks(List.of(ipBlocks)); + } + public VmwareAdminClusterNetworkConfigStaticIpConfig build() { + final var _resultValue = new VmwareAdminClusterNetworkConfigStaticIpConfig(); + _resultValue.ipBlocks = ipBlocks; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock.java new file mode 100644 index 0000000000..e21554fcfb --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock.java @@ -0,0 +1,111 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp; +import java.lang.String; +import java.util.List; +import java.util.Objects; + +@CustomType +public final class VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock { + /** + * @return The network gateway used by the VMware Admin Cluster. + * + */ + private String gateway; + /** + * @return The node's network configurations used by the VMware Admin Cluster. + * Structure is documented below. + * + */ + private List ips; + /** + * @return The netmask used by the VMware Admin Cluster. + * + */ + private String netmask; + + private VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock() {} + /** + * @return The network gateway used by the VMware Admin Cluster. + * + */ + public String gateway() { + return this.gateway; + } + /** + * @return The node's network configurations used by the VMware Admin Cluster. + * Structure is documented below. + * + */ + public List ips() { + return this.ips; + } + /** + * @return The netmask used by the VMware Admin Cluster. + * + */ + public String netmask() { + return this.netmask; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String gateway; + private List ips; + private String netmask; + public Builder() {} + public Builder(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock defaults) { + Objects.requireNonNull(defaults); + this.gateway = defaults.gateway; + this.ips = defaults.ips; + this.netmask = defaults.netmask; + } + + @CustomType.Setter + public Builder gateway(String gateway) { + if (gateway == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock", "gateway"); + } + this.gateway = gateway; + return this; + } + @CustomType.Setter + public Builder ips(List ips) { + if (ips == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock", "ips"); + } + this.ips = ips; + return this; + } + public Builder ips(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp... ips) { + return ips(List.of(ips)); + } + @CustomType.Setter + public Builder netmask(String netmask) { + if (netmask == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock", "netmask"); + } + this.netmask = netmask; + return this; + } + public VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock build() { + final var _resultValue = new VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock(); + _resultValue.gateway = gateway; + _resultValue.ips = ips; + _resultValue.netmask = netmask; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp.java new file mode 100644 index 0000000000..0f9fc5bdb7 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp.java @@ -0,0 +1,85 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp { + /** + * @return Hostname of the machine. VM's name will be used if this field is empty. + * + * *** + * + */ + private @Nullable String hostname; + /** + * @return IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + * + */ + private String ip; + + private VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp() {} + /** + * @return Hostname of the machine. VM's name will be used if this field is empty. + * + * *** + * + */ + public Optional hostname() { + return Optional.ofNullable(this.hostname); + } + /** + * @return IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + * + */ + public String ip() { + return this.ip; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String hostname; + private String ip; + public Builder() {} + public Builder(VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp defaults) { + Objects.requireNonNull(defaults); + this.hostname = defaults.hostname; + this.ip = defaults.ip; + } + + @CustomType.Setter + public Builder hostname(@Nullable String hostname) { + + this.hostname = hostname; + return this; + } + @CustomType.Setter + public Builder ip(String ip) { + if (ip == null) { + throw new MissingRequiredPropertyException("VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp", "ip"); + } + this.ip = ip; + return this; + } + public VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp build() { + final var _resultValue = new VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp(); + _resultValue.hostname = hostname; + _resultValue.ip = ip; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterPlatformConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterPlatformConfig.java new file mode 100644 index 0000000000..31c5cc3501 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterPlatformConfig.java @@ -0,0 +1,151 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterPlatformConfigBundle; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterPlatformConfigStatus; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class VmwareAdminClusterPlatformConfig { + /** + * @return (Output) + * The list of bundles installed in the admin cluster. + * Structure is documented below. + * + */ + private @Nullable List bundles; + /** + * @return (Output) + * The platform version e.g. 1.13.2. + * + */ + private @Nullable String platformVersion; + /** + * @return The required platform version e.g. 1.13.1. + * If the current platform version is lower than the target version, + * the platform version will be updated to the target version. + * If the target version is not installed in the platform + * (bundle versions), download the target version bundle. + * + */ + private @Nullable String requiredPlatformVersion; + /** + * @return (Output) + * ResourceStatus representing detailed cluster state. + * Structure is documented below. + * + * <a name="nested_status"></a>The `status` block contains: + * + */ + private @Nullable List statuses; + + private VmwareAdminClusterPlatformConfig() {} + /** + * @return (Output) + * The list of bundles installed in the admin cluster. + * Structure is documented below. + * + */ + public List bundles() { + return this.bundles == null ? List.of() : this.bundles; + } + /** + * @return (Output) + * The platform version e.g. 1.13.2. + * + */ + public Optional platformVersion() { + return Optional.ofNullable(this.platformVersion); + } + /** + * @return The required platform version e.g. 1.13.1. + * If the current platform version is lower than the target version, + * the platform version will be updated to the target version. + * If the target version is not installed in the platform + * (bundle versions), download the target version bundle. + * + */ + public Optional requiredPlatformVersion() { + return Optional.ofNullable(this.requiredPlatformVersion); + } + /** + * @return (Output) + * ResourceStatus representing detailed cluster state. + * Structure is documented below. + * + * <a name="nested_status"></a>The `status` block contains: + * + */ + public List statuses() { + return this.statuses == null ? List.of() : this.statuses; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterPlatformConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable List bundles; + private @Nullable String platformVersion; + private @Nullable String requiredPlatformVersion; + private @Nullable List statuses; + public Builder() {} + public Builder(VmwareAdminClusterPlatformConfig defaults) { + Objects.requireNonNull(defaults); + this.bundles = defaults.bundles; + this.platformVersion = defaults.platformVersion; + this.requiredPlatformVersion = defaults.requiredPlatformVersion; + this.statuses = defaults.statuses; + } + + @CustomType.Setter + public Builder bundles(@Nullable List bundles) { + + this.bundles = bundles; + return this; + } + public Builder bundles(VmwareAdminClusterPlatformConfigBundle... bundles) { + return bundles(List.of(bundles)); + } + @CustomType.Setter + public Builder platformVersion(@Nullable String platformVersion) { + + this.platformVersion = platformVersion; + return this; + } + @CustomType.Setter + public Builder requiredPlatformVersion(@Nullable String requiredPlatformVersion) { + + this.requiredPlatformVersion = requiredPlatformVersion; + return this; + } + @CustomType.Setter + public Builder statuses(@Nullable List statuses) { + + this.statuses = statuses; + return this; + } + public Builder statuses(VmwareAdminClusterPlatformConfigStatus... statuses) { + return statuses(List.of(statuses)); + } + public VmwareAdminClusterPlatformConfig build() { + final var _resultValue = new VmwareAdminClusterPlatformConfig(); + _resultValue.bundles = bundles; + _resultValue.platformVersion = platformVersion; + _resultValue.requiredPlatformVersion = requiredPlatformVersion; + _resultValue.statuses = statuses; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterPlatformConfigBundle.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterPlatformConfigBundle.java new file mode 100644 index 0000000000..0cb417ece7 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterPlatformConfigBundle.java @@ -0,0 +1,85 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterPlatformConfigBundleStatus; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class VmwareAdminClusterPlatformConfigBundle { + /** + * @return ResourceStatus representing detailed cluster state. + * Structure is documented below. + * + */ + private @Nullable List statuses; + /** + * @return The version of the bundle. + * + */ + private @Nullable String version; + + private VmwareAdminClusterPlatformConfigBundle() {} + /** + * @return ResourceStatus representing detailed cluster state. + * Structure is documented below. + * + */ + public List statuses() { + return this.statuses == null ? List.of() : this.statuses; + } + /** + * @return The version of the bundle. + * + */ + public Optional version() { + return Optional.ofNullable(this.version); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterPlatformConfigBundle defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable List statuses; + private @Nullable String version; + public Builder() {} + public Builder(VmwareAdminClusterPlatformConfigBundle defaults) { + Objects.requireNonNull(defaults); + this.statuses = defaults.statuses; + this.version = defaults.version; + } + + @CustomType.Setter + public Builder statuses(@Nullable List statuses) { + + this.statuses = statuses; + return this; + } + public Builder statuses(VmwareAdminClusterPlatformConfigBundleStatus... statuses) { + return statuses(List.of(statuses)); + } + @CustomType.Setter + public Builder version(@Nullable String version) { + + this.version = version; + return this; + } + public VmwareAdminClusterPlatformConfigBundle build() { + final var _resultValue = new VmwareAdminClusterPlatformConfigBundle(); + _resultValue.statuses = statuses; + _resultValue.version = version; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterPlatformConfigBundleStatus.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterPlatformConfigBundleStatus.java new file mode 100644 index 0000000000..5a0253ae76 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterPlatformConfigBundleStatus.java @@ -0,0 +1,97 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterPlatformConfigBundleStatusCondition; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class VmwareAdminClusterPlatformConfigBundleStatus { + /** + * @return (Output) + * ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + * Structure is documented below. + * + */ + private @Nullable List conditions; + /** + * @return (Output) + * Human-friendly representation of the error message from the admin cluster + * controller. The error message can be temporary as the admin cluster + * controller creates a cluster or node pool. If the error message persists + * for a longer period of time, it can be used to surface error message to + * indicate real problems requiring user intervention. + * + */ + private @Nullable String errorMessage; + + private VmwareAdminClusterPlatformConfigBundleStatus() {} + /** + * @return (Output) + * ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + * Structure is documented below. + * + */ + public List conditions() { + return this.conditions == null ? List.of() : this.conditions; + } + /** + * @return (Output) + * Human-friendly representation of the error message from the admin cluster + * controller. The error message can be temporary as the admin cluster + * controller creates a cluster or node pool. If the error message persists + * for a longer period of time, it can be used to surface error message to + * indicate real problems requiring user intervention. + * + */ + public Optional errorMessage() { + return Optional.ofNullable(this.errorMessage); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterPlatformConfigBundleStatus defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable List conditions; + private @Nullable String errorMessage; + public Builder() {} + public Builder(VmwareAdminClusterPlatformConfigBundleStatus defaults) { + Objects.requireNonNull(defaults); + this.conditions = defaults.conditions; + this.errorMessage = defaults.errorMessage; + } + + @CustomType.Setter + public Builder conditions(@Nullable List conditions) { + + this.conditions = conditions; + return this; + } + public Builder conditions(VmwareAdminClusterPlatformConfigBundleStatusCondition... conditions) { + return conditions(List.of(conditions)); + } + @CustomType.Setter + public Builder errorMessage(@Nullable String errorMessage) { + + this.errorMessage = errorMessage; + return this; + } + public VmwareAdminClusterPlatformConfigBundleStatus build() { + final var _resultValue = new VmwareAdminClusterPlatformConfigBundleStatus(); + _resultValue.conditions = conditions; + _resultValue.errorMessage = errorMessage; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterPlatformConfigBundleStatusCondition.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterPlatformConfigBundleStatusCondition.java new file mode 100644 index 0000000000..c531dd7213 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterPlatformConfigBundleStatusCondition.java @@ -0,0 +1,153 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class VmwareAdminClusterPlatformConfigBundleStatusCondition { + /** + * @return (Output) + * Last time the condition transit from one status to another. + * + */ + private @Nullable String lastTransitionTime; + /** + * @return (Output) + * Human-readable message indicating details about last transition. + * + */ + private @Nullable String message; + /** + * @return (Output) + * Machine-readable message indicating details about last transition. + * + */ + private @Nullable String reason; + /** + * @return (Output) + * The lifecycle state of the condition. + * + */ + private @Nullable String state; + /** + * @return (Output) + * Type of the condition. + * (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + * + */ + private @Nullable String type; + + private VmwareAdminClusterPlatformConfigBundleStatusCondition() {} + /** + * @return (Output) + * Last time the condition transit from one status to another. + * + */ + public Optional lastTransitionTime() { + return Optional.ofNullable(this.lastTransitionTime); + } + /** + * @return (Output) + * Human-readable message indicating details about last transition. + * + */ + public Optional message() { + return Optional.ofNullable(this.message); + } + /** + * @return (Output) + * Machine-readable message indicating details about last transition. + * + */ + public Optional reason() { + return Optional.ofNullable(this.reason); + } + /** + * @return (Output) + * The lifecycle state of the condition. + * + */ + public Optional state() { + return Optional.ofNullable(this.state); + } + /** + * @return (Output) + * Type of the condition. + * (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + * + */ + public Optional type() { + return Optional.ofNullable(this.type); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterPlatformConfigBundleStatusCondition defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String lastTransitionTime; + private @Nullable String message; + private @Nullable String reason; + private @Nullable String state; + private @Nullable String type; + public Builder() {} + public Builder(VmwareAdminClusterPlatformConfigBundleStatusCondition defaults) { + Objects.requireNonNull(defaults); + this.lastTransitionTime = defaults.lastTransitionTime; + this.message = defaults.message; + this.reason = defaults.reason; + this.state = defaults.state; + this.type = defaults.type; + } + + @CustomType.Setter + public Builder lastTransitionTime(@Nullable String lastTransitionTime) { + + this.lastTransitionTime = lastTransitionTime; + return this; + } + @CustomType.Setter + public Builder message(@Nullable String message) { + + this.message = message; + return this; + } + @CustomType.Setter + public Builder reason(@Nullable String reason) { + + this.reason = reason; + return this; + } + @CustomType.Setter + public Builder state(@Nullable String state) { + + this.state = state; + return this; + } + @CustomType.Setter + public Builder type(@Nullable String type) { + + this.type = type; + return this; + } + public VmwareAdminClusterPlatformConfigBundleStatusCondition build() { + final var _resultValue = new VmwareAdminClusterPlatformConfigBundleStatusCondition(); + _resultValue.lastTransitionTime = lastTransitionTime; + _resultValue.message = message; + _resultValue.reason = reason; + _resultValue.state = state; + _resultValue.type = type; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterPlatformConfigStatus.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterPlatformConfigStatus.java new file mode 100644 index 0000000000..e00831d679 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterPlatformConfigStatus.java @@ -0,0 +1,97 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterPlatformConfigStatusCondition; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class VmwareAdminClusterPlatformConfigStatus { + /** + * @return (Output) + * ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + * Structure is documented below. + * + */ + private @Nullable List conditions; + /** + * @return (Output) + * Human-friendly representation of the error message from the admin cluster + * controller. The error message can be temporary as the admin cluster + * controller creates a cluster or node pool. If the error message persists + * for a longer period of time, it can be used to surface error message to + * indicate real problems requiring user intervention. + * + */ + private @Nullable String errorMessage; + + private VmwareAdminClusterPlatformConfigStatus() {} + /** + * @return (Output) + * ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + * Structure is documented below. + * + */ + public List conditions() { + return this.conditions == null ? List.of() : this.conditions; + } + /** + * @return (Output) + * Human-friendly representation of the error message from the admin cluster + * controller. The error message can be temporary as the admin cluster + * controller creates a cluster or node pool. If the error message persists + * for a longer period of time, it can be used to surface error message to + * indicate real problems requiring user intervention. + * + */ + public Optional errorMessage() { + return Optional.ofNullable(this.errorMessage); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterPlatformConfigStatus defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable List conditions; + private @Nullable String errorMessage; + public Builder() {} + public Builder(VmwareAdminClusterPlatformConfigStatus defaults) { + Objects.requireNonNull(defaults); + this.conditions = defaults.conditions; + this.errorMessage = defaults.errorMessage; + } + + @CustomType.Setter + public Builder conditions(@Nullable List conditions) { + + this.conditions = conditions; + return this; + } + public Builder conditions(VmwareAdminClusterPlatformConfigStatusCondition... conditions) { + return conditions(List.of(conditions)); + } + @CustomType.Setter + public Builder errorMessage(@Nullable String errorMessage) { + + this.errorMessage = errorMessage; + return this; + } + public VmwareAdminClusterPlatformConfigStatus build() { + final var _resultValue = new VmwareAdminClusterPlatformConfigStatus(); + _resultValue.conditions = conditions; + _resultValue.errorMessage = errorMessage; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterPlatformConfigStatusCondition.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterPlatformConfigStatusCondition.java new file mode 100644 index 0000000000..1232248458 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterPlatformConfigStatusCondition.java @@ -0,0 +1,153 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class VmwareAdminClusterPlatformConfigStatusCondition { + /** + * @return (Output) + * Last time the condition transit from one status to another. + * + */ + private @Nullable String lastTransitionTime; + /** + * @return (Output) + * Human-readable message indicating details about last transition. + * + */ + private @Nullable String message; + /** + * @return (Output) + * Machine-readable message indicating details about last transition. + * + */ + private @Nullable String reason; + /** + * @return (Output) + * The lifecycle state of the condition. + * + */ + private @Nullable String state; + /** + * @return (Output) + * Type of the condition. + * (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + * + */ + private @Nullable String type; + + private VmwareAdminClusterPlatformConfigStatusCondition() {} + /** + * @return (Output) + * Last time the condition transit from one status to another. + * + */ + public Optional lastTransitionTime() { + return Optional.ofNullable(this.lastTransitionTime); + } + /** + * @return (Output) + * Human-readable message indicating details about last transition. + * + */ + public Optional message() { + return Optional.ofNullable(this.message); + } + /** + * @return (Output) + * Machine-readable message indicating details about last transition. + * + */ + public Optional reason() { + return Optional.ofNullable(this.reason); + } + /** + * @return (Output) + * The lifecycle state of the condition. + * + */ + public Optional state() { + return Optional.ofNullable(this.state); + } + /** + * @return (Output) + * Type of the condition. + * (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + * + */ + public Optional type() { + return Optional.ofNullable(this.type); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterPlatformConfigStatusCondition defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String lastTransitionTime; + private @Nullable String message; + private @Nullable String reason; + private @Nullable String state; + private @Nullable String type; + public Builder() {} + public Builder(VmwareAdminClusterPlatformConfigStatusCondition defaults) { + Objects.requireNonNull(defaults); + this.lastTransitionTime = defaults.lastTransitionTime; + this.message = defaults.message; + this.reason = defaults.reason; + this.state = defaults.state; + this.type = defaults.type; + } + + @CustomType.Setter + public Builder lastTransitionTime(@Nullable String lastTransitionTime) { + + this.lastTransitionTime = lastTransitionTime; + return this; + } + @CustomType.Setter + public Builder message(@Nullable String message) { + + this.message = message; + return this; + } + @CustomType.Setter + public Builder reason(@Nullable String reason) { + + this.reason = reason; + return this; + } + @CustomType.Setter + public Builder state(@Nullable String state) { + + this.state = state; + return this; + } + @CustomType.Setter + public Builder type(@Nullable String type) { + + this.type = type; + return this; + } + public VmwareAdminClusterPlatformConfigStatusCondition build() { + final var _resultValue = new VmwareAdminClusterPlatformConfigStatusCondition(); + _resultValue.lastTransitionTime = lastTransitionTime; + _resultValue.message = message; + _resultValue.reason = reason; + _resultValue.state = state; + _resultValue.type = type; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterStatus.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterStatus.java new file mode 100644 index 0000000000..3bcd534233 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterStatus.java @@ -0,0 +1,97 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.gcp.gkeonprem.outputs.VmwareAdminClusterStatusCondition; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class VmwareAdminClusterStatus { + /** + * @return (Output) + * ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + * Structure is documented below. + * + */ + private @Nullable List conditions; + /** + * @return (Output) + * Human-friendly representation of the error message from the admin cluster + * controller. The error message can be temporary as the admin cluster + * controller creates a cluster or node pool. If the error message persists + * for a longer period of time, it can be used to surface error message to + * indicate real problems requiring user intervention. + * + */ + private @Nullable String errorMessage; + + private VmwareAdminClusterStatus() {} + /** + * @return (Output) + * ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + * Structure is documented below. + * + */ + public List conditions() { + return this.conditions == null ? List.of() : this.conditions; + } + /** + * @return (Output) + * Human-friendly representation of the error message from the admin cluster + * controller. The error message can be temporary as the admin cluster + * controller creates a cluster or node pool. If the error message persists + * for a longer period of time, it can be used to surface error message to + * indicate real problems requiring user intervention. + * + */ + public Optional errorMessage() { + return Optional.ofNullable(this.errorMessage); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterStatus defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable List conditions; + private @Nullable String errorMessage; + public Builder() {} + public Builder(VmwareAdminClusterStatus defaults) { + Objects.requireNonNull(defaults); + this.conditions = defaults.conditions; + this.errorMessage = defaults.errorMessage; + } + + @CustomType.Setter + public Builder conditions(@Nullable List conditions) { + + this.conditions = conditions; + return this; + } + public Builder conditions(VmwareAdminClusterStatusCondition... conditions) { + return conditions(List.of(conditions)); + } + @CustomType.Setter + public Builder errorMessage(@Nullable String errorMessage) { + + this.errorMessage = errorMessage; + return this; + } + public VmwareAdminClusterStatus build() { + final var _resultValue = new VmwareAdminClusterStatus(); + _resultValue.conditions = conditions; + _resultValue.errorMessage = errorMessage; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterStatusCondition.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterStatusCondition.java new file mode 100644 index 0000000000..0e0ca7c81a --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterStatusCondition.java @@ -0,0 +1,153 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class VmwareAdminClusterStatusCondition { + /** + * @return (Output) + * Last time the condition transit from one status to another. + * + */ + private @Nullable String lastTransitionTime; + /** + * @return (Output) + * Human-readable message indicating details about last transition. + * + */ + private @Nullable String message; + /** + * @return (Output) + * Machine-readable message indicating details about last transition. + * + */ + private @Nullable String reason; + /** + * @return (Output) + * The lifecycle state of the condition. + * + */ + private @Nullable String state; + /** + * @return (Output) + * Type of the condition. + * (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + * + */ + private @Nullable String type; + + private VmwareAdminClusterStatusCondition() {} + /** + * @return (Output) + * Last time the condition transit from one status to another. + * + */ + public Optional lastTransitionTime() { + return Optional.ofNullable(this.lastTransitionTime); + } + /** + * @return (Output) + * Human-readable message indicating details about last transition. + * + */ + public Optional message() { + return Optional.ofNullable(this.message); + } + /** + * @return (Output) + * Machine-readable message indicating details about last transition. + * + */ + public Optional reason() { + return Optional.ofNullable(this.reason); + } + /** + * @return (Output) + * The lifecycle state of the condition. + * + */ + public Optional state() { + return Optional.ofNullable(this.state); + } + /** + * @return (Output) + * Type of the condition. + * (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + * + */ + public Optional type() { + return Optional.ofNullable(this.type); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterStatusCondition defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String lastTransitionTime; + private @Nullable String message; + private @Nullable String reason; + private @Nullable String state; + private @Nullable String type; + public Builder() {} + public Builder(VmwareAdminClusterStatusCondition defaults) { + Objects.requireNonNull(defaults); + this.lastTransitionTime = defaults.lastTransitionTime; + this.message = defaults.message; + this.reason = defaults.reason; + this.state = defaults.state; + this.type = defaults.type; + } + + @CustomType.Setter + public Builder lastTransitionTime(@Nullable String lastTransitionTime) { + + this.lastTransitionTime = lastTransitionTime; + return this; + } + @CustomType.Setter + public Builder message(@Nullable String message) { + + this.message = message; + return this; + } + @CustomType.Setter + public Builder reason(@Nullable String reason) { + + this.reason = reason; + return this; + } + @CustomType.Setter + public Builder state(@Nullable String state) { + + this.state = state; + return this; + } + @CustomType.Setter + public Builder type(@Nullable String type) { + + this.type = type; + return this; + } + public VmwareAdminClusterStatusCondition build() { + final var _resultValue = new VmwareAdminClusterStatusCondition(); + _resultValue.lastTransitionTime = lastTransitionTime; + _resultValue.message = message; + _resultValue.reason = reason; + _resultValue.state = state; + _resultValue.type = type; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterVcenter.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterVcenter.java new file mode 100644 index 0000000000..8c42b42fb1 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VmwareAdminClusterVcenter.java @@ -0,0 +1,225 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.gkeonprem.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class VmwareAdminClusterVcenter { + /** + * @return The vCenter IP address. + * + */ + private @Nullable String address; + /** + * @return Contains the vCenter CA certificate public key for SSL verification. + * + */ + private @Nullable String caCertData; + /** + * @return The name of the vCenter cluster for the admin cluster. + * + */ + private @Nullable String cluster; + /** + * @return The name of the virtual machine disk (VMDK) for the admin cluster. + * + */ + private @Nullable String dataDisk; + /** + * @return The name of the vCenter datacenter for the admin cluster. + * + */ + private @Nullable String datacenter; + /** + * @return The name of the vCenter datastore for the admin cluster. + * + */ + private @Nullable String datastore; + /** + * @return The name of the vCenter folder for the admin cluster. + * + */ + private @Nullable String folder; + /** + * @return The name of the vCenter resource pool for the admin cluster. + * + */ + private @Nullable String resourcePool; + /** + * @return The name of the vCenter storage policy for the user cluster. + * + */ + private @Nullable String storagePolicyName; + + private VmwareAdminClusterVcenter() {} + /** + * @return The vCenter IP address. + * + */ + public Optional address() { + return Optional.ofNullable(this.address); + } + /** + * @return Contains the vCenter CA certificate public key for SSL verification. + * + */ + public Optional caCertData() { + return Optional.ofNullable(this.caCertData); + } + /** + * @return The name of the vCenter cluster for the admin cluster. + * + */ + public Optional cluster() { + return Optional.ofNullable(this.cluster); + } + /** + * @return The name of the virtual machine disk (VMDK) for the admin cluster. + * + */ + public Optional dataDisk() { + return Optional.ofNullable(this.dataDisk); + } + /** + * @return The name of the vCenter datacenter for the admin cluster. + * + */ + public Optional datacenter() { + return Optional.ofNullable(this.datacenter); + } + /** + * @return The name of the vCenter datastore for the admin cluster. + * + */ + public Optional datastore() { + return Optional.ofNullable(this.datastore); + } + /** + * @return The name of the vCenter folder for the admin cluster. + * + */ + public Optional folder() { + return Optional.ofNullable(this.folder); + } + /** + * @return The name of the vCenter resource pool for the admin cluster. + * + */ + public Optional resourcePool() { + return Optional.ofNullable(this.resourcePool); + } + /** + * @return The name of the vCenter storage policy for the user cluster. + * + */ + public Optional storagePolicyName() { + return Optional.ofNullable(this.storagePolicyName); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(VmwareAdminClusterVcenter defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String address; + private @Nullable String caCertData; + private @Nullable String cluster; + private @Nullable String dataDisk; + private @Nullable String datacenter; + private @Nullable String datastore; + private @Nullable String folder; + private @Nullable String resourcePool; + private @Nullable String storagePolicyName; + public Builder() {} + public Builder(VmwareAdminClusterVcenter defaults) { + Objects.requireNonNull(defaults); + this.address = defaults.address; + this.caCertData = defaults.caCertData; + this.cluster = defaults.cluster; + this.dataDisk = defaults.dataDisk; + this.datacenter = defaults.datacenter; + this.datastore = defaults.datastore; + this.folder = defaults.folder; + this.resourcePool = defaults.resourcePool; + this.storagePolicyName = defaults.storagePolicyName; + } + + @CustomType.Setter + public Builder address(@Nullable String address) { + + this.address = address; + return this; + } + @CustomType.Setter + public Builder caCertData(@Nullable String caCertData) { + + this.caCertData = caCertData; + return this; + } + @CustomType.Setter + public Builder cluster(@Nullable String cluster) { + + this.cluster = cluster; + return this; + } + @CustomType.Setter + public Builder dataDisk(@Nullable String dataDisk) { + + this.dataDisk = dataDisk; + return this; + } + @CustomType.Setter + public Builder datacenter(@Nullable String datacenter) { + + this.datacenter = datacenter; + return this; + } + @CustomType.Setter + public Builder datastore(@Nullable String datastore) { + + this.datastore = datastore; + return this; + } + @CustomType.Setter + public Builder folder(@Nullable String folder) { + + this.folder = folder; + return this; + } + @CustomType.Setter + public Builder resourcePool(@Nullable String resourcePool) { + + this.resourcePool = resourcePool; + return this; + } + @CustomType.Setter + public Builder storagePolicyName(@Nullable String storagePolicyName) { + + this.storagePolicyName = storagePolicyName; + return this; + } + public VmwareAdminClusterVcenter build() { + final var _resultValue = new VmwareAdminClusterVcenter(); + _resultValue.address = address; + _resultValue.caCertData = caCertData; + _resultValue.cluster = cluster; + _resultValue.dataDisk = dataDisk; + _resultValue.datacenter = datacenter; + _resultValue.datastore = datastore; + _resultValue.folder = folder; + _resultValue.resourcePool = resourcePool; + _resultValue.storagePolicyName = storagePolicyName; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/Connection.java b/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/Connection.java index c1891a4538..09520266f0 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/Connection.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/Connection.java @@ -514,14 +514,14 @@ public Output createTime() { return this.createTime; } /** - * An arbitrary description for the Conection. + * An arbitrary description for the Connection. * */ @Export(name="description", refs={String.class}, tree="[0]") private Output description; /** - * @return An arbitrary description for the Conection. + * @return An arbitrary description for the Connection. * */ public Output> description() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/ConnectionArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/ConnectionArgs.java index b9818b2a39..d6da8b94a9 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/ConnectionArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/ConnectionArgs.java @@ -77,14 +77,14 @@ public Output connectorVersion() { } /** - * An arbitrary description for the Conection. + * An arbitrary description for the Connection. * */ @Import(name="description") private @Nullable Output description; /** - * @return An arbitrary description for the Conection. + * @return An arbitrary description for the Connection. * */ public Optional> description() { @@ -431,7 +431,7 @@ public Builder connectorVersion(String connectorVersion) { } /** - * @param description An arbitrary description for the Conection. + * @param description An arbitrary description for the Connection. * * @return builder * @@ -442,7 +442,7 @@ public Builder description(@Nullable Output description) { } /** - * @param description An arbitrary description for the Conection. + * @param description An arbitrary description for the Connection. * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/inputs/ConnectionEventingRuntimeDataStatusArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/inputs/ConnectionEventingRuntimeDataStatusArgs.java index 5b8e9d4b7e..efc30b58c6 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/inputs/ConnectionEventingRuntimeDataStatusArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/inputs/ConnectionEventingRuntimeDataStatusArgs.java @@ -16,14 +16,14 @@ public final class ConnectionEventingRuntimeDataStatusArgs extends com.pulumi.re public static final ConnectionEventingRuntimeDataStatusArgs Empty = new ConnectionEventingRuntimeDataStatusArgs(); /** - * An arbitrary description for the Conection. + * An arbitrary description for the Connection. * */ @Import(name="description") private @Nullable Output description; /** - * @return An arbitrary description for the Conection. + * @return An arbitrary description for the Connection. * */ public Optional> description() { @@ -73,7 +73,7 @@ public Builder(ConnectionEventingRuntimeDataStatusArgs defaults) { } /** - * @param description An arbitrary description for the Conection. + * @param description An arbitrary description for the Connection. * * @return builder * @@ -84,7 +84,7 @@ public Builder description(@Nullable Output description) { } /** - * @param description An arbitrary description for the Conection. + * @param description An arbitrary description for the Connection. * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/inputs/ConnectionState.java b/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/inputs/ConnectionState.java index eea703d279..aec78a9b35 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/inputs/ConnectionState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/inputs/ConnectionState.java @@ -141,14 +141,14 @@ public Optional> createTime() { } /** - * An arbitrary description for the Conection. + * An arbitrary description for the Connection. * */ @Import(name="description") private @Nullable Output description; /** - * @return An arbitrary description for the Conection. + * @return An arbitrary description for the Connection. * */ public Optional> description() { @@ -718,7 +718,7 @@ public Builder createTime(String createTime) { } /** - * @param description An arbitrary description for the Conection. + * @param description An arbitrary description for the Connection. * * @return builder * @@ -729,7 +729,7 @@ public Builder description(@Nullable Output description) { } /** - * @param description An arbitrary description for the Conection. + * @param description An arbitrary description for the Connection. * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/inputs/ConnectionStatusArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/inputs/ConnectionStatusArgs.java index 73ad67777c..f1278eecc2 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/inputs/ConnectionStatusArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/inputs/ConnectionStatusArgs.java @@ -16,14 +16,14 @@ public final class ConnectionStatusArgs extends com.pulumi.resources.ResourceArg public static final ConnectionStatusArgs Empty = new ConnectionStatusArgs(); /** - * An arbitrary description for the Conection. + * An arbitrary description for the Connection. * */ @Import(name="description") private @Nullable Output description; /** - * @return An arbitrary description for the Conection. + * @return An arbitrary description for the Connection. * */ public Optional> description() { @@ -93,7 +93,7 @@ public Builder(ConnectionStatusArgs defaults) { } /** - * @param description An arbitrary description for the Conection. + * @param description An arbitrary description for the Connection. * * @return builder * @@ -104,7 +104,7 @@ public Builder description(@Nullable Output description) { } /** - * @param description An arbitrary description for the Conection. + * @param description An arbitrary description for the Connection. * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/outputs/ConnectionEventingRuntimeDataStatus.java b/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/outputs/ConnectionEventingRuntimeDataStatus.java index 57dc031ea8..86f1fc005e 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/outputs/ConnectionEventingRuntimeDataStatus.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/outputs/ConnectionEventingRuntimeDataStatus.java @@ -12,7 +12,7 @@ @CustomType public final class ConnectionEventingRuntimeDataStatus { /** - * @return An arbitrary description for the Conection. + * @return An arbitrary description for the Connection. * */ private @Nullable String description; @@ -25,7 +25,7 @@ public final class ConnectionEventingRuntimeDataStatus { private ConnectionEventingRuntimeDataStatus() {} /** - * @return An arbitrary description for the Conection. + * @return An arbitrary description for the Connection. * */ public Optional description() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/outputs/ConnectionStatus.java b/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/outputs/ConnectionStatus.java index 549f664033..6963e7d027 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/outputs/ConnectionStatus.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/outputs/ConnectionStatus.java @@ -12,7 +12,7 @@ @CustomType public final class ConnectionStatus { /** - * @return An arbitrary description for the Conection. + * @return An arbitrary description for the Connection. * */ private @Nullable String description; @@ -32,7 +32,7 @@ public final class ConnectionStatus { private ConnectionStatus() {} /** - * @return An arbitrary description for the Conection. + * @return An arbitrary description for the Connection. * */ public Optional description() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/kms/KmsFunctions.java b/sdk/java/src/main/java/com/pulumi/gcp/kms/KmsFunctions.java index 3f0a4ec53b..b7701c3080 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/kms/KmsFunctions.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/kms/KmsFunctions.java @@ -9,6 +9,8 @@ import com.pulumi.deployment.InvokeOptions; import com.pulumi.deployment.InvokeOutputOptions; import com.pulumi.gcp.Utilities; +import com.pulumi.gcp.kms.inputs.GetAutokeyConfigArgs; +import com.pulumi.gcp.kms.inputs.GetAutokeyConfigPlainArgs; import com.pulumi.gcp.kms.inputs.GetCryptoKeyIamPolicyArgs; import com.pulumi.gcp.kms.inputs.GetCryptoKeyIamPolicyPlainArgs; import com.pulumi.gcp.kms.inputs.GetCryptoKeyLatestVersionArgs; @@ -31,10 +33,13 @@ import com.pulumi.gcp.kms.inputs.GetKMSSecretCiphertextArgs; import com.pulumi.gcp.kms.inputs.GetKMSSecretCiphertextPlainArgs; import com.pulumi.gcp.kms.inputs.GetKMSSecretPlainArgs; +import com.pulumi.gcp.kms.inputs.GetKeyHandleArgs; +import com.pulumi.gcp.kms.inputs.GetKeyHandlePlainArgs; import com.pulumi.gcp.kms.inputs.GetKeyRingIamPolicyArgs; import com.pulumi.gcp.kms.inputs.GetKeyRingIamPolicyPlainArgs; import com.pulumi.gcp.kms.inputs.GetKeyRingsArgs; import com.pulumi.gcp.kms.inputs.GetKeyRingsPlainArgs; +import com.pulumi.gcp.kms.outputs.GetAutokeyConfigResult; import com.pulumi.gcp.kms.outputs.GetCryptoKeyIamPolicyResult; import com.pulumi.gcp.kms.outputs.GetCryptoKeyLatestVersionResult; import com.pulumi.gcp.kms.outputs.GetCryptoKeyVersionsResult; @@ -46,11 +51,212 @@ import com.pulumi.gcp.kms.outputs.GetKMSSecretAsymmetricResult; import com.pulumi.gcp.kms.outputs.GetKMSSecretCiphertextResult; import com.pulumi.gcp.kms.outputs.GetKMSSecretResult; +import com.pulumi.gcp.kms.outputs.GetKeyHandleResult; import com.pulumi.gcp.kms.outputs.GetKeyRingIamPolicyResult; import com.pulumi.gcp.kms.outputs.GetKeyRingsResult; import java.util.concurrent.CompletableFuture; public final class KmsFunctions { + /** + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.gcp.kms.KmsFunctions;
+     * import com.pulumi.gcp.kms.inputs.GetAutokeyConfigArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var myAutokeyConfig = KmsFunctions.getAutokeyConfig(GetAutokeyConfigArgs.builder()
+     *             .folder("folders/123")
+     *             .build());
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ + public static Output getAutokeyConfig(GetAutokeyConfigArgs args) { + return getAutokeyConfig(args, InvokeOptions.Empty); + } + /** + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.gcp.kms.KmsFunctions;
+     * import com.pulumi.gcp.kms.inputs.GetAutokeyConfigArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var myAutokeyConfig = KmsFunctions.getAutokeyConfig(GetAutokeyConfigArgs.builder()
+     *             .folder("folders/123")
+     *             .build());
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ + public static CompletableFuture getAutokeyConfigPlain(GetAutokeyConfigPlainArgs args) { + return getAutokeyConfigPlain(args, InvokeOptions.Empty); + } + /** + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.gcp.kms.KmsFunctions;
+     * import com.pulumi.gcp.kms.inputs.GetAutokeyConfigArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var myAutokeyConfig = KmsFunctions.getAutokeyConfig(GetAutokeyConfigArgs.builder()
+     *             .folder("folders/123")
+     *             .build());
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ + public static Output getAutokeyConfig(GetAutokeyConfigArgs args, InvokeOptions options) { + return Deployment.getInstance().invoke("gcp:kms/getAutokeyConfig:getAutokeyConfig", TypeShape.of(GetAutokeyConfigResult.class), args, Utilities.withVersion(options)); + } + /** + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.gcp.kms.KmsFunctions;
+     * import com.pulumi.gcp.kms.inputs.GetAutokeyConfigArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var myAutokeyConfig = KmsFunctions.getAutokeyConfig(GetAutokeyConfigArgs.builder()
+     *             .folder("folders/123")
+     *             .build());
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ + public static Output getAutokeyConfig(GetAutokeyConfigArgs args, InvokeOutputOptions options) { + return Deployment.getInstance().invoke("gcp:kms/getAutokeyConfig:getAutokeyConfig", TypeShape.of(GetAutokeyConfigResult.class), args, Utilities.withVersion(options)); + } + /** + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.gcp.kms.KmsFunctions;
+     * import com.pulumi.gcp.kms.inputs.GetAutokeyConfigArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var myAutokeyConfig = KmsFunctions.getAutokeyConfig(GetAutokeyConfigArgs.builder()
+     *             .folder("folders/123")
+     *             .build());
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ + public static CompletableFuture getAutokeyConfigPlain(GetAutokeyConfigPlainArgs args, InvokeOptions options) { + return Deployment.getInstance().invokeAsync("gcp:kms/getAutokeyConfig:getAutokeyConfig", TypeShape.of(GetAutokeyConfigResult.class), args, Utilities.withVersion(options)); + } /** * Retrieves the current IAM policy data for a Google Cloud KMS crypto key. * @@ -3906,6 +4112,211 @@ public static Output getKMSSecretCiphertext(GetKMS public static CompletableFuture getKMSSecretCiphertextPlain(GetKMSSecretCiphertextPlainArgs args, InvokeOptions options) { return Deployment.getInstance().invokeAsync("gcp:kms/getKMSSecretCiphertext:getKMSSecretCiphertext", TypeShape.of(GetKMSSecretCiphertextResult.class), args, Utilities.withVersion(options)); } + /** + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.gcp.kms.KmsFunctions;
+     * import com.pulumi.gcp.kms.inputs.GetKeyHandleArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var myKeyHandle = KmsFunctions.getKeyHandle(GetKeyHandleArgs.builder()
+     *             .name("eed58b7b-20ad-4da8-ad85-ba78a0d5ab87")
+     *             .location("us-central1")
+     *             .build());
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ + public static Output getKeyHandle(GetKeyHandleArgs args) { + return getKeyHandle(args, InvokeOptions.Empty); + } + /** + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.gcp.kms.KmsFunctions;
+     * import com.pulumi.gcp.kms.inputs.GetKeyHandleArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var myKeyHandle = KmsFunctions.getKeyHandle(GetKeyHandleArgs.builder()
+     *             .name("eed58b7b-20ad-4da8-ad85-ba78a0d5ab87")
+     *             .location("us-central1")
+     *             .build());
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ + public static CompletableFuture getKeyHandlePlain(GetKeyHandlePlainArgs args) { + return getKeyHandlePlain(args, InvokeOptions.Empty); + } + /** + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.gcp.kms.KmsFunctions;
+     * import com.pulumi.gcp.kms.inputs.GetKeyHandleArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var myKeyHandle = KmsFunctions.getKeyHandle(GetKeyHandleArgs.builder()
+     *             .name("eed58b7b-20ad-4da8-ad85-ba78a0d5ab87")
+     *             .location("us-central1")
+     *             .build());
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ + public static Output getKeyHandle(GetKeyHandleArgs args, InvokeOptions options) { + return Deployment.getInstance().invoke("gcp:kms/getKeyHandle:getKeyHandle", TypeShape.of(GetKeyHandleResult.class), args, Utilities.withVersion(options)); + } + /** + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.gcp.kms.KmsFunctions;
+     * import com.pulumi.gcp.kms.inputs.GetKeyHandleArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var myKeyHandle = KmsFunctions.getKeyHandle(GetKeyHandleArgs.builder()
+     *             .name("eed58b7b-20ad-4da8-ad85-ba78a0d5ab87")
+     *             .location("us-central1")
+     *             .build());
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ + public static Output getKeyHandle(GetKeyHandleArgs args, InvokeOutputOptions options) { + return Deployment.getInstance().invoke("gcp:kms/getKeyHandle:getKeyHandle", TypeShape.of(GetKeyHandleResult.class), args, Utilities.withVersion(options)); + } + /** + * ## Example Usage + * + * <!--Start PulumiCodeChooser --> + *
+     * {@code
+     * package generated_program;
+     * 
+     * import com.pulumi.Context;
+     * import com.pulumi.Pulumi;
+     * import com.pulumi.core.Output;
+     * import com.pulumi.gcp.kms.KmsFunctions;
+     * import com.pulumi.gcp.kms.inputs.GetKeyHandleArgs;
+     * import java.util.List;
+     * import java.util.ArrayList;
+     * import java.util.Map;
+     * import java.io.File;
+     * import java.nio.file.Files;
+     * import java.nio.file.Paths;
+     * 
+     * public class App {
+     *     public static void main(String[] args) {
+     *         Pulumi.run(App::stack);
+     *     }
+     * 
+     *     public static void stack(Context ctx) {
+     *         final var myKeyHandle = KmsFunctions.getKeyHandle(GetKeyHandleArgs.builder()
+     *             .name("eed58b7b-20ad-4da8-ad85-ba78a0d5ab87")
+     *             .location("us-central1")
+     *             .build());
+     * 
+     *     }
+     * }
+     * }
+     * 
+ * <!--End PulumiCodeChooser --> + * + */ + public static CompletableFuture getKeyHandlePlain(GetKeyHandlePlainArgs args, InvokeOptions options) { + return Deployment.getInstance().invokeAsync("gcp:kms/getKeyHandle:getKeyHandle", TypeShape.of(GetKeyHandleResult.class), args, Utilities.withVersion(options)); + } /** * Retrieves the current IAM policy data for a Google Cloud KMS key ring. * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/kms/inputs/GetAutokeyConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/kms/inputs/GetAutokeyConfigArgs.java new file mode 100644 index 0000000000..a2c2bcc38a --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/kms/inputs/GetAutokeyConfigArgs.java @@ -0,0 +1,89 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.kms.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + + +public final class GetAutokeyConfigArgs extends com.pulumi.resources.InvokeArgs { + + public static final GetAutokeyConfigArgs Empty = new GetAutokeyConfigArgs(); + + /** + * The folder in which the AutokeyConfig is configured. If it + * is not provided, the provider folder is used. + * + */ + @Import(name="folder", required=true) + private Output folder; + + /** + * @return The folder in which the AutokeyConfig is configured. If it + * is not provided, the provider folder is used. + * + */ + public Output folder() { + return this.folder; + } + + private GetAutokeyConfigArgs() {} + + private GetAutokeyConfigArgs(GetAutokeyConfigArgs $) { + this.folder = $.folder; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(GetAutokeyConfigArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private GetAutokeyConfigArgs $; + + public Builder() { + $ = new GetAutokeyConfigArgs(); + } + + public Builder(GetAutokeyConfigArgs defaults) { + $ = new GetAutokeyConfigArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param folder The folder in which the AutokeyConfig is configured. If it + * is not provided, the provider folder is used. + * + * @return builder + * + */ + public Builder folder(Output folder) { + $.folder = folder; + return this; + } + + /** + * @param folder The folder in which the AutokeyConfig is configured. If it + * is not provided, the provider folder is used. + * + * @return builder + * + */ + public Builder folder(String folder) { + return folder(Output.of(folder)); + } + + public GetAutokeyConfigArgs build() { + if ($.folder == null) { + throw new MissingRequiredPropertyException("GetAutokeyConfigArgs", "folder"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/kms/inputs/GetAutokeyConfigPlainArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/kms/inputs/GetAutokeyConfigPlainArgs.java new file mode 100644 index 0000000000..20666a6ac0 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/kms/inputs/GetAutokeyConfigPlainArgs.java @@ -0,0 +1,77 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.kms.inputs; + +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + + +public final class GetAutokeyConfigPlainArgs extends com.pulumi.resources.InvokeArgs { + + public static final GetAutokeyConfigPlainArgs Empty = new GetAutokeyConfigPlainArgs(); + + /** + * The folder in which the AutokeyConfig is configured. If it + * is not provided, the provider folder is used. + * + */ + @Import(name="folder", required=true) + private String folder; + + /** + * @return The folder in which the AutokeyConfig is configured. If it + * is not provided, the provider folder is used. + * + */ + public String folder() { + return this.folder; + } + + private GetAutokeyConfigPlainArgs() {} + + private GetAutokeyConfigPlainArgs(GetAutokeyConfigPlainArgs $) { + this.folder = $.folder; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(GetAutokeyConfigPlainArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private GetAutokeyConfigPlainArgs $; + + public Builder() { + $ = new GetAutokeyConfigPlainArgs(); + } + + public Builder(GetAutokeyConfigPlainArgs defaults) { + $ = new GetAutokeyConfigPlainArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param folder The folder in which the AutokeyConfig is configured. If it + * is not provided, the provider folder is used. + * + * @return builder + * + */ + public Builder folder(String folder) { + $.folder = folder; + return this; + } + + public GetAutokeyConfigPlainArgs build() { + if ($.folder == null) { + throw new MissingRequiredPropertyException("GetAutokeyConfigPlainArgs", "folder"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/kms/inputs/GetKeyHandleArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/kms/inputs/GetKeyHandleArgs.java new file mode 100644 index 0000000000..1eba27d799 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/kms/inputs/GetKeyHandleArgs.java @@ -0,0 +1,184 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.kms.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class GetKeyHandleArgs extends com.pulumi.resources.InvokeArgs { + + public static final GetKeyHandleArgs Empty = new GetKeyHandleArgs(); + + /** + * The Google Cloud Platform location for the KeyHandle. + * A full list of valid locations can be found by running `gcloud kms locations list`. + * + * *** + * + */ + @Import(name="location", required=true) + private Output location; + + /** + * @return The Google Cloud Platform location for the KeyHandle. + * A full list of valid locations can be found by running `gcloud kms locations list`. + * + * *** + * + */ + public Output location() { + return this.location; + } + + /** + * The KeyHandle's name. + * A KeyHandle name must exist within the provided location and must be valid UUID. + * + */ + @Import(name="name", required=true) + private Output name; + + /** + * @return The KeyHandle's name. + * A KeyHandle name must exist within the provided location and must be valid UUID. + * + */ + public Output name() { + return this.name; + } + + /** + * The project in which the resource belongs. If it + * is not provided, the provider project is used. + * + */ + @Import(name="project") + private @Nullable Output project; + + /** + * @return The project in which the resource belongs. If it + * is not provided, the provider project is used. + * + */ + public Optional> project() { + return Optional.ofNullable(this.project); + } + + private GetKeyHandleArgs() {} + + private GetKeyHandleArgs(GetKeyHandleArgs $) { + this.location = $.location; + this.name = $.name; + this.project = $.project; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(GetKeyHandleArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private GetKeyHandleArgs $; + + public Builder() { + $ = new GetKeyHandleArgs(); + } + + public Builder(GetKeyHandleArgs defaults) { + $ = new GetKeyHandleArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param location The Google Cloud Platform location for the KeyHandle. + * A full list of valid locations can be found by running `gcloud kms locations list`. + * + * *** + * + * @return builder + * + */ + public Builder location(Output location) { + $.location = location; + return this; + } + + /** + * @param location The Google Cloud Platform location for the KeyHandle. + * A full list of valid locations can be found by running `gcloud kms locations list`. + * + * *** + * + * @return builder + * + */ + public Builder location(String location) { + return location(Output.of(location)); + } + + /** + * @param name The KeyHandle's name. + * A KeyHandle name must exist within the provided location and must be valid UUID. + * + * @return builder + * + */ + public Builder name(Output name) { + $.name = name; + return this; + } + + /** + * @param name The KeyHandle's name. + * A KeyHandle name must exist within the provided location and must be valid UUID. + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param project The project in which the resource belongs. If it + * is not provided, the provider project is used. + * + * @return builder + * + */ + public Builder project(@Nullable Output project) { + $.project = project; + return this; + } + + /** + * @param project The project in which the resource belongs. If it + * is not provided, the provider project is used. + * + * @return builder + * + */ + public Builder project(String project) { + return project(Output.of(project)); + } + + public GetKeyHandleArgs build() { + if ($.location == null) { + throw new MissingRequiredPropertyException("GetKeyHandleArgs", "location"); + } + if ($.name == null) { + throw new MissingRequiredPropertyException("GetKeyHandleArgs", "name"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/kms/inputs/GetKeyHandlePlainArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/kms/inputs/GetKeyHandlePlainArgs.java new file mode 100644 index 0000000000..dcac72b0df --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/kms/inputs/GetKeyHandlePlainArgs.java @@ -0,0 +1,148 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.kms.inputs; + +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class GetKeyHandlePlainArgs extends com.pulumi.resources.InvokeArgs { + + public static final GetKeyHandlePlainArgs Empty = new GetKeyHandlePlainArgs(); + + /** + * The Google Cloud Platform location for the KeyHandle. + * A full list of valid locations can be found by running `gcloud kms locations list`. + * + * *** + * + */ + @Import(name="location", required=true) + private String location; + + /** + * @return The Google Cloud Platform location for the KeyHandle. + * A full list of valid locations can be found by running `gcloud kms locations list`. + * + * *** + * + */ + public String location() { + return this.location; + } + + /** + * The KeyHandle's name. + * A KeyHandle name must exist within the provided location and must be valid UUID. + * + */ + @Import(name="name", required=true) + private String name; + + /** + * @return The KeyHandle's name. + * A KeyHandle name must exist within the provided location and must be valid UUID. + * + */ + public String name() { + return this.name; + } + + /** + * The project in which the resource belongs. If it + * is not provided, the provider project is used. + * + */ + @Import(name="project") + private @Nullable String project; + + /** + * @return The project in which the resource belongs. If it + * is not provided, the provider project is used. + * + */ + public Optional project() { + return Optional.ofNullable(this.project); + } + + private GetKeyHandlePlainArgs() {} + + private GetKeyHandlePlainArgs(GetKeyHandlePlainArgs $) { + this.location = $.location; + this.name = $.name; + this.project = $.project; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(GetKeyHandlePlainArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private GetKeyHandlePlainArgs $; + + public Builder() { + $ = new GetKeyHandlePlainArgs(); + } + + public Builder(GetKeyHandlePlainArgs defaults) { + $ = new GetKeyHandlePlainArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param location The Google Cloud Platform location for the KeyHandle. + * A full list of valid locations can be found by running `gcloud kms locations list`. + * + * *** + * + * @return builder + * + */ + public Builder location(String location) { + $.location = location; + return this; + } + + /** + * @param name The KeyHandle's name. + * A KeyHandle name must exist within the provided location and must be valid UUID. + * + * @return builder + * + */ + public Builder name(String name) { + $.name = name; + return this; + } + + /** + * @param project The project in which the resource belongs. If it + * is not provided, the provider project is used. + * + * @return builder + * + */ + public Builder project(@Nullable String project) { + $.project = project; + return this; + } + + public GetKeyHandlePlainArgs build() { + if ($.location == null) { + throw new MissingRequiredPropertyException("GetKeyHandlePlainArgs", "location"); + } + if ($.name == null) { + throw new MissingRequiredPropertyException("GetKeyHandlePlainArgs", "name"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/kms/outputs/GetAutokeyConfigResult.java b/sdk/java/src/main/java/com/pulumi/gcp/kms/outputs/GetAutokeyConfigResult.java new file mode 100644 index 0000000000..f16237cdbb --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/kms/outputs/GetAutokeyConfigResult.java @@ -0,0 +1,96 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.kms.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class GetAutokeyConfigResult { + private String folder; + /** + * @return The provider-assigned unique ID for this managed resource. + * + */ + private String id; + /** + * @return The identifier of the project hosting KMS KeyRings and Keys generated by Autokey. Its format is `projects/{projectId}`. + * + */ + private String keyProject; + + private GetAutokeyConfigResult() {} + public String folder() { + return this.folder; + } + /** + * @return The provider-assigned unique ID for this managed resource. + * + */ + public String id() { + return this.id; + } + /** + * @return The identifier of the project hosting KMS KeyRings and Keys generated by Autokey. Its format is `projects/{projectId}`. + * + */ + public String keyProject() { + return this.keyProject; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetAutokeyConfigResult defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String folder; + private String id; + private String keyProject; + public Builder() {} + public Builder(GetAutokeyConfigResult defaults) { + Objects.requireNonNull(defaults); + this.folder = defaults.folder; + this.id = defaults.id; + this.keyProject = defaults.keyProject; + } + + @CustomType.Setter + public Builder folder(String folder) { + if (folder == null) { + throw new MissingRequiredPropertyException("GetAutokeyConfigResult", "folder"); + } + this.folder = folder; + return this; + } + @CustomType.Setter + public Builder id(String id) { + if (id == null) { + throw new MissingRequiredPropertyException("GetAutokeyConfigResult", "id"); + } + this.id = id; + return this; + } + @CustomType.Setter + public Builder keyProject(String keyProject) { + if (keyProject == null) { + throw new MissingRequiredPropertyException("GetAutokeyConfigResult", "keyProject"); + } + this.keyProject = keyProject; + return this; + } + public GetAutokeyConfigResult build() { + final var _resultValue = new GetAutokeyConfigResult(); + _resultValue.folder = folder; + _resultValue.id = id; + _resultValue.keyProject = keyProject; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/kms/outputs/GetKeyHandleResult.java b/sdk/java/src/main/java/com/pulumi/gcp/kms/outputs/GetKeyHandleResult.java new file mode 100644 index 0000000000..41d2fa8480 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/kms/outputs/GetKeyHandleResult.java @@ -0,0 +1,165 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.kms.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class GetKeyHandleResult { + /** + * @return The provider-assigned unique ID for this managed resource. + * + */ + private String id; + /** + * @return The identifier of the KMS Key created for the KeyHandle. Its format is `projects/{projectId}/locations/{location}/keyRings/{keyRingName}/cryptoKeys/{cryptoKeyName}`. + * + */ + private String kmsKey; + /** + * @return The location of the KMS Key and KeyHandle. + * + */ + private String location; + private String name; + /** + * @return The identifier of the project where KMS KeyHandle is created. + * + */ + private @Nullable String project; + /** + * @return Indicates the resource type that the resulting CryptoKey is meant to protect, e.g. {SERVICE}.googleapis.com/{TYPE}. See documentation for supported resource types. + * + */ + private String resourceTypeSelector; + + private GetKeyHandleResult() {} + /** + * @return The provider-assigned unique ID for this managed resource. + * + */ + public String id() { + return this.id; + } + /** + * @return The identifier of the KMS Key created for the KeyHandle. Its format is `projects/{projectId}/locations/{location}/keyRings/{keyRingName}/cryptoKeys/{cryptoKeyName}`. + * + */ + public String kmsKey() { + return this.kmsKey; + } + /** + * @return The location of the KMS Key and KeyHandle. + * + */ + public String location() { + return this.location; + } + public String name() { + return this.name; + } + /** + * @return The identifier of the project where KMS KeyHandle is created. + * + */ + public Optional project() { + return Optional.ofNullable(this.project); + } + /** + * @return Indicates the resource type that the resulting CryptoKey is meant to protect, e.g. {SERVICE}.googleapis.com/{TYPE}. See documentation for supported resource types. + * + */ + public String resourceTypeSelector() { + return this.resourceTypeSelector; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(GetKeyHandleResult defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String id; + private String kmsKey; + private String location; + private String name; + private @Nullable String project; + private String resourceTypeSelector; + public Builder() {} + public Builder(GetKeyHandleResult defaults) { + Objects.requireNonNull(defaults); + this.id = defaults.id; + this.kmsKey = defaults.kmsKey; + this.location = defaults.location; + this.name = defaults.name; + this.project = defaults.project; + this.resourceTypeSelector = defaults.resourceTypeSelector; + } + + @CustomType.Setter + public Builder id(String id) { + if (id == null) { + throw new MissingRequiredPropertyException("GetKeyHandleResult", "id"); + } + this.id = id; + return this; + } + @CustomType.Setter + public Builder kmsKey(String kmsKey) { + if (kmsKey == null) { + throw new MissingRequiredPropertyException("GetKeyHandleResult", "kmsKey"); + } + this.kmsKey = kmsKey; + return this; + } + @CustomType.Setter + public Builder location(String location) { + if (location == null) { + throw new MissingRequiredPropertyException("GetKeyHandleResult", "location"); + } + this.location = location; + return this; + } + @CustomType.Setter + public Builder name(String name) { + if (name == null) { + throw new MissingRequiredPropertyException("GetKeyHandleResult", "name"); + } + this.name = name; + return this; + } + @CustomType.Setter + public Builder project(@Nullable String project) { + + this.project = project; + return this; + } + @CustomType.Setter + public Builder resourceTypeSelector(String resourceTypeSelector) { + if (resourceTypeSelector == null) { + throw new MissingRequiredPropertyException("GetKeyHandleResult", "resourceTypeSelector"); + } + this.resourceTypeSelector = resourceTypeSelector; + return this; + } + public GetKeyHandleResult build() { + final var _resultValue = new GetKeyHandleResult(); + _resultValue.id = id; + _resultValue.kmsKey = kmsKey; + _resultValue.location = location; + _resultValue.name = name; + _resultValue.project = project; + _resultValue.resourceTypeSelector = resourceTypeSelector; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/netapp/Kmsconfig.java b/sdk/java/src/main/java/com/pulumi/gcp/netapp/Kmsconfig.java index 89d7ea9db4..8d14cf6400 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/netapp/Kmsconfig.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/netapp/Kmsconfig.java @@ -39,10 +39,6 @@ * import com.pulumi.Context; * import com.pulumi.Pulumi; * import com.pulumi.core.Output; - * import com.pulumi.gcp.kms.KeyRing; - * import com.pulumi.gcp.kms.KeyRingArgs; - * import com.pulumi.gcp.kms.CryptoKey; - * import com.pulumi.gcp.kms.CryptoKeyArgs; * import com.pulumi.gcp.netapp.Kmsconfig; * import com.pulumi.gcp.netapp.KmsconfigArgs; * import java.util.List; @@ -58,20 +54,10 @@ * } * * public static void stack(Context ctx) { - * var keyring = new KeyRing("keyring", KeyRingArgs.builder() - * .name("key-ring") - * .location("us-central1") - * .build()); - * - * var cryptoKey = new CryptoKey("cryptoKey", CryptoKeyArgs.builder() - * .name("crypto-name") - * .keyRing(keyring.id()) - * .build()); - * * var kmsConfig = new Kmsconfig("kmsConfig", KmsconfigArgs.builder() * .name("kms-test") * .description("this is a test description") - * .cryptoKeyName(cryptoKey.id()) + * .cryptoKeyName("crypto-name") * .location("us-central1") * .build()); * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/networkconnectivity/Hub.java b/sdk/java/src/main/java/com/pulumi/gcp/networkconnectivity/Hub.java index 84b17e39b6..22a9faa38d 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/networkconnectivity/Hub.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/networkconnectivity/Hub.java @@ -101,6 +101,79 @@ * } * * <!--End PulumiCodeChooser --> + * ### Network Connectivity Hub Mesh Topology + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.networkconnectivity.Hub;
+ * import com.pulumi.gcp.networkconnectivity.HubArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var primary = new Hub("primary", HubArgs.builder()
+ *             .name("mesh")
+ *             .description("A sample mesh hub")
+ *             .labels(Map.of("label-one", "value-one"))
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * ### Network Connectivity Hub Star Topology + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.networkconnectivity.Hub;
+ * import com.pulumi.gcp.networkconnectivity.HubArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var primary = new Hub("primary", HubArgs.builder()
+ *             .name("star")
+ *             .description("A sample star hub")
+ *             .labels(Map.of("label-one", "value-one"))
+ *             .presetTopology("STAR")
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> * * ## Import * @@ -221,6 +294,22 @@ public Output>> labels() { public Output name() { return this.name; } + /** + * 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. + * Possible values are: `MESH`, `STAR`. + * + */ + @Export(name="presetTopology", refs={String.class}, tree="[0]") + private Output presetTopology; + + /** + * @return 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. + * Possible values are: `MESH`, `STAR`. + * + */ + public Output presetTopology() { + return this.presetTopology; + } /** * The ID of the project in which the resource belongs. * If it is not provided, the provider project is used. diff --git a/sdk/java/src/main/java/com/pulumi/gcp/networkconnectivity/HubArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/networkconnectivity/HubArgs.java index b7782b9fc9..9b0f978754 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/networkconnectivity/HubArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/networkconnectivity/HubArgs.java @@ -85,6 +85,23 @@ public Optional> name() { return Optional.ofNullable(this.name); } + /** + * 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. + * Possible values are: `MESH`, `STAR`. + * + */ + @Import(name="presetTopology") + private @Nullable Output presetTopology; + + /** + * @return 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. + * Possible values are: `MESH`, `STAR`. + * + */ + public Optional> presetTopology() { + return Optional.ofNullable(this.presetTopology); + } + /** * The ID of the project in which the resource belongs. * If it is not provided, the provider project is used. @@ -109,6 +126,7 @@ private HubArgs(HubArgs $) { this.exportPsc = $.exportPsc; this.labels = $.labels; this.name = $.name; + this.presetTopology = $.presetTopology; this.project = $.project; } @@ -222,6 +240,29 @@ public Builder name(String name) { return name(Output.of(name)); } + /** + * @param presetTopology 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. + * Possible values are: `MESH`, `STAR`. + * + * @return builder + * + */ + public Builder presetTopology(@Nullable Output presetTopology) { + $.presetTopology = presetTopology; + return this; + } + + /** + * @param presetTopology 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. + * Possible values are: `MESH`, `STAR`. + * + * @return builder + * + */ + public Builder presetTopology(String presetTopology) { + return presetTopology(Output.of(presetTopology)); + } + /** * @param project The ID of the project in which the resource belongs. * If it is not provided, the provider project is used. diff --git a/sdk/java/src/main/java/com/pulumi/gcp/networkconnectivity/Spoke.java b/sdk/java/src/main/java/com/pulumi/gcp/networkconnectivity/Spoke.java index 2bb703b529..02dd3e620e 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/networkconnectivity/Spoke.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/networkconnectivity/Spoke.java @@ -95,6 +95,78 @@ * } * * <!--End PulumiCodeChooser --> + * ### Network Connectivity Spoke Linked Vpc Network Group + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.compute.Network;
+ * import com.pulumi.gcp.compute.NetworkArgs;
+ * import com.pulumi.gcp.networkconnectivity.Hub;
+ * import com.pulumi.gcp.networkconnectivity.HubArgs;
+ * import com.pulumi.gcp.networkconnectivity.Group;
+ * import com.pulumi.gcp.networkconnectivity.GroupArgs;
+ * import com.pulumi.gcp.networkconnectivity.Spoke;
+ * import com.pulumi.gcp.networkconnectivity.SpokeArgs;
+ * import com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedVpcNetworkArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var network = new Network("network", NetworkArgs.builder()
+ *             .name("net-spoke")
+ *             .autoCreateSubnetworks(false)
+ *             .build());
+ * 
+ *         var basicHub = new Hub("basicHub", HubArgs.builder()
+ *             .name("hub1-spoke")
+ *             .description("A sample hub")
+ *             .labels(Map.of("label-two", "value-one"))
+ *             .build());
+ * 
+ *         var defaultGroup = new Group("defaultGroup", GroupArgs.builder()
+ *             .hub(basicHub.id())
+ *             .name("default")
+ *             .description("A sample hub group")
+ *             .build());
+ * 
+ *         var primary = new Spoke("primary", SpokeArgs.builder()
+ *             .name("group-spoke1")
+ *             .location("global")
+ *             .description("A sample spoke with a linked VPC")
+ *             .labels(Map.of("label-one", "value-one"))
+ *             .hub(basicHub.id())
+ *             .linkedVpcNetwork(SpokeLinkedVpcNetworkArgs.builder()
+ *                 .excludeExportRanges(                
+ *                     "198.51.100.0/24",
+ *                     "10.10.0.0/16")
+ *                 .includeExportRanges(                
+ *                     "198.51.100.0/23",
+ *                     "10.0.0.0/8")
+ *                 .uri(network.selfLink())
+ *                 .build())
+ *             .group(defaultGroup.id())
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> * ### Network Connectivity Spoke Router Appliance Basic * * <!--Start PulumiCodeChooser --> @@ -539,6 +611,76 @@ * } * * <!--End PulumiCodeChooser --> + * ### Network Connectivity Spoke Center Group + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.compute.Network;
+ * import com.pulumi.gcp.compute.NetworkArgs;
+ * import com.pulumi.gcp.networkconnectivity.Hub;
+ * import com.pulumi.gcp.networkconnectivity.HubArgs;
+ * import com.pulumi.gcp.networkconnectivity.Group;
+ * import com.pulumi.gcp.networkconnectivity.GroupArgs;
+ * import com.pulumi.gcp.networkconnectivity.inputs.GroupAutoAcceptArgs;
+ * import com.pulumi.gcp.networkconnectivity.Spoke;
+ * import com.pulumi.gcp.networkconnectivity.SpokeArgs;
+ * import com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedVpcNetworkArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var network = new Network("network", NetworkArgs.builder()
+ *             .name("tf-net")
+ *             .autoCreateSubnetworks(false)
+ *             .build());
+ * 
+ *         var starHub = new Hub("starHub", HubArgs.builder()
+ *             .name("hub-basic")
+ *             .presetTopology("STAR")
+ *             .build());
+ * 
+ *         var centerGroup = new Group("centerGroup", GroupArgs.builder()
+ *             .name("center")
+ *             .hub(starHub.id())
+ *             .autoAccept(GroupAutoAcceptArgs.builder()
+ *                 .autoAcceptProjects(                
+ *                     "foo_13293",
+ *                     "bar_40289")
+ *                 .build())
+ *             .build());
+ * 
+ *         var primary = new Spoke("primary", SpokeArgs.builder()
+ *             .name("vpc-spoke")
+ *             .location("global")
+ *             .description("A sample spoke")
+ *             .labels(Map.of("label-one", "value-one"))
+ *             .hub(starHub.id())
+ *             .group(centerGroup.id())
+ *             .linkedVpcNetwork(SpokeLinkedVpcNetworkArgs.builder()
+ *                 .uri(network.selfLink())
+ *                 .build())
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> * * ## Import * @@ -609,6 +751,20 @@ public Output> description() { public Output> effectiveLabels() { return this.effectiveLabels; } + /** + * The name of the group that this spoke is associated with. + * + */ + @Export(name="group", refs={String.class}, tree="[0]") + private Output group; + + /** + * @return The name of the group that this spoke is associated with. + * + */ + public Output group() { + return this.group; + } /** * Immutable. The URI of the hub that this spoke is attached to. * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/networkconnectivity/SpokeArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/networkconnectivity/SpokeArgs.java index f517dc231d..992bd5dd81 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/networkconnectivity/SpokeArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/networkconnectivity/SpokeArgs.java @@ -37,6 +37,21 @@ public Optional> description() { return Optional.ofNullable(this.description); } + /** + * The name of the group that this spoke is associated with. + * + */ + @Import(name="group") + private @Nullable Output group; + + /** + * @return The name of the group that this spoke is associated with. + * + */ + public Optional> group() { + return Optional.ofNullable(this.group); + } + /** * Immutable. The URI of the hub that this spoke is attached to. * @@ -211,6 +226,7 @@ private SpokeArgs() {} private SpokeArgs(SpokeArgs $) { this.description = $.description; + this.group = $.group; this.hub = $.hub; this.labels = $.labels; this.linkedInterconnectAttachments = $.linkedInterconnectAttachments; @@ -262,6 +278,27 @@ public Builder description(String description) { return description(Output.of(description)); } + /** + * @param group The name of the group that this spoke is associated with. + * + * @return builder + * + */ + public Builder group(@Nullable Output group) { + $.group = group; + return this; + } + + /** + * @param group The name of the group that this spoke is associated with. + * + * @return builder + * + */ + public Builder group(String group) { + return group(Output.of(group)); + } + /** * @param hub Immutable. The URI of the hub that this spoke is attached to. * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/networkconnectivity/inputs/HubState.java b/sdk/java/src/main/java/com/pulumi/gcp/networkconnectivity/inputs/HubState.java index 787e5cfbdc..0d11c77afc 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/networkconnectivity/inputs/HubState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/networkconnectivity/inputs/HubState.java @@ -117,6 +117,23 @@ public Optional> name() { return Optional.ofNullable(this.name); } + /** + * 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. + * Possible values are: `MESH`, `STAR`. + * + */ + @Import(name="presetTopology") + private @Nullable Output presetTopology; + + /** + * @return 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. + * Possible values are: `MESH`, `STAR`. + * + */ + public Optional> presetTopology() { + return Optional.ofNullable(this.presetTopology); + } + /** * The ID of the project in which the resource belongs. * If it is not provided, the provider project is used. @@ -222,6 +239,7 @@ private HubState(HubState $) { this.exportPsc = $.exportPsc; this.labels = $.labels; this.name = $.name; + this.presetTopology = $.presetTopology; this.project = $.project; this.pulumiLabels = $.pulumiLabels; this.routingVpcs = $.routingVpcs; @@ -382,6 +400,29 @@ public Builder name(String name) { return name(Output.of(name)); } + /** + * @param presetTopology 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. + * Possible values are: `MESH`, `STAR`. + * + * @return builder + * + */ + public Builder presetTopology(@Nullable Output presetTopology) { + $.presetTopology = presetTopology; + return this; + } + + /** + * @param presetTopology 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. + * Possible values are: `MESH`, `STAR`. + * + * @return builder + * + */ + public Builder presetTopology(String presetTopology) { + return presetTopology(Output.of(presetTopology)); + } + /** * @param project The ID of the project in which the resource belongs. * If it is not provided, the provider project is used. diff --git a/sdk/java/src/main/java/com/pulumi/gcp/networkconnectivity/inputs/SpokeState.java b/sdk/java/src/main/java/com/pulumi/gcp/networkconnectivity/inputs/SpokeState.java index ad315ef1f3..4c9e1410c5 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/networkconnectivity/inputs/SpokeState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/networkconnectivity/inputs/SpokeState.java @@ -66,6 +66,21 @@ public Optional>> effectiveLabels() { return Optional.ofNullable(this.effectiveLabels); } + /** + * The name of the group that this spoke is associated with. + * + */ + @Import(name="group") + private @Nullable Output group; + + /** + * @return The name of the group that this spoke is associated with. + * + */ + public Optional> group() { + return Optional.ofNullable(this.group); + } + /** * Immutable. The URI of the hub that this spoke is attached to. * @@ -304,6 +319,7 @@ private SpokeState(SpokeState $) { this.createTime = $.createTime; this.description = $.description; this.effectiveLabels = $.effectiveLabels; + this.group = $.group; this.hub = $.hub; this.labels = $.labels; this.linkedInterconnectAttachments = $.linkedInterconnectAttachments; @@ -401,6 +417,27 @@ public Builder effectiveLabels(Map effectiveLabels) { return effectiveLabels(Output.of(effectiveLabels)); } + /** + * @param group The name of the group that this spoke is associated with. + * + * @return builder + * + */ + public Builder group(@Nullable Output group) { + $.group = group; + return this; + } + + /** + * @param group The name of the group that this spoke is associated with. + * + * @return builder + * + */ + public Builder group(String group) { + return group(Output.of(group)); + } + /** * @param hub Immutable. The URI of the hub that this spoke is attached to. * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/networkmanagement/VpcFlowLogsConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/networkmanagement/VpcFlowLogsConfig.java index cac9e4e9ce..d8297a1b5b 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/networkmanagement/VpcFlowLogsConfig.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/networkmanagement/VpcFlowLogsConfig.java @@ -18,6 +18,8 @@ import javax.annotation.Nullable; /** + * VPC Flow Logs Config is a resource that lets you configure Flow Logs for VPC, Interconnect attachments or VPN Tunnels. + * * ## Example Usage * * ### Network Management Vpc Flow Logs Config Interconnect Full diff --git a/sdk/java/src/main/java/com/pulumi/gcp/networksecurity/InterceptEndpointGroup.java b/sdk/java/src/main/java/com/pulumi/gcp/networksecurity/InterceptEndpointGroup.java new file mode 100644 index 0000000000..8d608a9a03 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/networksecurity/InterceptEndpointGroup.java @@ -0,0 +1,363 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.networksecurity; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import com.pulumi.gcp.Utilities; +import com.pulumi.gcp.networksecurity.InterceptEndpointGroupArgs; +import com.pulumi.gcp.networksecurity.inputs.InterceptEndpointGroupState; +import java.lang.Boolean; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import javax.annotation.Nullable; + +/** + * ## Example Usage + * + * ### Network Security Intercept Endpoint Group Basic + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.compute.Network;
+ * import com.pulumi.gcp.compute.NetworkArgs;
+ * import com.pulumi.gcp.networksecurity.InterceptDeploymentGroup;
+ * import com.pulumi.gcp.networksecurity.InterceptDeploymentGroupArgs;
+ * import com.pulumi.gcp.networksecurity.InterceptEndpointGroup;
+ * import com.pulumi.gcp.networksecurity.InterceptEndpointGroupArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var network = new Network("network", NetworkArgs.builder()
+ *             .name("example-network")
+ *             .autoCreateSubnetworks(false)
+ *             .build());
+ * 
+ *         var deploymentGroup = new InterceptDeploymentGroup("deploymentGroup", InterceptDeploymentGroupArgs.builder()
+ *             .interceptDeploymentGroupId("example-dg")
+ *             .location("global")
+ *             .network(network.id())
+ *             .build());
+ * 
+ *         var default_ = new InterceptEndpointGroup("default", InterceptEndpointGroupArgs.builder()
+ *             .interceptEndpointGroupId("example-eg")
+ *             .location("global")
+ *             .interceptDeploymentGroup(deploymentGroup.id())
+ *             .labels(Map.of("foo", "bar"))
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * + * ## Import + * + * InterceptEndpointGroup can be imported using any of these accepted formats: + * + * * `projects/{{project}}/locations/{{location}}/interceptEndpointGroups/{{intercept_endpoint_group_id}}` + * + * * `{{project}}/{{location}}/{{intercept_endpoint_group_id}}` + * + * * `{{location}}/{{intercept_endpoint_group_id}}` + * + * When using the `pulumi import` command, InterceptEndpointGroup can be imported using one of the formats above. For example: + * + * ```sh + * $ pulumi import gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup default projects/{{project}}/locations/{{location}}/interceptEndpointGroups/{{intercept_endpoint_group_id}} + * ``` + * + * ```sh + * $ pulumi import gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup default {{project}}/{{location}}/{{intercept_endpoint_group_id}} + * ``` + * + * ```sh + * $ pulumi import gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup default {{location}}/{{intercept_endpoint_group_id}} + * ``` + * + */ +@ResourceType(type="gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup") +public class InterceptEndpointGroup extends com.pulumi.resources.CustomResource { + /** + * Create time stamp. + * + */ + @Export(name="createTime", refs={String.class}, tree="[0]") + private Output createTime; + + /** + * @return Create time stamp. + * + */ + public Output createTime() { + return this.createTime; + } + /** + * All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + * + */ + @Export(name="effectiveLabels", refs={Map.class,String.class}, tree="[0,1,1]") + private Output> effectiveLabels; + + /** + * @return All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + * + */ + public Output> effectiveLabels() { + return this.effectiveLabels; + } + /** + * Immutable. The Intercept Deployment Group that this resource is connected to. Format + * is: + * `projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}` + * + */ + @Export(name="interceptDeploymentGroup", refs={String.class}, tree="[0]") + private Output interceptDeploymentGroup; + + /** + * @return Immutable. The Intercept Deployment Group that this resource is connected to. Format + * is: + * `projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}` + * + */ + public Output interceptDeploymentGroup() { + return this.interceptDeploymentGroup; + } + /** + * ID of the Intercept Endpoint Group. + * + * *** + * + */ + @Export(name="interceptEndpointGroupId", refs={String.class}, tree="[0]") + private Output interceptEndpointGroupId; + + /** + * @return ID of the Intercept Endpoint Group. + * + * *** + * + */ + public Output interceptEndpointGroupId() { + return this.interceptEndpointGroupId; + } + /** + * Optional. Labels as key value pairs + * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + * Please refer to the field `effective_labels` for all of the labels present on the resource. + * + */ + @Export(name="labels", refs={Map.class,String.class}, tree="[0,1,1]") + private Output> labels; + + /** + * @return Optional. Labels as key value pairs + * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + * Please refer to the field `effective_labels` for all of the labels present on the resource. + * + */ + public Output>> labels() { + return Codegen.optional(this.labels); + } + /** + * The location of the Intercept Endpoint Group, currently restricted to `global`. + * + */ + @Export(name="location", refs={String.class}, tree="[0]") + private Output location; + + /** + * @return The location of the Intercept Endpoint Group, currently restricted to `global`. + * + */ + public Output location() { + return this.location; + } + /** + * Identifier. The name of the Intercept Endpoint Group. + * + */ + @Export(name="name", refs={String.class}, tree="[0]") + private Output name; + + /** + * @return Identifier. The name of the Intercept Endpoint Group. + * + */ + public Output name() { + return this.name; + } + /** + * The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + */ + @Export(name="project", refs={String.class}, tree="[0]") + private Output project; + + /** + * @return The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + */ + public Output project() { + return this.project; + } + /** + * The combination of labels configured directly on the resource + * and default labels configured on the provider. + * + */ + @Export(name="pulumiLabels", refs={Map.class,String.class}, tree="[0,1,1]") + private Output> pulumiLabels; + + /** + * @return The combination of labels configured directly on the resource + * and default labels configured on the provider. + * + */ + public Output> pulumiLabels() { + return this.pulumiLabels; + } + /** + * Whether reconciling is in progress, recommended per + * https://google.aip.dev/128. + * + */ + @Export(name="reconciling", refs={Boolean.class}, tree="[0]") + private Output reconciling; + + /** + * @return Whether reconciling is in progress, recommended per + * https://google.aip.dev/128. + * + */ + public Output reconciling() { + return this.reconciling; + } + /** + * Current state of the endpoint group. + * Possible values: + * STATE_UNSPECIFIED + * ACTIVE + * CLOSED + * CREATING + * DELETING + * OUT_OF_SYNC + * + */ + @Export(name="state", refs={String.class}, tree="[0]") + private Output state; + + /** + * @return Current state of the endpoint group. + * Possible values: + * STATE_UNSPECIFIED + * ACTIVE + * CLOSED + * CREATING + * DELETING + * OUT_OF_SYNC + * + */ + public Output state() { + return this.state; + } + /** + * Update time stamp. + * + */ + @Export(name="updateTime", refs={String.class}, tree="[0]") + private Output updateTime; + + /** + * @return Update time stamp. + * + */ + public Output updateTime() { + return this.updateTime; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public InterceptEndpointGroup(java.lang.String name) { + this(name, InterceptEndpointGroupArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public InterceptEndpointGroup(java.lang.String name, InterceptEndpointGroupArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public InterceptEndpointGroup(java.lang.String name, InterceptEndpointGroupArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup", name, makeArgs(args, options), makeResourceOptions(options, Codegen.empty()), false); + } + + private InterceptEndpointGroup(java.lang.String name, Output id, @Nullable InterceptEndpointGroupState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup", name, state, makeResourceOptions(options, id), false); + } + + private static InterceptEndpointGroupArgs makeArgs(InterceptEndpointGroupArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + if (options != null && options.getUrn().isPresent()) { + return null; + } + return args == null ? InterceptEndpointGroupArgs.Empty : args; + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .additionalSecretOutputs(List.of( + "effectiveLabels", + "pulumiLabels" + )) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static InterceptEndpointGroup get(java.lang.String name, Output id, @Nullable InterceptEndpointGroupState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new InterceptEndpointGroup(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/networksecurity/InterceptEndpointGroupArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/networksecurity/InterceptEndpointGroupArgs.java new file mode 100644 index 0000000000..ed4ff3f79d --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/networksecurity/InterceptEndpointGroupArgs.java @@ -0,0 +1,270 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.networksecurity; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class InterceptEndpointGroupArgs extends com.pulumi.resources.ResourceArgs { + + public static final InterceptEndpointGroupArgs Empty = new InterceptEndpointGroupArgs(); + + /** + * Immutable. The Intercept Deployment Group that this resource is connected to. Format + * is: + * `projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}` + * + */ + @Import(name="interceptDeploymentGroup", required=true) + private Output interceptDeploymentGroup; + + /** + * @return Immutable. The Intercept Deployment Group that this resource is connected to. Format + * is: + * `projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}` + * + */ + public Output interceptDeploymentGroup() { + return this.interceptDeploymentGroup; + } + + /** + * ID of the Intercept Endpoint Group. + * + * *** + * + */ + @Import(name="interceptEndpointGroupId", required=true) + private Output interceptEndpointGroupId; + + /** + * @return ID of the Intercept Endpoint Group. + * + * *** + * + */ + public Output interceptEndpointGroupId() { + return this.interceptEndpointGroupId; + } + + /** + * Optional. Labels as key value pairs + * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + * Please refer to the field `effective_labels` for all of the labels present on the resource. + * + */ + @Import(name="labels") + private @Nullable Output> labels; + + /** + * @return Optional. Labels as key value pairs + * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + * Please refer to the field `effective_labels` for all of the labels present on the resource. + * + */ + public Optional>> labels() { + return Optional.ofNullable(this.labels); + } + + /** + * The location of the Intercept Endpoint Group, currently restricted to `global`. + * + */ + @Import(name="location", required=true) + private Output location; + + /** + * @return The location of the Intercept Endpoint Group, currently restricted to `global`. + * + */ + public Output location() { + return this.location; + } + + /** + * The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + */ + @Import(name="project") + private @Nullable Output project; + + /** + * @return The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + */ + public Optional> project() { + return Optional.ofNullable(this.project); + } + + private InterceptEndpointGroupArgs() {} + + private InterceptEndpointGroupArgs(InterceptEndpointGroupArgs $) { + this.interceptDeploymentGroup = $.interceptDeploymentGroup; + this.interceptEndpointGroupId = $.interceptEndpointGroupId; + this.labels = $.labels; + this.location = $.location; + this.project = $.project; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(InterceptEndpointGroupArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private InterceptEndpointGroupArgs $; + + public Builder() { + $ = new InterceptEndpointGroupArgs(); + } + + public Builder(InterceptEndpointGroupArgs defaults) { + $ = new InterceptEndpointGroupArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param interceptDeploymentGroup Immutable. The Intercept Deployment Group that this resource is connected to. Format + * is: + * `projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}` + * + * @return builder + * + */ + public Builder interceptDeploymentGroup(Output interceptDeploymentGroup) { + $.interceptDeploymentGroup = interceptDeploymentGroup; + return this; + } + + /** + * @param interceptDeploymentGroup Immutable. The Intercept Deployment Group that this resource is connected to. Format + * is: + * `projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}` + * + * @return builder + * + */ + public Builder interceptDeploymentGroup(String interceptDeploymentGroup) { + return interceptDeploymentGroup(Output.of(interceptDeploymentGroup)); + } + + /** + * @param interceptEndpointGroupId ID of the Intercept Endpoint Group. + * + * *** + * + * @return builder + * + */ + public Builder interceptEndpointGroupId(Output interceptEndpointGroupId) { + $.interceptEndpointGroupId = interceptEndpointGroupId; + return this; + } + + /** + * @param interceptEndpointGroupId ID of the Intercept Endpoint Group. + * + * *** + * + * @return builder + * + */ + public Builder interceptEndpointGroupId(String interceptEndpointGroupId) { + return interceptEndpointGroupId(Output.of(interceptEndpointGroupId)); + } + + /** + * @param labels Optional. Labels as key value pairs + * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + * Please refer to the field `effective_labels` for all of the labels present on the resource. + * + * @return builder + * + */ + public Builder labels(@Nullable Output> labels) { + $.labels = labels; + return this; + } + + /** + * @param labels Optional. Labels as key value pairs + * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + * Please refer to the field `effective_labels` for all of the labels present on the resource. + * + * @return builder + * + */ + public Builder labels(Map labels) { + return labels(Output.of(labels)); + } + + /** + * @param location The location of the Intercept Endpoint Group, currently restricted to `global`. + * + * @return builder + * + */ + public Builder location(Output location) { + $.location = location; + return this; + } + + /** + * @param location The location of the Intercept Endpoint Group, currently restricted to `global`. + * + * @return builder + * + */ + public Builder location(String location) { + return location(Output.of(location)); + } + + /** + * @param project The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + * @return builder + * + */ + public Builder project(@Nullable Output project) { + $.project = project; + return this; + } + + /** + * @param project The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + * @return builder + * + */ + public Builder project(String project) { + return project(Output.of(project)); + } + + public InterceptEndpointGroupArgs build() { + if ($.interceptDeploymentGroup == null) { + throw new MissingRequiredPropertyException("InterceptEndpointGroupArgs", "interceptDeploymentGroup"); + } + if ($.interceptEndpointGroupId == null) { + throw new MissingRequiredPropertyException("InterceptEndpointGroupArgs", "interceptEndpointGroupId"); + } + if ($.location == null) { + throw new MissingRequiredPropertyException("InterceptEndpointGroupArgs", "location"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/networksecurity/InterceptEndpointGroupAssociation.java b/sdk/java/src/main/java/com/pulumi/gcp/networksecurity/InterceptEndpointGroupAssociation.java new file mode 100644 index 0000000000..30c37cb7bb --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/networksecurity/InterceptEndpointGroupAssociation.java @@ -0,0 +1,404 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.networksecurity; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import com.pulumi.gcp.Utilities; +import com.pulumi.gcp.networksecurity.InterceptEndpointGroupAssociationArgs; +import com.pulumi.gcp.networksecurity.inputs.InterceptEndpointGroupAssociationState; +import com.pulumi.gcp.networksecurity.outputs.InterceptEndpointGroupAssociationLocationsDetail; +import java.lang.Boolean; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import javax.annotation.Nullable; + +/** + * ## Example Usage + * + * ### Network Security Intercept Endpoint Group Association Basic + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.compute.Network;
+ * import com.pulumi.gcp.compute.NetworkArgs;
+ * import com.pulumi.gcp.networksecurity.InterceptDeploymentGroup;
+ * import com.pulumi.gcp.networksecurity.InterceptDeploymentGroupArgs;
+ * import com.pulumi.gcp.networksecurity.InterceptEndpointGroup;
+ * import com.pulumi.gcp.networksecurity.InterceptEndpointGroupArgs;
+ * import com.pulumi.gcp.networksecurity.InterceptEndpointGroupAssociation;
+ * import com.pulumi.gcp.networksecurity.InterceptEndpointGroupAssociationArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var producerNetwork = new Network("producerNetwork", NetworkArgs.builder()
+ *             .name("example-prod-network")
+ *             .autoCreateSubnetworks(false)
+ *             .build());
+ * 
+ *         var consumerNetwork = new Network("consumerNetwork", NetworkArgs.builder()
+ *             .name("example-cons-network")
+ *             .autoCreateSubnetworks(false)
+ *             .build());
+ * 
+ *         var deploymentGroup = new InterceptDeploymentGroup("deploymentGroup", InterceptDeploymentGroupArgs.builder()
+ *             .interceptDeploymentGroupId("example-dg")
+ *             .location("global")
+ *             .network(producerNetwork.id())
+ *             .build());
+ * 
+ *         var endpointGroup = new InterceptEndpointGroup("endpointGroup", InterceptEndpointGroupArgs.builder()
+ *             .interceptEndpointGroupId("example-eg")
+ *             .location("global")
+ *             .interceptDeploymentGroup(deploymentGroup.id())
+ *             .build());
+ * 
+ *         var default_ = new InterceptEndpointGroupAssociation("default", InterceptEndpointGroupAssociationArgs.builder()
+ *             .interceptEndpointGroupAssociationId("example-ega")
+ *             .location("global")
+ *             .network(consumerNetwork.id())
+ *             .interceptEndpointGroup(endpointGroup.id())
+ *             .labels(Map.of("foo", "bar"))
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * + * ## Import + * + * InterceptEndpointGroupAssociation can be imported using any of these accepted formats: + * + * * `projects/{{project}}/locations/{{location}}/interceptEndpointGroupAssociations/{{intercept_endpoint_group_association_id}}` + * + * * `{{project}}/{{location}}/{{intercept_endpoint_group_association_id}}` + * + * * `{{location}}/{{intercept_endpoint_group_association_id}}` + * + * When using the `pulumi import` command, InterceptEndpointGroupAssociation can be imported using one of the formats above. For example: + * + * ```sh + * $ pulumi import gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation default projects/{{project}}/locations/{{location}}/interceptEndpointGroupAssociations/{{intercept_endpoint_group_association_id}} + * ``` + * + * ```sh + * $ pulumi import gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation default {{project}}/{{location}}/{{intercept_endpoint_group_association_id}} + * ``` + * + * ```sh + * $ pulumi import gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation default {{location}}/{{intercept_endpoint_group_association_id}} + * ``` + * + */ +@ResourceType(type="gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation") +public class InterceptEndpointGroupAssociation extends com.pulumi.resources.CustomResource { + /** + * Create time stamp. + * + */ + @Export(name="createTime", refs={String.class}, tree="[0]") + private Output createTime; + + /** + * @return Create time stamp. + * + */ + public Output createTime() { + return this.createTime; + } + /** + * All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + * + */ + @Export(name="effectiveLabels", refs={Map.class,String.class}, tree="[0,1,1]") + private Output> effectiveLabels; + + /** + * @return All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + * + */ + public Output> effectiveLabels() { + return this.effectiveLabels; + } + /** + * Immutable. The Intercept Endpoint Group that this resource is connected to. Format + * is: + * `projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`. + * + */ + @Export(name="interceptEndpointGroup", refs={String.class}, tree="[0]") + private Output interceptEndpointGroup; + + /** + * @return Immutable. The Intercept Endpoint Group that this resource is connected to. Format + * is: + * `projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`. + * + */ + public Output interceptEndpointGroup() { + return this.interceptEndpointGroup; + } + /** + * ID of the Intercept Endpoint Group Association. + * + */ + @Export(name="interceptEndpointGroupAssociationId", refs={String.class}, tree="[0]") + private Output interceptEndpointGroupAssociationId; + + /** + * @return ID of the Intercept Endpoint Group Association. + * + */ + public Output> interceptEndpointGroupAssociationId() { + return Codegen.optional(this.interceptEndpointGroupAssociationId); + } + /** + * Optional. Labels as key value pairs. + * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + * Please refer to the field `effective_labels` for all of the labels present on the resource. + * + */ + @Export(name="labels", refs={Map.class,String.class}, tree="[0,1,1]") + private Output> labels; + + /** + * @return Optional. Labels as key value pairs. + * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + * Please refer to the field `effective_labels` for all of the labels present on the resource. + * + */ + public Output>> labels() { + return Codegen.optional(this.labels); + } + /** + * The location of the Intercept Endpoint Group Association, currently restricted to `global`. + * + * *** + * + */ + @Export(name="location", refs={String.class}, tree="[0]") + private Output location; + + /** + * @return The location of the Intercept Endpoint Group Association, currently restricted to `global`. + * + * *** + * + */ + public Output location() { + return this.location; + } + /** + * The list of locations that are currently supported by the associated Intercept Deployment Group and their state. + * Structure is documented below. + * + */ + @Export(name="locationsDetails", refs={List.class,InterceptEndpointGroupAssociationLocationsDetail.class}, tree="[0,1]") + private Output> locationsDetails; + + /** + * @return The list of locations that are currently supported by the associated Intercept Deployment Group and their state. + * Structure is documented below. + * + */ + public Output> locationsDetails() { + return this.locationsDetails; + } + /** + * Identifier. The name of the Intercept Endpoint Group Association. + * + */ + @Export(name="name", refs={String.class}, tree="[0]") + private Output name; + + /** + * @return Identifier. The name of the Intercept Endpoint Group Association. + * + */ + public Output name() { + return this.name; + } + /** + * Immutable. The VPC network associated. Format: + * `projects/{project}/global/networks/{network}`. + * + */ + @Export(name="network", refs={String.class}, tree="[0]") + private Output network; + + /** + * @return Immutable. The VPC network associated. Format: + * `projects/{project}/global/networks/{network}`. + * + */ + public Output network() { + return this.network; + } + /** + * The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + */ + @Export(name="project", refs={String.class}, tree="[0]") + private Output project; + + /** + * @return The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + */ + public Output project() { + return this.project; + } + /** + * The combination of labels configured directly on the resource + * and default labels configured on the provider. + * + */ + @Export(name="pulumiLabels", refs={Map.class,String.class}, tree="[0,1,1]") + private Output> pulumiLabels; + + /** + * @return The combination of labels configured directly on the resource + * and default labels configured on the provider. + * + */ + public Output> pulumiLabels() { + return this.pulumiLabels; + } + /** + * Whether reconciling is in progress. + * + */ + @Export(name="reconciling", refs={Boolean.class}, tree="[0]") + private Output reconciling; + + /** + * @return Whether reconciling is in progress. + * + */ + public Output reconciling() { + return this.reconciling; + } + /** + * (Output) + * The association state in this location. + * Possible values: + * STATE_UNSPECIFIED + * ACTIVE + * OUT_OF_SYNC + * + */ + @Export(name="state", refs={String.class}, tree="[0]") + private Output state; + + /** + * @return (Output) + * The association state in this location. + * Possible values: + * STATE_UNSPECIFIED + * ACTIVE + * OUT_OF_SYNC + * + */ + public Output state() { + return this.state; + } + /** + * Update time stamp. + * + */ + @Export(name="updateTime", refs={String.class}, tree="[0]") + private Output updateTime; + + /** + * @return Update time stamp. + * + */ + public Output updateTime() { + return this.updateTime; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public InterceptEndpointGroupAssociation(java.lang.String name) { + this(name, InterceptEndpointGroupAssociationArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public InterceptEndpointGroupAssociation(java.lang.String name, InterceptEndpointGroupAssociationArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public InterceptEndpointGroupAssociation(java.lang.String name, InterceptEndpointGroupAssociationArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation", name, makeArgs(args, options), makeResourceOptions(options, Codegen.empty()), false); + } + + private InterceptEndpointGroupAssociation(java.lang.String name, Output id, @Nullable InterceptEndpointGroupAssociationState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation", name, state, makeResourceOptions(options, id), false); + } + + private static InterceptEndpointGroupAssociationArgs makeArgs(InterceptEndpointGroupAssociationArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + if (options != null && options.getUrn().isPresent()) { + return null; + } + return args == null ? InterceptEndpointGroupAssociationArgs.Empty : args; + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .additionalSecretOutputs(List.of( + "effectiveLabels", + "pulumiLabels" + )) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static InterceptEndpointGroupAssociation get(java.lang.String name, Output id, @Nullable InterceptEndpointGroupAssociationState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new InterceptEndpointGroupAssociation(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/networksecurity/InterceptEndpointGroupAssociationArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/networksecurity/InterceptEndpointGroupAssociationArgs.java new file mode 100644 index 0000000000..d39bcdb0c0 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/networksecurity/InterceptEndpointGroupAssociationArgs.java @@ -0,0 +1,311 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.networksecurity; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class InterceptEndpointGroupAssociationArgs extends com.pulumi.resources.ResourceArgs { + + public static final InterceptEndpointGroupAssociationArgs Empty = new InterceptEndpointGroupAssociationArgs(); + + /** + * Immutable. The Intercept Endpoint Group that this resource is connected to. Format + * is: + * `projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`. + * + */ + @Import(name="interceptEndpointGroup", required=true) + private Output interceptEndpointGroup; + + /** + * @return Immutable. The Intercept Endpoint Group that this resource is connected to. Format + * is: + * `projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`. + * + */ + public Output interceptEndpointGroup() { + return this.interceptEndpointGroup; + } + + /** + * ID of the Intercept Endpoint Group Association. + * + */ + @Import(name="interceptEndpointGroupAssociationId") + private @Nullable Output interceptEndpointGroupAssociationId; + + /** + * @return ID of the Intercept Endpoint Group Association. + * + */ + public Optional> interceptEndpointGroupAssociationId() { + return Optional.ofNullable(this.interceptEndpointGroupAssociationId); + } + + /** + * Optional. Labels as key value pairs. + * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + * Please refer to the field `effective_labels` for all of the labels present on the resource. + * + */ + @Import(name="labels") + private @Nullable Output> labels; + + /** + * @return Optional. Labels as key value pairs. + * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + * Please refer to the field `effective_labels` for all of the labels present on the resource. + * + */ + public Optional>> labels() { + return Optional.ofNullable(this.labels); + } + + /** + * The location of the Intercept Endpoint Group Association, currently restricted to `global`. + * + * *** + * + */ + @Import(name="location", required=true) + private Output location; + + /** + * @return The location of the Intercept Endpoint Group Association, currently restricted to `global`. + * + * *** + * + */ + public Output location() { + return this.location; + } + + /** + * Immutable. The VPC network associated. Format: + * `projects/{project}/global/networks/{network}`. + * + */ + @Import(name="network", required=true) + private Output network; + + /** + * @return Immutable. The VPC network associated. Format: + * `projects/{project}/global/networks/{network}`. + * + */ + public Output network() { + return this.network; + } + + /** + * The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + */ + @Import(name="project") + private @Nullable Output project; + + /** + * @return The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + */ + public Optional> project() { + return Optional.ofNullable(this.project); + } + + private InterceptEndpointGroupAssociationArgs() {} + + private InterceptEndpointGroupAssociationArgs(InterceptEndpointGroupAssociationArgs $) { + this.interceptEndpointGroup = $.interceptEndpointGroup; + this.interceptEndpointGroupAssociationId = $.interceptEndpointGroupAssociationId; + this.labels = $.labels; + this.location = $.location; + this.network = $.network; + this.project = $.project; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(InterceptEndpointGroupAssociationArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private InterceptEndpointGroupAssociationArgs $; + + public Builder() { + $ = new InterceptEndpointGroupAssociationArgs(); + } + + public Builder(InterceptEndpointGroupAssociationArgs defaults) { + $ = new InterceptEndpointGroupAssociationArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param interceptEndpointGroup Immutable. The Intercept Endpoint Group that this resource is connected to. Format + * is: + * `projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`. + * + * @return builder + * + */ + public Builder interceptEndpointGroup(Output interceptEndpointGroup) { + $.interceptEndpointGroup = interceptEndpointGroup; + return this; + } + + /** + * @param interceptEndpointGroup Immutable. The Intercept Endpoint Group that this resource is connected to. Format + * is: + * `projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`. + * + * @return builder + * + */ + public Builder interceptEndpointGroup(String interceptEndpointGroup) { + return interceptEndpointGroup(Output.of(interceptEndpointGroup)); + } + + /** + * @param interceptEndpointGroupAssociationId ID of the Intercept Endpoint Group Association. + * + * @return builder + * + */ + public Builder interceptEndpointGroupAssociationId(@Nullable Output interceptEndpointGroupAssociationId) { + $.interceptEndpointGroupAssociationId = interceptEndpointGroupAssociationId; + return this; + } + + /** + * @param interceptEndpointGroupAssociationId ID of the Intercept Endpoint Group Association. + * + * @return builder + * + */ + public Builder interceptEndpointGroupAssociationId(String interceptEndpointGroupAssociationId) { + return interceptEndpointGroupAssociationId(Output.of(interceptEndpointGroupAssociationId)); + } + + /** + * @param labels Optional. Labels as key value pairs. + * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + * Please refer to the field `effective_labels` for all of the labels present on the resource. + * + * @return builder + * + */ + public Builder labels(@Nullable Output> labels) { + $.labels = labels; + return this; + } + + /** + * @param labels Optional. Labels as key value pairs. + * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + * Please refer to the field `effective_labels` for all of the labels present on the resource. + * + * @return builder + * + */ + public Builder labels(Map labels) { + return labels(Output.of(labels)); + } + + /** + * @param location The location of the Intercept Endpoint Group Association, currently restricted to `global`. + * + * *** + * + * @return builder + * + */ + public Builder location(Output location) { + $.location = location; + return this; + } + + /** + * @param location The location of the Intercept Endpoint Group Association, currently restricted to `global`. + * + * *** + * + * @return builder + * + */ + public Builder location(String location) { + return location(Output.of(location)); + } + + /** + * @param network Immutable. The VPC network associated. Format: + * `projects/{project}/global/networks/{network}`. + * + * @return builder + * + */ + public Builder network(Output network) { + $.network = network; + return this; + } + + /** + * @param network Immutable. The VPC network associated. Format: + * `projects/{project}/global/networks/{network}`. + * + * @return builder + * + */ + public Builder network(String network) { + return network(Output.of(network)); + } + + /** + * @param project The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + * @return builder + * + */ + public Builder project(@Nullable Output project) { + $.project = project; + return this; + } + + /** + * @param project The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + * @return builder + * + */ + public Builder project(String project) { + return project(Output.of(project)); + } + + public InterceptEndpointGroupAssociationArgs build() { + if ($.interceptEndpointGroup == null) { + throw new MissingRequiredPropertyException("InterceptEndpointGroupAssociationArgs", "interceptEndpointGroup"); + } + if ($.location == null) { + throw new MissingRequiredPropertyException("InterceptEndpointGroupAssociationArgs", "location"); + } + if ($.network == null) { + throw new MissingRequiredPropertyException("InterceptEndpointGroupAssociationArgs", "network"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/networksecurity/inputs/InterceptEndpointGroupAssociationLocationsDetailArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/networksecurity/inputs/InterceptEndpointGroupAssociationLocationsDetailArgs.java new file mode 100644 index 0000000000..4ab4018f86 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/networksecurity/inputs/InterceptEndpointGroupAssociationLocationsDetailArgs.java @@ -0,0 +1,148 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.networksecurity.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class InterceptEndpointGroupAssociationLocationsDetailArgs extends com.pulumi.resources.ResourceArgs { + + public static final InterceptEndpointGroupAssociationLocationsDetailArgs Empty = new InterceptEndpointGroupAssociationLocationsDetailArgs(); + + /** + * The location of the Intercept Endpoint Group Association, currently restricted to `global`. + * + * *** + * + */ + @Import(name="location") + private @Nullable Output location; + + /** + * @return The location of the Intercept Endpoint Group Association, currently restricted to `global`. + * + * *** + * + */ + public Optional> location() { + return Optional.ofNullable(this.location); + } + + /** + * (Output) + * The association state in this location. + * Possible values: + * STATE_UNSPECIFIED + * ACTIVE + * OUT_OF_SYNC + * + */ + @Import(name="state") + private @Nullable Output state; + + /** + * @return (Output) + * The association state in this location. + * Possible values: + * STATE_UNSPECIFIED + * ACTIVE + * OUT_OF_SYNC + * + */ + public Optional> state() { + return Optional.ofNullable(this.state); + } + + private InterceptEndpointGroupAssociationLocationsDetailArgs() {} + + private InterceptEndpointGroupAssociationLocationsDetailArgs(InterceptEndpointGroupAssociationLocationsDetailArgs $) { + this.location = $.location; + this.state = $.state; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(InterceptEndpointGroupAssociationLocationsDetailArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private InterceptEndpointGroupAssociationLocationsDetailArgs $; + + public Builder() { + $ = new InterceptEndpointGroupAssociationLocationsDetailArgs(); + } + + public Builder(InterceptEndpointGroupAssociationLocationsDetailArgs defaults) { + $ = new InterceptEndpointGroupAssociationLocationsDetailArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param location The location of the Intercept Endpoint Group Association, currently restricted to `global`. + * + * *** + * + * @return builder + * + */ + public Builder location(@Nullable Output location) { + $.location = location; + return this; + } + + /** + * @param location The location of the Intercept Endpoint Group Association, currently restricted to `global`. + * + * *** + * + * @return builder + * + */ + public Builder location(String location) { + return location(Output.of(location)); + } + + /** + * @param state (Output) + * The association state in this location. + * Possible values: + * STATE_UNSPECIFIED + * ACTIVE + * OUT_OF_SYNC + * + * @return builder + * + */ + public Builder state(@Nullable Output state) { + $.state = state; + return this; + } + + /** + * @param state (Output) + * The association state in this location. + * Possible values: + * STATE_UNSPECIFIED + * ACTIVE + * OUT_OF_SYNC + * + * @return builder + * + */ + public Builder state(String state) { + return state(Output.of(state)); + } + + public InterceptEndpointGroupAssociationLocationsDetailArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/networksecurity/inputs/InterceptEndpointGroupAssociationState.java b/sdk/java/src/main/java/com/pulumi/gcp/networksecurity/inputs/InterceptEndpointGroupAssociationState.java new file mode 100644 index 0000000000..426f54705c --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/networksecurity/inputs/InterceptEndpointGroupAssociationState.java @@ -0,0 +1,639 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.networksecurity.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.networksecurity.inputs.InterceptEndpointGroupAssociationLocationsDetailArgs; +import java.lang.Boolean; +import java.lang.String; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class InterceptEndpointGroupAssociationState extends com.pulumi.resources.ResourceArgs { + + public static final InterceptEndpointGroupAssociationState Empty = new InterceptEndpointGroupAssociationState(); + + /** + * Create time stamp. + * + */ + @Import(name="createTime") + private @Nullable Output createTime; + + /** + * @return Create time stamp. + * + */ + public Optional> createTime() { + return Optional.ofNullable(this.createTime); + } + + /** + * All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + * + */ + @Import(name="effectiveLabels") + private @Nullable Output> effectiveLabels; + + /** + * @return All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + * + */ + public Optional>> effectiveLabels() { + return Optional.ofNullable(this.effectiveLabels); + } + + /** + * Immutable. The Intercept Endpoint Group that this resource is connected to. Format + * is: + * `projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`. + * + */ + @Import(name="interceptEndpointGroup") + private @Nullable Output interceptEndpointGroup; + + /** + * @return Immutable. The Intercept Endpoint Group that this resource is connected to. Format + * is: + * `projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`. + * + */ + public Optional> interceptEndpointGroup() { + return Optional.ofNullable(this.interceptEndpointGroup); + } + + /** + * ID of the Intercept Endpoint Group Association. + * + */ + @Import(name="interceptEndpointGroupAssociationId") + private @Nullable Output interceptEndpointGroupAssociationId; + + /** + * @return ID of the Intercept Endpoint Group Association. + * + */ + public Optional> interceptEndpointGroupAssociationId() { + return Optional.ofNullable(this.interceptEndpointGroupAssociationId); + } + + /** + * Optional. Labels as key value pairs. + * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + * Please refer to the field `effective_labels` for all of the labels present on the resource. + * + */ + @Import(name="labels") + private @Nullable Output> labels; + + /** + * @return Optional. Labels as key value pairs. + * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + * Please refer to the field `effective_labels` for all of the labels present on the resource. + * + */ + public Optional>> labels() { + return Optional.ofNullable(this.labels); + } + + /** + * The location of the Intercept Endpoint Group Association, currently restricted to `global`. + * + * *** + * + */ + @Import(name="location") + private @Nullable Output location; + + /** + * @return The location of the Intercept Endpoint Group Association, currently restricted to `global`. + * + * *** + * + */ + public Optional> location() { + return Optional.ofNullable(this.location); + } + + /** + * The list of locations that are currently supported by the associated Intercept Deployment Group and their state. + * Structure is documented below. + * + */ + @Import(name="locationsDetails") + private @Nullable Output> locationsDetails; + + /** + * @return The list of locations that are currently supported by the associated Intercept Deployment Group and their state. + * Structure is documented below. + * + */ + public Optional>> locationsDetails() { + return Optional.ofNullable(this.locationsDetails); + } + + /** + * Identifier. The name of the Intercept Endpoint Group Association. + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return Identifier. The name of the Intercept Endpoint Group Association. + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * Immutable. The VPC network associated. Format: + * `projects/{project}/global/networks/{network}`. + * + */ + @Import(name="network") + private @Nullable Output network; + + /** + * @return Immutable. The VPC network associated. Format: + * `projects/{project}/global/networks/{network}`. + * + */ + public Optional> network() { + return Optional.ofNullable(this.network); + } + + /** + * The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + */ + @Import(name="project") + private @Nullable Output project; + + /** + * @return The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + */ + public Optional> project() { + return Optional.ofNullable(this.project); + } + + /** + * The combination of labels configured directly on the resource + * and default labels configured on the provider. + * + */ + @Import(name="pulumiLabels") + private @Nullable Output> pulumiLabels; + + /** + * @return The combination of labels configured directly on the resource + * and default labels configured on the provider. + * + */ + public Optional>> pulumiLabels() { + return Optional.ofNullable(this.pulumiLabels); + } + + /** + * Whether reconciling is in progress. + * + */ + @Import(name="reconciling") + private @Nullable Output reconciling; + + /** + * @return Whether reconciling is in progress. + * + */ + public Optional> reconciling() { + return Optional.ofNullable(this.reconciling); + } + + /** + * (Output) + * The association state in this location. + * Possible values: + * STATE_UNSPECIFIED + * ACTIVE + * OUT_OF_SYNC + * + */ + @Import(name="state") + private @Nullable Output state; + + /** + * @return (Output) + * The association state in this location. + * Possible values: + * STATE_UNSPECIFIED + * ACTIVE + * OUT_OF_SYNC + * + */ + public Optional> state() { + return Optional.ofNullable(this.state); + } + + /** + * Update time stamp. + * + */ + @Import(name="updateTime") + private @Nullable Output updateTime; + + /** + * @return Update time stamp. + * + */ + public Optional> updateTime() { + return Optional.ofNullable(this.updateTime); + } + + private InterceptEndpointGroupAssociationState() {} + + private InterceptEndpointGroupAssociationState(InterceptEndpointGroupAssociationState $) { + this.createTime = $.createTime; + this.effectiveLabels = $.effectiveLabels; + this.interceptEndpointGroup = $.interceptEndpointGroup; + this.interceptEndpointGroupAssociationId = $.interceptEndpointGroupAssociationId; + this.labels = $.labels; + this.location = $.location; + this.locationsDetails = $.locationsDetails; + this.name = $.name; + this.network = $.network; + this.project = $.project; + this.pulumiLabels = $.pulumiLabels; + this.reconciling = $.reconciling; + this.state = $.state; + this.updateTime = $.updateTime; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(InterceptEndpointGroupAssociationState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private InterceptEndpointGroupAssociationState $; + + public Builder() { + $ = new InterceptEndpointGroupAssociationState(); + } + + public Builder(InterceptEndpointGroupAssociationState defaults) { + $ = new InterceptEndpointGroupAssociationState(Objects.requireNonNull(defaults)); + } + + /** + * @param createTime Create time stamp. + * + * @return builder + * + */ + public Builder createTime(@Nullable Output createTime) { + $.createTime = createTime; + return this; + } + + /** + * @param createTime Create time stamp. + * + * @return builder + * + */ + public Builder createTime(String createTime) { + return createTime(Output.of(createTime)); + } + + /** + * @param effectiveLabels All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + * + * @return builder + * + */ + public Builder effectiveLabels(@Nullable Output> effectiveLabels) { + $.effectiveLabels = effectiveLabels; + return this; + } + + /** + * @param effectiveLabels All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + * + * @return builder + * + */ + public Builder effectiveLabels(Map effectiveLabels) { + return effectiveLabels(Output.of(effectiveLabels)); + } + + /** + * @param interceptEndpointGroup Immutable. The Intercept Endpoint Group that this resource is connected to. Format + * is: + * `projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`. + * + * @return builder + * + */ + public Builder interceptEndpointGroup(@Nullable Output interceptEndpointGroup) { + $.interceptEndpointGroup = interceptEndpointGroup; + return this; + } + + /** + * @param interceptEndpointGroup Immutable. The Intercept Endpoint Group that this resource is connected to. Format + * is: + * `projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`. + * + * @return builder + * + */ + public Builder interceptEndpointGroup(String interceptEndpointGroup) { + return interceptEndpointGroup(Output.of(interceptEndpointGroup)); + } + + /** + * @param interceptEndpointGroupAssociationId ID of the Intercept Endpoint Group Association. + * + * @return builder + * + */ + public Builder interceptEndpointGroupAssociationId(@Nullable Output interceptEndpointGroupAssociationId) { + $.interceptEndpointGroupAssociationId = interceptEndpointGroupAssociationId; + return this; + } + + /** + * @param interceptEndpointGroupAssociationId ID of the Intercept Endpoint Group Association. + * + * @return builder + * + */ + public Builder interceptEndpointGroupAssociationId(String interceptEndpointGroupAssociationId) { + return interceptEndpointGroupAssociationId(Output.of(interceptEndpointGroupAssociationId)); + } + + /** + * @param labels Optional. Labels as key value pairs. + * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + * Please refer to the field `effective_labels` for all of the labels present on the resource. + * + * @return builder + * + */ + public Builder labels(@Nullable Output> labels) { + $.labels = labels; + return this; + } + + /** + * @param labels Optional. Labels as key value pairs. + * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + * Please refer to the field `effective_labels` for all of the labels present on the resource. + * + * @return builder + * + */ + public Builder labels(Map labels) { + return labels(Output.of(labels)); + } + + /** + * @param location The location of the Intercept Endpoint Group Association, currently restricted to `global`. + * + * *** + * + * @return builder + * + */ + public Builder location(@Nullable Output location) { + $.location = location; + return this; + } + + /** + * @param location The location of the Intercept Endpoint Group Association, currently restricted to `global`. + * + * *** + * + * @return builder + * + */ + public Builder location(String location) { + return location(Output.of(location)); + } + + /** + * @param locationsDetails The list of locations that are currently supported by the associated Intercept Deployment Group and their state. + * Structure is documented below. + * + * @return builder + * + */ + public Builder locationsDetails(@Nullable Output> locationsDetails) { + $.locationsDetails = locationsDetails; + return this; + } + + /** + * @param locationsDetails The list of locations that are currently supported by the associated Intercept Deployment Group and their state. + * Structure is documented below. + * + * @return builder + * + */ + public Builder locationsDetails(List locationsDetails) { + return locationsDetails(Output.of(locationsDetails)); + } + + /** + * @param locationsDetails The list of locations that are currently supported by the associated Intercept Deployment Group and their state. + * Structure is documented below. + * + * @return builder + * + */ + public Builder locationsDetails(InterceptEndpointGroupAssociationLocationsDetailArgs... locationsDetails) { + return locationsDetails(List.of(locationsDetails)); + } + + /** + * @param name Identifier. The name of the Intercept Endpoint Group Association. + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name Identifier. The name of the Intercept Endpoint Group Association. + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param network Immutable. The VPC network associated. Format: + * `projects/{project}/global/networks/{network}`. + * + * @return builder + * + */ + public Builder network(@Nullable Output network) { + $.network = network; + return this; + } + + /** + * @param network Immutable. The VPC network associated. Format: + * `projects/{project}/global/networks/{network}`. + * + * @return builder + * + */ + public Builder network(String network) { + return network(Output.of(network)); + } + + /** + * @param project The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + * @return builder + * + */ + public Builder project(@Nullable Output project) { + $.project = project; + return this; + } + + /** + * @param project The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + * @return builder + * + */ + public Builder project(String project) { + return project(Output.of(project)); + } + + /** + * @param pulumiLabels The combination of labels configured directly on the resource + * and default labels configured on the provider. + * + * @return builder + * + */ + public Builder pulumiLabels(@Nullable Output> pulumiLabels) { + $.pulumiLabels = pulumiLabels; + return this; + } + + /** + * @param pulumiLabels The combination of labels configured directly on the resource + * and default labels configured on the provider. + * + * @return builder + * + */ + public Builder pulumiLabels(Map pulumiLabels) { + return pulumiLabels(Output.of(pulumiLabels)); + } + + /** + * @param reconciling Whether reconciling is in progress. + * + * @return builder + * + */ + public Builder reconciling(@Nullable Output reconciling) { + $.reconciling = reconciling; + return this; + } + + /** + * @param reconciling Whether reconciling is in progress. + * + * @return builder + * + */ + public Builder reconciling(Boolean reconciling) { + return reconciling(Output.of(reconciling)); + } + + /** + * @param state (Output) + * The association state in this location. + * Possible values: + * STATE_UNSPECIFIED + * ACTIVE + * OUT_OF_SYNC + * + * @return builder + * + */ + public Builder state(@Nullable Output state) { + $.state = state; + return this; + } + + /** + * @param state (Output) + * The association state in this location. + * Possible values: + * STATE_UNSPECIFIED + * ACTIVE + * OUT_OF_SYNC + * + * @return builder + * + */ + public Builder state(String state) { + return state(Output.of(state)); + } + + /** + * @param updateTime Update time stamp. + * + * @return builder + * + */ + public Builder updateTime(@Nullable Output updateTime) { + $.updateTime = updateTime; + return this; + } + + /** + * @param updateTime Update time stamp. + * + * @return builder + * + */ + public Builder updateTime(String updateTime) { + return updateTime(Output.of(updateTime)); + } + + public InterceptEndpointGroupAssociationState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/networksecurity/inputs/InterceptEndpointGroupState.java b/sdk/java/src/main/java/com/pulumi/gcp/networksecurity/inputs/InterceptEndpointGroupState.java new file mode 100644 index 0000000000..40a3cbd97e --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/networksecurity/inputs/InterceptEndpointGroupState.java @@ -0,0 +1,556 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.networksecurity.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.lang.String; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class InterceptEndpointGroupState extends com.pulumi.resources.ResourceArgs { + + public static final InterceptEndpointGroupState Empty = new InterceptEndpointGroupState(); + + /** + * Create time stamp. + * + */ + @Import(name="createTime") + private @Nullable Output createTime; + + /** + * @return Create time stamp. + * + */ + public Optional> createTime() { + return Optional.ofNullable(this.createTime); + } + + /** + * All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + * + */ + @Import(name="effectiveLabels") + private @Nullable Output> effectiveLabels; + + /** + * @return All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + * + */ + public Optional>> effectiveLabels() { + return Optional.ofNullable(this.effectiveLabels); + } + + /** + * Immutable. The Intercept Deployment Group that this resource is connected to. Format + * is: + * `projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}` + * + */ + @Import(name="interceptDeploymentGroup") + private @Nullable Output interceptDeploymentGroup; + + /** + * @return Immutable. The Intercept Deployment Group that this resource is connected to. Format + * is: + * `projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}` + * + */ + public Optional> interceptDeploymentGroup() { + return Optional.ofNullable(this.interceptDeploymentGroup); + } + + /** + * ID of the Intercept Endpoint Group. + * + * *** + * + */ + @Import(name="interceptEndpointGroupId") + private @Nullable Output interceptEndpointGroupId; + + /** + * @return ID of the Intercept Endpoint Group. + * + * *** + * + */ + public Optional> interceptEndpointGroupId() { + return Optional.ofNullable(this.interceptEndpointGroupId); + } + + /** + * Optional. Labels as key value pairs + * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + * Please refer to the field `effective_labels` for all of the labels present on the resource. + * + */ + @Import(name="labels") + private @Nullable Output> labels; + + /** + * @return Optional. Labels as key value pairs + * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + * Please refer to the field `effective_labels` for all of the labels present on the resource. + * + */ + public Optional>> labels() { + return Optional.ofNullable(this.labels); + } + + /** + * The location of the Intercept Endpoint Group, currently restricted to `global`. + * + */ + @Import(name="location") + private @Nullable Output location; + + /** + * @return The location of the Intercept Endpoint Group, currently restricted to `global`. + * + */ + public Optional> location() { + return Optional.ofNullable(this.location); + } + + /** + * Identifier. The name of the Intercept Endpoint Group. + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return Identifier. The name of the Intercept Endpoint Group. + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + */ + @Import(name="project") + private @Nullable Output project; + + /** + * @return The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + */ + public Optional> project() { + return Optional.ofNullable(this.project); + } + + /** + * The combination of labels configured directly on the resource + * and default labels configured on the provider. + * + */ + @Import(name="pulumiLabels") + private @Nullable Output> pulumiLabels; + + /** + * @return The combination of labels configured directly on the resource + * and default labels configured on the provider. + * + */ + public Optional>> pulumiLabels() { + return Optional.ofNullable(this.pulumiLabels); + } + + /** + * Whether reconciling is in progress, recommended per + * https://google.aip.dev/128. + * + */ + @Import(name="reconciling") + private @Nullable Output reconciling; + + /** + * @return Whether reconciling is in progress, recommended per + * https://google.aip.dev/128. + * + */ + public Optional> reconciling() { + return Optional.ofNullable(this.reconciling); + } + + /** + * Current state of the endpoint group. + * Possible values: + * STATE_UNSPECIFIED + * ACTIVE + * CLOSED + * CREATING + * DELETING + * OUT_OF_SYNC + * + */ + @Import(name="state") + private @Nullable Output state; + + /** + * @return Current state of the endpoint group. + * Possible values: + * STATE_UNSPECIFIED + * ACTIVE + * CLOSED + * CREATING + * DELETING + * OUT_OF_SYNC + * + */ + public Optional> state() { + return Optional.ofNullable(this.state); + } + + /** + * Update time stamp. + * + */ + @Import(name="updateTime") + private @Nullable Output updateTime; + + /** + * @return Update time stamp. + * + */ + public Optional> updateTime() { + return Optional.ofNullable(this.updateTime); + } + + private InterceptEndpointGroupState() {} + + private InterceptEndpointGroupState(InterceptEndpointGroupState $) { + this.createTime = $.createTime; + this.effectiveLabels = $.effectiveLabels; + this.interceptDeploymentGroup = $.interceptDeploymentGroup; + this.interceptEndpointGroupId = $.interceptEndpointGroupId; + this.labels = $.labels; + this.location = $.location; + this.name = $.name; + this.project = $.project; + this.pulumiLabels = $.pulumiLabels; + this.reconciling = $.reconciling; + this.state = $.state; + this.updateTime = $.updateTime; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(InterceptEndpointGroupState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private InterceptEndpointGroupState $; + + public Builder() { + $ = new InterceptEndpointGroupState(); + } + + public Builder(InterceptEndpointGroupState defaults) { + $ = new InterceptEndpointGroupState(Objects.requireNonNull(defaults)); + } + + /** + * @param createTime Create time stamp. + * + * @return builder + * + */ + public Builder createTime(@Nullable Output createTime) { + $.createTime = createTime; + return this; + } + + /** + * @param createTime Create time stamp. + * + * @return builder + * + */ + public Builder createTime(String createTime) { + return createTime(Output.of(createTime)); + } + + /** + * @param effectiveLabels All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + * + * @return builder + * + */ + public Builder effectiveLabels(@Nullable Output> effectiveLabels) { + $.effectiveLabels = effectiveLabels; + return this; + } + + /** + * @param effectiveLabels All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + * + * @return builder + * + */ + public Builder effectiveLabels(Map effectiveLabels) { + return effectiveLabels(Output.of(effectiveLabels)); + } + + /** + * @param interceptDeploymentGroup Immutable. The Intercept Deployment Group that this resource is connected to. Format + * is: + * `projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}` + * + * @return builder + * + */ + public Builder interceptDeploymentGroup(@Nullable Output interceptDeploymentGroup) { + $.interceptDeploymentGroup = interceptDeploymentGroup; + return this; + } + + /** + * @param interceptDeploymentGroup Immutable. The Intercept Deployment Group that this resource is connected to. Format + * is: + * `projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}` + * + * @return builder + * + */ + public Builder interceptDeploymentGroup(String interceptDeploymentGroup) { + return interceptDeploymentGroup(Output.of(interceptDeploymentGroup)); + } + + /** + * @param interceptEndpointGroupId ID of the Intercept Endpoint Group. + * + * *** + * + * @return builder + * + */ + public Builder interceptEndpointGroupId(@Nullable Output interceptEndpointGroupId) { + $.interceptEndpointGroupId = interceptEndpointGroupId; + return this; + } + + /** + * @param interceptEndpointGroupId ID of the Intercept Endpoint Group. + * + * *** + * + * @return builder + * + */ + public Builder interceptEndpointGroupId(String interceptEndpointGroupId) { + return interceptEndpointGroupId(Output.of(interceptEndpointGroupId)); + } + + /** + * @param labels Optional. Labels as key value pairs + * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + * Please refer to the field `effective_labels` for all of the labels present on the resource. + * + * @return builder + * + */ + public Builder labels(@Nullable Output> labels) { + $.labels = labels; + return this; + } + + /** + * @param labels Optional. Labels as key value pairs + * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + * Please refer to the field `effective_labels` for all of the labels present on the resource. + * + * @return builder + * + */ + public Builder labels(Map labels) { + return labels(Output.of(labels)); + } + + /** + * @param location The location of the Intercept Endpoint Group, currently restricted to `global`. + * + * @return builder + * + */ + public Builder location(@Nullable Output location) { + $.location = location; + return this; + } + + /** + * @param location The location of the Intercept Endpoint Group, currently restricted to `global`. + * + * @return builder + * + */ + public Builder location(String location) { + return location(Output.of(location)); + } + + /** + * @param name Identifier. The name of the Intercept Endpoint Group. + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name Identifier. The name of the Intercept Endpoint Group. + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param project The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + * @return builder + * + */ + public Builder project(@Nullable Output project) { + $.project = project; + return this; + } + + /** + * @param project The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + * @return builder + * + */ + public Builder project(String project) { + return project(Output.of(project)); + } + + /** + * @param pulumiLabels The combination of labels configured directly on the resource + * and default labels configured on the provider. + * + * @return builder + * + */ + public Builder pulumiLabels(@Nullable Output> pulumiLabels) { + $.pulumiLabels = pulumiLabels; + return this; + } + + /** + * @param pulumiLabels The combination of labels configured directly on the resource + * and default labels configured on the provider. + * + * @return builder + * + */ + public Builder pulumiLabels(Map pulumiLabels) { + return pulumiLabels(Output.of(pulumiLabels)); + } + + /** + * @param reconciling Whether reconciling is in progress, recommended per + * https://google.aip.dev/128. + * + * @return builder + * + */ + public Builder reconciling(@Nullable Output reconciling) { + $.reconciling = reconciling; + return this; + } + + /** + * @param reconciling Whether reconciling is in progress, recommended per + * https://google.aip.dev/128. + * + * @return builder + * + */ + public Builder reconciling(Boolean reconciling) { + return reconciling(Output.of(reconciling)); + } + + /** + * @param state Current state of the endpoint group. + * Possible values: + * STATE_UNSPECIFIED + * ACTIVE + * CLOSED + * CREATING + * DELETING + * OUT_OF_SYNC + * + * @return builder + * + */ + public Builder state(@Nullable Output state) { + $.state = state; + return this; + } + + /** + * @param state Current state of the endpoint group. + * Possible values: + * STATE_UNSPECIFIED + * ACTIVE + * CLOSED + * CREATING + * DELETING + * OUT_OF_SYNC + * + * @return builder + * + */ + public Builder state(String state) { + return state(Output.of(state)); + } + + /** + * @param updateTime Update time stamp. + * + * @return builder + * + */ + public Builder updateTime(@Nullable Output updateTime) { + $.updateTime = updateTime; + return this; + } + + /** + * @param updateTime Update time stamp. + * + * @return builder + * + */ + public Builder updateTime(String updateTime) { + return updateTime(Output.of(updateTime)); + } + + public InterceptEndpointGroupState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/networksecurity/outputs/InterceptEndpointGroupAssociationLocationsDetail.java b/sdk/java/src/main/java/com/pulumi/gcp/networksecurity/outputs/InterceptEndpointGroupAssociationLocationsDetail.java new file mode 100644 index 0000000000..2af15f80d6 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/networksecurity/outputs/InterceptEndpointGroupAssociationLocationsDetail.java @@ -0,0 +1,92 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.networksecurity.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class InterceptEndpointGroupAssociationLocationsDetail { + /** + * @return The location of the Intercept Endpoint Group Association, currently restricted to `global`. + * + * *** + * + */ + private @Nullable String location; + /** + * @return (Output) + * The association state in this location. + * Possible values: + * STATE_UNSPECIFIED + * ACTIVE + * OUT_OF_SYNC + * + */ + private @Nullable String state; + + private InterceptEndpointGroupAssociationLocationsDetail() {} + /** + * @return The location of the Intercept Endpoint Group Association, currently restricted to `global`. + * + * *** + * + */ + public Optional location() { + return Optional.ofNullable(this.location); + } + /** + * @return (Output) + * The association state in this location. + * Possible values: + * STATE_UNSPECIFIED + * ACTIVE + * OUT_OF_SYNC + * + */ + public Optional state() { + return Optional.ofNullable(this.state); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(InterceptEndpointGroupAssociationLocationsDetail defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String location; + private @Nullable String state; + public Builder() {} + public Builder(InterceptEndpointGroupAssociationLocationsDetail defaults) { + Objects.requireNonNull(defaults); + this.location = defaults.location; + this.state = defaults.state; + } + + @CustomType.Setter + public Builder location(@Nullable String location) { + + this.location = location; + return this; + } + @CustomType.Setter + public Builder state(@Nullable String state) { + + this.state = state; + return this; + } + public InterceptEndpointGroupAssociationLocationsDetail build() { + final var _resultValue = new InterceptEndpointGroupAssociationLocationsDetail(); + _resultValue.location = location; + _resultValue.state = state; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/oracledatabase/AutonomousDatabase.java b/sdk/java/src/main/java/com/pulumi/gcp/oracledatabase/AutonomousDatabase.java index 185aed73b4..08a5ac693a 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/oracledatabase/AutonomousDatabase.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/oracledatabase/AutonomousDatabase.java @@ -147,7 +147,7 @@ * .email("xyz}{@literal @}{@code example.com") * .build()) * .privateEndpointIp("10.5.0.11") - * .privateEndpointLabel("testhost") + * .privateEndpointLabel("myendpoint") * .build()) * .deletionProtection("true") * .build()); diff --git a/sdk/java/src/main/java/com/pulumi/gcp/orgpolicy/Policy.java b/sdk/java/src/main/java/com/pulumi/gcp/orgpolicy/Policy.java index 31ea37181e..498b87c1ae 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/orgpolicy/Policy.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/orgpolicy/Policy.java @@ -260,7 +260,7 @@ * * public static void stack(Context ctx) { * var constraint = new CustomConstraint("constraint", CustomConstraintArgs.builder() - * .name("custom.disableGkeAutoUpgrade_40289") + * .name("custom.disableGkeAutoUpgrade_76044") * .parent("organizations/123456789") * .displayName("Disable GKE auto upgrade") * .description("Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.") diff --git a/sdk/java/src/main/java/com/pulumi/gcp/parallelstore/Instance.java b/sdk/java/src/main/java/com/pulumi/gcp/parallelstore/Instance.java index 114d8c6afd..9a8a470c91 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/parallelstore/Instance.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/parallelstore/Instance.java @@ -21,6 +21,79 @@ * * ## Example Usage * + * ### Parallelstore Instance Basic Beta + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.compute.Network;
+ * import com.pulumi.gcp.compute.NetworkArgs;
+ * import com.pulumi.gcp.compute.GlobalAddress;
+ * import com.pulumi.gcp.compute.GlobalAddressArgs;
+ * import com.pulumi.gcp.servicenetworking.Connection;
+ * import com.pulumi.gcp.servicenetworking.ConnectionArgs;
+ * import com.pulumi.gcp.parallelstore.Instance;
+ * import com.pulumi.gcp.parallelstore.InstanceArgs;
+ * import com.pulumi.resources.CustomResourceOptions;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var network = new Network("network", NetworkArgs.builder()
+ *             .name("network")
+ *             .autoCreateSubnetworks(true)
+ *             .mtu(8896)
+ *             .build());
+ * 
+ *         // Create an IP address
+ *         var privateIpAlloc = new GlobalAddress("privateIpAlloc", GlobalAddressArgs.builder()
+ *             .name("address")
+ *             .purpose("VPC_PEERING")
+ *             .addressType("INTERNAL")
+ *             .prefixLength(24)
+ *             .network(network.id())
+ *             .build());
+ * 
+ *         // Create a private connection
+ *         var default_ = new Connection("default", ConnectionArgs.builder()
+ *             .network(network.id())
+ *             .service("servicenetworking.googleapis.com")
+ *             .reservedPeeringRanges(privateIpAlloc.name())
+ *             .build());
+ * 
+ *         var instance = new Instance("instance", InstanceArgs.builder()
+ *             .instanceId("instance")
+ *             .location("us-central1-a")
+ *             .description("test instance")
+ *             .capacityGib(12000)
+ *             .network(network.name())
+ *             .fileStripeLevel("FILE_STRIPE_LEVEL_MIN")
+ *             .directoryStripeLevel("DIRECTORY_STRIPE_LEVEL_MIN")
+ *             .deploymentType("SCRATCH")
+ *             .labels(Map.of("test", "value"))
+ *             .build(), CustomResourceOptions.builder()
+ *                 .dependsOn(default_)
+ *                 .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> * ### Parallelstore Instance Basic * * <!--Start PulumiCodeChooser --> @@ -83,6 +156,7 @@ * .network(network.name()) * .fileStripeLevel("FILE_STRIPE_LEVEL_MIN") * .directoryStripeLevel("DIRECTORY_STRIPE_LEVEL_MIN") + * .deploymentType("SCRATCH") * .labels(Map.of("test", "value")) * .build(), CustomResourceOptions.builder() * .dependsOn(default_) @@ -179,6 +253,28 @@ public Output createTime() { public Output daosVersion() { return this.daosVersion; } + /** + * Parallelstore Instance deployment type. + * Possible values: + * DEPLOYMENT_TYPE_UNSPECIFIED + * SCRATCH + * PERSISTENT + * + */ + @Export(name="deploymentType", refs={String.class}, tree="[0]") + private Output deploymentType; + + /** + * @return Parallelstore Instance deployment type. + * Possible values: + * DEPLOYMENT_TYPE_UNSPECIFIED + * SCRATCH + * PERSISTENT + * + */ + public Output> deploymentType() { + return Codegen.optional(this.deploymentType); + } /** * The description of the instance. 2048 characters or less. * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/parallelstore/InstanceArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/parallelstore/InstanceArgs.java index a78094015b..95001408f7 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/parallelstore/InstanceArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/parallelstore/InstanceArgs.java @@ -32,6 +32,29 @@ public Output capacityGib() { return this.capacityGib; } + /** + * Parallelstore Instance deployment type. + * Possible values: + * DEPLOYMENT_TYPE_UNSPECIFIED + * SCRATCH + * PERSISTENT + * + */ + @Import(name="deploymentType") + private @Nullable Output deploymentType; + + /** + * @return Parallelstore Instance deployment type. + * Possible values: + * DEPLOYMENT_TYPE_UNSPECIFIED + * SCRATCH + * PERSISTENT + * + */ + public Optional> deploymentType() { + return Optional.ofNullable(this.deploymentType); + } + /** * The description of the instance. 2048 characters or less. * @@ -263,6 +286,7 @@ private InstanceArgs() {} private InstanceArgs(InstanceArgs $) { this.capacityGib = $.capacityGib; + this.deploymentType = $.deploymentType; this.description = $.description; this.directoryStripeLevel = $.directoryStripeLevel; this.fileStripeLevel = $.fileStripeLevel; @@ -313,6 +337,35 @@ public Builder capacityGib(String capacityGib) { return capacityGib(Output.of(capacityGib)); } + /** + * @param deploymentType Parallelstore Instance deployment type. + * Possible values: + * DEPLOYMENT_TYPE_UNSPECIFIED + * SCRATCH + * PERSISTENT + * + * @return builder + * + */ + public Builder deploymentType(@Nullable Output deploymentType) { + $.deploymentType = deploymentType; + return this; + } + + /** + * @param deploymentType Parallelstore Instance deployment type. + * Possible values: + * DEPLOYMENT_TYPE_UNSPECIFIED + * SCRATCH + * PERSISTENT + * + * @return builder + * + */ + public Builder deploymentType(String deploymentType) { + return deploymentType(Output.of(deploymentType)); + } + /** * @param description The description of the instance. 2048 characters or less. * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/parallelstore/inputs/InstanceState.java b/sdk/java/src/main/java/com/pulumi/gcp/parallelstore/inputs/InstanceState.java index 5e554efdeb..510b560b42 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/parallelstore/inputs/InstanceState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/parallelstore/inputs/InstanceState.java @@ -79,6 +79,29 @@ public Optional> daosVersion() { return Optional.ofNullable(this.daosVersion); } + /** + * Parallelstore Instance deployment type. + * Possible values: + * DEPLOYMENT_TYPE_UNSPECIFIED + * SCRATCH + * PERSISTENT + * + */ + @Import(name="deploymentType") + private @Nullable Output deploymentType; + + /** + * @return Parallelstore Instance deployment type. + * Possible values: + * DEPLOYMENT_TYPE_UNSPECIFIED + * SCRATCH + * PERSISTENT + * + */ + public Optional> deploymentType() { + return Optional.ofNullable(this.deploymentType); + } + /** * The description of the instance. 2048 characters or less. * @@ -427,6 +450,7 @@ private InstanceState(InstanceState $) { this.capacityGib = $.capacityGib; this.createTime = $.createTime; this.daosVersion = $.daosVersion; + this.deploymentType = $.deploymentType; this.description = $.description; this.directoryStripeLevel = $.directoryStripeLevel; this.effectiveLabels = $.effectiveLabels; @@ -559,6 +583,35 @@ public Builder daosVersion(String daosVersion) { return daosVersion(Output.of(daosVersion)); } + /** + * @param deploymentType Parallelstore Instance deployment type. + * Possible values: + * DEPLOYMENT_TYPE_UNSPECIFIED + * SCRATCH + * PERSISTENT + * + * @return builder + * + */ + public Builder deploymentType(@Nullable Output deploymentType) { + $.deploymentType = deploymentType; + return this; + } + + /** + * @param deploymentType Parallelstore Instance deployment type. + * Possible values: + * DEPLOYMENT_TYPE_UNSPECIFIED + * SCRATCH + * PERSISTENT + * + * @return builder + * + */ + public Builder deploymentType(String deploymentType) { + return deploymentType(Output.of(deploymentType)); + } + /** * @param description The description of the instance. 2048 characters or less. * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/projects/UsageExportBucket.java b/sdk/java/src/main/java/com/pulumi/gcp/projects/UsageExportBucket.java index 7074b2aed9..0c97c6e5a5 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/projects/UsageExportBucket.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/projects/UsageExportBucket.java @@ -15,27 +15,17 @@ import javax.annotation.Nullable; /** - * Allows creation and management of a Google Cloud Platform project. + * Sets up a usage export bucket for a particular project. A usage export bucket + * is a pre-configured GCS bucket which is set up to receive daily and monthly + * reports of the GCE resources used. * - * Projects created with this resource must be associated with an Organization. - * See the [Organization documentation](https://cloud.google.com/resource-manager/docs/quickstarts) for more details. + * For more information see the [Docs](https://cloud.google.com/compute/docs/usage-export) + * and for further details, the + * [API Documentation](https://cloud.google.com/compute/docs/reference/rest/beta/projects/setUsageExportBucket). * - * The user or service account that is running this provider when creating a `gcp.organizations.Project` - * resource must have `roles/resourcemanager.projectCreator` on the specified organization. See the - * [Access Control for Organizations Using IAM](https://cloud.google.com/resource-manager/docs/access-control-org) - * doc for more information. - * - * > This resource reads the specified billing account on every pulumi up and plan operation so you must have permissions on the specified billing account. - * - * > 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. - * - * > It may take a while for the attached tag bindings to be deleted after the project is scheduled to be deleted. - * - * To get more information about projects, see: - * - * * [API documentation](https://cloud.google.com/resource-manager/reference/rest/v1/projects) - * * How-to Guides - * * [Creating and managing projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects) + * > **Note:** You should specify only one of these per project. If there are two or more + * they will fight over which bucket the reports should be stored in. It is + * safe to have multiple resources with the same backing bucket. * * ## Example Usage * @@ -47,8 +37,8 @@ * import com.pulumi.Context; * import com.pulumi.Pulumi; * import com.pulumi.core.Output; - * import com.pulumi.gcp.organizations.Project; - * import com.pulumi.gcp.organizations.ProjectArgs; + * import com.pulumi.gcp.projects.UsageExportBucket; + * import com.pulumi.gcp.projects.UsageExportBucketArgs; * import java.util.List; * import java.util.ArrayList; * import java.util.Map; @@ -62,92 +52,9 @@ * } * * public static void stack(Context ctx) { - * var myProject = new Project("myProject", ProjectArgs.builder() - * .name("My Project") - * .projectId("your-project-id") - * .orgId("1234567") - * .build()); - * - * } - * } - * } - * - * <!--End PulumiCodeChooser --> - * - * To create a project under a specific folder - * - * <!--Start PulumiCodeChooser --> - *
- * {@code
- * package generated_program;
- * 
- * import com.pulumi.Context;
- * import com.pulumi.Pulumi;
- * import com.pulumi.core.Output;
- * import com.pulumi.gcp.organizations.Folder;
- * import com.pulumi.gcp.organizations.FolderArgs;
- * import com.pulumi.gcp.organizations.Project;
- * import com.pulumi.gcp.organizations.ProjectArgs;
- * import java.util.List;
- * import java.util.ArrayList;
- * import java.util.Map;
- * import java.io.File;
- * import java.nio.file.Files;
- * import java.nio.file.Paths;
- * 
- * public class App {
- *     public static void main(String[] args) {
- *         Pulumi.run(App::stack);
- *     }
- * 
- *     public static void stack(Context ctx) {
- *         var department1 = new Folder("department1", FolderArgs.builder()
- *             .displayName("Department 1")
- *             .parent("organizations/1234567")
- *             .build());
- * 
- *         var myProject_in_a_folder = new Project("myProject-in-a-folder", ProjectArgs.builder()
- *             .name("My Project")
- *             .projectId("your-project-id")
- *             .folderId(department1.name())
- *             .build());
- * 
- *     }
- * }
- * }
- * 
- * <!--End PulumiCodeChooser --> - * - * To create a project with a tag - * - * <!--Start PulumiCodeChooser --> - *
- * {@code
- * package generated_program;
- * 
- * import com.pulumi.Context;
- * import com.pulumi.Pulumi;
- * import com.pulumi.core.Output;
- * import com.pulumi.gcp.organizations.Project;
- * import com.pulumi.gcp.organizations.ProjectArgs;
- * import java.util.List;
- * import java.util.ArrayList;
- * import java.util.Map;
- * import java.io.File;
- * import java.nio.file.Files;
- * import java.nio.file.Paths;
- * 
- * public class App {
- *     public static void main(String[] args) {
- *         Pulumi.run(App::stack);
- *     }
- * 
- *     public static void stack(Context ctx) {
- *         var myProject = new Project("myProject", ProjectArgs.builder()
- *             .name("My Project")
- *             .projectId("your-project-id")
- *             .orgId("1234567")
- *             .tags(Map.of("1234567/env", "staging"))
+ *         var usageExport = new UsageExportBucket("usageExport", UsageExportBucketArgs.builder()
+ *             .project("development-project")
+ *             .bucketName("usage-tracking-bucket")
  *             .build());
  * 
  *     }
@@ -158,11 +65,11 @@
  * 
  * ## Import
  * 
- * Projects can be imported using the `project_id`, e.g.
+ * A project's Usage Export Bucket can be imported using this format:
  * 
  * * `{{project_id}}`
  * 
- * When using the `pulumi import` command, Projects can be imported using one of the formats above. For example:
+ * When using the `pulumi import` command, NAME_HERE can be imported using one of the formats above. For example:
  * 
  * ```sh
  * $ pulumi import gcp:projects/usageExportBucket:UsageExportBucket default {{project_id}}
@@ -174,6 +81,8 @@ public class UsageExportBucket extends com.pulumi.resources.CustomResource {
     /**
      * The bucket to store reports in.
      * 
+     * ***
+     * 
      */
     @Export(name="bucketName", refs={String.class}, tree="[0]")
     private Output bucketName;
@@ -181,6 +90,8 @@ public class UsageExportBucket extends com.pulumi.resources.CustomResource {
     /**
      * @return The bucket to store reports in.
      * 
+     * ***
+     * 
      */
     public Output bucketName() {
         return this.bucketName;
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/projects/UsageExportBucketArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/projects/UsageExportBucketArgs.java
index 765b47a516..5cbfc7ba75 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/projects/UsageExportBucketArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/projects/UsageExportBucketArgs.java
@@ -19,6 +19,8 @@ public final class UsageExportBucketArgs extends com.pulumi.resources.ResourceAr
     /**
      * The bucket to store reports in.
      * 
+     * ***
+     * 
      */
     @Import(name="bucketName", required=true)
     private Output bucketName;
@@ -26,6 +28,8 @@ public final class UsageExportBucketArgs extends com.pulumi.resources.ResourceAr
     /**
      * @return The bucket to store reports in.
      * 
+     * ***
+     * 
      */
     public Output bucketName() {
         return this.bucketName;
@@ -90,6 +94,8 @@ public Builder(UsageExportBucketArgs defaults) {
         /**
          * @param bucketName The bucket to store reports in.
          * 
+         * ***
+         * 
          * @return builder
          * 
          */
@@ -101,6 +107,8 @@ public Builder bucketName(Output bucketName) {
         /**
          * @param bucketName The bucket to store reports in.
          * 
+         * ***
+         * 
          * @return builder
          * 
          */
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/projects/inputs/UsageExportBucketState.java b/sdk/java/src/main/java/com/pulumi/gcp/projects/inputs/UsageExportBucketState.java
index 0b9a41187d..7bf8291baf 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/projects/inputs/UsageExportBucketState.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/projects/inputs/UsageExportBucketState.java
@@ -18,6 +18,8 @@ public final class UsageExportBucketState extends com.pulumi.resources.ResourceA
     /**
      * The bucket to store reports in.
      * 
+     * ***
+     * 
      */
     @Import(name="bucketName")
     private @Nullable Output bucketName;
@@ -25,6 +27,8 @@ public final class UsageExportBucketState extends com.pulumi.resources.ResourceA
     /**
      * @return The bucket to store reports in.
      * 
+     * ***
+     * 
      */
     public Optional> bucketName() {
         return Optional.ofNullable(this.bucketName);
@@ -89,6 +93,8 @@ public Builder(UsageExportBucketState defaults) {
         /**
          * @param bucketName The bucket to store reports in.
          * 
+         * ***
+         * 
          * @return builder
          * 
          */
@@ -100,6 +106,8 @@ public Builder bucketName(@Nullable Output bucketName) {
         /**
          * @param bucketName The bucket to store reports in.
          * 
+         * ***
+         * 
          * @return builder
          * 
          */
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/pubsub/Subscription.java b/sdk/java/src/main/java/com/pulumi/gcp/pubsub/Subscription.java
index b3ecacdde5..402e7eb146 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/pubsub/Subscription.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/pubsub/Subscription.java
@@ -560,7 +560,7 @@
  *             .cloudStorageConfig(SubscriptionCloudStorageConfigArgs.builder()
  *                 .bucket(example.name())
  *                 .filenamePrefix("pre-")
- *                 .filenameSuffix("-_33395")
+ *                 .filenameSuffix("-_69391")
  *                 .filenameDatetimeFormat("YYYY-MM-DD/hh_mm_ssZ")
  *                 .maxBytes(1000)
  *                 .maxDuration("300s")
@@ -637,7 +637,7 @@
  *             .cloudStorageConfig(SubscriptionCloudStorageConfigArgs.builder()
  *                 .bucket(example.name())
  *                 .filenamePrefix("pre-")
- *                 .filenameSuffix("-_76044")
+ *                 .filenameSuffix("-_8270")
  *                 .filenameDatetimeFormat("YYYY-MM-DD/hh_mm_ssZ")
  *                 .maxBytes(1000)
  *                 .maxDuration("300s")
@@ -722,7 +722,7 @@
  *             .cloudStorageConfig(SubscriptionCloudStorageConfigArgs.builder()
  *                 .bucket(example.name())
  *                 .filenamePrefix("pre-")
- *                 .filenameSuffix("-_69391")
+ *                 .filenameSuffix("-_41150")
  *                 .filenameDatetimeFormat("YYYY-MM-DD/hh_mm_ssZ")
  *                 .maxBytes(1000)
  *                 .maxDuration("300s")
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/securesourcemanager/Instance.java b/sdk/java/src/main/java/com/pulumi/gcp/securesourcemanager/Instance.java
index f24bca77ca..c74e63f152 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/securesourcemanager/Instance.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/securesourcemanager/Instance.java
@@ -76,10 +76,6 @@
  * import com.pulumi.Context;
  * import com.pulumi.Pulumi;
  * import com.pulumi.core.Output;
- * import com.pulumi.gcp.kms.KeyRing;
- * import com.pulumi.gcp.kms.KeyRingArgs;
- * import com.pulumi.gcp.kms.CryptoKey;
- * import com.pulumi.gcp.kms.CryptoKeyArgs;
  * import com.pulumi.gcp.organizations.OrganizationsFunctions;
  * import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
  * import com.pulumi.gcp.kms.CryptoKeyIAMMember;
@@ -100,20 +96,10 @@
  *     }}{@code
  * 
  *     public static void stack(Context ctx) }{{@code
- *         var keyRing = new KeyRing("keyRing", KeyRingArgs.builder()
- *             .name("my-keyring")
- *             .location("us-central1")
- *             .build());
- * 
- *         var cryptoKey = new CryptoKey("cryptoKey", CryptoKeyArgs.builder()
- *             .name("my-key")
- *             .keyRing(keyRing.id())
- *             .build());
- * 
  *         final var project = OrganizationsFunctions.getProject();
  * 
  *         var cryptoKeyBinding = new CryptoKeyIAMMember("cryptoKeyBinding", CryptoKeyIAMMemberArgs.builder()
- *             .cryptoKeyId(cryptoKey.id())
+ *             .cryptoKeyId("my-key")
  *             .role("roles/cloudkms.cryptoKeyEncrypterDecrypter")
  *             .member(String.format("serviceAccount:service-%s}{@literal @}{@code gcp-sa-sourcemanager.iam.gserviceaccount.com", project.applyValue(getProjectResult -> getProjectResult.number())))
  *             .build());
@@ -121,7 +107,7 @@
  *         var default_ = new Instance("default", InstanceArgs.builder()
  *             .location("us-central1")
  *             .instanceId("my-instance")
- *             .kmsKey(cryptoKey.id())
+ *             .kmsKey("my-key")
  *             .build(), CustomResourceOptions.builder()
  *                 .dependsOn(cryptoKeyBinding)
  *                 .build());
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/spanner/InstanceIAMBinding.java b/sdk/java/src/main/java/com/pulumi/gcp/spanner/InstanceIAMBinding.java
index 2d443220eb..52fe93d622 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/spanner/InstanceIAMBinding.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/spanner/InstanceIAMBinding.java
@@ -293,6 +293,8 @@ public Output instance() {
      * * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
      * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice{@literal @}gmail.com or joe{@literal @}example.com.
      * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app{@literal @}appspot.gserviceaccount.com.
+     * * **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
+     * * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE
      * * **group:{emailid}**: An email address that represents a Google group. For example, admins{@literal @}example.com.
      * * **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.
      * 
@@ -307,6 +309,8 @@ public Output instance() {
      * * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
      * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice{@literal @}gmail.com or joe{@literal @}example.com.
      * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app{@literal @}appspot.gserviceaccount.com.
+     * * **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
+     * * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE
      * * **group:{emailid}**: An email address that represents a Google group. For example, admins{@literal @}example.com.
      * * **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.
      * 
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/spanner/InstanceIAMBindingArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/spanner/InstanceIAMBindingArgs.java
index 0046df9c2c..00524f0ea7 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/spanner/InstanceIAMBindingArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/spanner/InstanceIAMBindingArgs.java
@@ -47,6 +47,8 @@ public Output instance() {
      * * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
      * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice{@literal @}gmail.com or joe{@literal @}example.com.
      * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app{@literal @}appspot.gserviceaccount.com.
+     * * **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
+     * * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE
      * * **group:{emailid}**: An email address that represents a Google group. For example, admins{@literal @}example.com.
      * * **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.
      * 
@@ -61,6 +63,8 @@ public Output instance() {
      * * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
      * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice{@literal @}gmail.com or joe{@literal @}example.com.
      * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app{@literal @}appspot.gserviceaccount.com.
+     * * **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
+     * * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE
      * * **group:{emailid}**: An email address that represents a Google group. For example, admins{@literal @}example.com.
      * * **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.
      * 
@@ -170,6 +174,8 @@ public Builder instance(String instance) {
          * * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
          * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice{@literal @}gmail.com or joe{@literal @}example.com.
          * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app{@literal @}appspot.gserviceaccount.com.
+         * * **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
+         * * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE
          * * **group:{emailid}**: An email address that represents a Google group. For example, admins{@literal @}example.com.
          * * **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.
          * 
@@ -188,6 +194,8 @@ public Builder members(Output> members) {
          * * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
          * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice{@literal @}gmail.com or joe{@literal @}example.com.
          * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app{@literal @}appspot.gserviceaccount.com.
+         * * **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
+         * * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE
          * * **group:{emailid}**: An email address that represents a Google group. For example, admins{@literal @}example.com.
          * * **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.
          * 
@@ -205,6 +213,8 @@ public Builder members(List members) {
          * * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
          * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice{@literal @}gmail.com or joe{@literal @}example.com.
          * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app{@literal @}appspot.gserviceaccount.com.
+         * * **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
+         * * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE
          * * **group:{emailid}**: An email address that represents a Google group. For example, admins{@literal @}example.com.
          * * **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.
          * 
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/spanner/InstanceIAMMember.java b/sdk/java/src/main/java/com/pulumi/gcp/spanner/InstanceIAMMember.java
index 35d1aa9807..6b5cd20e3c 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/spanner/InstanceIAMMember.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/spanner/InstanceIAMMember.java
@@ -292,6 +292,8 @@ public Output instance() {
      * * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
      * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice{@literal @}gmail.com or joe{@literal @}example.com.
      * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app{@literal @}appspot.gserviceaccount.com.
+     * * **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
+     * * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE
      * * **group:{emailid}**: An email address that represents a Google group. For example, admins{@literal @}example.com.
      * * **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.
      * 
@@ -306,6 +308,8 @@ public Output instance() {
      * * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
      * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice{@literal @}gmail.com or joe{@literal @}example.com.
      * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app{@literal @}appspot.gserviceaccount.com.
+     * * **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
+     * * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE
      * * **group:{emailid}**: An email address that represents a Google group. For example, admins{@literal @}example.com.
      * * **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.
      * 
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/spanner/InstanceIAMMemberArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/spanner/InstanceIAMMemberArgs.java
index e0e5e9d9fe..a765c96213 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/spanner/InstanceIAMMemberArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/spanner/InstanceIAMMemberArgs.java
@@ -46,6 +46,8 @@ public Output instance() {
      * * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
      * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice{@literal @}gmail.com or joe{@literal @}example.com.
      * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app{@literal @}appspot.gserviceaccount.com.
+     * * **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
+     * * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE
      * * **group:{emailid}**: An email address that represents a Google group. For example, admins{@literal @}example.com.
      * * **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.
      * 
@@ -60,6 +62,8 @@ public Output instance() {
      * * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
      * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice{@literal @}gmail.com or joe{@literal @}example.com.
      * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app{@literal @}appspot.gserviceaccount.com.
+     * * **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
+     * * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE
      * * **group:{emailid}**: An email address that represents a Google group. For example, admins{@literal @}example.com.
      * * **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.
      * 
@@ -169,6 +173,8 @@ public Builder instance(String instance) {
          * * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
          * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice{@literal @}gmail.com or joe{@literal @}example.com.
          * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app{@literal @}appspot.gserviceaccount.com.
+         * * **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
+         * * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE
          * * **group:{emailid}**: An email address that represents a Google group. For example, admins{@literal @}example.com.
          * * **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.
          * 
@@ -187,6 +193,8 @@ public Builder member(Output member) {
          * * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
          * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice{@literal @}gmail.com or joe{@literal @}example.com.
          * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app{@literal @}appspot.gserviceaccount.com.
+         * * **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
+         * * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE
          * * **group:{emailid}**: An email address that represents a Google group. For example, admins{@literal @}example.com.
          * * **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.
          * 
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/spanner/inputs/InstanceIAMBindingState.java b/sdk/java/src/main/java/com/pulumi/gcp/spanner/inputs/InstanceIAMBindingState.java
index 1a31ed00fd..a8a267bcae 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/spanner/inputs/InstanceIAMBindingState.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/spanner/inputs/InstanceIAMBindingState.java
@@ -61,6 +61,8 @@ public Optional> instance() {
      * * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
      * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice{@literal @}gmail.com or joe{@literal @}example.com.
      * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app{@literal @}appspot.gserviceaccount.com.
+     * * **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
+     * * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE
      * * **group:{emailid}**: An email address that represents a Google group. For example, admins{@literal @}example.com.
      * * **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.
      * 
@@ -75,6 +77,8 @@ public Optional> instance() {
      * * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
      * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice{@literal @}gmail.com or joe{@literal @}example.com.
      * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app{@literal @}appspot.gserviceaccount.com.
+     * * **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
+     * * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE
      * * **group:{emailid}**: An email address that represents a Google group. For example, admins{@literal @}example.com.
      * * **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.
      * 
@@ -206,6 +210,8 @@ public Builder instance(String instance) {
          * * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
          * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice{@literal @}gmail.com or joe{@literal @}example.com.
          * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app{@literal @}appspot.gserviceaccount.com.
+         * * **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
+         * * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE
          * * **group:{emailid}**: An email address that represents a Google group. For example, admins{@literal @}example.com.
          * * **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.
          * 
@@ -224,6 +230,8 @@ public Builder members(@Nullable Output> members) {
          * * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
          * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice{@literal @}gmail.com or joe{@literal @}example.com.
          * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app{@literal @}appspot.gserviceaccount.com.
+         * * **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
+         * * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE
          * * **group:{emailid}**: An email address that represents a Google group. For example, admins{@literal @}example.com.
          * * **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.
          * 
@@ -241,6 +249,8 @@ public Builder members(List members) {
          * * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
          * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice{@literal @}gmail.com or joe{@literal @}example.com.
          * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app{@literal @}appspot.gserviceaccount.com.
+         * * **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
+         * * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE
          * * **group:{emailid}**: An email address that represents a Google group. For example, admins{@literal @}example.com.
          * * **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.
          * 
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/spanner/inputs/InstanceIAMMemberState.java b/sdk/java/src/main/java/com/pulumi/gcp/spanner/inputs/InstanceIAMMemberState.java
index 3e45b99893..f66e863b84 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/spanner/inputs/InstanceIAMMemberState.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/spanner/inputs/InstanceIAMMemberState.java
@@ -60,6 +60,8 @@ public Optional> instance() {
      * * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
      * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice{@literal @}gmail.com or joe{@literal @}example.com.
      * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app{@literal @}appspot.gserviceaccount.com.
+     * * **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
+     * * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE
      * * **group:{emailid}**: An email address that represents a Google group. For example, admins{@literal @}example.com.
      * * **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.
      * 
@@ -74,6 +76,8 @@ public Optional> instance() {
      * * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
      * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice{@literal @}gmail.com or joe{@literal @}example.com.
      * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app{@literal @}appspot.gserviceaccount.com.
+     * * **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
+     * * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE
      * * **group:{emailid}**: An email address that represents a Google group. For example, admins{@literal @}example.com.
      * * **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.
      * 
@@ -205,6 +209,8 @@ public Builder instance(String instance) {
          * * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
          * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice{@literal @}gmail.com or joe{@literal @}example.com.
          * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app{@literal @}appspot.gserviceaccount.com.
+         * * **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
+         * * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE
          * * **group:{emailid}**: An email address that represents a Google group. For example, admins{@literal @}example.com.
          * * **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.
          * 
@@ -223,6 +229,8 @@ public Builder member(@Nullable Output member) {
          * * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
          * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice{@literal @}gmail.com or joe{@literal @}example.com.
          * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app{@literal @}appspot.gserviceaccount.com.
+         * * **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
+         * * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE
          * * **group:{emailid}**: An email address that represents a Google group. For example, admins{@literal @}example.com.
          * * **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.
          * 
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/sql/DatabaseInstance.java b/sdk/java/src/main/java/com/pulumi/gcp/sql/DatabaseInstance.java
index acf1591a41..28cbdeba25 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/sql/DatabaseInstance.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/sql/DatabaseInstance.java
@@ -433,7 +433,7 @@ public Output connectionName() {
     /**
      * The MySQL, PostgreSQL or
      * SQL Server version to use. Supported values include `MYSQL_5_6`,
-     * `MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`,
+     * `MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`,
      * `POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`,
      * `SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`.
      * `SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`,
@@ -448,7 +448,7 @@ public Output connectionName() {
     /**
      * @return The MySQL, PostgreSQL or
      * SQL Server version to use. Supported values include `MYSQL_5_6`,
-     * `MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`,
+     * `MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`,
      * `POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`,
      * `SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`.
      * `SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`,
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/sql/DatabaseInstanceArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/sql/DatabaseInstanceArgs.java
index a2c287316d..217eba3439 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/sql/DatabaseInstanceArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/sql/DatabaseInstanceArgs.java
@@ -44,7 +44,7 @@ public Optional> clone_() {
     /**
      * The MySQL, PostgreSQL or
      * SQL Server version to use. Supported values include `MYSQL_5_6`,
-     * `MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`,
+     * `MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`,
      * `POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`,
      * `SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`.
      * `SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`,
@@ -59,7 +59,7 @@ public Optional> clone_() {
     /**
      * @return The MySQL, PostgreSQL or
      * SQL Server version to use. Supported values include `MYSQL_5_6`,
-     * `MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`,
+     * `MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`,
      * `POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`,
      * `SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`.
      * `SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`,
@@ -377,7 +377,7 @@ public Builder clone_(DatabaseInstanceCloneArgs clone) {
         /**
          * @param databaseVersion The MySQL, PostgreSQL or
          * SQL Server version to use. Supported values include `MYSQL_5_6`,
-         * `MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`,
+         * `MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`,
          * `POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`,
          * `SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`.
          * `SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`,
@@ -396,7 +396,7 @@ public Builder databaseVersion(Output databaseVersion) {
         /**
          * @param databaseVersion The MySQL, PostgreSQL or
          * SQL Server version to use. Supported values include `MYSQL_5_6`,
-         * `MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`,
+         * `MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`,
          * `POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`,
          * `SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`.
          * `SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`,
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/sql/inputs/DatabaseInstanceState.java b/sdk/java/src/main/java/com/pulumi/gcp/sql/inputs/DatabaseInstanceState.java
index d8269c0331..3fea301f9f 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/sql/inputs/DatabaseInstanceState.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/sql/inputs/DatabaseInstanceState.java
@@ -77,7 +77,7 @@ public Optional> connectionName() {
     /**
      * The MySQL, PostgreSQL or
      * SQL Server version to use. Supported values include `MYSQL_5_6`,
-     * `MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`,
+     * `MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`,
      * `POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`,
      * `SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`.
      * `SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`,
@@ -92,7 +92,7 @@ public Optional> connectionName() {
     /**
      * @return The MySQL, PostgreSQL or
      * SQL Server version to use. Supported values include `MYSQL_5_6`,
-     * `MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`,
+     * `MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`,
      * `POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`,
      * `SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`.
      * `SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`,
@@ -596,7 +596,7 @@ public Builder connectionName(String connectionName) {
         /**
          * @param databaseVersion The MySQL, PostgreSQL or
          * SQL Server version to use. Supported values include `MYSQL_5_6`,
-         * `MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`,
+         * `MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`,
          * `POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`,
          * `SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`.
          * `SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`,
@@ -615,7 +615,7 @@ public Builder databaseVersion(@Nullable Output databaseVersion) {
         /**
          * @param databaseVersion The MySQL, PostgreSQL or
          * SQL Server version to use. Supported values include `MYSQL_5_6`,
-         * `MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`,
+         * `MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`,
          * `POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`,
          * `SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`.
          * `SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`,
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/storage/Folder.java b/sdk/java/src/main/java/com/pulumi/gcp/storage/Folder.java
new file mode 100644
index 0000000000..c38a3734a3
--- /dev/null
+++ b/sdk/java/src/main/java/com/pulumi/gcp/storage/Folder.java
@@ -0,0 +1,265 @@
+// *** WARNING: this file was generated by pulumi-java-gen. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+package com.pulumi.gcp.storage;
+
+import com.pulumi.core.Output;
+import com.pulumi.core.annotations.Export;
+import com.pulumi.core.annotations.ResourceType;
+import com.pulumi.core.internal.Codegen;
+import com.pulumi.gcp.Utilities;
+import com.pulumi.gcp.storage.FolderArgs;
+import com.pulumi.gcp.storage.inputs.FolderState;
+import java.lang.Boolean;
+import java.lang.String;
+import java.util.Optional;
+import javax.annotation.Nullable;
+
+/**
+ * A Google Cloud Storage Folder.
+ * 
+ * The Folder resource represents a folder in a Cloud Storage bucket with hierarchical namespace enabled
+ * 
+ * To get more information about Folder, see:
+ * 
+ * * [API documentation](https://cloud.google.com/storage/docs/json_api/v1/folders)
+ * * How-to Guides
+ *     * [Official Documentation](https://cloud.google.com/storage/docs/folders-overview)
+ * 
+ * ## Example Usage
+ * 
+ * ### Storage Folder Basic
+ * 
+ * <!--Start PulumiCodeChooser -->
+ * 
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.storage.Bucket;
+ * import com.pulumi.gcp.storage.BucketArgs;
+ * import com.pulumi.gcp.storage.inputs.BucketHierarchicalNamespaceArgs;
+ * import com.pulumi.gcp.storage.Folder;
+ * import com.pulumi.gcp.storage.FolderArgs;
+ * import java.util.List;
+ * import java.util.ArrayList;
+ * import java.util.Map;
+ * import java.io.File;
+ * import java.nio.file.Files;
+ * import java.nio.file.Paths;
+ * 
+ * public class App {
+ *     public static void main(String[] args) {
+ *         Pulumi.run(App::stack);
+ *     }
+ * 
+ *     public static void stack(Context ctx) {
+ *         var bucket = new Bucket("bucket", BucketArgs.builder()
+ *             .name("my-bucket")
+ *             .location("EU")
+ *             .uniformBucketLevelAccess(true)
+ *             .hierarchicalNamespace(BucketHierarchicalNamespaceArgs.builder()
+ *                 .enabled(true)
+ *                 .build())
+ *             .build());
+ * 
+ *         var folder = new Folder("folder", FolderArgs.builder()
+ *             .bucket(bucket.name())
+ *             .name("parent-folder/")
+ *             .build());
+ * 
+ *         var subfolder = new Folder("subfolder", FolderArgs.builder()
+ *             .bucket(bucket.name())
+ *             .name(folder.name().applyValue(name -> String.format("%ssubfolder/", name)))
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * + * ## Import + * + * Folder can be imported using any of these accepted formats: + * + * * `{{bucket}}/folders/{{name}}` + * + * * `{{bucket}}/{{name}}` + * + * When using the `pulumi import` command, Folder can be imported using one of the formats above. For example: + * + * ```sh + * $ pulumi import gcp:storage/folder:Folder default {{bucket}}/folders/{{name}} + * ``` + * + * ```sh + * $ pulumi import gcp:storage/folder:Folder default {{bucket}}/{{name}} + * ``` + * + */ +@ResourceType(type="gcp:storage/folder:Folder") +public class Folder extends com.pulumi.resources.CustomResource { + /** + * The name of the bucket that contains the folder. + * + */ + @Export(name="bucket", refs={String.class}, tree="[0]") + private Output bucket; + + /** + * @return The name of the bucket that contains the folder. + * + */ + public Output bucket() { + return this.bucket; + } + /** + * The timestamp at which this folder was created. + * + */ + @Export(name="createTime", refs={String.class}, tree="[0]") + private Output createTime; + + /** + * @return The timestamp at which this folder was created. + * + */ + public Output createTime() { + return this.createTime; + } + /** + * If set to true, items within folder if any will be force destroyed. + * + */ + @Export(name="forceDestroy", refs={Boolean.class}, tree="[0]") + private Output forceDestroy; + + /** + * @return If set to true, items within folder if any will be force destroyed. + * + */ + public Output> forceDestroy() { + return Codegen.optional(this.forceDestroy); + } + /** + * The metadata generation of the folder. + * + */ + @Export(name="metageneration", refs={String.class}, tree="[0]") + private Output metageneration; + + /** + * @return The metadata generation of the folder. + * + */ + public Output metageneration() { + return this.metageneration; + } + /** + * The name of the folder expressed as a path. Must include + * trailing '/'. For example, `example_dir/example_dir2/`, `example{@literal @}#/`, `a-b/d-f/`. + * + * *** + * + */ + @Export(name="name", refs={String.class}, tree="[0]") + private Output name; + + /** + * @return The name of the folder expressed as a path. Must include + * trailing '/'. For example, `example_dir/example_dir2/`, `example{@literal @}#/`, `a-b/d-f/`. + * + * *** + * + */ + public Output name() { + return this.name; + } + /** + * The URI of the created resource. + * + */ + @Export(name="selfLink", refs={String.class}, tree="[0]") + private Output selfLink; + + /** + * @return The URI of the created resource. + * + */ + public Output selfLink() { + return this.selfLink; + } + /** + * The timestamp at which this folder was most recently updated. + * + */ + @Export(name="updateTime", refs={String.class}, tree="[0]") + private Output updateTime; + + /** + * @return The timestamp at which this folder was most recently updated. + * + */ + public Output updateTime() { + return this.updateTime; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public Folder(java.lang.String name) { + this(name, FolderArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public Folder(java.lang.String name, FolderArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public Folder(java.lang.String name, FolderArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("gcp:storage/folder:Folder", name, makeArgs(args, options), makeResourceOptions(options, Codegen.empty()), false); + } + + private Folder(java.lang.String name, Output id, @Nullable FolderState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("gcp:storage/folder:Folder", name, state, makeResourceOptions(options, id), false); + } + + private static FolderArgs makeArgs(FolderArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + if (options != null && options.getUrn().isPresent()) { + return null; + } + return args == null ? FolderArgs.Empty : args; + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static Folder get(java.lang.String name, Output id, @Nullable FolderState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new Folder(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/storage/FolderArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/storage/FolderArgs.java new file mode 100644 index 0000000000..db34153f87 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/storage/FolderArgs.java @@ -0,0 +1,174 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.storage; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class FolderArgs extends com.pulumi.resources.ResourceArgs { + + public static final FolderArgs Empty = new FolderArgs(); + + /** + * The name of the bucket that contains the folder. + * + */ + @Import(name="bucket", required=true) + private Output bucket; + + /** + * @return The name of the bucket that contains the folder. + * + */ + public Output bucket() { + return this.bucket; + } + + /** + * If set to true, items within folder if any will be force destroyed. + * + */ + @Import(name="forceDestroy") + private @Nullable Output forceDestroy; + + /** + * @return If set to true, items within folder if any will be force destroyed. + * + */ + public Optional> forceDestroy() { + return Optional.ofNullable(this.forceDestroy); + } + + /** + * The name of the folder expressed as a path. Must include + * trailing '/'. For example, `example_dir/example_dir2/`, `example{@literal @}#/`, `a-b/d-f/`. + * + * *** + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The name of the folder expressed as a path. Must include + * trailing '/'. For example, `example_dir/example_dir2/`, `example{@literal @}#/`, `a-b/d-f/`. + * + * *** + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + private FolderArgs() {} + + private FolderArgs(FolderArgs $) { + this.bucket = $.bucket; + this.forceDestroy = $.forceDestroy; + this.name = $.name; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(FolderArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private FolderArgs $; + + public Builder() { + $ = new FolderArgs(); + } + + public Builder(FolderArgs defaults) { + $ = new FolderArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param bucket The name of the bucket that contains the folder. + * + * @return builder + * + */ + public Builder bucket(Output bucket) { + $.bucket = bucket; + return this; + } + + /** + * @param bucket The name of the bucket that contains the folder. + * + * @return builder + * + */ + public Builder bucket(String bucket) { + return bucket(Output.of(bucket)); + } + + /** + * @param forceDestroy If set to true, items within folder if any will be force destroyed. + * + * @return builder + * + */ + public Builder forceDestroy(@Nullable Output forceDestroy) { + $.forceDestroy = forceDestroy; + return this; + } + + /** + * @param forceDestroy If set to true, items within folder if any will be force destroyed. + * + * @return builder + * + */ + public Builder forceDestroy(Boolean forceDestroy) { + return forceDestroy(Output.of(forceDestroy)); + } + + /** + * @param name The name of the folder expressed as a path. Must include + * trailing '/'. For example, `example_dir/example_dir2/`, `example{@literal @}#/`, `a-b/d-f/`. + * + * *** + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the folder expressed as a path. Must include + * trailing '/'. For example, `example_dir/example_dir2/`, `example{@literal @}#/`, `a-b/d-f/`. + * + * *** + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + public FolderArgs build() { + if ($.bucket == null) { + throw new MissingRequiredPropertyException("FolderArgs", "bucket"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/storage/TransferJob.java b/sdk/java/src/main/java/com/pulumi/gcp/storage/TransferJob.java index c1024e489b..20122a18d8 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/storage/TransferJob.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/storage/TransferJob.java @@ -12,6 +12,7 @@ import com.pulumi.gcp.storage.inputs.TransferJobState; import com.pulumi.gcp.storage.outputs.TransferJobEventStream; import com.pulumi.gcp.storage.outputs.TransferJobNotificationConfig; +import com.pulumi.gcp.storage.outputs.TransferJobReplicationSpec; import com.pulumi.gcp.storage.outputs.TransferJobSchedule; import com.pulumi.gcp.storage.outputs.TransferJobTransferSpec; import java.lang.String; @@ -296,6 +297,24 @@ public Output> notificationConfig() { public Output project() { return this.project; } + /** + * 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. + * + * *** + * + */ + @Export(name="replicationSpec", refs={TransferJobReplicationSpec.class}, tree="[0]") + private Output replicationSpec; + + /** + * @return 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. + * + * *** + * + */ + public Output> replicationSpec() { + return Codegen.optional(this.replicationSpec); + } /** * 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. * @@ -325,22 +344,18 @@ public Output> status() { return Codegen.optional(this.status); } /** - * Transfer specification. Structure documented below. - * - * *** + * Transfer specification. Structure documented below. One of `transfer_spec`, or `replication_spec` can be specified. * */ @Export(name="transferSpec", refs={TransferJobTransferSpec.class}, tree="[0]") - private Output transferSpec; + private Output transferSpec; /** - * @return Transfer specification. Structure documented below. - * - * *** + * @return Transfer specification. Structure documented below. One of `transfer_spec`, or `replication_spec` can be specified. * */ - public Output transferSpec() { - return this.transferSpec; + public Output> transferSpec() { + return Codegen.optional(this.transferSpec); } /** diff --git a/sdk/java/src/main/java/com/pulumi/gcp/storage/TransferJobArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/storage/TransferJobArgs.java index 15dd55c788..8122e26aba 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/storage/TransferJobArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/storage/TransferJobArgs.java @@ -8,6 +8,7 @@ import com.pulumi.exceptions.MissingRequiredPropertyException; import com.pulumi.gcp.storage.inputs.TransferJobEventStreamArgs; import com.pulumi.gcp.storage.inputs.TransferJobNotificationConfigArgs; +import com.pulumi.gcp.storage.inputs.TransferJobReplicationSpecArgs; import com.pulumi.gcp.storage.inputs.TransferJobScheduleArgs; import com.pulumi.gcp.storage.inputs.TransferJobTransferSpecArgs; import java.lang.String; @@ -97,6 +98,25 @@ public Optional> project() { return Optional.ofNullable(this.project); } + /** + * 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. + * + * *** + * + */ + @Import(name="replicationSpec") + private @Nullable Output replicationSpec; + + /** + * @return 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. + * + * *** + * + */ + public Optional> replicationSpec() { + return Optional.ofNullable(this.replicationSpec); + } + /** * 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. * @@ -128,22 +148,18 @@ public Optional> status() { } /** - * Transfer specification. Structure documented below. - * - * *** + * Transfer specification. Structure documented below. One of `transfer_spec`, or `replication_spec` can be specified. * */ - @Import(name="transferSpec", required=true) - private Output transferSpec; + @Import(name="transferSpec") + private @Nullable Output transferSpec; /** - * @return Transfer specification. Structure documented below. - * - * *** + * @return Transfer specification. Structure documented below. One of `transfer_spec`, or `replication_spec` can be specified. * */ - public Output transferSpec() { - return this.transferSpec; + public Optional> transferSpec() { + return Optional.ofNullable(this.transferSpec); } private TransferJobArgs() {} @@ -154,6 +170,7 @@ private TransferJobArgs(TransferJobArgs $) { this.name = $.name; this.notificationConfig = $.notificationConfig; this.project = $.project; + this.replicationSpec = $.replicationSpec; this.schedule = $.schedule; this.status = $.status; this.transferSpec = $.transferSpec; @@ -284,6 +301,31 @@ public Builder project(String project) { return project(Output.of(project)); } + /** + * @param replicationSpec 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. + * + * *** + * + * @return builder + * + */ + public Builder replicationSpec(@Nullable Output replicationSpec) { + $.replicationSpec = replicationSpec; + return this; + } + + /** + * @param replicationSpec 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. + * + * *** + * + * @return builder + * + */ + public Builder replicationSpec(TransferJobReplicationSpecArgs replicationSpec) { + return replicationSpec(Output.of(replicationSpec)); + } + /** * @param schedule 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. * @@ -327,22 +369,18 @@ public Builder status(String status) { } /** - * @param transferSpec Transfer specification. Structure documented below. - * - * *** + * @param transferSpec Transfer specification. Structure documented below. One of `transfer_spec`, or `replication_spec` can be specified. * * @return builder * */ - public Builder transferSpec(Output transferSpec) { + public Builder transferSpec(@Nullable Output transferSpec) { $.transferSpec = transferSpec; return this; } /** - * @param transferSpec Transfer specification. Structure documented below. - * - * *** + * @param transferSpec Transfer specification. Structure documented below. One of `transfer_spec`, or `replication_spec` can be specified. * * @return builder * @@ -355,9 +393,6 @@ public TransferJobArgs build() { if ($.description == null) { throw new MissingRequiredPropertyException("TransferJobArgs", "description"); } - if ($.transferSpec == null) { - throw new MissingRequiredPropertyException("TransferJobArgs", "transferSpec"); - } return $; } } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/storage/inputs/FolderState.java b/sdk/java/src/main/java/com/pulumi/gcp/storage/inputs/FolderState.java new file mode 100644 index 0000000000..3d5bb2bcb0 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/storage/inputs/FolderState.java @@ -0,0 +1,318 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.storage.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class FolderState extends com.pulumi.resources.ResourceArgs { + + public static final FolderState Empty = new FolderState(); + + /** + * The name of the bucket that contains the folder. + * + */ + @Import(name="bucket") + private @Nullable Output bucket; + + /** + * @return The name of the bucket that contains the folder. + * + */ + public Optional> bucket() { + return Optional.ofNullable(this.bucket); + } + + /** + * The timestamp at which this folder was created. + * + */ + @Import(name="createTime") + private @Nullable Output createTime; + + /** + * @return The timestamp at which this folder was created. + * + */ + public Optional> createTime() { + return Optional.ofNullable(this.createTime); + } + + /** + * If set to true, items within folder if any will be force destroyed. + * + */ + @Import(name="forceDestroy") + private @Nullable Output forceDestroy; + + /** + * @return If set to true, items within folder if any will be force destroyed. + * + */ + public Optional> forceDestroy() { + return Optional.ofNullable(this.forceDestroy); + } + + /** + * The metadata generation of the folder. + * + */ + @Import(name="metageneration") + private @Nullable Output metageneration; + + /** + * @return The metadata generation of the folder. + * + */ + public Optional> metageneration() { + return Optional.ofNullable(this.metageneration); + } + + /** + * The name of the folder expressed as a path. Must include + * trailing '/'. For example, `example_dir/example_dir2/`, `example{@literal @}#/`, `a-b/d-f/`. + * + * *** + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The name of the folder expressed as a path. Must include + * trailing '/'. For example, `example_dir/example_dir2/`, `example{@literal @}#/`, `a-b/d-f/`. + * + * *** + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * The URI of the created resource. + * + */ + @Import(name="selfLink") + private @Nullable Output selfLink; + + /** + * @return The URI of the created resource. + * + */ + public Optional> selfLink() { + return Optional.ofNullable(this.selfLink); + } + + /** + * The timestamp at which this folder was most recently updated. + * + */ + @Import(name="updateTime") + private @Nullable Output updateTime; + + /** + * @return The timestamp at which this folder was most recently updated. + * + */ + public Optional> updateTime() { + return Optional.ofNullable(this.updateTime); + } + + private FolderState() {} + + private FolderState(FolderState $) { + this.bucket = $.bucket; + this.createTime = $.createTime; + this.forceDestroy = $.forceDestroy; + this.metageneration = $.metageneration; + this.name = $.name; + this.selfLink = $.selfLink; + this.updateTime = $.updateTime; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(FolderState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private FolderState $; + + public Builder() { + $ = new FolderState(); + } + + public Builder(FolderState defaults) { + $ = new FolderState(Objects.requireNonNull(defaults)); + } + + /** + * @param bucket The name of the bucket that contains the folder. + * + * @return builder + * + */ + public Builder bucket(@Nullable Output bucket) { + $.bucket = bucket; + return this; + } + + /** + * @param bucket The name of the bucket that contains the folder. + * + * @return builder + * + */ + public Builder bucket(String bucket) { + return bucket(Output.of(bucket)); + } + + /** + * @param createTime The timestamp at which this folder was created. + * + * @return builder + * + */ + public Builder createTime(@Nullable Output createTime) { + $.createTime = createTime; + return this; + } + + /** + * @param createTime The timestamp at which this folder was created. + * + * @return builder + * + */ + public Builder createTime(String createTime) { + return createTime(Output.of(createTime)); + } + + /** + * @param forceDestroy If set to true, items within folder if any will be force destroyed. + * + * @return builder + * + */ + public Builder forceDestroy(@Nullable Output forceDestroy) { + $.forceDestroy = forceDestroy; + return this; + } + + /** + * @param forceDestroy If set to true, items within folder if any will be force destroyed. + * + * @return builder + * + */ + public Builder forceDestroy(Boolean forceDestroy) { + return forceDestroy(Output.of(forceDestroy)); + } + + /** + * @param metageneration The metadata generation of the folder. + * + * @return builder + * + */ + public Builder metageneration(@Nullable Output metageneration) { + $.metageneration = metageneration; + return this; + } + + /** + * @param metageneration The metadata generation of the folder. + * + * @return builder + * + */ + public Builder metageneration(String metageneration) { + return metageneration(Output.of(metageneration)); + } + + /** + * @param name The name of the folder expressed as a path. Must include + * trailing '/'. For example, `example_dir/example_dir2/`, `example{@literal @}#/`, `a-b/d-f/`. + * + * *** + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of the folder expressed as a path. Must include + * trailing '/'. For example, `example_dir/example_dir2/`, `example{@literal @}#/`, `a-b/d-f/`. + * + * *** + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param selfLink The URI of the created resource. + * + * @return builder + * + */ + public Builder selfLink(@Nullable Output selfLink) { + $.selfLink = selfLink; + return this; + } + + /** + * @param selfLink The URI of the created resource. + * + * @return builder + * + */ + public Builder selfLink(String selfLink) { + return selfLink(Output.of(selfLink)); + } + + /** + * @param updateTime The timestamp at which this folder was most recently updated. + * + * @return builder + * + */ + public Builder updateTime(@Nullable Output updateTime) { + $.updateTime = updateTime; + return this; + } + + /** + * @param updateTime The timestamp at which this folder was most recently updated. + * + * @return builder + * + */ + public Builder updateTime(String updateTime) { + return updateTime(Output.of(updateTime)); + } + + public FolderState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/storage/inputs/TransferJobReplicationSpecArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/storage/inputs/TransferJobReplicationSpecArgs.java new file mode 100644 index 0000000000..07f05de50b --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/storage/inputs/TransferJobReplicationSpecArgs.java @@ -0,0 +1,197 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.storage.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.storage.inputs.TransferJobReplicationSpecGcsDataSinkArgs; +import com.pulumi.gcp.storage.inputs.TransferJobReplicationSpecGcsDataSourceArgs; +import com.pulumi.gcp.storage.inputs.TransferJobReplicationSpecObjectConditionsArgs; +import com.pulumi.gcp.storage.inputs.TransferJobReplicationSpecTransferOptionsArgs; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class TransferJobReplicationSpecArgs extends com.pulumi.resources.ResourceArgs { + + public static final TransferJobReplicationSpecArgs Empty = new TransferJobReplicationSpecArgs(); + + /** + * A Google Cloud Storage data sink. Structure documented below. + * + */ + @Import(name="gcsDataSink") + private @Nullable Output gcsDataSink; + + /** + * @return A Google Cloud Storage data sink. Structure documented below. + * + */ + public Optional> gcsDataSink() { + return Optional.ofNullable(this.gcsDataSink); + } + + /** + * A Google Cloud Storage data source. Structure documented below. + * + */ + @Import(name="gcsDataSource") + private @Nullable Output gcsDataSource; + + /** + * @return A Google Cloud Storage data source. Structure documented below. + * + */ + public Optional> gcsDataSource() { + return Optional.ofNullable(this.gcsDataSource); + } + + /** + * 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. + * + */ + @Import(name="objectConditions") + private @Nullable Output objectConditions; + + /** + * @return 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. + * + */ + public Optional> objectConditions() { + return Optional.ofNullable(this.objectConditions); + } + + /** + * 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. + * + */ + @Import(name="transferOptions") + private @Nullable Output transferOptions; + + /** + * @return 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. + * + */ + public Optional> transferOptions() { + return Optional.ofNullable(this.transferOptions); + } + + private TransferJobReplicationSpecArgs() {} + + private TransferJobReplicationSpecArgs(TransferJobReplicationSpecArgs $) { + this.gcsDataSink = $.gcsDataSink; + this.gcsDataSource = $.gcsDataSource; + this.objectConditions = $.objectConditions; + this.transferOptions = $.transferOptions; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(TransferJobReplicationSpecArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private TransferJobReplicationSpecArgs $; + + public Builder() { + $ = new TransferJobReplicationSpecArgs(); + } + + public Builder(TransferJobReplicationSpecArgs defaults) { + $ = new TransferJobReplicationSpecArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param gcsDataSink A Google Cloud Storage data sink. Structure documented below. + * + * @return builder + * + */ + public Builder gcsDataSink(@Nullable Output gcsDataSink) { + $.gcsDataSink = gcsDataSink; + return this; + } + + /** + * @param gcsDataSink A Google Cloud Storage data sink. Structure documented below. + * + * @return builder + * + */ + public Builder gcsDataSink(TransferJobReplicationSpecGcsDataSinkArgs gcsDataSink) { + return gcsDataSink(Output.of(gcsDataSink)); + } + + /** + * @param gcsDataSource A Google Cloud Storage data source. Structure documented below. + * + * @return builder + * + */ + public Builder gcsDataSource(@Nullable Output gcsDataSource) { + $.gcsDataSource = gcsDataSource; + return this; + } + + /** + * @param gcsDataSource A Google Cloud Storage data source. Structure documented below. + * + * @return builder + * + */ + public Builder gcsDataSource(TransferJobReplicationSpecGcsDataSourceArgs gcsDataSource) { + return gcsDataSource(Output.of(gcsDataSource)); + } + + /** + * @param objectConditions 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. + * + * @return builder + * + */ + public Builder objectConditions(@Nullable Output objectConditions) { + $.objectConditions = objectConditions; + return this; + } + + /** + * @param objectConditions 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. + * + * @return builder + * + */ + public Builder objectConditions(TransferJobReplicationSpecObjectConditionsArgs objectConditions) { + return objectConditions(Output.of(objectConditions)); + } + + /** + * @param transferOptions 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. + * + * @return builder + * + */ + public Builder transferOptions(@Nullable Output transferOptions) { + $.transferOptions = transferOptions; + return this; + } + + /** + * @param transferOptions 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. + * + * @return builder + * + */ + public Builder transferOptions(TransferJobReplicationSpecTransferOptionsArgs transferOptions) { + return transferOptions(Output.of(transferOptions)); + } + + public TransferJobReplicationSpecArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/storage/inputs/TransferJobReplicationSpecGcsDataSinkArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/storage/inputs/TransferJobReplicationSpecGcsDataSinkArgs.java new file mode 100644 index 0000000000..f8ed417b7b --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/storage/inputs/TransferJobReplicationSpecGcsDataSinkArgs.java @@ -0,0 +1,124 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.storage.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class TransferJobReplicationSpecGcsDataSinkArgs extends com.pulumi.resources.ResourceArgs { + + public static final TransferJobReplicationSpecGcsDataSinkArgs Empty = new TransferJobReplicationSpecGcsDataSinkArgs(); + + /** + * Google Cloud Storage bucket name. + * + */ + @Import(name="bucketName", required=true) + private Output bucketName; + + /** + * @return Google Cloud Storage bucket name. + * + */ + public Output bucketName() { + return this.bucketName; + } + + /** + * 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 '/'. + * + */ + @Import(name="path") + private @Nullable Output path; + + /** + * @return 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 '/'. + * + */ + public Optional> path() { + return Optional.ofNullable(this.path); + } + + private TransferJobReplicationSpecGcsDataSinkArgs() {} + + private TransferJobReplicationSpecGcsDataSinkArgs(TransferJobReplicationSpecGcsDataSinkArgs $) { + this.bucketName = $.bucketName; + this.path = $.path; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(TransferJobReplicationSpecGcsDataSinkArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private TransferJobReplicationSpecGcsDataSinkArgs $; + + public Builder() { + $ = new TransferJobReplicationSpecGcsDataSinkArgs(); + } + + public Builder(TransferJobReplicationSpecGcsDataSinkArgs defaults) { + $ = new TransferJobReplicationSpecGcsDataSinkArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param bucketName Google Cloud Storage bucket name. + * + * @return builder + * + */ + public Builder bucketName(Output bucketName) { + $.bucketName = bucketName; + return this; + } + + /** + * @param bucketName Google Cloud Storage bucket name. + * + * @return builder + * + */ + public Builder bucketName(String bucketName) { + return bucketName(Output.of(bucketName)); + } + + /** + * @param path 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 '/'. + * + * @return builder + * + */ + public Builder path(@Nullable Output path) { + $.path = path; + return this; + } + + /** + * @param path 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 '/'. + * + * @return builder + * + */ + public Builder path(String path) { + return path(Output.of(path)); + } + + public TransferJobReplicationSpecGcsDataSinkArgs build() { + if ($.bucketName == null) { + throw new MissingRequiredPropertyException("TransferJobReplicationSpecGcsDataSinkArgs", "bucketName"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/storage/inputs/TransferJobReplicationSpecGcsDataSourceArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/storage/inputs/TransferJobReplicationSpecGcsDataSourceArgs.java new file mode 100644 index 0000000000..30610dd6a4 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/storage/inputs/TransferJobReplicationSpecGcsDataSourceArgs.java @@ -0,0 +1,124 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.storage.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class TransferJobReplicationSpecGcsDataSourceArgs extends com.pulumi.resources.ResourceArgs { + + public static final TransferJobReplicationSpecGcsDataSourceArgs Empty = new TransferJobReplicationSpecGcsDataSourceArgs(); + + /** + * Google Cloud Storage bucket name. + * + */ + @Import(name="bucketName", required=true) + private Output bucketName; + + /** + * @return Google Cloud Storage bucket name. + * + */ + public Output bucketName() { + return this.bucketName; + } + + /** + * 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 '/'. + * + */ + @Import(name="path") + private @Nullable Output path; + + /** + * @return 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 '/'. + * + */ + public Optional> path() { + return Optional.ofNullable(this.path); + } + + private TransferJobReplicationSpecGcsDataSourceArgs() {} + + private TransferJobReplicationSpecGcsDataSourceArgs(TransferJobReplicationSpecGcsDataSourceArgs $) { + this.bucketName = $.bucketName; + this.path = $.path; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(TransferJobReplicationSpecGcsDataSourceArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private TransferJobReplicationSpecGcsDataSourceArgs $; + + public Builder() { + $ = new TransferJobReplicationSpecGcsDataSourceArgs(); + } + + public Builder(TransferJobReplicationSpecGcsDataSourceArgs defaults) { + $ = new TransferJobReplicationSpecGcsDataSourceArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param bucketName Google Cloud Storage bucket name. + * + * @return builder + * + */ + public Builder bucketName(Output bucketName) { + $.bucketName = bucketName; + return this; + } + + /** + * @param bucketName Google Cloud Storage bucket name. + * + * @return builder + * + */ + public Builder bucketName(String bucketName) { + return bucketName(Output.of(bucketName)); + } + + /** + * @param path 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 '/'. + * + * @return builder + * + */ + public Builder path(@Nullable Output path) { + $.path = path; + return this; + } + + /** + * @param path 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 '/'. + * + * @return builder + * + */ + public Builder path(String path) { + return path(Output.of(path)); + } + + public TransferJobReplicationSpecGcsDataSourceArgs build() { + if ($.bucketName == null) { + throw new MissingRequiredPropertyException("TransferJobReplicationSpecGcsDataSourceArgs", "bucketName"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/storage/inputs/TransferJobReplicationSpecObjectConditionsArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/storage/inputs/TransferJobReplicationSpecObjectConditionsArgs.java new file mode 100644 index 0000000000..ab0e520fab --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/storage/inputs/TransferJobReplicationSpecObjectConditionsArgs.java @@ -0,0 +1,289 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.storage.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class TransferJobReplicationSpecObjectConditionsArgs extends com.pulumi.resources.ResourceArgs { + + public static final TransferJobReplicationSpecObjectConditionsArgs Empty = new TransferJobReplicationSpecObjectConditionsArgs(); + + /** + * `exclude_prefixes` must follow the requirements described for `include_prefixes`. See [Requirements](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#ObjectConditions). + * + */ + @Import(name="excludePrefixes") + private @Nullable Output> excludePrefixes; + + /** + * @return `exclude_prefixes` must follow the requirements described for `include_prefixes`. See [Requirements](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#ObjectConditions). + * + */ + public Optional>> excludePrefixes() { + return Optional.ofNullable(this.excludePrefixes); + } + + /** + * 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). + * + */ + @Import(name="includePrefixes") + private @Nullable Output> includePrefixes; + + /** + * @return 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). + * + */ + public Optional>> includePrefixes() { + return Optional.ofNullable(this.includePrefixes); + } + + /** + * 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". + * + */ + @Import(name="lastModifiedBefore") + private @Nullable Output lastModifiedBefore; + + /** + * @return 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". + * + */ + public Optional> lastModifiedBefore() { + return Optional.ofNullable(this.lastModifiedBefore); + } + + /** + * 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". + * + */ + @Import(name="lastModifiedSince") + private @Nullable Output lastModifiedSince; + + /** + * @return 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". + * + */ + public Optional> lastModifiedSince() { + return Optional.ofNullable(this.lastModifiedSince); + } + + /** + * A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + * + */ + @Import(name="maxTimeElapsedSinceLastModification") + private @Nullable Output maxTimeElapsedSinceLastModification; + + /** + * @return A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + * + */ + public Optional> maxTimeElapsedSinceLastModification() { + return Optional.ofNullable(this.maxTimeElapsedSinceLastModification); + } + + /** + * A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + * + */ + @Import(name="minTimeElapsedSinceLastModification") + private @Nullable Output minTimeElapsedSinceLastModification; + + /** + * @return A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + * + */ + public Optional> minTimeElapsedSinceLastModification() { + return Optional.ofNullable(this.minTimeElapsedSinceLastModification); + } + + private TransferJobReplicationSpecObjectConditionsArgs() {} + + private TransferJobReplicationSpecObjectConditionsArgs(TransferJobReplicationSpecObjectConditionsArgs $) { + this.excludePrefixes = $.excludePrefixes; + this.includePrefixes = $.includePrefixes; + this.lastModifiedBefore = $.lastModifiedBefore; + this.lastModifiedSince = $.lastModifiedSince; + this.maxTimeElapsedSinceLastModification = $.maxTimeElapsedSinceLastModification; + this.minTimeElapsedSinceLastModification = $.minTimeElapsedSinceLastModification; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(TransferJobReplicationSpecObjectConditionsArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private TransferJobReplicationSpecObjectConditionsArgs $; + + public Builder() { + $ = new TransferJobReplicationSpecObjectConditionsArgs(); + } + + public Builder(TransferJobReplicationSpecObjectConditionsArgs defaults) { + $ = new TransferJobReplicationSpecObjectConditionsArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param excludePrefixes `exclude_prefixes` must follow the requirements described for `include_prefixes`. See [Requirements](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#ObjectConditions). + * + * @return builder + * + */ + public Builder excludePrefixes(@Nullable Output> excludePrefixes) { + $.excludePrefixes = excludePrefixes; + return this; + } + + /** + * @param excludePrefixes `exclude_prefixes` must follow the requirements described for `include_prefixes`. See [Requirements](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#ObjectConditions). + * + * @return builder + * + */ + public Builder excludePrefixes(List excludePrefixes) { + return excludePrefixes(Output.of(excludePrefixes)); + } + + /** + * @param excludePrefixes `exclude_prefixes` must follow the requirements described for `include_prefixes`. See [Requirements](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#ObjectConditions). + * + * @return builder + * + */ + public Builder excludePrefixes(String... excludePrefixes) { + return excludePrefixes(List.of(excludePrefixes)); + } + + /** + * @param includePrefixes 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). + * + * @return builder + * + */ + public Builder includePrefixes(@Nullable Output> includePrefixes) { + $.includePrefixes = includePrefixes; + return this; + } + + /** + * @param includePrefixes 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). + * + * @return builder + * + */ + public Builder includePrefixes(List includePrefixes) { + return includePrefixes(Output.of(includePrefixes)); + } + + /** + * @param includePrefixes 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). + * + * @return builder + * + */ + public Builder includePrefixes(String... includePrefixes) { + return includePrefixes(List.of(includePrefixes)); + } + + /** + * @param lastModifiedBefore 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". + * + * @return builder + * + */ + public Builder lastModifiedBefore(@Nullable Output lastModifiedBefore) { + $.lastModifiedBefore = lastModifiedBefore; + return this; + } + + /** + * @param lastModifiedBefore 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". + * + * @return builder + * + */ + public Builder lastModifiedBefore(String lastModifiedBefore) { + return lastModifiedBefore(Output.of(lastModifiedBefore)); + } + + /** + * @param lastModifiedSince 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". + * + * @return builder + * + */ + public Builder lastModifiedSince(@Nullable Output lastModifiedSince) { + $.lastModifiedSince = lastModifiedSince; + return this; + } + + /** + * @param lastModifiedSince 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". + * + * @return builder + * + */ + public Builder lastModifiedSince(String lastModifiedSince) { + return lastModifiedSince(Output.of(lastModifiedSince)); + } + + /** + * @param maxTimeElapsedSinceLastModification A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + * + * @return builder + * + */ + public Builder maxTimeElapsedSinceLastModification(@Nullable Output maxTimeElapsedSinceLastModification) { + $.maxTimeElapsedSinceLastModification = maxTimeElapsedSinceLastModification; + return this; + } + + /** + * @param maxTimeElapsedSinceLastModification A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + * + * @return builder + * + */ + public Builder maxTimeElapsedSinceLastModification(String maxTimeElapsedSinceLastModification) { + return maxTimeElapsedSinceLastModification(Output.of(maxTimeElapsedSinceLastModification)); + } + + /** + * @param minTimeElapsedSinceLastModification A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + * + * @return builder + * + */ + public Builder minTimeElapsedSinceLastModification(@Nullable Output minTimeElapsedSinceLastModification) { + $.minTimeElapsedSinceLastModification = minTimeElapsedSinceLastModification; + return this; + } + + /** + * @param minTimeElapsedSinceLastModification A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + * + * @return builder + * + */ + public Builder minTimeElapsedSinceLastModification(String minTimeElapsedSinceLastModification) { + return minTimeElapsedSinceLastModification(Output.of(minTimeElapsedSinceLastModification)); + } + + public TransferJobReplicationSpecObjectConditionsArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/storage/inputs/TransferJobReplicationSpecTransferOptionsArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/storage/inputs/TransferJobReplicationSpecTransferOptionsArgs.java new file mode 100644 index 0000000000..c686c27a13 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/storage/inputs/TransferJobReplicationSpecTransferOptionsArgs.java @@ -0,0 +1,199 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.storage.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class TransferJobReplicationSpecTransferOptionsArgs extends com.pulumi.resources.ResourceArgs { + + public static final TransferJobReplicationSpecTransferOptionsArgs Empty = new TransferJobReplicationSpecTransferOptionsArgs(); + + /** + * 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. + * + */ + @Import(name="deleteObjectsFromSourceAfterTransfer") + private @Nullable Output deleteObjectsFromSourceAfterTransfer; + + /** + * @return 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. + * + */ + public Optional> deleteObjectsFromSourceAfterTransfer() { + return Optional.ofNullable(this.deleteObjectsFromSourceAfterTransfer); + } + + /** + * Whether objects that exist only in the sink should be deleted. Note that this option and + * `delete_objects_from_source_after_transfer` are mutually exclusive. + * + */ + @Import(name="deleteObjectsUniqueInSink") + private @Nullable Output deleteObjectsUniqueInSink; + + /** + * @return Whether objects that exist only in the sink should be deleted. Note that this option and + * `delete_objects_from_source_after_transfer` are mutually exclusive. + * + */ + public Optional> deleteObjectsUniqueInSink() { + return Optional.ofNullable(this.deleteObjectsUniqueInSink); + } + + /** + * Whether overwriting objects that already exist in the sink is allowed. + * + */ + @Import(name="overwriteObjectsAlreadyExistingInSink") + private @Nullable Output overwriteObjectsAlreadyExistingInSink; + + /** + * @return Whether overwriting objects that already exist in the sink is allowed. + * + */ + public Optional> overwriteObjectsAlreadyExistingInSink() { + return Optional.ofNullable(this.overwriteObjectsAlreadyExistingInSink); + } + + /** + * 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. + * + */ + @Import(name="overwriteWhen") + private @Nullable Output overwriteWhen; + + /** + * @return 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. + * + */ + public Optional> overwriteWhen() { + return Optional.ofNullable(this.overwriteWhen); + } + + private TransferJobReplicationSpecTransferOptionsArgs() {} + + private TransferJobReplicationSpecTransferOptionsArgs(TransferJobReplicationSpecTransferOptionsArgs $) { + this.deleteObjectsFromSourceAfterTransfer = $.deleteObjectsFromSourceAfterTransfer; + this.deleteObjectsUniqueInSink = $.deleteObjectsUniqueInSink; + this.overwriteObjectsAlreadyExistingInSink = $.overwriteObjectsAlreadyExistingInSink; + this.overwriteWhen = $.overwriteWhen; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(TransferJobReplicationSpecTransferOptionsArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private TransferJobReplicationSpecTransferOptionsArgs $; + + public Builder() { + $ = new TransferJobReplicationSpecTransferOptionsArgs(); + } + + public Builder(TransferJobReplicationSpecTransferOptionsArgs defaults) { + $ = new TransferJobReplicationSpecTransferOptionsArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param deleteObjectsFromSourceAfterTransfer 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. + * + * @return builder + * + */ + public Builder deleteObjectsFromSourceAfterTransfer(@Nullable Output deleteObjectsFromSourceAfterTransfer) { + $.deleteObjectsFromSourceAfterTransfer = deleteObjectsFromSourceAfterTransfer; + return this; + } + + /** + * @param deleteObjectsFromSourceAfterTransfer 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. + * + * @return builder + * + */ + public Builder deleteObjectsFromSourceAfterTransfer(Boolean deleteObjectsFromSourceAfterTransfer) { + return deleteObjectsFromSourceAfterTransfer(Output.of(deleteObjectsFromSourceAfterTransfer)); + } + + /** + * @param deleteObjectsUniqueInSink Whether objects that exist only in the sink should be deleted. Note that this option and + * `delete_objects_from_source_after_transfer` are mutually exclusive. + * + * @return builder + * + */ + public Builder deleteObjectsUniqueInSink(@Nullable Output deleteObjectsUniqueInSink) { + $.deleteObjectsUniqueInSink = deleteObjectsUniqueInSink; + return this; + } + + /** + * @param deleteObjectsUniqueInSink Whether objects that exist only in the sink should be deleted. Note that this option and + * `delete_objects_from_source_after_transfer` are mutually exclusive. + * + * @return builder + * + */ + public Builder deleteObjectsUniqueInSink(Boolean deleteObjectsUniqueInSink) { + return deleteObjectsUniqueInSink(Output.of(deleteObjectsUniqueInSink)); + } + + /** + * @param overwriteObjectsAlreadyExistingInSink Whether overwriting objects that already exist in the sink is allowed. + * + * @return builder + * + */ + public Builder overwriteObjectsAlreadyExistingInSink(@Nullable Output overwriteObjectsAlreadyExistingInSink) { + $.overwriteObjectsAlreadyExistingInSink = overwriteObjectsAlreadyExistingInSink; + return this; + } + + /** + * @param overwriteObjectsAlreadyExistingInSink Whether overwriting objects that already exist in the sink is allowed. + * + * @return builder + * + */ + public Builder overwriteObjectsAlreadyExistingInSink(Boolean overwriteObjectsAlreadyExistingInSink) { + return overwriteObjectsAlreadyExistingInSink(Output.of(overwriteObjectsAlreadyExistingInSink)); + } + + /** + * @param overwriteWhen 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. + * + * @return builder + * + */ + public Builder overwriteWhen(@Nullable Output overwriteWhen) { + $.overwriteWhen = overwriteWhen; + return this; + } + + /** + * @param overwriteWhen 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. + * + * @return builder + * + */ + public Builder overwriteWhen(String overwriteWhen) { + return overwriteWhen(Output.of(overwriteWhen)); + } + + public TransferJobReplicationSpecTransferOptionsArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/storage/inputs/TransferJobState.java b/sdk/java/src/main/java/com/pulumi/gcp/storage/inputs/TransferJobState.java index 1c415bab4b..b4be193547 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/storage/inputs/TransferJobState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/storage/inputs/TransferJobState.java @@ -7,6 +7,7 @@ import com.pulumi.core.annotations.Import; import com.pulumi.gcp.storage.inputs.TransferJobEventStreamArgs; import com.pulumi.gcp.storage.inputs.TransferJobNotificationConfigArgs; +import com.pulumi.gcp.storage.inputs.TransferJobReplicationSpecArgs; import com.pulumi.gcp.storage.inputs.TransferJobScheduleArgs; import com.pulumi.gcp.storage.inputs.TransferJobTransferSpecArgs; import java.lang.String; @@ -141,6 +142,25 @@ public Optional> project() { return Optional.ofNullable(this.project); } + /** + * 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. + * + * *** + * + */ + @Import(name="replicationSpec") + private @Nullable Output replicationSpec; + + /** + * @return 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. + * + * *** + * + */ + public Optional> replicationSpec() { + return Optional.ofNullable(this.replicationSpec); + } + /** * 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. * @@ -172,18 +192,14 @@ public Optional> status() { } /** - * Transfer specification. Structure documented below. - * - * *** + * Transfer specification. Structure documented below. One of `transfer_spec`, or `replication_spec` can be specified. * */ @Import(name="transferSpec") private @Nullable Output transferSpec; /** - * @return Transfer specification. Structure documented below. - * - * *** + * @return Transfer specification. Structure documented below. One of `transfer_spec`, or `replication_spec` can be specified. * */ public Optional> transferSpec() { @@ -201,6 +217,7 @@ private TransferJobState(TransferJobState $) { this.name = $.name; this.notificationConfig = $.notificationConfig; this.project = $.project; + this.replicationSpec = $.replicationSpec; this.schedule = $.schedule; this.status = $.status; this.transferSpec = $.transferSpec; @@ -394,6 +411,31 @@ public Builder project(String project) { return project(Output.of(project)); } + /** + * @param replicationSpec 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. + * + * *** + * + * @return builder + * + */ + public Builder replicationSpec(@Nullable Output replicationSpec) { + $.replicationSpec = replicationSpec; + return this; + } + + /** + * @param replicationSpec 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. + * + * *** + * + * @return builder + * + */ + public Builder replicationSpec(TransferJobReplicationSpecArgs replicationSpec) { + return replicationSpec(Output.of(replicationSpec)); + } + /** * @param schedule 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. * @@ -437,9 +479,7 @@ public Builder status(String status) { } /** - * @param transferSpec Transfer specification. Structure documented below. - * - * *** + * @param transferSpec Transfer specification. Structure documented below. One of `transfer_spec`, or `replication_spec` can be specified. * * @return builder * @@ -450,9 +490,7 @@ public Builder transferSpec(@Nullable Output transf } /** - * @param transferSpec Transfer specification. Structure documented below. - * - * *** + * @param transferSpec Transfer specification. Structure documented below. One of `transfer_spec`, or `replication_spec` can be specified. * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/storage/outputs/TransferJobReplicationSpec.java b/sdk/java/src/main/java/com/pulumi/gcp/storage/outputs/TransferJobReplicationSpec.java new file mode 100644 index 0000000000..bbc67ac14b --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/storage/outputs/TransferJobReplicationSpec.java @@ -0,0 +1,123 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.storage.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.gcp.storage.outputs.TransferJobReplicationSpecGcsDataSink; +import com.pulumi.gcp.storage.outputs.TransferJobReplicationSpecGcsDataSource; +import com.pulumi.gcp.storage.outputs.TransferJobReplicationSpecObjectConditions; +import com.pulumi.gcp.storage.outputs.TransferJobReplicationSpecTransferOptions; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class TransferJobReplicationSpec { + /** + * @return A Google Cloud Storage data sink. Structure documented below. + * + */ + private @Nullable TransferJobReplicationSpecGcsDataSink gcsDataSink; + /** + * @return A Google Cloud Storage data source. Structure documented below. + * + */ + private @Nullable TransferJobReplicationSpecGcsDataSource gcsDataSource; + /** + * @return 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. + * + */ + private @Nullable TransferJobReplicationSpecObjectConditions objectConditions; + /** + * @return 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. + * + */ + private @Nullable TransferJobReplicationSpecTransferOptions transferOptions; + + private TransferJobReplicationSpec() {} + /** + * @return A Google Cloud Storage data sink. Structure documented below. + * + */ + public Optional gcsDataSink() { + return Optional.ofNullable(this.gcsDataSink); + } + /** + * @return A Google Cloud Storage data source. Structure documented below. + * + */ + public Optional gcsDataSource() { + return Optional.ofNullable(this.gcsDataSource); + } + /** + * @return 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. + * + */ + public Optional objectConditions() { + return Optional.ofNullable(this.objectConditions); + } + /** + * @return 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. + * + */ + public Optional transferOptions() { + return Optional.ofNullable(this.transferOptions); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(TransferJobReplicationSpec defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable TransferJobReplicationSpecGcsDataSink gcsDataSink; + private @Nullable TransferJobReplicationSpecGcsDataSource gcsDataSource; + private @Nullable TransferJobReplicationSpecObjectConditions objectConditions; + private @Nullable TransferJobReplicationSpecTransferOptions transferOptions; + public Builder() {} + public Builder(TransferJobReplicationSpec defaults) { + Objects.requireNonNull(defaults); + this.gcsDataSink = defaults.gcsDataSink; + this.gcsDataSource = defaults.gcsDataSource; + this.objectConditions = defaults.objectConditions; + this.transferOptions = defaults.transferOptions; + } + + @CustomType.Setter + public Builder gcsDataSink(@Nullable TransferJobReplicationSpecGcsDataSink gcsDataSink) { + + this.gcsDataSink = gcsDataSink; + return this; + } + @CustomType.Setter + public Builder gcsDataSource(@Nullable TransferJobReplicationSpecGcsDataSource gcsDataSource) { + + this.gcsDataSource = gcsDataSource; + return this; + } + @CustomType.Setter + public Builder objectConditions(@Nullable TransferJobReplicationSpecObjectConditions objectConditions) { + + this.objectConditions = objectConditions; + return this; + } + @CustomType.Setter + public Builder transferOptions(@Nullable TransferJobReplicationSpecTransferOptions transferOptions) { + + this.transferOptions = transferOptions; + return this; + } + public TransferJobReplicationSpec build() { + final var _resultValue = new TransferJobReplicationSpec(); + _resultValue.gcsDataSink = gcsDataSink; + _resultValue.gcsDataSource = gcsDataSource; + _resultValue.objectConditions = objectConditions; + _resultValue.transferOptions = transferOptions; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/storage/outputs/TransferJobReplicationSpecGcsDataSink.java b/sdk/java/src/main/java/com/pulumi/gcp/storage/outputs/TransferJobReplicationSpecGcsDataSink.java new file mode 100644 index 0000000000..0ee28e1e3a --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/storage/outputs/TransferJobReplicationSpecGcsDataSink.java @@ -0,0 +1,81 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.storage.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class TransferJobReplicationSpecGcsDataSink { + /** + * @return Google Cloud Storage bucket name. + * + */ + private String bucketName; + /** + * @return 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 '/'. + * + */ + private @Nullable String path; + + private TransferJobReplicationSpecGcsDataSink() {} + /** + * @return Google Cloud Storage bucket name. + * + */ + public String bucketName() { + return this.bucketName; + } + /** + * @return 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 '/'. + * + */ + public Optional path() { + return Optional.ofNullable(this.path); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(TransferJobReplicationSpecGcsDataSink defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String bucketName; + private @Nullable String path; + public Builder() {} + public Builder(TransferJobReplicationSpecGcsDataSink defaults) { + Objects.requireNonNull(defaults); + this.bucketName = defaults.bucketName; + this.path = defaults.path; + } + + @CustomType.Setter + public Builder bucketName(String bucketName) { + if (bucketName == null) { + throw new MissingRequiredPropertyException("TransferJobReplicationSpecGcsDataSink", "bucketName"); + } + this.bucketName = bucketName; + return this; + } + @CustomType.Setter + public Builder path(@Nullable String path) { + + this.path = path; + return this; + } + public TransferJobReplicationSpecGcsDataSink build() { + final var _resultValue = new TransferJobReplicationSpecGcsDataSink(); + _resultValue.bucketName = bucketName; + _resultValue.path = path; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/storage/outputs/TransferJobReplicationSpecGcsDataSource.java b/sdk/java/src/main/java/com/pulumi/gcp/storage/outputs/TransferJobReplicationSpecGcsDataSource.java new file mode 100644 index 0000000000..7971c4d5de --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/storage/outputs/TransferJobReplicationSpecGcsDataSource.java @@ -0,0 +1,81 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.storage.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class TransferJobReplicationSpecGcsDataSource { + /** + * @return Google Cloud Storage bucket name. + * + */ + private String bucketName; + /** + * @return 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 '/'. + * + */ + private @Nullable String path; + + private TransferJobReplicationSpecGcsDataSource() {} + /** + * @return Google Cloud Storage bucket name. + * + */ + public String bucketName() { + return this.bucketName; + } + /** + * @return 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 '/'. + * + */ + public Optional path() { + return Optional.ofNullable(this.path); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(TransferJobReplicationSpecGcsDataSource defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String bucketName; + private @Nullable String path; + public Builder() {} + public Builder(TransferJobReplicationSpecGcsDataSource defaults) { + Objects.requireNonNull(defaults); + this.bucketName = defaults.bucketName; + this.path = defaults.path; + } + + @CustomType.Setter + public Builder bucketName(String bucketName) { + if (bucketName == null) { + throw new MissingRequiredPropertyException("TransferJobReplicationSpecGcsDataSource", "bucketName"); + } + this.bucketName = bucketName; + return this; + } + @CustomType.Setter + public Builder path(@Nullable String path) { + + this.path = path; + return this; + } + public TransferJobReplicationSpecGcsDataSource build() { + final var _resultValue = new TransferJobReplicationSpecGcsDataSource(); + _resultValue.bucketName = bucketName; + _resultValue.path = path; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/storage/outputs/TransferJobReplicationSpecObjectConditions.java b/sdk/java/src/main/java/com/pulumi/gcp/storage/outputs/TransferJobReplicationSpecObjectConditions.java new file mode 100644 index 0000000000..1094a6b954 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/storage/outputs/TransferJobReplicationSpecObjectConditions.java @@ -0,0 +1,169 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.storage.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class TransferJobReplicationSpecObjectConditions { + /** + * @return `exclude_prefixes` must follow the requirements described for `include_prefixes`. See [Requirements](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#ObjectConditions). + * + */ + private @Nullable List excludePrefixes; + /** + * @return 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). + * + */ + private @Nullable List includePrefixes; + /** + * @return 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". + * + */ + private @Nullable String lastModifiedBefore; + /** + * @return 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". + * + */ + private @Nullable String lastModifiedSince; + /** + * @return A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + * + */ + private @Nullable String maxTimeElapsedSinceLastModification; + /** + * @return A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + * + */ + private @Nullable String minTimeElapsedSinceLastModification; + + private TransferJobReplicationSpecObjectConditions() {} + /** + * @return `exclude_prefixes` must follow the requirements described for `include_prefixes`. See [Requirements](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#ObjectConditions). + * + */ + public List excludePrefixes() { + return this.excludePrefixes == null ? List.of() : this.excludePrefixes; + } + /** + * @return 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). + * + */ + public List includePrefixes() { + return this.includePrefixes == null ? List.of() : this.includePrefixes; + } + /** + * @return 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". + * + */ + public Optional lastModifiedBefore() { + return Optional.ofNullable(this.lastModifiedBefore); + } + /** + * @return 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". + * + */ + public Optional lastModifiedSince() { + return Optional.ofNullable(this.lastModifiedSince); + } + /** + * @return A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + * + */ + public Optional maxTimeElapsedSinceLastModification() { + return Optional.ofNullable(this.maxTimeElapsedSinceLastModification); + } + /** + * @return A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + * + */ + public Optional minTimeElapsedSinceLastModification() { + return Optional.ofNullable(this.minTimeElapsedSinceLastModification); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(TransferJobReplicationSpecObjectConditions defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable List excludePrefixes; + private @Nullable List includePrefixes; + private @Nullable String lastModifiedBefore; + private @Nullable String lastModifiedSince; + private @Nullable String maxTimeElapsedSinceLastModification; + private @Nullable String minTimeElapsedSinceLastModification; + public Builder() {} + public Builder(TransferJobReplicationSpecObjectConditions defaults) { + Objects.requireNonNull(defaults); + this.excludePrefixes = defaults.excludePrefixes; + this.includePrefixes = defaults.includePrefixes; + this.lastModifiedBefore = defaults.lastModifiedBefore; + this.lastModifiedSince = defaults.lastModifiedSince; + this.maxTimeElapsedSinceLastModification = defaults.maxTimeElapsedSinceLastModification; + this.minTimeElapsedSinceLastModification = defaults.minTimeElapsedSinceLastModification; + } + + @CustomType.Setter + public Builder excludePrefixes(@Nullable List excludePrefixes) { + + this.excludePrefixes = excludePrefixes; + return this; + } + public Builder excludePrefixes(String... excludePrefixes) { + return excludePrefixes(List.of(excludePrefixes)); + } + @CustomType.Setter + public Builder includePrefixes(@Nullable List includePrefixes) { + + this.includePrefixes = includePrefixes; + return this; + } + public Builder includePrefixes(String... includePrefixes) { + return includePrefixes(List.of(includePrefixes)); + } + @CustomType.Setter + public Builder lastModifiedBefore(@Nullable String lastModifiedBefore) { + + this.lastModifiedBefore = lastModifiedBefore; + return this; + } + @CustomType.Setter + public Builder lastModifiedSince(@Nullable String lastModifiedSince) { + + this.lastModifiedSince = lastModifiedSince; + return this; + } + @CustomType.Setter + public Builder maxTimeElapsedSinceLastModification(@Nullable String maxTimeElapsedSinceLastModification) { + + this.maxTimeElapsedSinceLastModification = maxTimeElapsedSinceLastModification; + return this; + } + @CustomType.Setter + public Builder minTimeElapsedSinceLastModification(@Nullable String minTimeElapsedSinceLastModification) { + + this.minTimeElapsedSinceLastModification = minTimeElapsedSinceLastModification; + return this; + } + public TransferJobReplicationSpecObjectConditions build() { + final var _resultValue = new TransferJobReplicationSpecObjectConditions(); + _resultValue.excludePrefixes = excludePrefixes; + _resultValue.includePrefixes = includePrefixes; + _resultValue.lastModifiedBefore = lastModifiedBefore; + _resultValue.lastModifiedSince = lastModifiedSince; + _resultValue.maxTimeElapsedSinceLastModification = maxTimeElapsedSinceLastModification; + _resultValue.minTimeElapsedSinceLastModification = minTimeElapsedSinceLastModification; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/storage/outputs/TransferJobReplicationSpecTransferOptions.java b/sdk/java/src/main/java/com/pulumi/gcp/storage/outputs/TransferJobReplicationSpecTransferOptions.java new file mode 100644 index 0000000000..bda76f4d24 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/storage/outputs/TransferJobReplicationSpecTransferOptions.java @@ -0,0 +1,123 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.storage.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.Boolean; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class TransferJobReplicationSpecTransferOptions { + /** + * @return 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. + * + */ + private @Nullable Boolean deleteObjectsFromSourceAfterTransfer; + /** + * @return Whether objects that exist only in the sink should be deleted. Note that this option and + * `delete_objects_from_source_after_transfer` are mutually exclusive. + * + */ + private @Nullable Boolean deleteObjectsUniqueInSink; + /** + * @return Whether overwriting objects that already exist in the sink is allowed. + * + */ + private @Nullable Boolean overwriteObjectsAlreadyExistingInSink; + /** + * @return 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. + * + */ + private @Nullable String overwriteWhen; + + private TransferJobReplicationSpecTransferOptions() {} + /** + * @return 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. + * + */ + public Optional deleteObjectsFromSourceAfterTransfer() { + return Optional.ofNullable(this.deleteObjectsFromSourceAfterTransfer); + } + /** + * @return Whether objects that exist only in the sink should be deleted. Note that this option and + * `delete_objects_from_source_after_transfer` are mutually exclusive. + * + */ + public Optional deleteObjectsUniqueInSink() { + return Optional.ofNullable(this.deleteObjectsUniqueInSink); + } + /** + * @return Whether overwriting objects that already exist in the sink is allowed. + * + */ + public Optional overwriteObjectsAlreadyExistingInSink() { + return Optional.ofNullable(this.overwriteObjectsAlreadyExistingInSink); + } + /** + * @return 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. + * + */ + public Optional overwriteWhen() { + return Optional.ofNullable(this.overwriteWhen); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(TransferJobReplicationSpecTransferOptions defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable Boolean deleteObjectsFromSourceAfterTransfer; + private @Nullable Boolean deleteObjectsUniqueInSink; + private @Nullable Boolean overwriteObjectsAlreadyExistingInSink; + private @Nullable String overwriteWhen; + public Builder() {} + public Builder(TransferJobReplicationSpecTransferOptions defaults) { + Objects.requireNonNull(defaults); + this.deleteObjectsFromSourceAfterTransfer = defaults.deleteObjectsFromSourceAfterTransfer; + this.deleteObjectsUniqueInSink = defaults.deleteObjectsUniqueInSink; + this.overwriteObjectsAlreadyExistingInSink = defaults.overwriteObjectsAlreadyExistingInSink; + this.overwriteWhen = defaults.overwriteWhen; + } + + @CustomType.Setter + public Builder deleteObjectsFromSourceAfterTransfer(@Nullable Boolean deleteObjectsFromSourceAfterTransfer) { + + this.deleteObjectsFromSourceAfterTransfer = deleteObjectsFromSourceAfterTransfer; + return this; + } + @CustomType.Setter + public Builder deleteObjectsUniqueInSink(@Nullable Boolean deleteObjectsUniqueInSink) { + + this.deleteObjectsUniqueInSink = deleteObjectsUniqueInSink; + return this; + } + @CustomType.Setter + public Builder overwriteObjectsAlreadyExistingInSink(@Nullable Boolean overwriteObjectsAlreadyExistingInSink) { + + this.overwriteObjectsAlreadyExistingInSink = overwriteObjectsAlreadyExistingInSink; + return this; + } + @CustomType.Setter + public Builder overwriteWhen(@Nullable String overwriteWhen) { + + this.overwriteWhen = overwriteWhen; + return this; + } + public TransferJobReplicationSpecTransferOptions build() { + final var _resultValue = new TransferJobReplicationSpecTransferOptions(); + _resultValue.deleteObjectsFromSourceAfterTransfer = deleteObjectsFromSourceAfterTransfer; + _resultValue.deleteObjectsUniqueInSink = deleteObjectsUniqueInSink; + _resultValue.overwriteObjectsAlreadyExistingInSink = overwriteObjectsAlreadyExistingInSink; + _resultValue.overwriteWhen = overwriteWhen; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/vertex/AiEndpoint.java b/sdk/java/src/main/java/com/pulumi/gcp/vertex/AiEndpoint.java index a995d86217..c89ae2caf9 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/vertex/AiEndpoint.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/vertex/AiEndpoint.java @@ -170,7 +170,7 @@ * final var project = OrganizationsFunctions.getProject(); * * var endpoint = new AiEndpoint("endpoint", AiEndpointArgs.builder() - * .name("endpoint-name_8270") + * .name("endpoint-name_89313") * .displayName("sample-endpoint") * .description("A sample vertex endpoint") * .location("us-central1") @@ -216,7 +216,7 @@ * * public static void stack(Context ctx) { * var endpoint = new AiEndpoint("endpoint", AiEndpointArgs.builder() - * .name("endpoint-name_41150") + * .name("endpoint-name_60646") * .displayName("sample-endpoint") * .description("A sample vertex endpoint") * .location("us-central1") diff --git a/sdk/java/src/main/java/com/pulumi/gcp/vertex/AiFeatureOnlineStoreFeatureview.java b/sdk/java/src/main/java/com/pulumi/gcp/vertex/AiFeatureOnlineStoreFeatureview.java index b70e3906cf..c916a73012 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/vertex/AiFeatureOnlineStoreFeatureview.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/vertex/AiFeatureOnlineStoreFeatureview.java @@ -328,8 +328,8 @@ * final var testProject = OrganizationsFunctions.getProject(); * * var project = new Project("project", ProjectArgs.builder() - * .projectId("tf-test_89313") - * .name("tf-test_60646") + * .projectId("tf-test_9394") + * .name("tf-test_11380") * .orgId("123456789") * .billingAccount("000000-0000000-0000000-000000") * .deletionPolicy("DELETE") diff --git a/sdk/java/src/main/java/com/pulumi/gcp/vertex/inputs/AiIndexMetadataArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/vertex/inputs/AiIndexMetadataArgs.java index 4e9ff011be..63b92723dc 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/vertex/inputs/AiIndexMetadataArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/vertex/inputs/AiIndexMetadataArgs.java @@ -5,7 +5,6 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; -import com.pulumi.exceptions.MissingRequiredPropertyException; import com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigArgs; import java.lang.Boolean; import java.lang.String; @@ -44,8 +43,8 @@ public Optional> config() { * described at https://cloud.google.com/vertex-ai/docs/matching-engine/using-matching-engine#input-data-format * */ - @Import(name="contentsDeltaUri", required=true) - private Output contentsDeltaUri; + @Import(name="contentsDeltaUri") + private @Nullable Output contentsDeltaUri; /** * @return Allows inserting, updating or deleting the contents of the Matching Engine Index. @@ -56,8 +55,8 @@ public Optional> config() { * described at https://cloud.google.com/vertex-ai/docs/matching-engine/using-matching-engine#input-data-format * */ - public Output contentsDeltaUri() { - return this.contentsDeltaUri; + public Optional> contentsDeltaUri() { + return Optional.ofNullable(this.contentsDeltaUri); } /** @@ -137,7 +136,7 @@ public Builder config(AiIndexMetadataConfigArgs config) { * @return builder * */ - public Builder contentsDeltaUri(Output contentsDeltaUri) { + public Builder contentsDeltaUri(@Nullable Output contentsDeltaUri) { $.contentsDeltaUri = contentsDeltaUri; return this; } @@ -181,9 +180,6 @@ public Builder isCompleteOverwrite(Boolean isCompleteOverwrite) { } public AiIndexMetadataArgs build() { - if ($.contentsDeltaUri == null) { - throw new MissingRequiredPropertyException("AiIndexMetadataArgs", "contentsDeltaUri"); - } return $; } } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/vertex/outputs/AiIndexMetadata.java b/sdk/java/src/main/java/com/pulumi/gcp/vertex/outputs/AiIndexMetadata.java index 6c38203057..74983925e6 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/vertex/outputs/AiIndexMetadata.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/vertex/outputs/AiIndexMetadata.java @@ -4,7 +4,6 @@ package com.pulumi.gcp.vertex.outputs; import com.pulumi.core.annotations.CustomType; -import com.pulumi.exceptions.MissingRequiredPropertyException; import com.pulumi.gcp.vertex.outputs.AiIndexMetadataConfig; import java.lang.Boolean; import java.lang.String; @@ -29,7 +28,7 @@ public final class AiIndexMetadata { * described at https://cloud.google.com/vertex-ai/docs/matching-engine/using-matching-engine#input-data-format * */ - private String contentsDeltaUri; + private @Nullable String contentsDeltaUri; /** * @return If this field is set together with contentsDeltaUri when calling IndexService.UpdateIndex, * then existing content of the Index will be replaced by the data from the contentsDeltaUri. @@ -55,8 +54,8 @@ public Optional config() { * described at https://cloud.google.com/vertex-ai/docs/matching-engine/using-matching-engine#input-data-format * */ - public String contentsDeltaUri() { - return this.contentsDeltaUri; + public Optional contentsDeltaUri() { + return Optional.ofNullable(this.contentsDeltaUri); } /** * @return If this field is set together with contentsDeltaUri when calling IndexService.UpdateIndex, @@ -77,7 +76,7 @@ public static Builder builder(AiIndexMetadata defaults) { @CustomType.Builder public static final class Builder { private @Nullable AiIndexMetadataConfig config; - private String contentsDeltaUri; + private @Nullable String contentsDeltaUri; private @Nullable Boolean isCompleteOverwrite; public Builder() {} public Builder(AiIndexMetadata defaults) { @@ -94,10 +93,8 @@ public Builder config(@Nullable AiIndexMetadataConfig config) { return this; } @CustomType.Setter - public Builder contentsDeltaUri(String contentsDeltaUri) { - if (contentsDeltaUri == null) { - throw new MissingRequiredPropertyException("AiIndexMetadata", "contentsDeltaUri"); - } + public Builder contentsDeltaUri(@Nullable String contentsDeltaUri) { + this.contentsDeltaUri = contentsDeltaUri; return this; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/workstations/Workstation.java b/sdk/java/src/main/java/com/pulumi/gcp/workstations/Workstation.java index 5a17119caa..e807d690f2 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/workstations/Workstation.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/workstations/Workstation.java @@ -311,6 +311,22 @@ public Output project() { public Output> pulumiLabels() { return this.pulumiLabels; } + /** + * Full resource name of the source workstation from which the workstation's persistent + * directories will be cloned from during creation. + * + */ + @Export(name="sourceWorkstation", refs={String.class}, tree="[0]") + private Output sourceWorkstation; + + /** + * @return Full resource name of the source workstation from which the workstation's persistent + * directories will be cloned from during creation. + * + */ + public Output> sourceWorkstation() { + return Codegen.optional(this.sourceWorkstation); + } /** * Current state of the workstation. * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/workstations/WorkstationArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/workstations/WorkstationArgs.java index 91d042f602..b8a36d247c 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/workstations/WorkstationArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/workstations/WorkstationArgs.java @@ -121,6 +121,23 @@ public Optional> project() { return Optional.ofNullable(this.project); } + /** + * Full resource name of the source workstation from which the workstation's persistent + * directories will be cloned from during creation. + * + */ + @Import(name="sourceWorkstation") + private @Nullable Output sourceWorkstation; + + /** + * @return Full resource name of the source workstation from which the workstation's persistent + * directories will be cloned from during creation. + * + */ + public Optional> sourceWorkstation() { + return Optional.ofNullable(this.sourceWorkstation); + } + /** * The ID of the parent workstation cluster. * @@ -175,6 +192,7 @@ private WorkstationArgs(WorkstationArgs $) { this.labels = $.labels; this.location = $.location; this.project = $.project; + this.sourceWorkstation = $.sourceWorkstation; this.workstationClusterId = $.workstationClusterId; this.workstationConfigId = $.workstationConfigId; this.workstationId = $.workstationId; @@ -338,6 +356,29 @@ public Builder project(String project) { return project(Output.of(project)); } + /** + * @param sourceWorkstation Full resource name of the source workstation from which the workstation's persistent + * directories will be cloned from during creation. + * + * @return builder + * + */ + public Builder sourceWorkstation(@Nullable Output sourceWorkstation) { + $.sourceWorkstation = sourceWorkstation; + return this; + } + + /** + * @param sourceWorkstation Full resource name of the source workstation from which the workstation's persistent + * directories will be cloned from during creation. + * + * @return builder + * + */ + public Builder sourceWorkstation(String sourceWorkstation) { + return sourceWorkstation(Output.of(sourceWorkstation)); + } + /** * @param workstationClusterId The ID of the parent workstation cluster. * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/workstations/inputs/WorkstationState.java b/sdk/java/src/main/java/com/pulumi/gcp/workstations/inputs/WorkstationState.java index c641c0c9fa..b94cd8d3ce 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/workstations/inputs/WorkstationState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/workstations/inputs/WorkstationState.java @@ -208,6 +208,23 @@ public Optional>> pulumiLabels() { return Optional.ofNullable(this.pulumiLabels); } + /** + * Full resource name of the source workstation from which the workstation's persistent + * directories will be cloned from during creation. + * + */ + @Import(name="sourceWorkstation") + private @Nullable Output sourceWorkstation; + + /** + * @return Full resource name of the source workstation from which the workstation's persistent + * directories will be cloned from during creation. + * + */ + public Optional> sourceWorkstation() { + return Optional.ofNullable(this.sourceWorkstation); + } + /** * Current state of the workstation. * @@ -298,6 +315,7 @@ private WorkstationState(WorkstationState $) { this.name = $.name; this.project = $.project; this.pulumiLabels = $.pulumiLabels; + this.sourceWorkstation = $.sourceWorkstation; this.state = $.state; this.uid = $.uid; this.workstationClusterId = $.workstationClusterId; @@ -583,6 +601,29 @@ public Builder pulumiLabels(Map pulumiLabels) { return pulumiLabels(Output.of(pulumiLabels)); } + /** + * @param sourceWorkstation Full resource name of the source workstation from which the workstation's persistent + * directories will be cloned from during creation. + * + * @return builder + * + */ + public Builder sourceWorkstation(@Nullable Output sourceWorkstation) { + $.sourceWorkstation = sourceWorkstation; + return this; + } + + /** + * @param sourceWorkstation Full resource name of the source workstation from which the workstation's persistent + * directories will be cloned from during creation. + * + * @return builder + * + */ + public Builder sourceWorkstation(String sourceWorkstation) { + return sourceWorkstation(Output.of(sourceWorkstation)); + } + /** * @param state Current state of the workstation. * diff --git a/sdk/nodejs/artifactregistry/getRepository.ts b/sdk/nodejs/artifactregistry/getRepository.ts index 73302caf98..c9f74fceda 100644 --- a/sdk/nodejs/artifactregistry/getRepository.ts +++ b/sdk/nodejs/artifactregistry/getRepository.ts @@ -80,6 +80,7 @@ export interface GetRepositoryResult { readonly repositoryId: string; readonly updateTime: string; readonly virtualRepositoryConfigs: outputs.artifactregistry.GetRepositoryVirtualRepositoryConfig[]; + readonly vulnerabilityScanningConfigs: outputs.artifactregistry.GetRepositoryVulnerabilityScanningConfig[]; } /** * Get information about a Google Artifact Registry Repository. For more information see diff --git a/sdk/nodejs/artifactregistry/repository.ts b/sdk/nodejs/artifactregistry/repository.ts index 0b38df653a..a9ea9f42a5 100644 --- a/sdk/nodejs/artifactregistry/repository.ts +++ b/sdk/nodejs/artifactregistry/repository.ts @@ -510,9 +510,11 @@ import * as utilities from "../utilities"; * remoteRepositoryConfig: { * description: "pull-through cache of another Artifact Registry repository by URL", * commonRepository: { - * uri: "https://us-central1-docker.pkg.dev//example-upstream-repo", + * uri: project.then(project => `https://us-central1-docker.pkg.dev/${project.projectId}/example-upstream-repo`), * }, * }, + * }, { + * dependsOn: [upstreamRepo], * }); * ``` * ### Artifact Registry Repository Remote Common Repository With Custom Upstream @@ -558,6 +560,22 @@ import * as utilities from "../utilities"; * }, * }); * ``` + * ### Artifact Registry Repository Vulnerability Scanning + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const my_repo = new gcp.artifactregistry.Repository("my-repo", { + * location: "us-central1", + * repositoryId: "my-repository", + * description: "example docker repository with vulnerability scanning config", + * format: "DOCKER", + * vulnerabilityScanningConfig: { + * enablementConfig: "INHERITED", + * }, + * }); + * ``` * * ## Import * @@ -725,6 +743,11 @@ export class Repository extends pulumi.CustomResource { * Structure is documented below. */ public readonly virtualRepositoryConfig!: pulumi.Output; + /** + * Configuration for vulnerability scanning of artifacts stored in this repository. + * Structure is documented below. + */ + public readonly vulnerabilityScanningConfig!: pulumi.Output; /** * Create a Repository resource with the given unique name, arguments, and options. @@ -758,6 +781,7 @@ export class Repository extends pulumi.CustomResource { resourceInputs["repositoryId"] = state ? state.repositoryId : undefined; resourceInputs["updateTime"] = state ? state.updateTime : undefined; resourceInputs["virtualRepositoryConfig"] = state ? state.virtualRepositoryConfig : undefined; + resourceInputs["vulnerabilityScanningConfig"] = state ? state.vulnerabilityScanningConfig : undefined; } else { const args = argsOrState as RepositoryArgs | undefined; if ((!args || args.format === undefined) && !opts.urn) { @@ -780,6 +804,7 @@ export class Repository extends pulumi.CustomResource { resourceInputs["remoteRepositoryConfig"] = args ? args.remoteRepositoryConfig : undefined; resourceInputs["repositoryId"] = args ? args.repositoryId : undefined; resourceInputs["virtualRepositoryConfig"] = args ? args.virtualRepositoryConfig : undefined; + resourceInputs["vulnerabilityScanningConfig"] = args ? args.vulnerabilityScanningConfig : undefined; resourceInputs["createTime"] = undefined /*out*/; resourceInputs["effectiveLabels"] = undefined /*out*/; resourceInputs["name"] = undefined /*out*/; @@ -911,6 +936,11 @@ export interface RepositoryState { * Structure is documented below. */ virtualRepositoryConfig?: pulumi.Input; + /** + * Configuration for vulnerability scanning of artifacts stored in this repository. + * Structure is documented below. + */ + vulnerabilityScanningConfig?: pulumi.Input; } /** @@ -1009,4 +1039,9 @@ export interface RepositoryArgs { * Structure is documented below. */ virtualRepositoryConfig?: pulumi.Input; + /** + * Configuration for vulnerability scanning of artifacts stored in this repository. + * Structure is documented below. + */ + vulnerabilityScanningConfig?: pulumi.Input; } diff --git a/sdk/nodejs/backupdisasterrecovery/getBackup.ts b/sdk/nodejs/backupdisasterrecovery/getBackup.ts index 5ff54ac829..7ba06acbe4 100644 --- a/sdk/nodejs/backupdisasterrecovery/getBackup.ts +++ b/sdk/nodejs/backupdisasterrecovery/getBackup.ts @@ -6,6 +6,23 @@ import * as inputs from "../types/input"; import * as outputs from "../types/output"; import * as utilities from "../utilities"; +/** + * A Backup and DR Backup. + * + * ## Example Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const foo = gcp.backupdisasterrecovery.getBackup({ + * location: "us-central1", + * project: "project-test", + * dataSourceId: "ds-test", + * backupVaultId: "bv-test", + * }); + * ``` + */ export function getBackup(args: GetBackupArgs, opts?: pulumi.InvokeOptions): Promise { opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); return pulumi.runtime.invoke("gcp:backupdisasterrecovery/getBackup:getBackup", { @@ -20,9 +37,21 @@ export function getBackup(args: GetBackupArgs, opts?: pulumi.InvokeOptions): Pro * A collection of arguments for invoking getBackup. */ export interface GetBackupArgs { + /** + * The ID of the Backup Vault of the Data Source in which the Backup belongs. + */ backupVaultId: string; + /** + * The ID of the Data Source in which the Backup belongs. + */ dataSourceId: string; + /** + * The location in which the Backup belongs. + */ location: string; + /** + * The Google Cloud Project in which the Backup belongs. + */ project: string; } @@ -41,6 +70,23 @@ export interface GetBackupResult { readonly name: string; readonly project: string; } +/** + * A Backup and DR Backup. + * + * ## Example Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const foo = gcp.backupdisasterrecovery.getBackup({ + * location: "us-central1", + * project: "project-test", + * dataSourceId: "ds-test", + * backupVaultId: "bv-test", + * }); + * ``` + */ export function getBackupOutput(args: GetBackupOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output { opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); return pulumi.runtime.invokeOutput("gcp:backupdisasterrecovery/getBackup:getBackup", { @@ -55,8 +101,20 @@ export function getBackupOutput(args: GetBackupOutputArgs, opts?: pulumi.InvokeO * A collection of arguments for invoking getBackup. */ export interface GetBackupOutputArgs { + /** + * The ID of the Backup Vault of the Data Source in which the Backup belongs. + */ backupVaultId: pulumi.Input; + /** + * The ID of the Data Source in which the Backup belongs. + */ dataSourceId: pulumi.Input; + /** + * The location in which the Backup belongs. + */ location: pulumi.Input; + /** + * The Google Cloud Project in which the Backup belongs. + */ project: pulumi.Input; } diff --git a/sdk/nodejs/backupdisasterrecovery/getDataSource.ts b/sdk/nodejs/backupdisasterrecovery/getDataSource.ts index a095add45c..024bc6c8e2 100644 --- a/sdk/nodejs/backupdisasterrecovery/getDataSource.ts +++ b/sdk/nodejs/backupdisasterrecovery/getDataSource.ts @@ -6,6 +6,23 @@ import * as inputs from "../types/input"; import * as outputs from "../types/output"; import * as utilities from "../utilities"; +/** + * A Backup and DR Data Source. + * + * ## Example Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const foo = gcp.backupdisasterrecovery.getDataSource({ + * location: "us-central1", + * project: "project-test", + * dataSourceId: "ds-test", + * backupVaultId: "bv-test", + * }); + * ``` + */ export function getDataSource(args: GetDataSourceArgs, opts?: pulumi.InvokeOptions): Promise { opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); return pulumi.runtime.invoke("gcp:backupdisasterrecovery/getDataSource:getDataSource", { @@ -20,9 +37,21 @@ export function getDataSource(args: GetDataSourceArgs, opts?: pulumi.InvokeOptio * A collection of arguments for invoking getDataSource. */ export interface GetDataSourceArgs { + /** + * The ID of the Backup Vault in which the Data Source belongs. + */ backupVaultId: string; + /** + * The ID of the Data Source. + */ dataSourceId: string; + /** + * The location in which the Data Source belongs. + */ location: string; + /** + * The Google Cloud Project in which the Data Source belongs. + */ project: string; } @@ -51,6 +80,23 @@ export interface GetDataSourceResult { readonly totalStoredBytes: string; readonly updateTime: string; } +/** + * A Backup and DR Data Source. + * + * ## Example Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const foo = gcp.backupdisasterrecovery.getDataSource({ + * location: "us-central1", + * project: "project-test", + * dataSourceId: "ds-test", + * backupVaultId: "bv-test", + * }); + * ``` + */ export function getDataSourceOutput(args: GetDataSourceOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output { opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); return pulumi.runtime.invokeOutput("gcp:backupdisasterrecovery/getDataSource:getDataSource", { @@ -65,8 +111,20 @@ export function getDataSourceOutput(args: GetDataSourceOutputArgs, opts?: pulumi * A collection of arguments for invoking getDataSource. */ export interface GetDataSourceOutputArgs { + /** + * The ID of the Backup Vault in which the Data Source belongs. + */ backupVaultId: pulumi.Input; + /** + * The ID of the Data Source. + */ dataSourceId: pulumi.Input; + /** + * The location in which the Data Source belongs. + */ location: pulumi.Input; + /** + * The Google Cloud Project in which the Data Source belongs. + */ project: pulumi.Input; } diff --git a/sdk/nodejs/bigquery/datasetAccess.ts b/sdk/nodejs/bigquery/datasetAccess.ts index 27fbb5df51..a517d11b10 100644 --- a/sdk/nodejs/bigquery/datasetAccess.ts +++ b/sdk/nodejs/bigquery/datasetAccess.ts @@ -156,6 +156,12 @@ export class DatasetAccess extends pulumi.CustomResource { * Structure is documented below. */ public readonly authorizedDataset!: pulumi.Output; + /** + * Condition for the binding. If CEL expression in this field is true, this + * access binding will be considered. + * Structure is documented below. + */ + public readonly condition!: pulumi.Output; /** * A unique ID for this dataset, without the project name. The ID * must contain only letters (a-z, A-Z), numbers (0-9), or @@ -240,6 +246,7 @@ export class DatasetAccess extends pulumi.CustomResource { const state = argsOrState as DatasetAccessState | undefined; resourceInputs["apiUpdatedMember"] = state ? state.apiUpdatedMember : undefined; resourceInputs["authorizedDataset"] = state ? state.authorizedDataset : undefined; + resourceInputs["condition"] = state ? state.condition : undefined; resourceInputs["datasetId"] = state ? state.datasetId : undefined; resourceInputs["domain"] = state ? state.domain : undefined; resourceInputs["groupByEmail"] = state ? state.groupByEmail : undefined; @@ -256,6 +263,7 @@ export class DatasetAccess extends pulumi.CustomResource { throw new Error("Missing required property 'datasetId'"); } resourceInputs["authorizedDataset"] = args ? args.authorizedDataset : undefined; + resourceInputs["condition"] = args ? args.condition : undefined; resourceInputs["datasetId"] = args ? args.datasetId : undefined; resourceInputs["domain"] = args ? args.domain : undefined; resourceInputs["groupByEmail"] = args ? args.groupByEmail : undefined; @@ -287,6 +295,12 @@ export interface DatasetAccessState { * Structure is documented below. */ authorizedDataset?: pulumi.Input; + /** + * Condition for the binding. If CEL expression in this field is true, this + * access binding will be considered. + * Structure is documented below. + */ + condition?: pulumi.Input; /** * A unique ID for this dataset, without the project name. The ID * must contain only letters (a-z, A-Z), numbers (0-9), or @@ -366,6 +380,12 @@ export interface DatasetAccessArgs { * Structure is documented below. */ authorizedDataset?: pulumi.Input; + /** + * Condition for the binding. If CEL expression in this field is true, this + * access binding will be considered. + * Structure is documented below. + */ + condition?: pulumi.Input; /** * 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/nodejs/bigquery/job.ts b/sdk/nodejs/bigquery/job.ts index bb90abb5d9..4a3a79121b 100644 --- a/sdk/nodejs/bigquery/job.ts +++ b/sdk/nodejs/bigquery/job.ts @@ -284,19 +284,11 @@ import * as utilities from "../utilities"; * description: "This is a test description", * location: "US", * }); - * const keyRing = new gcp.kms.KeyRing("key_ring", { - * name: "example-keyring", - * location: "global", - * }); - * const cryptoKey = new gcp.kms.CryptoKey("crypto_key", { - * name: "example-key", - * keyRing: keyRing.id, - * }); * const project = gcp.organizations.getProject({ * projectId: "my-project-name", * }); * const encryptRole = new gcp.kms.CryptoKeyIAMMember("encrypt_role", { - * cryptoKeyId: cryptoKey.id, + * cryptoKeyId: "example-key", * role: "roles/cloudkms.cryptoKeyEncrypterDecrypter", * member: project.then(project => `serviceAccount:bq-${project.number}@bigquery-encryption.iam.gserviceaccount.com`), * }); @@ -323,7 +315,7 @@ import * as utilities from "../utilities"; * ] * `, * encryptionConfiguration: { - * kmsKeyName: cryptoKey.id, + * kmsKeyName: "example-key", * }, * }, { * dependsOn: [encryptRole], @@ -349,7 +341,7 @@ import * as utilities from "../utilities"; * tableId: dest.tableId, * }, * destinationEncryptionConfiguration: { - * kmsKeyName: cryptoKey.id, + * kmsKeyName: "example-key", * }, * }, * }, { diff --git a/sdk/nodejs/bigquery/table.ts b/sdk/nodejs/bigquery/table.ts index 9b64c62d94..42e6688c0d 100644 --- a/sdk/nodejs/bigquery/table.ts +++ b/sdk/nodejs/bigquery/table.ts @@ -186,6 +186,10 @@ export class Table extends pulumi.CustomResource { * reclaimed. */ public readonly expirationTime!: pulumi.Output; + /** + * Options defining open source compatible table. + */ + public readonly externalCatalogTableOptions!: pulumi.Output; /** * Describes the data format, * location, and other properties of a table stored outside of BigQuery. @@ -327,6 +331,7 @@ export class Table extends pulumi.CustomResource { resourceInputs["encryptionConfiguration"] = state ? state.encryptionConfiguration : undefined; resourceInputs["etag"] = state ? state.etag : undefined; resourceInputs["expirationTime"] = state ? state.expirationTime : undefined; + resourceInputs["externalCatalogTableOptions"] = state ? state.externalCatalogTableOptions : undefined; resourceInputs["externalDataConfiguration"] = state ? state.externalDataConfiguration : undefined; resourceInputs["friendlyName"] = state ? state.friendlyName : undefined; resourceInputs["labels"] = state ? state.labels : undefined; @@ -365,6 +370,7 @@ export class Table extends pulumi.CustomResource { resourceInputs["description"] = args ? args.description : undefined; resourceInputs["encryptionConfiguration"] = args ? args.encryptionConfiguration : undefined; resourceInputs["expirationTime"] = args ? args.expirationTime : undefined; + resourceInputs["externalCatalogTableOptions"] = args ? args.externalCatalogTableOptions : undefined; resourceInputs["externalDataConfiguration"] = args ? args.externalDataConfiguration : undefined; resourceInputs["friendlyName"] = args ? args.friendlyName : undefined; resourceInputs["labels"] = args ? args.labels : undefined; @@ -467,6 +473,10 @@ export interface TableState { * reclaimed. */ expirationTime?: pulumi.Input; + /** + * Options defining open source compatible table. + */ + externalCatalogTableOptions?: pulumi.Input; /** * Describes the data format, * location, and other properties of a table stored outside of BigQuery. @@ -627,6 +637,10 @@ export interface TableArgs { * reclaimed. */ expirationTime?: pulumi.Input; + /** + * Options defining open source compatible table. + */ + externalCatalogTableOptions?: pulumi.Input; /** * Describes the data format, * location, and other properties of a table stored outside of BigQuery. diff --git a/sdk/nodejs/chronicle/index.ts b/sdk/nodejs/chronicle/index.ts new file mode 100644 index 0000000000..42de97ca03 --- /dev/null +++ b/sdk/nodejs/chronicle/index.ts @@ -0,0 +1,25 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "../utilities"; + +// Export members: +export { WatchlistArgs, WatchlistState } from "./watchlist"; +export type Watchlist = import("./watchlist").Watchlist; +export const Watchlist: typeof import("./watchlist").Watchlist = null as any; +utilities.lazyLoad(exports, ["Watchlist"], () => require("./watchlist")); + + +const _module = { + version: utilities.getVersion(), + construct: (name: string, type: string, urn: string): pulumi.Resource => { + switch (type) { + case "gcp:chronicle/watchlist:Watchlist": + return new Watchlist(name, undefined, { urn }) + default: + throw new Error(`unknown resource type ${type}`); + } + }, +}; +pulumi.runtime.registerResourceModule("gcp", "chronicle/watchlist", _module) diff --git a/sdk/nodejs/chronicle/watchlist.ts b/sdk/nodejs/chronicle/watchlist.ts new file mode 100644 index 0000000000..e3a2aebc08 --- /dev/null +++ b/sdk/nodejs/chronicle/watchlist.ts @@ -0,0 +1,314 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as inputs from "../types/input"; +import * as outputs from "../types/output"; +import * as utilities from "../utilities"; + +/** + * ## Example Usage + * + * ### Chronicle Watchlist Basic + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const example = new gcp.chronicle.Watchlist("example", { + * location: "us", + * instance: "00000000-0000-0000-0000-000000000000", + * watchlistId: "watchlist-name", + * description: "watchlist-description", + * displayName: "watchlist-name", + * multiplyingFactor: 1, + * entityPopulationMechanism: { + * manual: {}, + * }, + * watchlistUserPreferences: { + * 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}} + * ``` + */ +export class Watchlist extends pulumi.CustomResource { + /** + * Get an existing Watchlist resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: WatchlistState, opts?: pulumi.CustomResourceOptions): Watchlist { + return new Watchlist(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'gcp:chronicle/watchlist:Watchlist'; + + /** + * Returns true if the given object is an instance of Watchlist. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is Watchlist { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === Watchlist.__pulumiType; + } + + /** + * Output only. Time the watchlist was created. + */ + public /*out*/ readonly createTime!: pulumi.Output; + /** + * Optional. Description of the watchlist. + */ + public readonly description!: pulumi.Output; + /** + * 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). + */ + public readonly displayName!: pulumi.Output; + /** + * Count of different types of entities in the watchlist. + * Structure is documented below. + */ + public /*out*/ readonly entityCounts!: pulumi.Output; + /** + * Mechanism to populate entities in the watchlist. + * Structure is documented below. + */ + public readonly entityPopulationMechanism!: pulumi.Output; + /** + * The unique identifier for the Chronicle instance, which is the same as the customer ID. + */ + public readonly instance!: pulumi.Output; + /** + * The location of the resource. This is the geographical region where the Chronicle instance resides, such as "us" or "europe-west2". + */ + public readonly location!: pulumi.Output; + /** + * Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified. + */ + public readonly multiplyingFactor!: pulumi.Output; + /** + * 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} + */ + public /*out*/ readonly name!: pulumi.Output; + public readonly project!: pulumi.Output; + /** + * Output only. Time the watchlist was last updated. + */ + public /*out*/ readonly updateTime!: pulumi.Output; + /** + * 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-/. + */ + public readonly watchlistId!: pulumi.Output; + /** + * A collection of user preferences for watchlist UI configuration. + */ + public readonly watchlistUserPreferences!: pulumi.Output; + + /** + * Create a Watchlist resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: WatchlistArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: WatchlistArgs | WatchlistState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as WatchlistState | undefined; + resourceInputs["createTime"] = state ? state.createTime : undefined; + resourceInputs["description"] = state ? state.description : undefined; + resourceInputs["displayName"] = state ? state.displayName : undefined; + resourceInputs["entityCounts"] = state ? state.entityCounts : undefined; + resourceInputs["entityPopulationMechanism"] = state ? state.entityPopulationMechanism : undefined; + resourceInputs["instance"] = state ? state.instance : undefined; + resourceInputs["location"] = state ? state.location : undefined; + resourceInputs["multiplyingFactor"] = state ? state.multiplyingFactor : undefined; + resourceInputs["name"] = state ? state.name : undefined; + resourceInputs["project"] = state ? state.project : undefined; + resourceInputs["updateTime"] = state ? state.updateTime : undefined; + resourceInputs["watchlistId"] = state ? state.watchlistId : undefined; + resourceInputs["watchlistUserPreferences"] = state ? state.watchlistUserPreferences : undefined; + } else { + const args = argsOrState as WatchlistArgs | undefined; + if ((!args || args.displayName === undefined) && !opts.urn) { + throw new Error("Missing required property 'displayName'"); + } + if ((!args || args.entityPopulationMechanism === undefined) && !opts.urn) { + throw new Error("Missing required property 'entityPopulationMechanism'"); + } + if ((!args || args.instance === undefined) && !opts.urn) { + throw new Error("Missing required property 'instance'"); + } + if ((!args || args.location === undefined) && !opts.urn) { + throw new Error("Missing required property 'location'"); + } + if ((!args || args.watchlistId === undefined) && !opts.urn) { + throw new Error("Missing required property 'watchlistId'"); + } + resourceInputs["description"] = args ? args.description : undefined; + resourceInputs["displayName"] = args ? args.displayName : undefined; + resourceInputs["entityPopulationMechanism"] = args ? args.entityPopulationMechanism : undefined; + resourceInputs["instance"] = args ? args.instance : undefined; + resourceInputs["location"] = args ? args.location : undefined; + resourceInputs["multiplyingFactor"] = args ? args.multiplyingFactor : undefined; + resourceInputs["project"] = args ? args.project : undefined; + resourceInputs["watchlistId"] = args ? args.watchlistId : undefined; + resourceInputs["watchlistUserPreferences"] = args ? args.watchlistUserPreferences : undefined; + resourceInputs["createTime"] = undefined /*out*/; + resourceInputs["entityCounts"] = undefined /*out*/; + resourceInputs["name"] = undefined /*out*/; + resourceInputs["updateTime"] = undefined /*out*/; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(Watchlist.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering Watchlist resources. + */ +export interface WatchlistState { + /** + * Output only. Time the watchlist was created. + */ + createTime?: pulumi.Input; + /** + * Optional. Description of the watchlist. + */ + description?: pulumi.Input; + /** + * 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). + */ + displayName?: pulumi.Input; + /** + * Count of different types of entities in the watchlist. + * Structure is documented below. + */ + entityCounts?: pulumi.Input[]>; + /** + * Mechanism to populate entities in the watchlist. + * Structure is documented below. + */ + entityPopulationMechanism?: pulumi.Input; + /** + * The unique identifier for the Chronicle instance, which is the same as the customer ID. + */ + instance?: pulumi.Input; + /** + * The location of the resource. This is the geographical region where the Chronicle instance resides, such as "us" or "europe-west2". + */ + location?: pulumi.Input; + /** + * Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified. + */ + multiplyingFactor?: pulumi.Input; + /** + * 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} + */ + name?: pulumi.Input; + project?: pulumi.Input; + /** + * Output only. Time the watchlist was last updated. + */ + updateTime?: pulumi.Input; + /** + * 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-/. + */ + watchlistId?: pulumi.Input; + /** + * A collection of user preferences for watchlist UI configuration. + */ + watchlistUserPreferences?: pulumi.Input; +} + +/** + * The set of arguments for constructing a Watchlist resource. + */ +export interface WatchlistArgs { + /** + * Optional. Description of the watchlist. + */ + description?: pulumi.Input; + /** + * 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). + */ + displayName: pulumi.Input; + /** + * Mechanism to populate entities in the watchlist. + * Structure is documented below. + */ + entityPopulationMechanism: pulumi.Input; + /** + * The unique identifier for the Chronicle instance, which is the same as the customer ID. + */ + instance: pulumi.Input; + /** + * The location of the resource. This is the geographical region where the Chronicle instance resides, such as "us" or "europe-west2". + */ + location: pulumi.Input; + /** + * Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified. + */ + multiplyingFactor?: pulumi.Input; + project?: pulumi.Input; + /** + * 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-/. + */ + watchlistId: pulumi.Input; + /** + * A collection of user preferences for watchlist UI configuration. + */ + watchlistUserPreferences?: pulumi.Input; +} diff --git a/sdk/nodejs/compute/firewallPolicyAssociation.ts b/sdk/nodejs/compute/firewallPolicyAssociation.ts index a61fc0f832..8fb2a52f33 100644 --- a/sdk/nodejs/compute/firewallPolicyAssociation.ts +++ b/sdk/nodejs/compute/firewallPolicyAssociation.ts @@ -6,22 +6,32 @@ import * as utilities from "../utilities"; /** * 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 + * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const _default = new gcp.compute.FirewallPolicy("default", { - * parent: "organizations/12345", + * const folder = new gcp.organizations.Folder("folder", { + * displayName: "my-folder", + * parent: "organizations/123456789", + * deletionProtection: false, + * }); + * const policy = new gcp.compute.FirewallPolicy("policy", { + * parent: "organizations/123456789", * shortName: "my-policy", * description: "Example Resource", * }); - * const defaultFirewallPolicyAssociation = new gcp.compute.FirewallPolicyAssociation("default", { - * firewallPolicy: _default.id, + * const _default = new gcp.compute.FirewallPolicyAssociation("default", { + * firewallPolicy: policy.id, * attachmentTarget: folder.name, * name: "my-association", * }); @@ -78,15 +88,14 @@ export class FirewallPolicyAssociation extends pulumi.CustomResource { */ public readonly attachmentTarget!: pulumi.Output; /** - * The firewall policy ID of the association. + * The firewall policy of the resource. + * + * + * - - - */ public readonly firewallPolicy!: pulumi.Output; /** * The name for an association. - * - * - * - * - - - */ public readonly name!: pulumi.Output; /** @@ -138,15 +147,14 @@ export interface FirewallPolicyAssociationState { */ attachmentTarget?: pulumi.Input; /** - * The firewall policy ID of the association. + * The firewall policy of the resource. + * + * + * - - - */ firewallPolicy?: pulumi.Input; /** * The name for an association. - * - * - * - * - - - */ name?: pulumi.Input; /** @@ -164,15 +172,14 @@ export interface FirewallPolicyAssociationArgs { */ attachmentTarget: pulumi.Input; /** - * The firewall policy ID of the association. + * The firewall policy of the resource. + * + * + * - - - */ firewallPolicy: pulumi.Input; /** * The name for an association. - * - * - * - * - - - */ name?: pulumi.Input; } diff --git a/sdk/nodejs/compute/getNetwork.ts b/sdk/nodejs/compute/getNetwork.ts index 22ae73e869..3d0b51a802 100644 --- a/sdk/nodejs/compute/getNetwork.ts +++ b/sdk/nodejs/compute/getNetwork.ts @@ -70,12 +70,18 @@ export interface GetNetworkResult { */ readonly internalIpv6Range: string; readonly name: string; + /** + * The numeric unique identifier for the resource. + */ + readonly networkId: number; /** * Beta A full or partial URL of the network profile to apply to this network. */ readonly networkProfile?: string; /** - * The numeric unique identifier for the resource. + * (Deprecated) The numeric unique identifier for the resource. `numericId` is deprecated and will be removed in a future major release. Use `networkId` instead. + * + * @deprecated `numericId` is deprecated and will be removed in a future major release. Use `networkId` instead. */ readonly numericId: string; readonly project?: string; diff --git a/sdk/nodejs/compute/getSubnetwork.ts b/sdk/nodejs/compute/getSubnetwork.ts index 20e631844c..0e247b520f 100644 --- a/sdk/nodejs/compute/getSubnetwork.ts +++ b/sdk/nodejs/compute/getSubnetwork.ts @@ -103,6 +103,10 @@ export interface GetSubnetworkResult { */ readonly secondaryIpRanges: outputs.compute.GetSubnetworkSecondaryIpRange[]; readonly selfLink: string; + /** + * The numeric ID of the resource. + */ + readonly subnetworkId: number; } /** * Get a subnetwork within GCE from its name and region. diff --git a/sdk/nodejs/compute/network.ts b/sdk/nodejs/compute/network.ts index 403619173b..b59689c84b 100644 --- a/sdk/nodejs/compute/network.ts +++ b/sdk/nodejs/compute/network.ts @@ -220,6 +220,10 @@ export class Network extends pulumi.CustomResource { * Possible values are: `BEFORE_CLASSIC_FIREWALL`, `AFTER_CLASSIC_FIREWALL`. */ public readonly networkFirewallPolicyEnforcementOrder!: pulumi.Output; + /** + * The unique identifier for the resource. This identifier is defined by the server. + */ + public /*out*/ readonly networkId!: pulumi.Output; /** * 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 @@ -229,7 +233,10 @@ export class Network extends pulumi.CustomResource { */ public readonly networkProfile!: pulumi.Output; /** + * (Deprecated) * The unique identifier for the resource. This identifier is defined by the server. + * + * @deprecated `numericId` is deprecated and will be removed in a future major release. Use `networkId` instead. */ public /*out*/ readonly numericId!: pulumi.Output; /** @@ -276,6 +283,7 @@ export class Network extends pulumi.CustomResource { resourceInputs["mtu"] = state ? state.mtu : undefined; resourceInputs["name"] = state ? state.name : undefined; resourceInputs["networkFirewallPolicyEnforcementOrder"] = state ? state.networkFirewallPolicyEnforcementOrder : undefined; + resourceInputs["networkId"] = state ? state.networkId : undefined; resourceInputs["networkProfile"] = state ? state.networkProfile : undefined; resourceInputs["numericId"] = state ? state.numericId : undefined; resourceInputs["project"] = state ? state.project : undefined; @@ -298,6 +306,7 @@ export class Network extends pulumi.CustomResource { resourceInputs["project"] = args ? args.project : undefined; resourceInputs["routingMode"] = args ? args.routingMode : undefined; resourceInputs["gatewayIpv4"] = undefined /*out*/; + resourceInputs["networkId"] = undefined /*out*/; resourceInputs["numericId"] = undefined /*out*/; resourceInputs["selfLink"] = undefined /*out*/; } @@ -388,6 +397,10 @@ export interface NetworkState { * Possible values are: `BEFORE_CLASSIC_FIREWALL`, `AFTER_CLASSIC_FIREWALL`. */ networkFirewallPolicyEnforcementOrder?: pulumi.Input; + /** + * The unique identifier for the resource. This identifier is defined by the server. + */ + networkId?: pulumi.Input; /** * 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 @@ -397,7 +410,10 @@ export interface NetworkState { */ networkProfile?: pulumi.Input; /** + * (Deprecated) * The unique identifier for the resource. This identifier is defined by the server. + * + * @deprecated `numericId` is deprecated and will be removed in a future major release. Use `networkId` instead. */ numericId?: pulumi.Input; /** diff --git a/sdk/nodejs/compute/regionNetworkEndpointGroup.ts b/sdk/nodejs/compute/regionNetworkEndpointGroup.ts index 42e21a3bc0..192cc566c2 100644 --- a/sdk/nodejs/compute/regionNetworkEndpointGroup.ts +++ b/sdk/nodejs/compute/regionNetworkEndpointGroup.ts @@ -412,7 +412,7 @@ export class RegionNetworkEndpointGroup extends pulumi.CustomResource { * This field is only used for PSC NEGs. * Structure is documented below. */ - public readonly pscData!: pulumi.Output; + public readonly pscData!: pulumi.Output; /** * This field is only used for PSC and INTERNET NEGs. * The target service url used to set up private service connection to diff --git a/sdk/nodejs/compute/resizeRequest.ts b/sdk/nodejs/compute/resizeRequest.ts index 8e651ed74d..b1fd2dd2af 100644 --- a/sdk/nodejs/compute/resizeRequest.ts +++ b/sdk/nodejs/compute/resizeRequest.ts @@ -11,13 +11,13 @@ import * as utilities from "../utilities"; * * 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 * @@ -153,9 +153,7 @@ export class ResizeRequest extends pulumi.CustomResource { */ public readonly description!: pulumi.Output; /** - * 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. * * * - - - @@ -180,16 +178,16 @@ export class ResizeRequest extends pulumi.CustomResource { */ public readonly resizeBy!: pulumi.Output; /** - * [Output only] Current state of the request. + * Current state of the request. */ public /*out*/ readonly state!: pulumi.Output; /** - * [Output only] Status of the request. + * Status of the request. * Structure is documented below. */ public /*out*/ readonly statuses!: pulumi.Output; /** - * Name of the compute zone scoping this request. Name should conform to RFC1035. + * The reference of the compute zone scoping this request. */ public readonly zone!: pulumi.Output; @@ -256,9 +254,7 @@ export interface ResizeRequestState { */ description?: pulumi.Input; /** - * 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. * * * - - - @@ -283,16 +279,16 @@ export interface ResizeRequestState { */ resizeBy?: pulumi.Input; /** - * [Output only] Current state of the request. + * Current state of the request. */ state?: pulumi.Input; /** - * [Output only] Status of the request. + * Status of the request. * Structure is documented below. */ statuses?: pulumi.Input[]>; /** - * Name of the compute zone scoping this request. Name should conform to RFC1035. + * The reference of the compute zone scoping this request. */ zone?: pulumi.Input; } @@ -306,9 +302,7 @@ export interface ResizeRequestArgs { */ description?: pulumi.Input; /** - * 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. * * * - - - @@ -333,7 +327,7 @@ export interface ResizeRequestArgs { */ resizeBy: pulumi.Input; /** - * Name of the compute zone scoping this request. Name should conform to RFC1035. + * The reference of the compute zone scoping this request. */ zone: pulumi.Input; } diff --git a/sdk/nodejs/config/vars.ts b/sdk/nodejs/config/vars.ts index b86fd54af4..8afec83619 100644 --- a/sdk/nodejs/config/vars.ts +++ b/sdk/nodejs/config/vars.ts @@ -241,6 +241,14 @@ Object.defineProperty(exports, "certificateManagerCustomEndpoint", { enumerable: true, }); +export declare const chronicleCustomEndpoint: string | undefined; +Object.defineProperty(exports, "chronicleCustomEndpoint", { + get() { + return __config.get("chronicleCustomEndpoint"); + }, + enumerable: true, +}); + export declare const cloudAssetCustomEndpoint: string | undefined; Object.defineProperty(exports, "cloudAssetCustomEndpoint", { get() { diff --git a/sdk/nodejs/dataproc/batch.ts b/sdk/nodejs/dataproc/batch.ts index 33e61e488f..8137821fff 100644 --- a/sdk/nodejs/dataproc/batch.ts +++ b/sdk/nodejs/dataproc/batch.ts @@ -64,17 +64,8 @@ import * as utilities from "../utilities"; * location: "US", * forceDestroy: true, * }); - * const keyRing = new gcp.kms.KeyRing("key_ring", { - * name: "example-keyring", - * location: "us-central1", - * }); - * const cryptoKey = new gcp.kms.CryptoKey("crypto_key", { - * name: "example-key", - * keyRing: keyRing.id, - * purpose: "ENCRYPT_DECRYPT", - * }); * const cryptoKeyMember1 = new gcp.kms.CryptoKeyIAMMember("crypto_key_member_1", { - * cryptoKeyId: cryptoKey.id, + * cryptoKeyId: "example-key", * role: "roles/cloudkms.cryptoKeyEncrypterDecrypter", * member: project.then(project => `serviceAccount:service-${project.number}@dataproc-accounts.iam.gserviceaccount.com`), * }); @@ -133,7 +124,7 @@ import * as utilities from "../utilities"; * executionConfig: { * ttl: "3600s", * networkTags: ["tag1"], - * kmsKey: cryptoKey.id, + * kmsKey: "example-key", * networkUri: "default", * serviceAccount: project.then(project => `${project.number}-compute@developer.gserviceaccount.com`), * stagingBucket: bucket.name, diff --git a/sdk/nodejs/developerconnect/connection.ts b/sdk/nodejs/developerconnect/connection.ts index 877ecc1cfc..aaf51f718b 100644 --- a/sdk/nodejs/developerconnect/connection.ts +++ b/sdk/nodejs/developerconnect/connection.ts @@ -9,7 +9,31 @@ import * as utilities from "../utilities"; /** * ## Example Usage * - * ### Developer Connect Connection Basic + * ### Developer Connect Connection New + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * // Setup permissions. Only needed once per project + * const devconnect_p4sa = new gcp.projects.ServiceIdentity("devconnect-p4sa", {service: "developerconnect.googleapis.com"}); + * const devconnect_secret = new gcp.projects.IAMMember("devconnect-secret", { + * project: "my-project-name", + * role: "roles/secretmanager.admin", + * member: devconnect_p4sa.member, + * }); + * const my_connection = new gcp.developerconnect.Connection("my-connection", { + * location: "us-central1", + * connectionId: "tf-test-connection-new", + * githubConfig: { + * githubApp: "FIREBASE", + * }, + * }, { + * dependsOn: [devconnect_secret], + * }); + * export const nextSteps = my_connection.installationStates; + * ``` + * ### Developer Connect Connection Existing Credentials * * ```typescript * import * as pulumi from "@pulumi/pulumi"; @@ -17,16 +41,17 @@ import * as utilities from "../utilities"; * * const my_connection = new gcp.developerconnect.Connection("my-connection", { * location: "us-central1", - * connectionId: "tf-test-connection", + * connectionId: "tf-test-connection-cred", * githubConfig: { * githubApp: "DEVELOPER_CONNECT", * authorizerCredential: { - * 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", * }, * }, * }); + * export const nextSteps = my_connection.installationStates; * ``` - * ### Developer Connect Connection Github Doc + * ### Developer Connect Connection Existing Installation * * ```typescript * import * as pulumi from "@pulumi/pulumi"; @@ -45,15 +70,16 @@ import * as utilities from "../utilities"; * input: "my-github-token.txt", * }).then(invoke => invoke.result), * }); - * const p4sa-secretAccessor = gcp.organizations.getIAMPolicy({ + * const devconnect_p4sa = new gcp.projects.ServiceIdentity("devconnect-p4sa", {service: "developerconnect.googleapis.com"}); + * const p4sa-secretAccessor = gcp.organizations.getIAMPolicyOutput({ * bindings: [{ * role: "roles/secretmanager.secretAccessor", - * members: ["serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com"], + * members: [devconnect_p4sa.member], * }], * }); * const policy = new gcp.secretmanager.SecretIamPolicy("policy", { * secretId: github_token_secret.secretId, - * policyData: p4sa_secretAccessor.then(p4sa_secretAccessor => p4sa_secretAccessor.policyData), + * policyData: p4sa_secretAccessor.apply(p4sa_secretAccessor => p4sa_secretAccessor.policyData), * }); * const my_connection = new gcp.developerconnect.Connection("my-connection", { * location: "us-central1", diff --git a/sdk/nodejs/filestore/backup.ts b/sdk/nodejs/filestore/backup.ts index 50bebaafb7..31d4cc15a8 100644 --- a/sdk/nodejs/filestore/backup.ts +++ b/sdk/nodejs/filestore/backup.ts @@ -179,6 +179,13 @@ export class Backup extends pulumi.CustomResource { * The size of the storage used by the backup. As backups share storage, this number is expected to change with backup creation/deletion. */ public /*out*/ readonly storageBytes!: pulumi.Output; + /** + * 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 readonly tags!: pulumi.Output<{[key: string]: string} | undefined>; /** * Create a Backup resource with the given unique name, arguments, and options. @@ -209,6 +216,7 @@ export class Backup extends pulumi.CustomResource { resourceInputs["sourceInstanceTier"] = state ? state.sourceInstanceTier : undefined; resourceInputs["state"] = state ? state.state : undefined; resourceInputs["storageBytes"] = state ? state.storageBytes : undefined; + resourceInputs["tags"] = state ? state.tags : undefined; } else { const args = argsOrState as BackupArgs | undefined; if ((!args || args.location === undefined) && !opts.urn) { @@ -227,6 +235,7 @@ export class Backup extends pulumi.CustomResource { resourceInputs["project"] = args ? args.project : undefined; resourceInputs["sourceFileShare"] = args ? args.sourceFileShare : undefined; resourceInputs["sourceInstance"] = args ? args.sourceInstance : undefined; + resourceInputs["tags"] = args ? args.tags : undefined; resourceInputs["capacityGb"] = undefined /*out*/; resourceInputs["createTime"] = undefined /*out*/; resourceInputs["downloadBytes"] = undefined /*out*/; @@ -326,6 +335,13 @@ export interface BackupState { * The size of the storage used by the backup. As backups share storage, this number is expected to change with backup creation/deletion. */ storageBytes?: pulumi.Input; + /** + * 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. + */ + tags?: pulumi.Input<{[key: string]: pulumi.Input}>; } /** @@ -373,4 +389,11 @@ export interface BackupArgs { * The resource name of the source Cloud Filestore instance, in the format projects/{projectId}/locations/{locationId}/instances/{instanceId}, used to create this backup. */ sourceInstance: pulumi.Input; + /** + * 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. + */ + tags?: pulumi.Input<{[key: string]: pulumi.Input}>; } diff --git a/sdk/nodejs/firebase/hostingCustomDomain.ts b/sdk/nodejs/firebase/hostingCustomDomain.ts index 4a1b1d1433..f656a62f75 100644 --- a/sdk/nodejs/firebase/hostingCustomDomain.ts +++ b/sdk/nodejs/firebase/hostingCustomDomain.ts @@ -262,7 +262,7 @@ export class HostingCustomDomain extends pulumi.CustomResource { */ public readonly project!: pulumi.Output; /** - * 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 `certPreference` @@ -475,7 +475,7 @@ export interface HostingCustomDomainState { */ project?: pulumi.Input; /** - * 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 `certPreference` diff --git a/sdk/nodejs/gkehub/getFeature.ts b/sdk/nodejs/gkehub/getFeature.ts new file mode 100644 index 0000000000..b4a7eda181 --- /dev/null +++ b/sdk/nodejs/gkehub/getFeature.ts @@ -0,0 +1,65 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as inputs from "../types/input"; +import * as outputs from "../types/output"; +import * as utilities from "../utilities"; + +export function getFeature(args: GetFeatureArgs, opts?: pulumi.InvokeOptions): Promise { + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); + return pulumi.runtime.invoke("gcp:gkehub/getFeature:getFeature", { + "location": args.location, + "name": args.name, + "project": args.project, + }, opts); +} + +/** + * A collection of arguments for invoking getFeature. + */ +export interface GetFeatureArgs { + location: string; + name: string; + project?: string; +} + +/** + * A collection of values returned by getFeature. + */ +export interface GetFeatureResult { + readonly createTime: string; + readonly deleteTime: string; + readonly effectiveLabels: {[key: string]: string}; + readonly fleetDefaultMemberConfigs: outputs.gkehub.GetFeatureFleetDefaultMemberConfig[]; + /** + * The provider-assigned unique ID for this managed resource. + */ + readonly id: string; + readonly labels: {[key: string]: string}; + readonly location: string; + readonly name: string; + readonly project?: string; + readonly pulumiLabels: {[key: string]: string}; + readonly resourceStates: outputs.gkehub.GetFeatureResourceState[]; + readonly specs: outputs.gkehub.GetFeatureSpec[]; + readonly states: outputs.gkehub.GetFeatureState[]; + readonly updateTime: string; +} +export function getFeatureOutput(args: GetFeatureOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output { + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); + return pulumi.runtime.invokeOutput("gcp:gkehub/getFeature:getFeature", { + "location": args.location, + "name": args.name, + "project": args.project, + }, opts); +} + +/** + * A collection of arguments for invoking getFeature. + */ +export interface GetFeatureOutputArgs { + location: pulumi.Input; + name: pulumi.Input; + project?: pulumi.Input; +} diff --git a/sdk/nodejs/gkehub/index.ts b/sdk/nodejs/gkehub/index.ts index 46551b93bd..622fd2cce9 100644 --- a/sdk/nodejs/gkehub/index.ts +++ b/sdk/nodejs/gkehub/index.ts @@ -35,6 +35,11 @@ export type Fleet = import("./fleet").Fleet; export const Fleet: typeof import("./fleet").Fleet = null as any; utilities.lazyLoad(exports, ["Fleet"], () => require("./fleet")); +export { GetFeatureArgs, GetFeatureResult, GetFeatureOutputArgs } from "./getFeature"; +export const getFeature: typeof import("./getFeature").getFeature = null as any; +export const getFeatureOutput: typeof import("./getFeature").getFeatureOutput = null as any; +utilities.lazyLoad(exports, ["getFeature","getFeatureOutput"], () => require("./getFeature")); + export { GetFeatureIamPolicyArgs, GetFeatureIamPolicyResult, GetFeatureIamPolicyOutputArgs } from "./getFeatureIamPolicy"; export const getFeatureIamPolicy: typeof import("./getFeatureIamPolicy").getFeatureIamPolicy = null as any; export const getFeatureIamPolicyOutput: typeof import("./getFeatureIamPolicy").getFeatureIamPolicyOutput = null as any; diff --git a/sdk/nodejs/gkeonprem/index.ts b/sdk/nodejs/gkeonprem/index.ts index 30498d9f61..e1d7011199 100644 --- a/sdk/nodejs/gkeonprem/index.ts +++ b/sdk/nodejs/gkeonprem/index.ts @@ -20,6 +20,11 @@ export type BareMetalNodePool = import("./bareMetalNodePool").BareMetalNodePool; export const BareMetalNodePool: typeof import("./bareMetalNodePool").BareMetalNodePool = null as any; utilities.lazyLoad(exports, ["BareMetalNodePool"], () => require("./bareMetalNodePool")); +export { VmwareAdminClusterArgs, VmwareAdminClusterState } from "./vmwareAdminCluster"; +export type VmwareAdminCluster = import("./vmwareAdminCluster").VmwareAdminCluster; +export const VmwareAdminCluster: typeof import("./vmwareAdminCluster").VmwareAdminCluster = null as any; +utilities.lazyLoad(exports, ["VmwareAdminCluster"], () => require("./vmwareAdminCluster")); + export { VMwareClusterArgs, VMwareClusterState } from "./vmwareCluster"; export type VMwareCluster = import("./vmwareCluster").VMwareCluster; export const VMwareCluster: typeof import("./vmwareCluster").VMwareCluster = null as any; @@ -45,6 +50,8 @@ const _module = { return new VMwareCluster(name, undefined, { urn }) case "gcp:gkeonprem/vMwareNodePool:VMwareNodePool": return new VMwareNodePool(name, undefined, { urn }) + case "gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster": + return new VmwareAdminCluster(name, undefined, { urn }) default: throw new Error(`unknown resource type ${type}`); } @@ -55,3 +62,4 @@ pulumi.runtime.registerResourceModule("gcp", "gkeonprem/bareMetalCluster", _modu pulumi.runtime.registerResourceModule("gcp", "gkeonprem/bareMetalNodePool", _module) pulumi.runtime.registerResourceModule("gcp", "gkeonprem/vMwareCluster", _module) pulumi.runtime.registerResourceModule("gcp", "gkeonprem/vMwareNodePool", _module) +pulumi.runtime.registerResourceModule("gcp", "gkeonprem/vmwareAdminCluster", _module) diff --git a/sdk/nodejs/gkeonprem/vmwareAdminCluster.ts b/sdk/nodejs/gkeonprem/vmwareAdminCluster.ts new file mode 100644 index 0000000000..24cae7c307 --- /dev/null +++ b/sdk/nodejs/gkeonprem/vmwareAdminCluster.ts @@ -0,0 +1,672 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as inputs from "../types/input"; +import * as outputs from "../types/output"; +import * as utilities from "../utilities"; + +/** + * ## Example Usage + * + * ### Gkeonprem Vmware Admin Cluster Basic + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const admin_cluster_basic = new gcp.gkeonprem.VmwareAdminCluster("admin-cluster-basic", { + * name: "basic", + * location: "us-west1", + * description: "test admin cluster", + * bootstrapClusterMembership: "projects/870316890899/locations/global/memberships/gkeonprem-terraform-test", + * onPremVersion: "1.31.0-gke.35", + * imageType: "ubuntu_containerd", + * vcenter: { + * resourcePool: "test resource pool", + * datastore: "test data store", + * datacenter: "test data center", + * cluster: "test cluster", + * folder: "test folder", + * caCertData: "test ca cert data", + * address: "10.0.0.1", + * dataDisk: "test data disk", + * }, + * networkConfig: { + * serviceAddressCidrBlocks: ["10.96.0.0/12"], + * podAddressCidrBlocks: ["192.168.0.0/16"], + * dhcpIpConfig: { + * enabled: true, + * }, + * }, + * controlPlaneNode: { + * cpus: 4, + * memory: 8192, + * }, + * loadBalancer: { + * vipConfig: { + * controlPlaneVip: "10.251.133.5", + * addonsVip: "10.251.135.19", + * }, + * f5Config: { + * address: "10.251.135.22", + * partition: "test-parition", + * snatPool: "test-snat-pool", + * }, + * }, + * }); + * ``` + * ### Gkeonprem Vmware Admin Cluster Full + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const admin_cluster_full = new gcp.gkeonprem.VmwareAdminCluster("admin-cluster-full", { + * name: "full", + * location: "us-west1", + * description: "test admin cluster", + * bootstrapClusterMembership: "projects/870316890899/locations/global/memberships/gkeonprem-terraform-test", + * onPremVersion: "1.31.0-gke.35", + * imageType: "ubuntu_containerd", + * annotations: {}, + * vcenter: { + * resourcePool: "test resource pool", + * datastore: "test data store", + * datacenter: "test data center", + * cluster: "test cluster", + * folder: "test folder", + * caCertData: "test ca cert data", + * address: "10.0.0.1", + * dataDisk: "test data disk", + * storagePolicyName: "storage_policy_name", + * }, + * networkConfig: { + * serviceAddressCidrBlocks: ["10.96.0.0/12"], + * podAddressCidrBlocks: ["192.168.0.0/16"], + * haControlPlaneConfig: { + * controlPlaneIpBlock: { + * gateway: "10.0.0.3", + * ips: [{ + * hostname: "hostname", + * ip: "10.0.0.4", + * }], + * netmask: "10.0.0.3/32", + * }, + * }, + * hostConfig: { + * dnsServers: ["10.254.41.1"], + * ntpServers: ["216.239.35.8"], + * dnsSearchDomains: ["test-domain"], + * }, + * staticIpConfig: { + * ipBlocks: [{ + * gateway: "10.0.0.1", + * ips: [{ + * hostname: "hostname", + * ip: "10.0.0.2", + * }], + * netmask: "10.0.0.3/32", + * }], + * }, + * vcenterNetwork: "test-vcenter-network", + * }, + * controlPlaneNode: { + * cpus: 4, + * memory: 8192, + * replicas: 3, + * }, + * loadBalancer: { + * vipConfig: { + * controlPlaneVip: "10.251.133.5", + * addonsVip: "10.251.135.19", + * }, + * manualLbConfig: { + * addonsNodePort: 30005, + * controlPlaneNodePort: 30006, + * ingressHttpNodePort: 30007, + * ingressHttpsNodePort: 30008, + * konnectivityServerNodePort: 30009, + * }, + * }, + * addonNode: { + * autoResizeConfig: { + * enabled: true, + * }, + * }, + * antiAffinityGroups: { + * aagConfigDisabled: true, + * }, + * authorization: { + * viewerUsers: [{ + * username: "user1@gmail.com", + * }], + * }, + * autoRepairConfig: { + * enabled: true, + * }, + * platformConfig: { + * requiredPlatformVersion: "1.31.0", + * }, + * }); + * ``` + * ### Gkeonprem Vmware Admin Cluster Metallb + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const admin_cluster_metallb = new gcp.gkeonprem.VmwareAdminCluster("admin-cluster-metallb", { + * name: "metallb", + * location: "us-west1", + * description: "test admin cluster", + * bootstrapClusterMembership: "projects/870316890899/locations/global/memberships/gkeonprem-terraform-test", + * onPremVersion: "1.31.0-gke.35", + * imageType: "ubuntu_containerd", + * vcenter: { + * resourcePool: "test resource pool", + * datastore: "test data store", + * datacenter: "test data center", + * cluster: "test cluster", + * folder: "test folder", + * caCertData: "test ca cert data", + * address: "10.0.0.1", + * dataDisk: "test data disk", + * }, + * networkConfig: { + * serviceAddressCidrBlocks: ["10.96.0.0/12"], + * podAddressCidrBlocks: ["192.168.0.0/16"], + * dhcpIpConfig: { + * enabled: true, + * }, + * }, + * controlPlaneNode: { + * cpus: 4, + * memory: 8192, + * }, + * loadBalancer: { + * vipConfig: { + * controlPlaneVip: "10.251.133.5", + * addonsVip: "10.251.135.19", + * }, + * metalLbConfig: { + * enabled: true, + * }, + * }, + * }); + * ``` + * + * ## Import + * + * VmwareAdminCluster can be imported using any of these accepted formats: + * + * * `projects/{{project}}/locations/{{location}}/vmwareAdminClusters/{{name}}` + * + * * `{{project}}/{{location}}/{{name}}` + * + * * `{{location}}/{{name}}` + * + * When using the `pulumi import` command, VmwareAdminCluster can be imported using one of the formats above. For example: + * + * ```sh + * $ pulumi import gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster default projects/{{project}}/locations/{{location}}/vmwareAdminClusters/{{name}} + * ``` + * + * ```sh + * $ pulumi import gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster default {{project}}/{{location}}/{{name}} + * ``` + * + * ```sh + * $ pulumi import gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster default {{location}}/{{name}} + * ``` + */ +export class VmwareAdminCluster extends pulumi.CustomResource { + /** + * Get an existing VmwareAdminCluster resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: VmwareAdminClusterState, opts?: pulumi.CustomResourceOptions): VmwareAdminCluster { + return new VmwareAdminCluster(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster'; + + /** + * Returns true if the given object is an instance of VmwareAdminCluster. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is VmwareAdminCluster { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === VmwareAdminCluster.__pulumiType; + } + + /** + * The VMware admin cluster addon node configuration. + */ + public readonly addonNode!: pulumi.Output; + /** + * Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size + * of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), + * separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with + * alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is + * non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field + * 'effective_annotations' for all of the annotations present on the resource. + */ + public readonly annotations!: pulumi.Output<{[key: string]: string}>; + /** + * AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter. + */ + public readonly antiAffinityGroups!: pulumi.Output; + /** + * The VMware admin cluster authorization configuration. + */ + public readonly authorization!: pulumi.Output; + /** + * Configuration for auto repairing. + */ + public readonly autoRepairConfig!: pulumi.Output; + /** + * The bootstrap cluster this VMware admin cluster belongs to. + */ + public readonly bootstrapClusterMembership!: pulumi.Output; + /** + * The VMware admin cluster control plane node configuration. + */ + public readonly controlPlaneNode!: pulumi.Output; + /** + * The time the cluster was created, in RFC3339 text format. + */ + public /*out*/ readonly createTime!: pulumi.Output; + /** + * A human readable description of this VMware admin cluster. + */ + public readonly description!: pulumi.Output; + public /*out*/ readonly effectiveAnnotations!: pulumi.Output<{[key: string]: string}>; + /** + * The DNS name of VMware admin cluster's API server. + */ + public /*out*/ readonly endpoint!: pulumi.Output; + /** + * This checksum is computed by the server based on the value of other + * fields, and may be sent on update and delete requests to ensure the + * client has an up-to-date value before proceeding. + * Allows clients to perform consistent read-modify-writes + * through optimistic concurrency control. + */ + public /*out*/ readonly etag!: pulumi.Output; + /** + * Fleet configuration for the cluster. + * Structure is documented below. + */ + public /*out*/ readonly fleets!: pulumi.Output; + /** + * The OS image type for the VMware admin cluster. + */ + public readonly imageType!: pulumi.Output; + /** + * Specifies the load balancer configuration for VMware admin cluster. + */ + public readonly loadBalancer!: pulumi.Output; + /** + * The object name of the VMwareAdminCluster custom resource on the + * associated admin cluster. This field is used to support conflicting + * names when enrolling existing clusters to the API. When used as a part of + * cluster enrollment, this field will differ from the ID in the resource + * name. For new clusters, this field will match the user provided cluster ID + * and be visible in the last component of the resource name. It is not + * modifiable. + * All users should use this name to access their cluster using gkectl or + * kubectl and should expect to see the local name when viewing admin + * cluster controller logs. + */ + public /*out*/ readonly localName!: pulumi.Output; + /** + * The location of the resource. + */ + public readonly location!: pulumi.Output; + /** + * The VMware admin cluster resource name. + */ + public readonly name!: pulumi.Output; + /** + * The VMware admin cluster network configuration. + * Structure is documented below. + */ + public readonly networkConfig!: pulumi.Output; + /** + * The Anthos clusters on the VMware version for the admin cluster. + */ + public readonly onPremVersion!: pulumi.Output; + /** + * The VMware platform configuration. + */ + public readonly platformConfig!: pulumi.Output; + public readonly project!: pulumi.Output; + /** + * If set, there are currently changes in flight to the VMware admin cluster. + */ + public /*out*/ readonly reconciling!: pulumi.Output; + /** + * (Output) + * The lifecycle state of the condition. + */ + public /*out*/ readonly state!: pulumi.Output; + /** + * ResourceStatus representing detailed cluster state. + * Structure is documented below. + */ + public /*out*/ readonly statuses!: pulumi.Output; + /** + * The unique identifier of the VMware Admin Cluster. + */ + public /*out*/ readonly uid!: pulumi.Output; + /** + * The time the cluster was last updated, in RFC3339 text format. + */ + public /*out*/ readonly updateTime!: pulumi.Output; + /** + * Specifies vCenter config for the admin cluster. + */ + public readonly vcenter!: pulumi.Output; + + /** + * Create a VmwareAdminCluster resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: VmwareAdminClusterArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: VmwareAdminClusterArgs | VmwareAdminClusterState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as VmwareAdminClusterState | undefined; + resourceInputs["addonNode"] = state ? state.addonNode : undefined; + resourceInputs["annotations"] = state ? state.annotations : undefined; + resourceInputs["antiAffinityGroups"] = state ? state.antiAffinityGroups : undefined; + resourceInputs["authorization"] = state ? state.authorization : undefined; + resourceInputs["autoRepairConfig"] = state ? state.autoRepairConfig : undefined; + resourceInputs["bootstrapClusterMembership"] = state ? state.bootstrapClusterMembership : undefined; + resourceInputs["controlPlaneNode"] = state ? state.controlPlaneNode : undefined; + resourceInputs["createTime"] = state ? state.createTime : undefined; + resourceInputs["description"] = state ? state.description : undefined; + resourceInputs["effectiveAnnotations"] = state ? state.effectiveAnnotations : undefined; + resourceInputs["endpoint"] = state ? state.endpoint : undefined; + resourceInputs["etag"] = state ? state.etag : undefined; + resourceInputs["fleets"] = state ? state.fleets : undefined; + resourceInputs["imageType"] = state ? state.imageType : undefined; + resourceInputs["loadBalancer"] = state ? state.loadBalancer : undefined; + resourceInputs["localName"] = state ? state.localName : undefined; + resourceInputs["location"] = state ? state.location : undefined; + resourceInputs["name"] = state ? state.name : undefined; + resourceInputs["networkConfig"] = state ? state.networkConfig : undefined; + resourceInputs["onPremVersion"] = state ? state.onPremVersion : undefined; + resourceInputs["platformConfig"] = state ? state.platformConfig : undefined; + resourceInputs["project"] = state ? state.project : undefined; + resourceInputs["reconciling"] = state ? state.reconciling : undefined; + resourceInputs["state"] = state ? state.state : undefined; + resourceInputs["statuses"] = state ? state.statuses : undefined; + resourceInputs["uid"] = state ? state.uid : undefined; + resourceInputs["updateTime"] = state ? state.updateTime : undefined; + resourceInputs["vcenter"] = state ? state.vcenter : undefined; + } else { + const args = argsOrState as VmwareAdminClusterArgs | undefined; + if ((!args || args.location === undefined) && !opts.urn) { + throw new Error("Missing required property 'location'"); + } + if ((!args || args.networkConfig === undefined) && !opts.urn) { + throw new Error("Missing required property 'networkConfig'"); + } + resourceInputs["addonNode"] = args ? args.addonNode : undefined; + resourceInputs["annotations"] = args ? args.annotations : undefined; + resourceInputs["antiAffinityGroups"] = args ? args.antiAffinityGroups : undefined; + resourceInputs["authorization"] = args ? args.authorization : undefined; + resourceInputs["autoRepairConfig"] = args ? args.autoRepairConfig : undefined; + resourceInputs["bootstrapClusterMembership"] = args ? args.bootstrapClusterMembership : undefined; + resourceInputs["controlPlaneNode"] = args ? args.controlPlaneNode : undefined; + resourceInputs["description"] = args ? args.description : undefined; + resourceInputs["imageType"] = args ? args.imageType : undefined; + resourceInputs["loadBalancer"] = args ? args.loadBalancer : undefined; + resourceInputs["location"] = args ? args.location : undefined; + resourceInputs["name"] = args ? args.name : undefined; + resourceInputs["networkConfig"] = args ? args.networkConfig : undefined; + resourceInputs["onPremVersion"] = args ? args.onPremVersion : undefined; + resourceInputs["platformConfig"] = args ? args.platformConfig : undefined; + resourceInputs["project"] = args ? args.project : undefined; + resourceInputs["vcenter"] = args ? args.vcenter : undefined; + resourceInputs["createTime"] = undefined /*out*/; + resourceInputs["effectiveAnnotations"] = undefined /*out*/; + resourceInputs["endpoint"] = undefined /*out*/; + resourceInputs["etag"] = undefined /*out*/; + resourceInputs["fleets"] = undefined /*out*/; + resourceInputs["localName"] = undefined /*out*/; + resourceInputs["reconciling"] = undefined /*out*/; + resourceInputs["state"] = undefined /*out*/; + resourceInputs["statuses"] = undefined /*out*/; + resourceInputs["uid"] = undefined /*out*/; + resourceInputs["updateTime"] = undefined /*out*/; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(VmwareAdminCluster.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering VmwareAdminCluster resources. + */ +export interface VmwareAdminClusterState { + /** + * The VMware admin cluster addon node configuration. + */ + addonNode?: pulumi.Input; + /** + * Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size + * of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), + * separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with + * alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is + * non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field + * 'effective_annotations' for all of the annotations present on the resource. + */ + annotations?: pulumi.Input<{[key: string]: pulumi.Input}>; + /** + * AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter. + */ + antiAffinityGroups?: pulumi.Input; + /** + * The VMware admin cluster authorization configuration. + */ + authorization?: pulumi.Input; + /** + * Configuration for auto repairing. + */ + autoRepairConfig?: pulumi.Input; + /** + * The bootstrap cluster this VMware admin cluster belongs to. + */ + bootstrapClusterMembership?: pulumi.Input; + /** + * The VMware admin cluster control plane node configuration. + */ + controlPlaneNode?: pulumi.Input; + /** + * The time the cluster was created, in RFC3339 text format. + */ + createTime?: pulumi.Input; + /** + * A human readable description of this VMware admin cluster. + */ + description?: pulumi.Input; + effectiveAnnotations?: pulumi.Input<{[key: string]: pulumi.Input}>; + /** + * The DNS name of VMware admin cluster's API server. + */ + endpoint?: pulumi.Input; + /** + * This checksum is computed by the server based on the value of other + * fields, and may be sent on update and delete requests to ensure the + * client has an up-to-date value before proceeding. + * Allows clients to perform consistent read-modify-writes + * through optimistic concurrency control. + */ + etag?: pulumi.Input; + /** + * Fleet configuration for the cluster. + * Structure is documented below. + */ + fleets?: pulumi.Input[]>; + /** + * The OS image type for the VMware admin cluster. + */ + imageType?: pulumi.Input; + /** + * Specifies the load balancer configuration for VMware admin cluster. + */ + loadBalancer?: pulumi.Input; + /** + * The object name of the VMwareAdminCluster custom resource on the + * associated admin cluster. This field is used to support conflicting + * names when enrolling existing clusters to the API. When used as a part of + * cluster enrollment, this field will differ from the ID in the resource + * name. For new clusters, this field will match the user provided cluster ID + * and be visible in the last component of the resource name. It is not + * modifiable. + * All users should use this name to access their cluster using gkectl or + * kubectl and should expect to see the local name when viewing admin + * cluster controller logs. + */ + localName?: pulumi.Input; + /** + * The location of the resource. + */ + location?: pulumi.Input; + /** + * The VMware admin cluster resource name. + */ + name?: pulumi.Input; + /** + * The VMware admin cluster network configuration. + * Structure is documented below. + */ + networkConfig?: pulumi.Input; + /** + * The Anthos clusters on the VMware version for the admin cluster. + */ + onPremVersion?: pulumi.Input; + /** + * The VMware platform configuration. + */ + platformConfig?: pulumi.Input; + project?: pulumi.Input; + /** + * If set, there are currently changes in flight to the VMware admin cluster. + */ + reconciling?: pulumi.Input; + /** + * (Output) + * The lifecycle state of the condition. + */ + state?: pulumi.Input; + /** + * ResourceStatus representing detailed cluster state. + * Structure is documented below. + */ + statuses?: pulumi.Input[]>; + /** + * The unique identifier of the VMware Admin Cluster. + */ + uid?: pulumi.Input; + /** + * The time the cluster was last updated, in RFC3339 text format. + */ + updateTime?: pulumi.Input; + /** + * Specifies vCenter config for the admin cluster. + */ + vcenter?: pulumi.Input; +} + +/** + * The set of arguments for constructing a VmwareAdminCluster resource. + */ +export interface VmwareAdminClusterArgs { + /** + * The VMware admin cluster addon node configuration. + */ + addonNode?: pulumi.Input; + /** + * Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size + * of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), + * separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with + * alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is + * non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field + * 'effective_annotations' for all of the annotations present on the resource. + */ + annotations?: pulumi.Input<{[key: string]: pulumi.Input}>; + /** + * AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter. + */ + antiAffinityGroups?: pulumi.Input; + /** + * The VMware admin cluster authorization configuration. + */ + authorization?: pulumi.Input; + /** + * Configuration for auto repairing. + */ + autoRepairConfig?: pulumi.Input; + /** + * The bootstrap cluster this VMware admin cluster belongs to. + */ + bootstrapClusterMembership?: pulumi.Input; + /** + * The VMware admin cluster control plane node configuration. + */ + controlPlaneNode?: pulumi.Input; + /** + * A human readable description of this VMware admin cluster. + */ + description?: pulumi.Input; + /** + * The OS image type for the VMware admin cluster. + */ + imageType?: pulumi.Input; + /** + * Specifies the load balancer configuration for VMware admin cluster. + */ + loadBalancer?: pulumi.Input; + /** + * The location of the resource. + */ + location: pulumi.Input; + /** + * The VMware admin cluster resource name. + */ + name?: pulumi.Input; + /** + * The VMware admin cluster network configuration. + * Structure is documented below. + */ + networkConfig: pulumi.Input; + /** + * The Anthos clusters on the VMware version for the admin cluster. + */ + onPremVersion?: pulumi.Input; + /** + * The VMware platform configuration. + */ + platformConfig?: pulumi.Input; + project?: pulumi.Input; + /** + * Specifies vCenter config for the admin cluster. + */ + vcenter?: pulumi.Input; +} diff --git a/sdk/nodejs/index.ts b/sdk/nodejs/index.ts index ef6d2521a3..d6e2e9df77 100644 --- a/sdk/nodejs/index.ts +++ b/sdk/nodejs/index.ts @@ -36,6 +36,7 @@ import * as binaryauthorization from "./binaryauthorization"; import * as blockchainnodeengine from "./blockchainnodeengine"; import * as certificateauthority from "./certificateauthority"; import * as certificatemanager from "./certificatemanager"; +import * as chronicle from "./chronicle"; import * as cloudasset from "./cloudasset"; import * as cloudbuild from "./cloudbuild"; import * as cloudbuildv2 from "./cloudbuildv2"; @@ -164,6 +165,7 @@ export { blockchainnodeengine, certificateauthority, certificatemanager, + chronicle, cloudasset, cloudbuild, cloudbuildv2, diff --git a/sdk/nodejs/integrationconnectors/connection.ts b/sdk/nodejs/integrationconnectors/connection.ts index 5a4e069e35..bfa3774dd3 100644 --- a/sdk/nodejs/integrationconnectors/connection.ts +++ b/sdk/nodejs/integrationconnectors/connection.ts @@ -365,7 +365,7 @@ export class Connection extends pulumi.CustomResource { */ public /*out*/ readonly createTime!: pulumi.Output; /** - * An arbitrary description for the Conection. + * An arbitrary description for the Connection. */ public readonly description!: pulumi.Output; /** @@ -589,7 +589,7 @@ export interface ConnectionState { */ createTime?: pulumi.Input; /** - * An arbitrary description for the Conection. + * An arbitrary description for the Connection. */ description?: pulumi.Input; /** @@ -712,7 +712,7 @@ export interface ConnectionArgs { */ connectorVersion: pulumi.Input; /** - * An arbitrary description for the Conection. + * An arbitrary description for the Connection. */ description?: pulumi.Input; /** diff --git a/sdk/nodejs/kms/getAutokeyConfig.ts b/sdk/nodejs/kms/getAutokeyConfig.ts new file mode 100644 index 0000000000..4061a9d592 --- /dev/null +++ b/sdk/nodejs/kms/getAutokeyConfig.ts @@ -0,0 +1,79 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "../utilities"; + +/** + * ## Example Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const myAutokeyConfig = gcp.kms.getAutokeyConfig({ + * folder: "folders/123", + * }); + * ``` + */ +export function getAutokeyConfig(args: GetAutokeyConfigArgs, opts?: pulumi.InvokeOptions): Promise { + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); + return pulumi.runtime.invoke("gcp:kms/getAutokeyConfig:getAutokeyConfig", { + "folder": args.folder, + }, opts); +} + +/** + * A collection of arguments for invoking getAutokeyConfig. + */ +export interface GetAutokeyConfigArgs { + /** + * The folder in which the AutokeyConfig is configured. If it + * is not provided, the provider folder is used. + */ + folder: string; +} + +/** + * A collection of values returned by getAutokeyConfig. + */ +export interface GetAutokeyConfigResult { + readonly folder: string; + /** + * The provider-assigned unique ID for this managed resource. + */ + readonly id: string; + /** + * The identifier of the project hosting KMS KeyRings and Keys generated by Autokey. Its format is `projects/{projectId}`. + */ + readonly keyProject: string; +} +/** + * ## Example Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const myAutokeyConfig = gcp.kms.getAutokeyConfig({ + * folder: "folders/123", + * }); + * ``` + */ +export function getAutokeyConfigOutput(args: GetAutokeyConfigOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output { + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); + return pulumi.runtime.invokeOutput("gcp:kms/getAutokeyConfig:getAutokeyConfig", { + "folder": args.folder, + }, opts); +} + +/** + * A collection of arguments for invoking getAutokeyConfig. + */ +export interface GetAutokeyConfigOutputArgs { + /** + * The folder in which the AutokeyConfig is configured. If it + * is not provided, the provider folder is used. + */ + folder: pulumi.Input; +} diff --git a/sdk/nodejs/kms/getKeyHandle.ts b/sdk/nodejs/kms/getKeyHandle.ts new file mode 100644 index 0000000000..bc312d1d80 --- /dev/null +++ b/sdk/nodejs/kms/getKeyHandle.ts @@ -0,0 +1,121 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "../utilities"; + +/** + * ## Example Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const myKeyHandle = gcp.kms.getKeyHandle({ + * name: "eed58b7b-20ad-4da8-ad85-ba78a0d5ab87", + * location: "us-central1", + * }); + * ``` + */ +export function getKeyHandle(args: GetKeyHandleArgs, opts?: pulumi.InvokeOptions): Promise { + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); + return pulumi.runtime.invoke("gcp:kms/getKeyHandle:getKeyHandle", { + "location": args.location, + "name": args.name, + "project": args.project, + }, opts); +} + +/** + * A collection of arguments for invoking getKeyHandle. + */ +export interface GetKeyHandleArgs { + /** + * The Google Cloud Platform location for the KeyHandle. + * A full list of valid locations can be found by running `gcloud kms locations list`. + * + * - - - + */ + location: string; + /** + * The KeyHandle's name. + * A KeyHandle name must exist within the provided location and must be valid UUID. + */ + name: string; + /** + * The project in which the resource belongs. If it + * is not provided, the provider project is used. + */ + project?: string; +} + +/** + * A collection of values returned by getKeyHandle. + */ +export interface GetKeyHandleResult { + /** + * The provider-assigned unique ID for this managed resource. + */ + readonly id: string; + /** + * The identifier of the KMS Key created for the KeyHandle. Its format is `projects/{projectId}/locations/{location}/keyRings/{keyRingName}/cryptoKeys/{cryptoKeyName}`. + */ + readonly kmsKey: string; + /** + * The location of the KMS Key and KeyHandle. + */ + readonly location: string; + readonly name: string; + /** + * The identifier of the project where KMS KeyHandle is created. + */ + readonly project?: string; + /** + * Indicates the resource type that the resulting CryptoKey is meant to protect, e.g. {SERVICE}.googleapis.com/{TYPE}. See documentation for supported resource types. + */ + readonly resourceTypeSelector: string; +} +/** + * ## Example Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const myKeyHandle = gcp.kms.getKeyHandle({ + * name: "eed58b7b-20ad-4da8-ad85-ba78a0d5ab87", + * location: "us-central1", + * }); + * ``` + */ +export function getKeyHandleOutput(args: GetKeyHandleOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output { + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); + return pulumi.runtime.invokeOutput("gcp:kms/getKeyHandle:getKeyHandle", { + "location": args.location, + "name": args.name, + "project": args.project, + }, opts); +} + +/** + * A collection of arguments for invoking getKeyHandle. + */ +export interface GetKeyHandleOutputArgs { + /** + * The Google Cloud Platform location for the KeyHandle. + * A full list of valid locations can be found by running `gcloud kms locations list`. + * + * - - - + */ + location: pulumi.Input; + /** + * The KeyHandle's name. + * A KeyHandle name must exist within the provided location and must be valid UUID. + */ + name: pulumi.Input; + /** + * The project in which the resource belongs. If it + * is not provided, the provider project is used. + */ + project?: pulumi.Input; +} diff --git a/sdk/nodejs/kms/index.ts b/sdk/nodejs/kms/index.ts index 8a20c6a5df..1ad8ac30a0 100644 --- a/sdk/nodejs/kms/index.ts +++ b/sdk/nodejs/kms/index.ts @@ -55,6 +55,11 @@ export type EkmConnectionIamPolicy = import("./ekmConnectionIamPolicy").EkmConne export const EkmConnectionIamPolicy: typeof import("./ekmConnectionIamPolicy").EkmConnectionIamPolicy = null as any; utilities.lazyLoad(exports, ["EkmConnectionIamPolicy"], () => require("./ekmConnectionIamPolicy")); +export { GetAutokeyConfigArgs, GetAutokeyConfigResult, GetAutokeyConfigOutputArgs } from "./getAutokeyConfig"; +export const getAutokeyConfig: typeof import("./getAutokeyConfig").getAutokeyConfig = null as any; +export const getAutokeyConfigOutput: typeof import("./getAutokeyConfig").getAutokeyConfigOutput = null as any; +utilities.lazyLoad(exports, ["getAutokeyConfig","getAutokeyConfigOutput"], () => require("./getAutokeyConfig")); + export { GetCryptoKeyIamPolicyArgs, GetCryptoKeyIamPolicyResult, GetCryptoKeyIamPolicyOutputArgs } from "./getCryptoKeyIamPolicy"; export const getCryptoKeyIamPolicy: typeof import("./getCryptoKeyIamPolicy").getCryptoKeyIamPolicy = null as any; export const getCryptoKeyIamPolicyOutput: typeof import("./getCryptoKeyIamPolicy").getCryptoKeyIamPolicyOutput = null as any; @@ -110,6 +115,11 @@ export const getKMSSecretCiphertext: typeof import("./getKMSSecretCiphertext").g export const getKMSSecretCiphertextOutput: typeof import("./getKMSSecretCiphertext").getKMSSecretCiphertextOutput = null as any; utilities.lazyLoad(exports, ["getKMSSecretCiphertext","getKMSSecretCiphertextOutput"], () => require("./getKMSSecretCiphertext")); +export { GetKeyHandleArgs, GetKeyHandleResult, GetKeyHandleOutputArgs } from "./getKeyHandle"; +export const getKeyHandle: typeof import("./getKeyHandle").getKeyHandle = null as any; +export const getKeyHandleOutput: typeof import("./getKeyHandle").getKeyHandleOutput = null as any; +utilities.lazyLoad(exports, ["getKeyHandle","getKeyHandleOutput"], () => require("./getKeyHandle")); + export { GetKeyRingIamPolicyArgs, GetKeyRingIamPolicyResult, GetKeyRingIamPolicyOutputArgs } from "./getKeyRingIamPolicy"; export const getKeyRingIamPolicy: typeof import("./getKeyRingIamPolicy").getKeyRingIamPolicy = null as any; export const getKeyRingIamPolicyOutput: typeof import("./getKeyRingIamPolicy").getKeyRingIamPolicyOutput = null as any; diff --git a/sdk/nodejs/netapp/kmsconfig.ts b/sdk/nodejs/netapp/kmsconfig.ts index a79949a0f1..95ddf1b0ed 100644 --- a/sdk/nodejs/netapp/kmsconfig.ts +++ b/sdk/nodejs/netapp/kmsconfig.ts @@ -23,18 +23,10 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const keyring = new gcp.kms.KeyRing("keyring", { - * name: "key-ring", - * location: "us-central1", - * }); - * const cryptoKey = new gcp.kms.CryptoKey("crypto_key", { - * name: "crypto-name", - * keyRing: keyring.id, - * }); * const kmsConfig = new gcp.netapp.Kmsconfig("kmsConfig", { * name: "kms-test", * description: "this is a test description", - * cryptoKeyName: cryptoKey.id, + * cryptoKeyName: "crypto-name", * location: "us-central1", * }); * ``` diff --git a/sdk/nodejs/networkconnectivity/hub.ts b/sdk/nodejs/networkconnectivity/hub.ts index bae6bc85b6..21aec60dfd 100644 --- a/sdk/nodejs/networkconnectivity/hub.ts +++ b/sdk/nodejs/networkconnectivity/hub.ts @@ -43,6 +43,35 @@ import * as utilities from "../utilities"; * exportPsc: true, * }); * ``` + * ### Network Connectivity Hub Mesh Topology + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const primary = new gcp.networkconnectivity.Hub("primary", { + * name: "mesh", + * description: "A sample mesh hub", + * labels: { + * "label-one": "value-one", + * }, + * }); + * ``` + * ### Network Connectivity Hub Star Topology + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const primary = new gcp.networkconnectivity.Hub("primary", { + * name: "star", + * description: "A sample star hub", + * labels: { + * "label-one": "value-one", + * }, + * presetTopology: "STAR", + * }); + * ``` * * ## Import * @@ -125,6 +154,11 @@ export class Hub extends pulumi.CustomResource { * - - - */ public readonly name!: pulumi.Output; + /** + * 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. + * Possible values are: `MESH`, `STAR`. + */ + public readonly presetTopology!: pulumi.Output; /** * The ID of the project in which the resource belongs. * If it is not provided, the provider project is used. @@ -172,6 +206,7 @@ export class Hub extends pulumi.CustomResource { resourceInputs["exportPsc"] = state ? state.exportPsc : undefined; resourceInputs["labels"] = state ? state.labels : undefined; resourceInputs["name"] = state ? state.name : undefined; + resourceInputs["presetTopology"] = state ? state.presetTopology : undefined; resourceInputs["project"] = state ? state.project : undefined; resourceInputs["pulumiLabels"] = state ? state.pulumiLabels : undefined; resourceInputs["routingVpcs"] = state ? state.routingVpcs : undefined; @@ -184,6 +219,7 @@ export class Hub extends pulumi.CustomResource { resourceInputs["exportPsc"] = args ? args.exportPsc : undefined; resourceInputs["labels"] = args ? args.labels : undefined; resourceInputs["name"] = args ? args.name : undefined; + resourceInputs["presetTopology"] = args ? args.presetTopology : undefined; resourceInputs["project"] = args ? args.project : undefined; resourceInputs["createTime"] = undefined /*out*/; resourceInputs["effectiveLabels"] = undefined /*out*/; @@ -233,6 +269,11 @@ export interface HubState { * - - - */ name?: pulumi.Input; + /** + * 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. + * Possible values are: `MESH`, `STAR`. + */ + presetTopology?: pulumi.Input; /** * The ID of the project in which the resource belongs. * If it is not provided, the provider project is used. @@ -287,6 +328,11 @@ export interface HubArgs { * - - - */ name?: pulumi.Input; + /** + * 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. + * Possible values are: `MESH`, `STAR`. + */ + presetTopology?: pulumi.Input; /** * The ID of the project in which the resource belongs. * If it is not provided, the provider project is used. diff --git a/sdk/nodejs/networkconnectivity/spoke.ts b/sdk/nodejs/networkconnectivity/spoke.ts index 9a765284e3..03547f4afe 100644 --- a/sdk/nodejs/networkconnectivity/spoke.ts +++ b/sdk/nodejs/networkconnectivity/spoke.ts @@ -55,6 +55,50 @@ import * as utilities from "../utilities"; * }, * }); * ``` + * ### Network Connectivity Spoke Linked Vpc Network Group + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const network = new gcp.compute.Network("network", { + * name: "net-spoke", + * autoCreateSubnetworks: false, + * }); + * const basicHub = new gcp.networkconnectivity.Hub("basic_hub", { + * name: "hub1-spoke", + * description: "A sample hub", + * labels: { + * "label-two": "value-one", + * }, + * }); + * const defaultGroup = new gcp.networkconnectivity.Group("default_group", { + * hub: basicHub.id, + * name: "default", + * description: "A sample hub group", + * }); + * const primary = new gcp.networkconnectivity.Spoke("primary", { + * name: "group-spoke1", + * location: "global", + * description: "A sample spoke with a linked VPC", + * labels: { + * "label-one": "value-one", + * }, + * hub: basicHub.id, + * linkedVpcNetwork: { + * excludeExportRanges: [ + * "198.51.100.0/24", + * "10.10.0.0/16", + * ], + * includeExportRanges: [ + * "198.51.100.0/23", + * "10.0.0.0/8", + * ], + * uri: network.selfLink, + * }, + * group: defaultGroup.id, + * }); + * ``` * ### Network Connectivity Spoke Router Appliance Basic * * ```typescript @@ -338,6 +382,44 @@ import * as utilities from "../utilities"; * dependsOn: [linkedVpcSpoke], * }); * ``` + * ### Network Connectivity Spoke Center Group + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const network = new gcp.compute.Network("network", { + * name: "tf-net", + * autoCreateSubnetworks: false, + * }); + * const starHub = new gcp.networkconnectivity.Hub("star_hub", { + * name: "hub-basic", + * presetTopology: "STAR", + * }); + * const centerGroup = new gcp.networkconnectivity.Group("center_group", { + * name: "center", + * hub: starHub.id, + * autoAccept: { + * autoAcceptProjects: [ + * "foo_13293", + * "bar_40289", + * ], + * }, + * }); + * const primary = new gcp.networkconnectivity.Spoke("primary", { + * name: "vpc-spoke", + * location: "global", + * description: "A sample spoke", + * labels: { + * "label-one": "value-one", + * }, + * hub: starHub.id, + * group: centerGroup.id, + * linkedVpcNetwork: { + * uri: network.selfLink, + * }, + * }); + * ``` * * ## Import * @@ -403,6 +485,10 @@ export class Spoke extends pulumi.CustomResource { * All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. */ public /*out*/ readonly effectiveLabels!: pulumi.Output<{[key: string]: string}>; + /** + * The name of the group that this spoke is associated with. + */ + public readonly group!: pulumi.Output; /** * Immutable. The URI of the hub that this spoke is attached to. */ @@ -488,6 +574,7 @@ export class Spoke extends pulumi.CustomResource { resourceInputs["createTime"] = state ? state.createTime : undefined; resourceInputs["description"] = state ? state.description : undefined; resourceInputs["effectiveLabels"] = state ? state.effectiveLabels : undefined; + resourceInputs["group"] = state ? state.group : undefined; resourceInputs["hub"] = state ? state.hub : undefined; resourceInputs["labels"] = state ? state.labels : undefined; resourceInputs["linkedInterconnectAttachments"] = state ? state.linkedInterconnectAttachments : undefined; @@ -511,6 +598,7 @@ export class Spoke extends pulumi.CustomResource { throw new Error("Missing required property 'location'"); } resourceInputs["description"] = args ? args.description : undefined; + resourceInputs["group"] = args ? args.group : undefined; resourceInputs["hub"] = args ? args.hub : undefined; resourceInputs["labels"] = args ? args.labels : undefined; resourceInputs["linkedInterconnectAttachments"] = args ? args.linkedInterconnectAttachments : undefined; @@ -551,6 +639,10 @@ export interface SpokeState { * All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. */ effectiveLabels?: pulumi.Input<{[key: string]: pulumi.Input}>; + /** + * The name of the group that this spoke is associated with. + */ + group?: pulumi.Input; /** * Immutable. The URI of the hub that this spoke is attached to. */ @@ -629,6 +721,10 @@ export interface SpokeArgs { * An optional description of the spoke. */ description?: pulumi.Input; + /** + * The name of the group that this spoke is associated with. + */ + group?: pulumi.Input; /** * Immutable. The URI of the hub that this spoke is attached to. */ diff --git a/sdk/nodejs/networkmanagement/vpcFlowLogsConfig.ts b/sdk/nodejs/networkmanagement/vpcFlowLogsConfig.ts index bb6f461c37..d795548ea0 100644 --- a/sdk/nodejs/networkmanagement/vpcFlowLogsConfig.ts +++ b/sdk/nodejs/networkmanagement/vpcFlowLogsConfig.ts @@ -5,6 +5,8 @@ import * as pulumi from "@pulumi/pulumi"; import * as utilities from "../utilities"; /** + * VPC Flow Logs Config is a resource that lets you configure Flow Logs for VPC, Interconnect attachments or VPN Tunnels. + * * ## Example Usage * * ### Network Management Vpc Flow Logs Config Interconnect Full diff --git a/sdk/nodejs/networksecurity/index.ts b/sdk/nodejs/networksecurity/index.ts index 92843f5fe1..56eb88c223 100644 --- a/sdk/nodejs/networksecurity/index.ts +++ b/sdk/nodejs/networksecurity/index.ts @@ -75,6 +75,16 @@ export type InterceptDeploymentGroup = import("./interceptDeploymentGroup").Inte export const InterceptDeploymentGroup: typeof import("./interceptDeploymentGroup").InterceptDeploymentGroup = null as any; utilities.lazyLoad(exports, ["InterceptDeploymentGroup"], () => require("./interceptDeploymentGroup")); +export { InterceptEndpointGroupArgs, InterceptEndpointGroupState } from "./interceptEndpointGroup"; +export type InterceptEndpointGroup = import("./interceptEndpointGroup").InterceptEndpointGroup; +export const InterceptEndpointGroup: typeof import("./interceptEndpointGroup").InterceptEndpointGroup = null as any; +utilities.lazyLoad(exports, ["InterceptEndpointGroup"], () => require("./interceptEndpointGroup")); + +export { InterceptEndpointGroupAssociationArgs, InterceptEndpointGroupAssociationState } from "./interceptEndpointGroupAssociation"; +export type InterceptEndpointGroupAssociation = import("./interceptEndpointGroupAssociation").InterceptEndpointGroupAssociation; +export const InterceptEndpointGroupAssociation: typeof import("./interceptEndpointGroupAssociation").InterceptEndpointGroupAssociation = null as any; +utilities.lazyLoad(exports, ["InterceptEndpointGroupAssociation"], () => require("./interceptEndpointGroupAssociation")); + export { MirroringDeploymentArgs, MirroringDeploymentState } from "./mirroringDeployment"; export type MirroringDeployment = import("./mirroringDeployment").MirroringDeployment; export const MirroringDeployment: typeof import("./mirroringDeployment").MirroringDeployment = null as any; @@ -151,6 +161,10 @@ const _module = { return new InterceptDeployment(name, undefined, { urn }) case "gcp:networksecurity/interceptDeploymentGroup:InterceptDeploymentGroup": return new InterceptDeploymentGroup(name, undefined, { urn }) + case "gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup": + return new InterceptEndpointGroup(name, undefined, { urn }) + case "gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation": + return new InterceptEndpointGroupAssociation(name, undefined, { urn }) case "gcp:networksecurity/mirroringDeployment:MirroringDeployment": return new MirroringDeployment(name, undefined, { urn }) case "gcp:networksecurity/mirroringDeploymentGroup:MirroringDeploymentGroup": @@ -187,6 +201,8 @@ pulumi.runtime.registerResourceModule("gcp", "networksecurity/gatewaySecurityPol pulumi.runtime.registerResourceModule("gcp", "networksecurity/gatewaySecurityPolicyRule", _module) pulumi.runtime.registerResourceModule("gcp", "networksecurity/interceptDeployment", _module) pulumi.runtime.registerResourceModule("gcp", "networksecurity/interceptDeploymentGroup", _module) +pulumi.runtime.registerResourceModule("gcp", "networksecurity/interceptEndpointGroup", _module) +pulumi.runtime.registerResourceModule("gcp", "networksecurity/interceptEndpointGroupAssociation", _module) pulumi.runtime.registerResourceModule("gcp", "networksecurity/mirroringDeployment", _module) pulumi.runtime.registerResourceModule("gcp", "networksecurity/mirroringDeploymentGroup", _module) pulumi.runtime.registerResourceModule("gcp", "networksecurity/mirroringEndpointGroup", _module) diff --git a/sdk/nodejs/networksecurity/interceptEndpointGroup.ts b/sdk/nodejs/networksecurity/interceptEndpointGroup.ts new file mode 100644 index 0000000000..5e743cee26 --- /dev/null +++ b/sdk/nodejs/networksecurity/interceptEndpointGroup.ts @@ -0,0 +1,312 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "../utilities"; + +/** + * ## Example Usage + * + * ### Network Security Intercept Endpoint Group Basic + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const network = new gcp.compute.Network("network", { + * name: "example-network", + * autoCreateSubnetworks: false, + * }); + * const deploymentGroup = new gcp.networksecurity.InterceptDeploymentGroup("deployment_group", { + * interceptDeploymentGroupId: "example-dg", + * location: "global", + * network: network.id, + * }); + * const _default = new gcp.networksecurity.InterceptEndpointGroup("default", { + * interceptEndpointGroupId: "example-eg", + * location: "global", + * interceptDeploymentGroup: deploymentGroup.id, + * labels: { + * foo: "bar", + * }, + * }); + * ``` + * + * ## Import + * + * InterceptEndpointGroup can be imported using any of these accepted formats: + * + * * `projects/{{project}}/locations/{{location}}/interceptEndpointGroups/{{intercept_endpoint_group_id}}` + * + * * `{{project}}/{{location}}/{{intercept_endpoint_group_id}}` + * + * * `{{location}}/{{intercept_endpoint_group_id}}` + * + * When using the `pulumi import` command, InterceptEndpointGroup can be imported using one of the formats above. For example: + * + * ```sh + * $ pulumi import gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup default projects/{{project}}/locations/{{location}}/interceptEndpointGroups/{{intercept_endpoint_group_id}} + * ``` + * + * ```sh + * $ pulumi import gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup default {{project}}/{{location}}/{{intercept_endpoint_group_id}} + * ``` + * + * ```sh + * $ pulumi import gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup default {{location}}/{{intercept_endpoint_group_id}} + * ``` + */ +export class InterceptEndpointGroup extends pulumi.CustomResource { + /** + * Get an existing InterceptEndpointGroup resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: InterceptEndpointGroupState, opts?: pulumi.CustomResourceOptions): InterceptEndpointGroup { + return new InterceptEndpointGroup(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup'; + + /** + * Returns true if the given object is an instance of InterceptEndpointGroup. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is InterceptEndpointGroup { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === InterceptEndpointGroup.__pulumiType; + } + + /** + * Create time stamp. + */ + public /*out*/ readonly createTime!: pulumi.Output; + /** + * All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + */ + public /*out*/ readonly effectiveLabels!: pulumi.Output<{[key: string]: string}>; + /** + * Immutable. The Intercept Deployment Group that this resource is connected to. Format + * is: + * `projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}` + */ + public readonly interceptDeploymentGroup!: pulumi.Output; + /** + * ID of the Intercept Endpoint Group. + * + * + * - - - + */ + public readonly interceptEndpointGroupId!: pulumi.Output; + /** + * Optional. Labels as key value pairs + * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + * Please refer to the field `effectiveLabels` for all of the labels present on the resource. + */ + public readonly labels!: pulumi.Output<{[key: string]: string} | undefined>; + /** + * The location of the Intercept Endpoint Group, currently restricted to `global`. + */ + public readonly location!: pulumi.Output; + /** + * Identifier. The name of the Intercept Endpoint Group. + */ + public /*out*/ readonly name!: pulumi.Output; + /** + * The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + */ + public readonly project!: pulumi.Output; + /** + * The combination of labels configured directly on the resource + * and default labels configured on the provider. + */ + public /*out*/ readonly pulumiLabels!: pulumi.Output<{[key: string]: string}>; + /** + * Whether reconciling is in progress, recommended per + * https://google.aip.dev/128. + */ + public /*out*/ readonly reconciling!: pulumi.Output; + /** + * Current state of the endpoint group. + * Possible values: + * STATE_UNSPECIFIED + * ACTIVE + * CLOSED + * CREATING + * DELETING + * OUT_OF_SYNC + */ + public /*out*/ readonly state!: pulumi.Output; + /** + * Update time stamp. + */ + public /*out*/ readonly updateTime!: pulumi.Output; + + /** + * Create a InterceptEndpointGroup resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: InterceptEndpointGroupArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: InterceptEndpointGroupArgs | InterceptEndpointGroupState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as InterceptEndpointGroupState | undefined; + resourceInputs["createTime"] = state ? state.createTime : undefined; + resourceInputs["effectiveLabels"] = state ? state.effectiveLabels : undefined; + resourceInputs["interceptDeploymentGroup"] = state ? state.interceptDeploymentGroup : undefined; + resourceInputs["interceptEndpointGroupId"] = state ? state.interceptEndpointGroupId : undefined; + resourceInputs["labels"] = state ? state.labels : undefined; + resourceInputs["location"] = state ? state.location : undefined; + resourceInputs["name"] = state ? state.name : undefined; + resourceInputs["project"] = state ? state.project : undefined; + resourceInputs["pulumiLabels"] = state ? state.pulumiLabels : undefined; + resourceInputs["reconciling"] = state ? state.reconciling : undefined; + resourceInputs["state"] = state ? state.state : undefined; + resourceInputs["updateTime"] = state ? state.updateTime : undefined; + } else { + const args = argsOrState as InterceptEndpointGroupArgs | undefined; + if ((!args || args.interceptDeploymentGroup === undefined) && !opts.urn) { + throw new Error("Missing required property 'interceptDeploymentGroup'"); + } + if ((!args || args.interceptEndpointGroupId === undefined) && !opts.urn) { + throw new Error("Missing required property 'interceptEndpointGroupId'"); + } + if ((!args || args.location === undefined) && !opts.urn) { + throw new Error("Missing required property 'location'"); + } + resourceInputs["interceptDeploymentGroup"] = args ? args.interceptDeploymentGroup : undefined; + resourceInputs["interceptEndpointGroupId"] = args ? args.interceptEndpointGroupId : undefined; + resourceInputs["labels"] = args ? args.labels : undefined; + resourceInputs["location"] = args ? args.location : undefined; + resourceInputs["project"] = args ? args.project : undefined; + resourceInputs["createTime"] = undefined /*out*/; + resourceInputs["effectiveLabels"] = undefined /*out*/; + resourceInputs["name"] = undefined /*out*/; + resourceInputs["pulumiLabels"] = undefined /*out*/; + resourceInputs["reconciling"] = undefined /*out*/; + resourceInputs["state"] = undefined /*out*/; + resourceInputs["updateTime"] = undefined /*out*/; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + const secretOpts = { additionalSecretOutputs: ["effectiveLabels", "pulumiLabels"] }; + opts = pulumi.mergeOptions(opts, secretOpts); + super(InterceptEndpointGroup.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering InterceptEndpointGroup resources. + */ +export interface InterceptEndpointGroupState { + /** + * Create time stamp. + */ + createTime?: pulumi.Input; + /** + * All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + */ + effectiveLabels?: pulumi.Input<{[key: string]: pulumi.Input}>; + /** + * Immutable. The Intercept Deployment Group that this resource is connected to. Format + * is: + * `projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}` + */ + interceptDeploymentGroup?: pulumi.Input; + /** + * ID of the Intercept Endpoint Group. + * + * + * - - - + */ + interceptEndpointGroupId?: pulumi.Input; + /** + * Optional. Labels as key value pairs + * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + * Please refer to the field `effectiveLabels` for all of the labels present on the resource. + */ + labels?: pulumi.Input<{[key: string]: pulumi.Input}>; + /** + * The location of the Intercept Endpoint Group, currently restricted to `global`. + */ + location?: pulumi.Input; + /** + * Identifier. The name of the Intercept Endpoint Group. + */ + name?: pulumi.Input; + /** + * The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + */ + project?: pulumi.Input; + /** + * The combination of labels configured directly on the resource + * and default labels configured on the provider. + */ + pulumiLabels?: pulumi.Input<{[key: string]: pulumi.Input}>; + /** + * Whether reconciling is in progress, recommended per + * https://google.aip.dev/128. + */ + reconciling?: pulumi.Input; + /** + * Current state of the endpoint group. + * Possible values: + * STATE_UNSPECIFIED + * ACTIVE + * CLOSED + * CREATING + * DELETING + * OUT_OF_SYNC + */ + state?: pulumi.Input; + /** + * Update time stamp. + */ + updateTime?: pulumi.Input; +} + +/** + * The set of arguments for constructing a InterceptEndpointGroup resource. + */ +export interface InterceptEndpointGroupArgs { + /** + * Immutable. The Intercept Deployment Group that this resource is connected to. Format + * is: + * `projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}` + */ + interceptDeploymentGroup: pulumi.Input; + /** + * ID of the Intercept Endpoint Group. + * + * + * - - - + */ + interceptEndpointGroupId: pulumi.Input; + /** + * Optional. Labels as key value pairs + * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + * Please refer to the field `effectiveLabels` for all of the labels present on the resource. + */ + labels?: pulumi.Input<{[key: string]: pulumi.Input}>; + /** + * The location of the Intercept Endpoint Group, currently restricted to `global`. + */ + location: pulumi.Input; + /** + * The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + */ + project?: pulumi.Input; +} diff --git a/sdk/nodejs/networksecurity/interceptEndpointGroupAssociation.ts b/sdk/nodejs/networksecurity/interceptEndpointGroupAssociation.ts new file mode 100644 index 0000000000..cbe2d119d3 --- /dev/null +++ b/sdk/nodejs/networksecurity/interceptEndpointGroupAssociation.ts @@ -0,0 +1,347 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as inputs from "../types/input"; +import * as outputs from "../types/output"; +import * as utilities from "../utilities"; + +/** + * ## Example Usage + * + * ### Network Security Intercept Endpoint Group Association Basic + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const producerNetwork = new gcp.compute.Network("producer_network", { + * name: "example-prod-network", + * autoCreateSubnetworks: false, + * }); + * const consumerNetwork = new gcp.compute.Network("consumer_network", { + * name: "example-cons-network", + * autoCreateSubnetworks: false, + * }); + * const deploymentGroup = new gcp.networksecurity.InterceptDeploymentGroup("deployment_group", { + * interceptDeploymentGroupId: "example-dg", + * location: "global", + * network: producerNetwork.id, + * }); + * const endpointGroup = new gcp.networksecurity.InterceptEndpointGroup("endpoint_group", { + * interceptEndpointGroupId: "example-eg", + * location: "global", + * interceptDeploymentGroup: deploymentGroup.id, + * }); + * const _default = new gcp.networksecurity.InterceptEndpointGroupAssociation("default", { + * interceptEndpointGroupAssociationId: "example-ega", + * location: "global", + * network: consumerNetwork.id, + * interceptEndpointGroup: endpointGroup.id, + * labels: { + * foo: "bar", + * }, + * }); + * ``` + * + * ## Import + * + * InterceptEndpointGroupAssociation can be imported using any of these accepted formats: + * + * * `projects/{{project}}/locations/{{location}}/interceptEndpointGroupAssociations/{{intercept_endpoint_group_association_id}}` + * + * * `{{project}}/{{location}}/{{intercept_endpoint_group_association_id}}` + * + * * `{{location}}/{{intercept_endpoint_group_association_id}}` + * + * When using the `pulumi import` command, InterceptEndpointGroupAssociation can be imported using one of the formats above. For example: + * + * ```sh + * $ pulumi import gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation default projects/{{project}}/locations/{{location}}/interceptEndpointGroupAssociations/{{intercept_endpoint_group_association_id}} + * ``` + * + * ```sh + * $ pulumi import gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation default {{project}}/{{location}}/{{intercept_endpoint_group_association_id}} + * ``` + * + * ```sh + * $ pulumi import gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation default {{location}}/{{intercept_endpoint_group_association_id}} + * ``` + */ +export class InterceptEndpointGroupAssociation extends pulumi.CustomResource { + /** + * Get an existing InterceptEndpointGroupAssociation resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: InterceptEndpointGroupAssociationState, opts?: pulumi.CustomResourceOptions): InterceptEndpointGroupAssociation { + return new InterceptEndpointGroupAssociation(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation'; + + /** + * Returns true if the given object is an instance of InterceptEndpointGroupAssociation. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is InterceptEndpointGroupAssociation { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === InterceptEndpointGroupAssociation.__pulumiType; + } + + /** + * Create time stamp. + */ + public /*out*/ readonly createTime!: pulumi.Output; + /** + * All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + */ + public /*out*/ readonly effectiveLabels!: pulumi.Output<{[key: string]: string}>; + /** + * Immutable. The Intercept Endpoint Group that this resource is connected to. Format + * is: + * `projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`. + */ + public readonly interceptEndpointGroup!: pulumi.Output; + /** + * ID of the Intercept Endpoint Group Association. + */ + public readonly interceptEndpointGroupAssociationId!: pulumi.Output; + /** + * Optional. Labels as key value pairs. + * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + * Please refer to the field `effectiveLabels` for all of the labels present on the resource. + */ + public readonly labels!: pulumi.Output<{[key: string]: string} | undefined>; + /** + * The location of the Intercept Endpoint Group Association, currently restricted to `global`. + * + * + * - - - + */ + public readonly location!: pulumi.Output; + /** + * The list of locations that are currently supported by the associated Intercept Deployment Group and their state. + * Structure is documented below. + */ + public /*out*/ readonly locationsDetails!: pulumi.Output; + /** + * Identifier. The name of the Intercept Endpoint Group Association. + */ + public /*out*/ readonly name!: pulumi.Output; + /** + * Immutable. The VPC network associated. Format: + * `projects/{project}/global/networks/{network}`. + */ + public readonly network!: pulumi.Output; + /** + * The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + */ + public readonly project!: pulumi.Output; + /** + * The combination of labels configured directly on the resource + * and default labels configured on the provider. + */ + public /*out*/ readonly pulumiLabels!: pulumi.Output<{[key: string]: string}>; + /** + * Whether reconciling is in progress. + */ + public /*out*/ readonly reconciling!: pulumi.Output; + /** + * (Output) + * The association state in this location. + * Possible values: + * STATE_UNSPECIFIED + * ACTIVE + * OUT_OF_SYNC + */ + public /*out*/ readonly state!: pulumi.Output; + /** + * Update time stamp. + */ + public /*out*/ readonly updateTime!: pulumi.Output; + + /** + * Create a InterceptEndpointGroupAssociation resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: InterceptEndpointGroupAssociationArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: InterceptEndpointGroupAssociationArgs | InterceptEndpointGroupAssociationState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as InterceptEndpointGroupAssociationState | undefined; + resourceInputs["createTime"] = state ? state.createTime : undefined; + resourceInputs["effectiveLabels"] = state ? state.effectiveLabels : undefined; + resourceInputs["interceptEndpointGroup"] = state ? state.interceptEndpointGroup : undefined; + resourceInputs["interceptEndpointGroupAssociationId"] = state ? state.interceptEndpointGroupAssociationId : undefined; + resourceInputs["labels"] = state ? state.labels : undefined; + resourceInputs["location"] = state ? state.location : undefined; + resourceInputs["locationsDetails"] = state ? state.locationsDetails : undefined; + resourceInputs["name"] = state ? state.name : undefined; + resourceInputs["network"] = state ? state.network : undefined; + resourceInputs["project"] = state ? state.project : undefined; + resourceInputs["pulumiLabels"] = state ? state.pulumiLabels : undefined; + resourceInputs["reconciling"] = state ? state.reconciling : undefined; + resourceInputs["state"] = state ? state.state : undefined; + resourceInputs["updateTime"] = state ? state.updateTime : undefined; + } else { + const args = argsOrState as InterceptEndpointGroupAssociationArgs | undefined; + if ((!args || args.interceptEndpointGroup === undefined) && !opts.urn) { + throw new Error("Missing required property 'interceptEndpointGroup'"); + } + if ((!args || args.location === undefined) && !opts.urn) { + throw new Error("Missing required property 'location'"); + } + if ((!args || args.network === undefined) && !opts.urn) { + throw new Error("Missing required property 'network'"); + } + resourceInputs["interceptEndpointGroup"] = args ? args.interceptEndpointGroup : undefined; + resourceInputs["interceptEndpointGroupAssociationId"] = args ? args.interceptEndpointGroupAssociationId : undefined; + resourceInputs["labels"] = args ? args.labels : undefined; + resourceInputs["location"] = args ? args.location : undefined; + resourceInputs["network"] = args ? args.network : undefined; + resourceInputs["project"] = args ? args.project : undefined; + resourceInputs["createTime"] = undefined /*out*/; + resourceInputs["effectiveLabels"] = undefined /*out*/; + resourceInputs["locationsDetails"] = undefined /*out*/; + resourceInputs["name"] = undefined /*out*/; + resourceInputs["pulumiLabels"] = undefined /*out*/; + resourceInputs["reconciling"] = undefined /*out*/; + resourceInputs["state"] = undefined /*out*/; + resourceInputs["updateTime"] = undefined /*out*/; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + const secretOpts = { additionalSecretOutputs: ["effectiveLabels", "pulumiLabels"] }; + opts = pulumi.mergeOptions(opts, secretOpts); + super(InterceptEndpointGroupAssociation.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering InterceptEndpointGroupAssociation resources. + */ +export interface InterceptEndpointGroupAssociationState { + /** + * Create time stamp. + */ + createTime?: pulumi.Input; + /** + * All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + */ + effectiveLabels?: pulumi.Input<{[key: string]: pulumi.Input}>; + /** + * Immutable. The Intercept Endpoint Group that this resource is connected to. Format + * is: + * `projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`. + */ + interceptEndpointGroup?: pulumi.Input; + /** + * ID of the Intercept Endpoint Group Association. + */ + interceptEndpointGroupAssociationId?: pulumi.Input; + /** + * Optional. Labels as key value pairs. + * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + * Please refer to the field `effectiveLabels` for all of the labels present on the resource. + */ + labels?: pulumi.Input<{[key: string]: pulumi.Input}>; + /** + * The location of the Intercept Endpoint Group Association, currently restricted to `global`. + * + * + * - - - + */ + location?: pulumi.Input; + /** + * The list of locations that are currently supported by the associated Intercept Deployment Group and their state. + * Structure is documented below. + */ + locationsDetails?: pulumi.Input[]>; + /** + * Identifier. The name of the Intercept Endpoint Group Association. + */ + name?: pulumi.Input; + /** + * Immutable. The VPC network associated. Format: + * `projects/{project}/global/networks/{network}`. + */ + network?: pulumi.Input; + /** + * The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + */ + project?: pulumi.Input; + /** + * The combination of labels configured directly on the resource + * and default labels configured on the provider. + */ + pulumiLabels?: pulumi.Input<{[key: string]: pulumi.Input}>; + /** + * Whether reconciling is in progress. + */ + reconciling?: pulumi.Input; + /** + * (Output) + * The association state in this location. + * Possible values: + * STATE_UNSPECIFIED + * ACTIVE + * OUT_OF_SYNC + */ + state?: pulumi.Input; + /** + * Update time stamp. + */ + updateTime?: pulumi.Input; +} + +/** + * The set of arguments for constructing a InterceptEndpointGroupAssociation resource. + */ +export interface InterceptEndpointGroupAssociationArgs { + /** + * Immutable. The Intercept Endpoint Group that this resource is connected to. Format + * is: + * `projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`. + */ + interceptEndpointGroup: pulumi.Input; + /** + * ID of the Intercept Endpoint Group Association. + */ + interceptEndpointGroupAssociationId?: pulumi.Input; + /** + * Optional. Labels as key value pairs. + * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + * Please refer to the field `effectiveLabels` for all of the labels present on the resource. + */ + labels?: pulumi.Input<{[key: string]: pulumi.Input}>; + /** + * The location of the Intercept Endpoint Group Association, currently restricted to `global`. + * + * + * - - - + */ + location: pulumi.Input; + /** + * Immutable. The VPC network associated. Format: + * `projects/{project}/global/networks/{network}`. + */ + network: pulumi.Input; + /** + * The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + */ + project?: pulumi.Input; +} diff --git a/sdk/nodejs/oracledatabase/autonomousDatabase.ts b/sdk/nodejs/oracledatabase/autonomousDatabase.ts index b09e367c1f..b0d81484c3 100644 --- a/sdk/nodejs/oracledatabase/autonomousDatabase.ts +++ b/sdk/nodejs/oracledatabase/autonomousDatabase.ts @@ -86,7 +86,7 @@ import * as utilities from "../utilities"; * email: "xyz@example.com", * }], * privateEndpointIp: "10.5.0.11", - * privateEndpointLabel: "testhost", + * privateEndpointLabel: "myendpoint", * }, * deletionProtection: true, * }); diff --git a/sdk/nodejs/orgpolicy/policy.ts b/sdk/nodejs/orgpolicy/policy.ts index 9cd191fbfe..d947ee6fa1 100644 --- a/sdk/nodejs/orgpolicy/policy.ts +++ b/sdk/nodejs/orgpolicy/policy.ts @@ -119,7 +119,7 @@ import * as utilities from "../utilities"; * import * as gcp from "@pulumi/gcp"; * * const constraint = new gcp.orgpolicy.CustomConstraint("constraint", { - * name: "custom.disableGkeAutoUpgrade_40289", + * name: "custom.disableGkeAutoUpgrade_76044", * parent: "organizations/123456789", * displayName: "Disable GKE auto upgrade", * description: "Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.", diff --git a/sdk/nodejs/parallelstore/instance.ts b/sdk/nodejs/parallelstore/instance.ts index 486f3f27bb..2af6036e05 100644 --- a/sdk/nodejs/parallelstore/instance.ts +++ b/sdk/nodejs/parallelstore/instance.ts @@ -9,6 +9,47 @@ import * as utilities from "../utilities"; * * ## Example Usage * + * ### Parallelstore Instance Basic Beta + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const network = new gcp.compute.Network("network", { + * name: "network", + * autoCreateSubnetworks: true, + * mtu: 8896, + * }); + * // Create an IP address + * const privateIpAlloc = new gcp.compute.GlobalAddress("private_ip_alloc", { + * name: "address", + * purpose: "VPC_PEERING", + * addressType: "INTERNAL", + * prefixLength: 24, + * network: network.id, + * }); + * // Create a private connection + * const _default = new gcp.servicenetworking.Connection("default", { + * network: network.id, + * service: "servicenetworking.googleapis.com", + * reservedPeeringRanges: [privateIpAlloc.name], + * }); + * const instance = new gcp.parallelstore.Instance("instance", { + * instanceId: "instance", + * location: "us-central1-a", + * description: "test instance", + * capacityGib: "12000", + * network: network.name, + * fileStripeLevel: "FILE_STRIPE_LEVEL_MIN", + * directoryStripeLevel: "DIRECTORY_STRIPE_LEVEL_MIN", + * deploymentType: "SCRATCH", + * labels: { + * test: "value", + * }, + * }, { + * dependsOn: [_default], + * }); + * ``` * ### Parallelstore Instance Basic * * ```typescript @@ -42,6 +83,7 @@ import * as utilities from "../utilities"; * network: network.name, * fileStripeLevel: "FILE_STRIPE_LEVEL_MIN", * directoryStripeLevel: "DIRECTORY_STRIPE_LEVEL_MIN", + * deploymentType: "SCRATCH", * labels: { * test: "value", * }, @@ -119,6 +161,14 @@ export class Instance extends pulumi.CustomResource { * The version of DAOS software running in the instance. */ public /*out*/ readonly daosVersion!: pulumi.Output; + /** + * Parallelstore Instance deployment type. + * Possible values: + * DEPLOYMENT_TYPE_UNSPECIFIED + * SCRATCH + * PERSISTENT + */ + public readonly deploymentType!: pulumi.Output; /** * The description of the instance. 2048 characters or less. */ @@ -256,6 +306,7 @@ export class Instance extends pulumi.CustomResource { resourceInputs["capacityGib"] = state ? state.capacityGib : undefined; resourceInputs["createTime"] = state ? state.createTime : undefined; resourceInputs["daosVersion"] = state ? state.daosVersion : undefined; + resourceInputs["deploymentType"] = state ? state.deploymentType : undefined; resourceInputs["description"] = state ? state.description : undefined; resourceInputs["directoryStripeLevel"] = state ? state.directoryStripeLevel : undefined; resourceInputs["effectiveLabels"] = state ? state.effectiveLabels : undefined; @@ -283,6 +334,7 @@ export class Instance extends pulumi.CustomResource { throw new Error("Missing required property 'location'"); } resourceInputs["capacityGib"] = args ? args.capacityGib : undefined; + resourceInputs["deploymentType"] = args ? args.deploymentType : undefined; resourceInputs["description"] = args ? args.description : undefined; resourceInputs["directoryStripeLevel"] = args ? args.directoryStripeLevel : undefined; resourceInputs["fileStripeLevel"] = args ? args.fileStripeLevel : undefined; @@ -330,6 +382,14 @@ export interface InstanceState { * The version of DAOS software running in the instance. */ daosVersion?: pulumi.Input; + /** + * Parallelstore Instance deployment type. + * Possible values: + * DEPLOYMENT_TYPE_UNSPECIFIED + * SCRATCH + * PERSISTENT + */ + deploymentType?: pulumi.Input; /** * The description of the instance. 2048 characters or less. */ @@ -459,6 +519,14 @@ export interface InstanceArgs { * Required. Immutable. Storage capacity of Parallelstore instance in Gibibytes (GiB). */ capacityGib: pulumi.Input; + /** + * Parallelstore Instance deployment type. + * Possible values: + * DEPLOYMENT_TYPE_UNSPECIFIED + * SCRATCH + * PERSISTENT + */ + deploymentType?: pulumi.Input; /** * The description of the instance. 2048 characters or less. */ diff --git a/sdk/nodejs/projects/usageExportBucket.ts b/sdk/nodejs/projects/usageExportBucket.ts index 9657d30c88..6f14297b85 100644 --- a/sdk/nodejs/projects/usageExportBucket.ts +++ b/sdk/nodejs/projects/usageExportBucket.ts @@ -5,27 +5,17 @@ import * as pulumi from "@pulumi/pulumi"; import * as utilities from "../utilities"; /** - * Allows creation and management of a Google Cloud Platform project. + * Sets up a usage export bucket for a particular project. A usage export bucket + * is a pre-configured GCS bucket which is set up to receive daily and monthly + * reports of the GCE resources used. * - * Projects created with this resource must be associated with an Organization. - * See the [Organization documentation](https://cloud.google.com/resource-manager/docs/quickstarts) for more details. + * For more information see the [Docs](https://cloud.google.com/compute/docs/usage-export) + * and for further details, the + * [API Documentation](https://cloud.google.com/compute/docs/reference/rest/beta/projects/setUsageExportBucket). * - * The user or service account that is running this provider when creating a `gcp.organizations.Project` - * resource must have `roles/resourcemanager.projectCreator` on the specified organization. See the - * [Access Control for Organizations Using IAM](https://cloud.google.com/resource-manager/docs/access-control-org) - * doc for more information. - * - * > This resource reads the specified billing account on every pulumi up and plan operation so you must have permissions on the specified billing account. - * - * > 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 `autoCreateNetwork` to false, when possible. - * - * > It may take a while for the attached tag bindings to be deleted after the project is scheduled to be deleted. - * - * To get more information about projects, see: - * - * * [API documentation](https://cloud.google.com/resource-manager/reference/rest/v1/projects) - * * How-to Guides - * * [Creating and managing projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects) + * > **Note:** You should specify only one of these per project. If there are two or more + * they will fight over which bucket the reports should be stored in. It is + * safe to have multiple resources with the same backing bucket. * * ## Example Usage * @@ -33,53 +23,19 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const myProject = new gcp.organizations.Project("my_project", { - * name: "My Project", - * projectId: "your-project-id", - * orgId: "1234567", - * }); - * ``` - * - * To create a project under a specific folder - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as gcp from "@pulumi/gcp"; - * - * const department1 = new gcp.organizations.Folder("department1", { - * displayName: "Department 1", - * parent: "organizations/1234567", - * }); - * const myProject_in_a_folder = new gcp.organizations.Project("my_project-in-a-folder", { - * name: "My Project", - * projectId: "your-project-id", - * folderId: department1.name, - * }); - * ``` - * - * To create a project with a tag - * - * ```typescript - * import * as pulumi from "@pulumi/pulumi"; - * import * as gcp from "@pulumi/gcp"; - * - * const myProject = new gcp.organizations.Project("my_project", { - * name: "My Project", - * projectId: "your-project-id", - * orgId: "1234567", - * tags: { - * "1234567/env": "staging", - * }, + * const usageExport = new gcp.projects.UsageExportBucket("usage_export", { + * project: "development-project", + * bucketName: "usage-tracking-bucket", * }); * ``` * * ## Import * - * Projects can be imported using the `project_id`, e.g. + * A project's Usage Export Bucket can be imported using this format: * * * `{{project_id}}` * - * When using the `pulumi import` command, Projects can be imported using one of the formats above. For example: + * When using the `pulumi import` command, NAME_HERE can be imported using one of the formats above. For example: * * ```sh * $ pulumi import gcp:projects/usageExportBucket:UsageExportBucket default {{project_id}} @@ -115,6 +71,8 @@ export class UsageExportBucket extends pulumi.CustomResource { /** * The bucket to store reports in. + * + * - - - */ public readonly bucketName!: pulumi.Output; /** @@ -162,6 +120,8 @@ export class UsageExportBucket extends pulumi.CustomResource { export interface UsageExportBucketState { /** * The bucket to store reports in. + * + * - - - */ bucketName?: pulumi.Input; /** @@ -180,6 +140,8 @@ export interface UsageExportBucketState { export interface UsageExportBucketArgs { /** * The bucket to store reports in. + * + * - - - */ bucketName: pulumi.Input; /** diff --git a/sdk/nodejs/provider.ts b/sdk/nodejs/provider.ts index cb187c0803..b4e5d969f9 100644 --- a/sdk/nodejs/provider.ts +++ b/sdk/nodejs/provider.ts @@ -54,6 +54,7 @@ export class Provider extends pulumi.ProviderResource { public readonly binaryAuthorizationCustomEndpoint!: pulumi.Output; public readonly blockchainNodeEngineCustomEndpoint!: pulumi.Output; public readonly certificateManagerCustomEndpoint!: pulumi.Output; + public readonly chronicleCustomEndpoint!: pulumi.Output; public readonly cloudAssetCustomEndpoint!: pulumi.Output; public readonly cloudBillingCustomEndpoint!: pulumi.Output; public readonly cloudBuildCustomEndpoint!: pulumi.Output; @@ -241,6 +242,7 @@ export class Provider extends pulumi.ProviderResource { resourceInputs["binaryAuthorizationCustomEndpoint"] = args ? args.binaryAuthorizationCustomEndpoint : undefined; resourceInputs["blockchainNodeEngineCustomEndpoint"] = args ? args.blockchainNodeEngineCustomEndpoint : undefined; resourceInputs["certificateManagerCustomEndpoint"] = args ? args.certificateManagerCustomEndpoint : undefined; + resourceInputs["chronicleCustomEndpoint"] = args ? args.chronicleCustomEndpoint : undefined; resourceInputs["cloudAssetCustomEndpoint"] = args ? args.cloudAssetCustomEndpoint : undefined; resourceInputs["cloudBillingCustomEndpoint"] = args ? args.cloudBillingCustomEndpoint : undefined; resourceInputs["cloudBuildCustomEndpoint"] = args ? args.cloudBuildCustomEndpoint : undefined; @@ -433,6 +435,7 @@ export interface ProviderArgs { binaryAuthorizationCustomEndpoint?: pulumi.Input; blockchainNodeEngineCustomEndpoint?: pulumi.Input; certificateManagerCustomEndpoint?: pulumi.Input; + chronicleCustomEndpoint?: pulumi.Input; cloudAssetCustomEndpoint?: pulumi.Input; cloudBillingCustomEndpoint?: pulumi.Input; cloudBuildCustomEndpoint?: pulumi.Input; diff --git a/sdk/nodejs/pubsub/subscription.ts b/sdk/nodejs/pubsub/subscription.ts index a363d1338f..c872a1b1fb 100644 --- a/sdk/nodejs/pubsub/subscription.ts +++ b/sdk/nodejs/pubsub/subscription.ts @@ -243,7 +243,7 @@ import * as utilities from "../utilities"; * cloudStorageConfig: { * bucket: example.name, * filenamePrefix: "pre-", - * filenameSuffix: "-_33395", + * filenameSuffix: "-_69391", * filenameDatetimeFormat: "YYYY-MM-DD/hh_mm_ssZ", * maxBytes: 1000, * maxDuration: "300s", @@ -280,7 +280,7 @@ import * as utilities from "../utilities"; * cloudStorageConfig: { * bucket: example.name, * filenamePrefix: "pre-", - * filenameSuffix: "-_76044", + * filenameSuffix: "-_8270", * filenameDatetimeFormat: "YYYY-MM-DD/hh_mm_ssZ", * maxBytes: 1000, * maxDuration: "300s", @@ -324,7 +324,7 @@ import * as utilities from "../utilities"; * cloudStorageConfig: { * bucket: example.name, * filenamePrefix: "pre-", - * filenameSuffix: "-_69391", + * filenameSuffix: "-_41150", * filenameDatetimeFormat: "YYYY-MM-DD/hh_mm_ssZ", * maxBytes: 1000, * maxDuration: "300s", diff --git a/sdk/nodejs/securesourcemanager/instance.ts b/sdk/nodejs/securesourcemanager/instance.ts index 29e8246395..0e77e83d40 100644 --- a/sdk/nodejs/securesourcemanager/instance.ts +++ b/sdk/nodejs/securesourcemanager/instance.ts @@ -37,24 +37,16 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const keyRing = new gcp.kms.KeyRing("key_ring", { - * name: "my-keyring", - * location: "us-central1", - * }); - * const cryptoKey = new gcp.kms.CryptoKey("crypto_key", { - * name: "my-key", - * keyRing: keyRing.id, - * }); * const project = gcp.organizations.getProject({}); * const cryptoKeyBinding = new gcp.kms.CryptoKeyIAMMember("crypto_key_binding", { - * cryptoKeyId: cryptoKey.id, + * cryptoKeyId: "my-key", * role: "roles/cloudkms.cryptoKeyEncrypterDecrypter", * member: project.then(project => `serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com`), * }); * const _default = new gcp.securesourcemanager.Instance("default", { * location: "us-central1", * instanceId: "my-instance", - * kmsKey: cryptoKey.id, + * kmsKey: "my-key", * }, { * dependsOn: [cryptoKeyBinding], * }); diff --git a/sdk/nodejs/spanner/instanceIAMBinding.ts b/sdk/nodejs/spanner/instanceIAMBinding.ts index fa5be50625..7f7b1873f1 100644 --- a/sdk/nodejs/spanner/instanceIAMBinding.ts +++ b/sdk/nodejs/spanner/instanceIAMBinding.ts @@ -160,6 +160,8 @@ export class InstanceIAMBinding extends pulumi.CustomResource { * * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * * **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 + * * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE * * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. * * **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. */ @@ -238,6 +240,8 @@ export interface InstanceIAMBindingState { * * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * * **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 + * * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE * * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. * * **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. */ @@ -271,6 +275,8 @@ export interface InstanceIAMBindingArgs { * * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * * **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 + * * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE * * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. * * **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. */ diff --git a/sdk/nodejs/spanner/instanceIAMMember.ts b/sdk/nodejs/spanner/instanceIAMMember.ts index 1493ab560b..5928f5f66e 100644 --- a/sdk/nodejs/spanner/instanceIAMMember.ts +++ b/sdk/nodejs/spanner/instanceIAMMember.ts @@ -160,6 +160,8 @@ export class InstanceIAMMember extends pulumi.CustomResource { * * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * * **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 + * * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE * * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. * * **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. */ @@ -238,6 +240,8 @@ export interface InstanceIAMMemberState { * * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * * **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 + * * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE * * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. * * **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. */ @@ -271,6 +275,8 @@ export interface InstanceIAMMemberArgs { * * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. * * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. * * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * * **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 + * * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE * * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. * * **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. */ diff --git a/sdk/nodejs/sql/databaseInstance.ts b/sdk/nodejs/sql/databaseInstance.ts index 3003e275c7..62d02d3cce 100644 --- a/sdk/nodejs/sql/databaseInstance.ts +++ b/sdk/nodejs/sql/databaseInstance.ts @@ -262,7 +262,7 @@ export class DatabaseInstance extends pulumi.CustomResource { /** * The MySQL, PostgreSQL or * SQL Server version to use. Supported values include `MYSQL_5_6`, - * `MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, + * `MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, * `POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`, * `SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`. * `SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`, @@ -477,7 +477,7 @@ export interface DatabaseInstanceState { /** * The MySQL, PostgreSQL or * SQL Server version to use. Supported values include `MYSQL_5_6`, - * `MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, + * `MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, * `POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`, * `SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`. * `SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`, @@ -606,7 +606,7 @@ export interface DatabaseInstanceArgs { /** * The MySQL, PostgreSQL or * SQL Server version to use. Supported values include `MYSQL_5_6`, - * `MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, + * `MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, * `POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`, * `SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`. * `SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`, diff --git a/sdk/nodejs/storage/folder.ts b/sdk/nodejs/storage/folder.ts new file mode 100644 index 0000000000..305deaf26a --- /dev/null +++ b/sdk/nodejs/storage/folder.ts @@ -0,0 +1,219 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "../utilities"; + +/** + * A Google Cloud Storage Folder. + * + * The Folder resource represents a folder in a Cloud Storage bucket with hierarchical namespace enabled + * + * To get more information about Folder, see: + * + * * [API documentation](https://cloud.google.com/storage/docs/json_api/v1/folders) + * * How-to Guides + * * [Official Documentation](https://cloud.google.com/storage/docs/folders-overview) + * + * ## Example Usage + * + * ### Storage Folder Basic + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const bucket = new gcp.storage.Bucket("bucket", { + * name: "my-bucket", + * location: "EU", + * uniformBucketLevelAccess: true, + * hierarchicalNamespace: { + * enabled: true, + * }, + * }); + * const folder = new gcp.storage.Folder("folder", { + * bucket: bucket.name, + * name: "parent-folder/", + * }); + * const subfolder = new gcp.storage.Folder("subfolder", { + * bucket: bucket.name, + * name: pulumi.interpolate`${folder.name}subfolder/`, + * }); + * ``` + * + * ## Import + * + * Folder can be imported using any of these accepted formats: + * + * * `{{bucket}}/folders/{{name}}` + * + * * `{{bucket}}/{{name}}` + * + * When using the `pulumi import` command, Folder can be imported using one of the formats above. For example: + * + * ```sh + * $ pulumi import gcp:storage/folder:Folder default {{bucket}}/folders/{{name}} + * ``` + * + * ```sh + * $ pulumi import gcp:storage/folder:Folder default {{bucket}}/{{name}} + * ``` + */ +export class Folder extends pulumi.CustomResource { + /** + * Get an existing Folder resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: FolderState, opts?: pulumi.CustomResourceOptions): Folder { + return new Folder(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'gcp:storage/folder:Folder'; + + /** + * Returns true if the given object is an instance of Folder. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is Folder { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === Folder.__pulumiType; + } + + /** + * The name of the bucket that contains the folder. + */ + public readonly bucket!: pulumi.Output; + /** + * The timestamp at which this folder was created. + */ + public /*out*/ readonly createTime!: pulumi.Output; + /** + * If set to true, items within folder if any will be force destroyed. + */ + public readonly forceDestroy!: pulumi.Output; + /** + * The metadata generation of the folder. + */ + public /*out*/ readonly metageneration!: pulumi.Output; + /** + * The name of the folder expressed as a path. Must include + * trailing '/'. For example, `example_dir/example_dir2/`, `example@#/`, `a-b/d-f/`. + * + * + * - - - + */ + public readonly name!: pulumi.Output; + /** + * The URI of the created resource. + */ + public /*out*/ readonly selfLink!: pulumi.Output; + /** + * The timestamp at which this folder was most recently updated. + */ + public /*out*/ readonly updateTime!: pulumi.Output; + + /** + * Create a Folder resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: FolderArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: FolderArgs | FolderState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as FolderState | undefined; + resourceInputs["bucket"] = state ? state.bucket : undefined; + resourceInputs["createTime"] = state ? state.createTime : undefined; + resourceInputs["forceDestroy"] = state ? state.forceDestroy : undefined; + resourceInputs["metageneration"] = state ? state.metageneration : undefined; + resourceInputs["name"] = state ? state.name : undefined; + resourceInputs["selfLink"] = state ? state.selfLink : undefined; + resourceInputs["updateTime"] = state ? state.updateTime : undefined; + } else { + const args = argsOrState as FolderArgs | undefined; + if ((!args || args.bucket === undefined) && !opts.urn) { + throw new Error("Missing required property 'bucket'"); + } + resourceInputs["bucket"] = args ? args.bucket : undefined; + resourceInputs["forceDestroy"] = args ? args.forceDestroy : undefined; + resourceInputs["name"] = args ? args.name : undefined; + resourceInputs["createTime"] = undefined /*out*/; + resourceInputs["metageneration"] = undefined /*out*/; + resourceInputs["selfLink"] = undefined /*out*/; + resourceInputs["updateTime"] = undefined /*out*/; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(Folder.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering Folder resources. + */ +export interface FolderState { + /** + * The name of the bucket that contains the folder. + */ + bucket?: pulumi.Input; + /** + * The timestamp at which this folder was created. + */ + createTime?: pulumi.Input; + /** + * If set to true, items within folder if any will be force destroyed. + */ + forceDestroy?: pulumi.Input; + /** + * The metadata generation of the folder. + */ + metageneration?: pulumi.Input; + /** + * The name of the folder expressed as a path. Must include + * trailing '/'. For example, `example_dir/example_dir2/`, `example@#/`, `a-b/d-f/`. + * + * + * - - - + */ + name?: pulumi.Input; + /** + * The URI of the created resource. + */ + selfLink?: pulumi.Input; + /** + * The timestamp at which this folder was most recently updated. + */ + updateTime?: pulumi.Input; +} + +/** + * The set of arguments for constructing a Folder resource. + */ +export interface FolderArgs { + /** + * The name of the bucket that contains the folder. + */ + bucket: pulumi.Input; + /** + * If set to true, items within folder if any will be force destroyed. + */ + forceDestroy?: pulumi.Input; + /** + * The name of the folder expressed as a path. Must include + * trailing '/'. For example, `example_dir/example_dir2/`, `example@#/`, `a-b/d-f/`. + * + * + * - - - + */ + name?: pulumi.Input; +} diff --git a/sdk/nodejs/storage/index.ts b/sdk/nodejs/storage/index.ts index a4f2b25c5e..90f5325d13 100644 --- a/sdk/nodejs/storage/index.ts +++ b/sdk/nodejs/storage/index.ts @@ -50,6 +50,11 @@ export type DefaultObjectAccessControl = import("./defaultObjectAccessControl"). export const DefaultObjectAccessControl: typeof import("./defaultObjectAccessControl").DefaultObjectAccessControl = null as any; utilities.lazyLoad(exports, ["DefaultObjectAccessControl"], () => require("./defaultObjectAccessControl")); +export { FolderArgs, FolderState } from "./folder"; +export type Folder = import("./folder").Folder; +export const Folder: typeof import("./folder").Folder = null as any; +utilities.lazyLoad(exports, ["Folder"], () => require("./folder")); + export { GetBucketArgs, GetBucketResult, GetBucketOutputArgs } from "./getBucket"; export const getBucket: typeof import("./getBucket").getBucket = null as any; export const getBucketOutput: typeof import("./getBucket").getBucketOutput = null as any; @@ -184,6 +189,8 @@ const _module = { return new DefaultObjectACL(name, undefined, { urn }) case "gcp:storage/defaultObjectAccessControl:DefaultObjectAccessControl": return new DefaultObjectAccessControl(name, undefined, { urn }) + case "gcp:storage/folder:Folder": + return new Folder(name, undefined, { urn }) case "gcp:storage/hmacKey:HmacKey": return new HmacKey(name, undefined, { urn }) case "gcp:storage/insightsReportConfig:InsightsReportConfig": @@ -220,6 +227,7 @@ pulumi.runtime.registerResourceModule("gcp", "storage/bucketIAMPolicy", _module) pulumi.runtime.registerResourceModule("gcp", "storage/bucketObject", _module) pulumi.runtime.registerResourceModule("gcp", "storage/defaultObjectACL", _module) pulumi.runtime.registerResourceModule("gcp", "storage/defaultObjectAccessControl", _module) +pulumi.runtime.registerResourceModule("gcp", "storage/folder", _module) pulumi.runtime.registerResourceModule("gcp", "storage/hmacKey", _module) pulumi.runtime.registerResourceModule("gcp", "storage/insightsReportConfig", _module) pulumi.runtime.registerResourceModule("gcp", "storage/managedFolder", _module) diff --git a/sdk/nodejs/storage/transferJob.ts b/sdk/nodejs/storage/transferJob.ts index a16ee41f8a..17f2ebc147 100644 --- a/sdk/nodejs/storage/transferJob.ts +++ b/sdk/nodejs/storage/transferJob.ts @@ -177,6 +177,12 @@ export class TransferJob extends pulumi.CustomResource { * is not provided, the provider project is used. */ public readonly project!: pulumi.Output; + /** + * Replication specification. Structure documented below. User should not configure `schedule`, `eventStream` with this argument. One of `transferSpec`, or `replicationSpec` must be specified. + * + * - - - + */ + public readonly replicationSpec!: pulumi.Output; /** * Schedule specification defining when the Transfer Job should be scheduled to start, end and what time to run. Structure documented below. Either `schedule` or `eventStream` must be set. */ @@ -186,11 +192,9 @@ export class TransferJob extends pulumi.CustomResource { */ public readonly status!: pulumi.Output; /** - * Transfer specification. Structure documented below. - * - * - - - + * Transfer specification. Structure documented below. One of `transferSpec`, or `replicationSpec` can be specified. */ - public readonly transferSpec!: pulumi.Output; + public readonly transferSpec!: pulumi.Output; /** * Create a TransferJob resource with the given unique name, arguments, and options. @@ -213,6 +217,7 @@ export class TransferJob extends pulumi.CustomResource { resourceInputs["name"] = state ? state.name : undefined; resourceInputs["notificationConfig"] = state ? state.notificationConfig : undefined; resourceInputs["project"] = state ? state.project : undefined; + resourceInputs["replicationSpec"] = state ? state.replicationSpec : undefined; resourceInputs["schedule"] = state ? state.schedule : undefined; resourceInputs["status"] = state ? state.status : undefined; resourceInputs["transferSpec"] = state ? state.transferSpec : undefined; @@ -221,14 +226,12 @@ export class TransferJob extends pulumi.CustomResource { if ((!args || args.description === undefined) && !opts.urn) { throw new Error("Missing required property 'description'"); } - if ((!args || args.transferSpec === undefined) && !opts.urn) { - throw new Error("Missing required property 'transferSpec'"); - } resourceInputs["description"] = args ? args.description : undefined; resourceInputs["eventStream"] = args ? args.eventStream : undefined; resourceInputs["name"] = args ? args.name : undefined; resourceInputs["notificationConfig"] = args ? args.notificationConfig : undefined; resourceInputs["project"] = args ? args.project : undefined; + resourceInputs["replicationSpec"] = args ? args.replicationSpec : undefined; resourceInputs["schedule"] = args ? args.schedule : undefined; resourceInputs["status"] = args ? args.status : undefined; resourceInputs["transferSpec"] = args ? args.transferSpec : undefined; @@ -278,6 +281,12 @@ export interface TransferJobState { * is not provided, the provider project is used. */ project?: pulumi.Input; + /** + * Replication specification. Structure documented below. User should not configure `schedule`, `eventStream` with this argument. One of `transferSpec`, or `replicationSpec` must be specified. + * + * - - - + */ + replicationSpec?: pulumi.Input; /** * Schedule specification defining when the Transfer Job should be scheduled to start, end and what time to run. Structure documented below. Either `schedule` or `eventStream` must be set. */ @@ -287,9 +296,7 @@ export interface TransferJobState { */ status?: pulumi.Input; /** - * Transfer specification. Structure documented below. - * - * - - - + * Transfer specification. Structure documented below. One of `transferSpec`, or `replicationSpec` can be specified. */ transferSpec?: pulumi.Input; } @@ -319,6 +326,12 @@ export interface TransferJobArgs { * is not provided, the provider project is used. */ project?: pulumi.Input; + /** + * Replication specification. Structure documented below. User should not configure `schedule`, `eventStream` with this argument. One of `transferSpec`, or `replicationSpec` must be specified. + * + * - - - + */ + replicationSpec?: pulumi.Input; /** * Schedule specification defining when the Transfer Job should be scheduled to start, end and what time to run. Structure documented below. Either `schedule` or `eventStream` must be set. */ @@ -328,9 +341,7 @@ export interface TransferJobArgs { */ status?: pulumi.Input; /** - * Transfer specification. Structure documented below. - * - * - - - + * Transfer specification. Structure documented below. One of `transferSpec`, or `replicationSpec` can be specified. */ - transferSpec: pulumi.Input; + transferSpec?: pulumi.Input; } diff --git a/sdk/nodejs/tsconfig.json b/sdk/nodejs/tsconfig.json index 333d185a47..d1d7a2998f 100644 --- a/sdk/nodejs/tsconfig.json +++ b/sdk/nodejs/tsconfig.json @@ -248,6 +248,8 @@ "certificatemanager/getCertificates.ts", "certificatemanager/index.ts", "certificatemanager/trustConfig.ts", + "chronicle/index.ts", + "chronicle/watchlist.ts", "cloudasset/folderFeed.ts", "cloudasset/getResourcesSearchAll.ts", "cloudasset/getSearchAllResources.ts", @@ -854,6 +856,7 @@ "gkehub/featureIamPolicy.ts", "gkehub/featureMembership.ts", "gkehub/fleet.ts", + "gkehub/getFeature.ts", "gkehub/getFeatureIamPolicy.ts", "gkehub/getMembershipBinding.ts", "gkehub/getMembershipIamPolicy.ts", @@ -875,6 +878,7 @@ "gkeonprem/bareMetalCluster.ts", "gkeonprem/bareMetalNodePool.ts", "gkeonprem/index.ts", + "gkeonprem/vmwareAdminCluster.ts", "gkeonprem/vmwareCluster.ts", "gkeonprem/vmwareNodePool.ts", "healthcare/consentStore.ts", @@ -990,6 +994,7 @@ "kms/ekmConnectionIamBinding.ts", "kms/ekmConnectionIamMember.ts", "kms/ekmConnectionIamPolicy.ts", + "kms/getAutokeyConfig.ts", "kms/getCryptoKeyIamPolicy.ts", "kms/getCryptoKeyLatestVersion.ts", "kms/getCryptoKeyVersions.ts", @@ -1001,6 +1006,7 @@ "kms/getKMSSecret.ts", "kms/getKMSSecretAsymmetric.ts", "kms/getKMSSecretCiphertext.ts", + "kms/getKeyHandle.ts", "kms/getKeyRingIamPolicy.ts", "kms/getKeyRings.ts", "kms/index.ts", @@ -1107,6 +1113,8 @@ "networksecurity/index.ts", "networksecurity/interceptDeployment.ts", "networksecurity/interceptDeploymentGroup.ts", + "networksecurity/interceptEndpointGroup.ts", + "networksecurity/interceptEndpointGroupAssociation.ts", "networksecurity/mirroringDeployment.ts", "networksecurity/mirroringDeploymentGroup.ts", "networksecurity/mirroringEndpointGroup.ts", @@ -1404,6 +1412,7 @@ "storage/bucketObject.ts", "storage/defaultObjectACL.ts", "storage/defaultObjectAccessControl.ts", + "storage/folder.ts", "storage/getBucket.ts", "storage/getBucketIamPolicy.ts", "storage/getBucketObject.ts", diff --git a/sdk/nodejs/types/input.ts b/sdk/nodejs/types/input.ts index d4bf8dee7a..f9389e41e7 100644 --- a/sdk/nodejs/types/input.ts +++ b/sdk/nodejs/types/input.ts @@ -152,7 +152,7 @@ export namespace accesscontextmanager { */ network: pulumi.Input; /** - * CIDR block IP subnetwork specification. Must be IPv4. + * A list of CIDR block IP subnetwork specification. Must be IPv4. */ vpcIpSubnetworks?: pulumi.Input[]>; } @@ -4811,6 +4811,24 @@ export namespace artifactregistry { */ repository?: pulumi.Input; } + + export interface RepositoryVulnerabilityScanningConfig { + /** + * This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository. + * Possible values are: `INHERITED`, `DISABLED`. + */ + enablementConfig?: pulumi.Input; + /** + * (Output) + * This field returns whether scanning is active for this repository. + */ + enablementState?: pulumi.Input; + /** + * (Output) + * This provides an explanation for the state of scanning on this repository. + */ + enablementStateReason?: pulumi.Input; + } } export namespace assuredworkloads { @@ -5444,6 +5462,12 @@ export namespace bigquery { } export interface DatasetAccess { + /** + * Condition for the binding. If CEL expression in this field is true, this + * access binding will be considered. + * Structure is documented below. + */ + condition?: pulumi.Input; /** * Grants all resources of particular types in a particular dataset read access to the current dataset. * Structure is documented below. @@ -5528,6 +5552,28 @@ export namespace bigquery { projectId: pulumi.Input; } + export interface DatasetAccessCondition { + /** + * Description of the expression. This is a longer text which describes the expression, + * e.g. when hovered over it in a UI. + */ + description?: pulumi.Input; + /** + * Textual representation of an expression in Common Expression Language syntax. + */ + expression: pulumi.Input; + /** + * String indicating the location of the expression for error reporting, e.g. a file + * name and a position in the file. + */ + location?: pulumi.Input; + /** + * 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. + */ + title?: pulumi.Input; + } + export interface DatasetAccessDataset { /** * The dataset this entry applies to @@ -6391,6 +6437,55 @@ export namespace bigquery { kmsKeyVersion?: pulumi.Input; } + export interface 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 connectionId can have the form .. or projects//locations//connections/. + */ + connectionId?: pulumi.Input; + /** + * 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. + */ + parameters?: pulumi.Input<{[key: string]: pulumi.Input}>; + /** + * A storage descriptor containing information about the physical storage of this table. + */ + storageDescriptor?: pulumi.Input; + } + + export interface 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. + */ + inputFormat?: pulumi.Input; + /** + * 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. + */ + locationUri?: pulumi.Input; + /** + * 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. + */ + outputFormat?: pulumi.Input; + /** + * Serializer and deserializer information. + */ + serdeInfo?: pulumi.Input; + } + + export interface TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo { + /** + * Name of the SerDe. The maximum length is 256 characters. + */ + name?: pulumi.Input; + /** + * Key-value pairs that define the initialization parameters for the serialization library. Maximum size 10 Kib. + */ + parameters?: pulumi.Input<{[key: string]: pulumi.Input}>; + /** + * 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. + */ + serializationLibrary: pulumi.Input; + } + export interface TableExternalDataConfiguration { /** * Let BigQuery try to autodetect the schema @@ -9770,6 +9865,40 @@ export namespace certificatemanager { } } +export namespace chronicle { + export interface WatchlistEntityCount { + /** + * (Output) + * Output only. Count of asset type entities in the watchlist. + */ + asset?: pulumi.Input; + /** + * (Output) + * Output only. Count of user type entities in the watchlist. + */ + user?: pulumi.Input; + } + + export interface WatchlistEntityPopulationMechanism { + /** + * Entities are added manually. + * + * - - - + */ + manual?: pulumi.Input; + } + + export interface WatchlistEntityPopulationMechanismManual { + } + + export interface WatchlistWatchlistUserPreferences { + /** + * Optional. Whether the watchlist is pinned on the dashboard. + */ + pinned?: pulumi.Input; + } +} + export namespace cloudasset { export interface FolderFeedCondition { /** @@ -14615,7 +14744,8 @@ export namespace cloudrunv2 { export interface 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. */ maxInstanceCount?: pulumi.Input; /** @@ -15387,10 +15517,25 @@ export namespace composer { } export interface EnvironmentConfigDataRetentionConfig { + /** + * Optional. The configuration setting for database retention. + */ + airflowMetadataRetentionConfigs?: pulumi.Input[]>; /** * Optional. The configuration setting for Task Logs. */ - taskLogsRetentionConfigs: pulumi.Input[]>; + taskLogsRetentionConfigs?: pulumi.Input[]>; + } + + export interface EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig { + /** + * How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer. + */ + retentionDays?: pulumi.Input; + /** + * Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer. + */ + retentionMode?: pulumi.Input; } export interface EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig { @@ -17990,7 +18135,7 @@ export namespace compute { */ resourceManagerTags?: pulumi.Input<{[key: string]: pulumi.Input}>; /** - * A list of selfLinks 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 selfLinks 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. */ resourcePolicies?: pulumi.Input; /** @@ -18352,6 +18497,10 @@ export namespace compute { * Specifies if the instance should be restarted if it was terminated by Compute Engine (not a user). */ automaticRestart?: pulumi.Input; + /** + * Specifies the availability domain, which this instance should be scheduled on. + */ + availabilityDomain?: pulumi.Input; /** * 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. */ @@ -18810,6 +18959,10 @@ export namespace compute { * Specifies if the instance should be restarted if it was terminated by Compute Engine (not a user). */ automaticRestart?: pulumi.Input; + /** + * Specifies the availability domain, which this instance should be scheduled on. + */ + availabilityDomain?: pulumi.Input; /** * 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. */ @@ -19425,6 +19578,10 @@ export namespace compute { * Defaults to true. */ automaticRestart?: pulumi.Input; + /** + * 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. + */ + availabilityDomain?: pulumi.Input; /** * 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. */ @@ -19978,6 +20135,10 @@ export namespace compute { * terminated by a user). This defaults to true. */ automaticRestart?: pulumi.Input; + /** + * 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. + */ + availabilityDomain?: pulumi.Input; /** * 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. */ @@ -23116,6 +23277,10 @@ export namespace compute { * terminated by a user). This defaults to true. */ automaticRestart?: pulumi.Input; + /** + * 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. + */ + availabilityDomain?: pulumi.Input; /** * 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. */ @@ -26353,7 +26518,7 @@ export namespace compute { */ nanos?: pulumi.Input; /** - * 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. */ seconds: pulumi.Input; } @@ -26361,13 +26526,13 @@ export namespace compute { export interface 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. */ errors?: pulumi.Input[]>; /** * (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. */ lastAttempts?: pulumi.Input[]>; @@ -26376,7 +26541,7 @@ export namespace compute { export interface 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. */ errors?: pulumi.Input[]>; @@ -26385,18 +26550,18 @@ export namespace compute { export interface ResizeRequestStatusErrorError { /** * (Output) - * [Output Only] The error type identifier for this error. + * The error type identifier for this error. */ code?: pulumi.Input; /** * (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. */ errorDetails?: pulumi.Input[]>; /** * (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. */ location?: pulumi.Input; /** @@ -26409,25 +26574,25 @@ export namespace compute { export interface ResizeRequestStatusErrorErrorErrorDetail { /** * (Output) - * [Output Only] + * A nested object resource. * Structure is documented below. */ errorInfos?: pulumi.Input[]>; /** * (Output) - * [Output Only] + * A nested object resource. * Structure is documented below. */ helps?: pulumi.Input[]>; /** * (Output) - * [Output Only] + * A nested object resource. * Structure is documented below. */ localizedMessages?: pulumi.Input[]>; /** * (Output) - * [Output Only] + * A nested object resource. * Structure is documented below. */ quotaInfos?: pulumi.Input[]>; @@ -26436,18 +26601,17 @@ export namespace compute { export interface 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". */ domain?: pulumi.Input; /** * (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. */ metadatas?: pulumi.Input<{[key: string]: pulumi.Input}>; /** * (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. */ reason?: pulumi.Input; } @@ -26455,7 +26619,7 @@ export namespace compute { export interface ResizeRequestStatusErrorErrorErrorDetailHelp { /** * (Output) - * [Output Only] + * A nested object resource. * Structure is documented below. */ links?: pulumi.Input[]>; @@ -26522,7 +26686,7 @@ export namespace compute { export interface 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. */ errors?: pulumi.Input[]>; @@ -26531,7 +26695,7 @@ export namespace compute { export interface 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. */ errors?: pulumi.Input[]>; @@ -26540,18 +26704,18 @@ export namespace compute { export interface ResizeRequestStatusLastAttemptErrorError { /** * (Output) - * [Output Only] The error type identifier for this error. + * The error type identifier for this error. */ code?: pulumi.Input; /** * (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. */ errorDetails?: pulumi.Input[]>; /** * (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. */ location?: pulumi.Input; /** @@ -26564,25 +26728,25 @@ export namespace compute { export interface ResizeRequestStatusLastAttemptErrorErrorErrorDetail { /** * (Output) - * [Output Only] + * A nested object resource. * Structure is documented below. */ errorInfos?: pulumi.Input[]>; /** * (Output) - * [Output Only] + * A nested object resource. * Structure is documented below. */ helps?: pulumi.Input[]>; /** * (Output) - * [Output Only] + * A nested object resource. * Structure is documented below. */ localizedMessages?: pulumi.Input[]>; /** * (Output) - * [Output Only] + * A nested object resource. * Structure is documented below. */ quotaInfos?: pulumi.Input[]>; @@ -26591,18 +26755,17 @@ export namespace compute { export interface 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". */ domain?: pulumi.Input; /** * (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. */ metadatas?: pulumi.Input<{[key: string]: pulumi.Input}>; /** * (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. */ reason?: pulumi.Input; } @@ -26610,7 +26773,7 @@ export namespace compute { export interface ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp { /** * (Output) - * [Output Only] + * A nested object resource. * Structure is documented below. */ links?: pulumi.Input[]>; @@ -46222,11 +46385,19 @@ export namespace datastream { } export interface StreamSourceConfigMysqlSourceConfig { + /** + * CDC reader reads from binary logs replication cdc method. + */ + binaryLogPosition?: pulumi.Input; /** * MySQL objects to exclude from the stream. * Structure is documented below. */ excludeObjects?: pulumi.Input; + /** + * CDC reader reads from gtid based replication. + */ + gtid?: pulumi.Input; /** * MySQL objects to retrieve from the source. * Structure is documented below. @@ -46244,6 +46415,9 @@ export namespace datastream { maxConcurrentCdcTasks?: pulumi.Input; } + export interface StreamSourceConfigMysqlSourceConfigBinaryLogPosition { + } + export interface StreamSourceConfigMysqlSourceConfigExcludeObjects { /** * MySQL databases on the server @@ -46309,6 +46483,9 @@ export namespace datastream { primaryKey?: pulumi.Input; } + export interface StreamSourceConfigMysqlSourceConfigGtid { + } + export interface StreamSourceConfigMysqlSourceConfigIncludeObjects { /** * MySQL databases on the server @@ -47129,7 +47306,7 @@ export namespace diagflow { */ noSpeechTimeout?: pulumi.Input; /** - * Use timeout based endpointing, interpreting endpointer sensitivy as seconds of timeout value. + * Use timeout based endpointing, interpreting endpointer sensitivity as seconds of timeout value. */ useTimeoutBasedEndpointing?: pulumi.Input; } @@ -51453,7 +51630,7 @@ export namespace firestore { * 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. */ kmsKeyName: pulumi.Input; @@ -54966,80 +55143,749 @@ export namespace gkeonprem { type?: pulumi.Input; } - export interface VMwareClusterStorage { - /** - * Whether or not to deploy vSphere CSI components in the VMware User Cluster. - * Enabled by default. - */ - vsphereCsiDisabled: pulumi.Input; - } - - export interface VMwareClusterUpgradePolicy { - /** - * Controls whether the upgrade applies to the control plane only. - */ - controlPlaneOnly?: pulumi.Input; - } - - export interface VMwareClusterValidationCheck { - /** - * (Output) - * Options used for the validation check. - */ - options?: pulumi.Input; + export interface VMwareClusterStorage { + /** + * Whether or not to deploy vSphere CSI components in the VMware User Cluster. + * Enabled by default. + */ + vsphereCsiDisabled: pulumi.Input; + } + + export interface VMwareClusterUpgradePolicy { + /** + * Controls whether the upgrade applies to the control plane only. + */ + controlPlaneOnly?: pulumi.Input; + } + + export interface VMwareClusterValidationCheck { + /** + * (Output) + * Options used for the validation check. + */ + options?: pulumi.Input; + /** + * (Output) + * The scenario when the preflight checks were run.. + */ + scenario?: pulumi.Input; + /** + * (Output) + * Specifies the detailed validation check status + * Structure is documented below. + */ + statuses?: pulumi.Input[]>; + } + + export interface VMwareClusterValidationCheckStatus { + /** + * (Output) + * Individual checks which failed as part of the Preflight check execution. + * Structure is documented below. + */ + results?: pulumi.Input[]>; + } + + export interface VMwareClusterValidationCheckStatusResult { + /** + * (Output) + * The category of the validation. + */ + category?: pulumi.Input; + /** + * (Output) + * The description of the validation check. + */ + description?: pulumi.Input; + /** + * (Output) + * Detailed failure information, which might be unformatted. + */ + details?: pulumi.Input; + /** + * (Output) + * Options used for the validation check. + */ + options?: pulumi.Input; + /** + * (Output) + * Machine-readable message indicating details about last transition. + */ + reason?: pulumi.Input; + } + + export interface VMwareClusterVcenter { + /** + * (Output) + * The vCenter IP address. + */ + address?: pulumi.Input; + /** + * Contains the vCenter CA certificate public key for SSL verification. + */ + caCertData?: pulumi.Input; + /** + * The name of the vCenter cluster for the user cluster. + */ + cluster?: pulumi.Input; + /** + * The name of the vCenter datacenter for the user cluster. + */ + datacenter?: pulumi.Input; + /** + * The name of the vCenter datastore for the user cluster. + */ + datastore?: pulumi.Input; + /** + * The name of the vCenter folder for the user cluster. + */ + folder?: pulumi.Input; + /** + * The name of the vCenter resource pool for the user cluster. + */ + resourcePool?: pulumi.Input; + /** + * The name of the vCenter storage policy for the user cluster. + */ + storagePolicyName?: pulumi.Input; + } + + export interface VMwareNodePoolConfig { + /** + * VMware disk size to be used during creation. + */ + bootDiskSizeGb?: pulumi.Input; + /** + * The number of CPUs for each node in the node pool. + */ + cpus?: pulumi.Input; + /** + * Allow node pool traffic to be load balanced. Only works for clusters with + * MetalLB load balancers. + */ + enableLoadBalancer?: pulumi.Input; + /** + * The OS image name in vCenter, only valid when using Windows. + */ + image?: pulumi.Input; + /** + * The OS image to be used for each node in a node pool. + * Currently `cos`, `cosCgv2`, `ubuntu`, `ubuntuCgv2`, `ubuntuContainerd` and `windows` are supported. + */ + imageType: pulumi.Input; + /** + * The map of Kubernetes labels (key/value pairs) to be applied to each node. + * These will added in addition to any default label(s) that + * Kubernetes may apply to the node. + * In case of conflict in label keys, the applied set may differ depending on + * the Kubernetes version -- it's best to assume the behavior is undefined + * and conflicts should be avoided. + */ + labels?: pulumi.Input<{[key: string]: pulumi.Input}>; + /** + * The megabytes of memory for each node in the node pool. + */ + memoryMb?: pulumi.Input; + /** + * The number of nodes in the node pool. + */ + replicas?: pulumi.Input; + /** + * The initial taints assigned to nodes of this node pool. + * Structure is documented below. + */ + taints?: pulumi.Input[]>; + /** + * Specifies the vSphere config for node pool. + * Structure is documented below. + */ + vsphereConfig?: pulumi.Input; + } + + export interface VMwareNodePoolConfigTaint { + /** + * Available taint effects. + * Possible values are: `EFFECT_UNSPECIFIED`, `NO_SCHEDULE`, `PREFER_NO_SCHEDULE`, `NO_EXECUTE`. + */ + effect?: pulumi.Input; + /** + * Key associated with the effect. + */ + key: pulumi.Input; + /** + * Value associated with the effect. + */ + value: pulumi.Input; + } + + export interface VMwareNodePoolConfigVsphereConfig { + /** + * The name of the vCenter datastore. Inherited from the user cluster. + */ + datastore?: pulumi.Input; + /** + * Vsphere host groups to apply to all VMs in the node pool + */ + hostGroups?: pulumi.Input[]>; + /** + * Tags to apply to VMs. + * Structure is documented below. + */ + tags?: pulumi.Input[]>; + } + + export interface VMwareNodePoolConfigVsphereConfigTag { + /** + * The Vsphere tag category. + */ + category?: pulumi.Input; + /** + * The Vsphere tag name. + * + * - - - + */ + tag?: pulumi.Input; + } + + export interface VMwareNodePoolNodePoolAutoscaling { + /** + * Maximum number of replicas in the NodePool. + */ + maxReplicas: pulumi.Input; + /** + * Minimum number of replicas in the NodePool. + */ + minReplicas: pulumi.Input; + } + + export interface VMwareNodePoolStatus { + /** + * (Output) + * ResourceConditions provide a standard mechanism for higher-level status reporting from user cluster controller. + * Structure is documented below. + */ + conditions?: pulumi.Input[]>; + /** + * (Output) + * Human-friendly representation of the error message from the user cluster + * controller. The error message can be temporary as the user cluster + * controller creates a cluster or node pool. If the error message persists + * for a longer period of time, it can be used to surface error message to + * indicate real problems requiring user intervention. + */ + errorMessage?: pulumi.Input; + } + + export interface VMwareNodePoolStatusCondition { + /** + * (Output) + * Last time the condition transit from one status to another. + */ + lastTransitionTime?: pulumi.Input; + /** + * (Output) + * Human-readable message indicating details about last transition. + */ + message?: pulumi.Input; + /** + * (Output) + * Machine-readable message indicating details about last transition. + */ + reason?: pulumi.Input; + /** + * (Output) + * The lifecycle state of the condition. + */ + state?: pulumi.Input; + /** + * (Output) + * Type of the condition. + * (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + */ + type?: pulumi.Input; + } + + export interface VmwareAdminClusterAddonNode { + /** + * Specifies auto resize config. + * Structure is documented below. + */ + autoResizeConfig?: pulumi.Input; + } + + export interface VmwareAdminClusterAddonNodeAutoResizeConfig { + /** + * Whether to enable controle plane node auto resizing. + */ + enabled: pulumi.Input; + } + + export interface VmwareAdminClusterAntiAffinityGroups { + /** + * Spread nodes across at least three physical hosts (requires at least three + * hosts). + * Enabled by default. + */ + aagConfigDisabled: pulumi.Input; + } + + export interface VmwareAdminClusterAuthorization { + /** + * Users that will be granted the cluster-admin role on the cluster, providing + * full access to the cluster. + * Structure is documented below. + */ + viewerUsers?: pulumi.Input[]>; + } + + export interface VmwareAdminClusterAuthorizationViewerUser { + /** + * The name of the user, e.g. `my-gcp-id@gmail.com`. + */ + username: pulumi.Input; + } + + export interface VmwareAdminClusterAutoRepairConfig { + /** + * Whether auto repair is enabled. + */ + enabled: pulumi.Input; + } + + export interface VmwareAdminClusterControlPlaneNode { + /** + * The number of vCPUs for the control-plane node of the admin cluster. + */ + cpus?: pulumi.Input; + /** + * The number of mebibytes of memory for the control-plane node of the admin cluster. + */ + memory?: pulumi.Input; + /** + * The number of control plane nodes for this VMware admin cluster. + */ + replicas?: pulumi.Input; + } + + export interface VmwareAdminClusterFleet { + /** + * (Output) + * The name of the managed Fleet Membership resource associated to this cluster. + * Membership names are formatted as + * `projects//locations//memberships/`. + */ + membership?: pulumi.Input; + } + + export interface VmwareAdminClusterLoadBalancer { + /** + * Configuration for F5 Big IP typed load balancers. + * Structure is documented below. + */ + f5Config?: pulumi.Input; + /** + * Manually configured load balancers. + * Structure is documented below. + */ + manualLbConfig?: pulumi.Input; + /** + * Metal LB load balancers. + * Structure is documented below. + */ + metalLbConfig?: pulumi.Input; + /** + * Specified the VMware Load Balancer Config + * Structure is documented below. + */ + vipConfig: pulumi.Input; + } + + export interface VmwareAdminClusterLoadBalancerF5Config { + /** + * The load balancer's IP address. + */ + address?: pulumi.Input; + /** + * 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'. + */ + partition?: pulumi.Input; + /** + * The pool name. Only necessary, if using SNAT. + */ + snatPool?: pulumi.Input; + } + + export interface VmwareAdminClusterLoadBalancerManualLbConfig { + /** + * NodePort for add-ons server in the admin cluster. + */ + addonsNodePort?: pulumi.Input; + /** + * NodePort for control plane service. The Kubernetes API server in the admin + * cluster is implemented as a Service of type NodePort (ex. 30968). + */ + controlPlaneNodePort?: pulumi.Input; + /** + * NodePort for ingress service's http. The ingress service in the admin + * cluster is implemented as a Service of type NodePort (ex. 32527). + */ + ingressHttpNodePort?: pulumi.Input; + /** + * NodePort for ingress service's https. The ingress service in the admin + * cluster is implemented as a Service of type NodePort (ex. 30139). + */ + ingressHttpsNodePort?: pulumi.Input; + /** + * NodePort for konnectivity server service running as a sidecar in each + * kube-apiserver pod (ex. 30564). + */ + konnectivityServerNodePort?: pulumi.Input; + } + + export interface VmwareAdminClusterLoadBalancerMetalLbConfig { + /** + * Metal LB is enabled. + */ + enabled?: pulumi.Input; + } + + export interface VmwareAdminClusterLoadBalancerVipConfig { + /** + * The VIP to configure the load balancer for add-ons. + * + * The `f5Config` block supports: + */ + addonsVip?: pulumi.Input; + /** + * The VIP which you previously set aside for the Kubernetes + * API of this VMware Admin Cluster. + */ + controlPlaneVip: pulumi.Input; + } + + export interface VmwareAdminClusterNetworkConfig { + /** + * Configuration settings for a DHCP IP configuration. + * Structure is documented below. + */ + dhcpIpConfig?: pulumi.Input; + /** + * Configuration for HA admin cluster control plane. + * Structure is documented below. + */ + haControlPlaneConfig?: pulumi.Input; + /** + * Represents common network settings irrespective of the host's IP address. + * Structure is documented below. + */ + hostConfig?: pulumi.Input; + /** + * 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. + */ + podAddressCidrBlocks: pulumi.Input[]>; + /** + * 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. + */ + serviceAddressCidrBlocks: pulumi.Input[]>; + /** + * Configuration settings for a static IP configuration. + * Structure is documented below. + */ + staticIpConfig?: pulumi.Input; + /** + * vcenter_network specifies vCenter network name. + */ + vcenterNetwork?: pulumi.Input; + } + + export interface VmwareAdminClusterNetworkConfigDhcpIpConfig { + /** + * enabled is a flag to mark if DHCP IP allocation is + * used for VMware admin clusters. + */ + enabled: pulumi.Input; + } + + export interface VmwareAdminClusterNetworkConfigHaControlPlaneConfig { + /** + * Static IP addresses for the control plane nodes. + * Structure is documented below. + */ + controlPlaneIpBlock?: pulumi.Input; + } + + export interface VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock { + /** + * The network gateway used by the VMware Admin Cluster. + */ + gateway: pulumi.Input; + /** + * The node's network configurations used by the VMware Admin Cluster. + * Structure is documented below. + */ + ips: pulumi.Input[]>; + /** + * The netmask used by the VMware Admin Cluster. + */ + netmask: pulumi.Input; + } + + export interface VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp { + /** + * Hostname of the machine. VM's name will be used if this field is empty. + * + * - - - + */ + hostname?: pulumi.Input; + /** + * IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + */ + ip: pulumi.Input; + } + + export interface VmwareAdminClusterNetworkConfigHostConfig { + /** + * DNS search domains. + */ + dnsSearchDomains?: pulumi.Input[]>; + /** + * DNS servers. + */ + dnsServers?: pulumi.Input[]>; + /** + * NTP servers. + */ + ntpServers?: pulumi.Input[]>; + } + + export interface VmwareAdminClusterNetworkConfigStaticIpConfig { + /** + * Represents the configuration values for static IP allocation to nodes. + * Structure is documented below. + */ + ipBlocks?: pulumi.Input[]>; + } + + export interface VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock { + /** + * The network gateway used by the VMware Admin Cluster. + */ + gateway: pulumi.Input; + /** + * The node's network configurations used by the VMware Admin Cluster. + * Structure is documented below. + */ + ips: pulumi.Input[]>; + /** + * The netmask used by the VMware Admin Cluster. + */ + netmask: pulumi.Input; + } + + export interface VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp { + /** + * Hostname of the machine. VM's name will be used if this field is empty. + * + * - - - + */ + hostname?: pulumi.Input; + /** + * IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + */ + ip: pulumi.Input; + } + + export interface VmwareAdminClusterPlatformConfig { + /** + * (Output) + * The list of bundles installed in the admin cluster. + * Structure is documented below. + */ + bundles?: pulumi.Input[]>; + /** + * (Output) + * The platform version e.g. 1.13.2. + */ + platformVersion?: pulumi.Input; + /** + * The required platform version e.g. 1.13.1. + * If the current platform version is lower than the target version, + * the platform version will be updated to the target version. + * If the target version is not installed in the platform + * (bundle versions), download the target version bundle. + */ + requiredPlatformVersion?: pulumi.Input; + /** + * (Output) + * ResourceStatus representing detailed cluster state. + * Structure is documented below. + * + * + * The `status` block contains: + */ + statuses?: pulumi.Input[]>; + } + + export interface VmwareAdminClusterPlatformConfigBundle { + /** + * ResourceStatus representing detailed cluster state. + * Structure is documented below. + */ + statuses?: pulumi.Input[]>; + /** + * The version of the bundle. + */ + version?: pulumi.Input; + } + + export interface VmwareAdminClusterPlatformConfigBundleStatus { + /** + * (Output) + * ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + * Structure is documented below. + */ + conditions?: pulumi.Input[]>; + /** + * (Output) + * Human-friendly representation of the error message from the admin cluster + * controller. The error message can be temporary as the admin cluster + * controller creates a cluster or node pool. If the error message persists + * for a longer period of time, it can be used to surface error message to + * indicate real problems requiring user intervention. + */ + errorMessage?: pulumi.Input; + } + + export interface VmwareAdminClusterPlatformConfigBundleStatusCondition { + /** + * (Output) + * Last time the condition transit from one status to another. + */ + lastTransitionTime?: pulumi.Input; + /** + * (Output) + * Human-readable message indicating details about last transition. + */ + message?: pulumi.Input; + /** + * (Output) + * Machine-readable message indicating details about last transition. + */ + reason?: pulumi.Input; + /** + * (Output) + * The lifecycle state of the condition. + */ + state?: pulumi.Input; + /** + * (Output) + * Type of the condition. + * (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + */ + type?: pulumi.Input; + } + + export interface VmwareAdminClusterPlatformConfigStatus { + /** + * (Output) + * ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + * Structure is documented below. + */ + conditions?: pulumi.Input[]>; + /** + * (Output) + * Human-friendly representation of the error message from the admin cluster + * controller. The error message can be temporary as the admin cluster + * controller creates a cluster or node pool. If the error message persists + * for a longer period of time, it can be used to surface error message to + * indicate real problems requiring user intervention. + */ + errorMessage?: pulumi.Input; + } + + export interface VmwareAdminClusterPlatformConfigStatusCondition { + /** + * (Output) + * Last time the condition transit from one status to another. + */ + lastTransitionTime?: pulumi.Input; + /** + * (Output) + * Human-readable message indicating details about last transition. + */ + message?: pulumi.Input; + /** + * (Output) + * Machine-readable message indicating details about last transition. + */ + reason?: pulumi.Input; + /** + * (Output) + * The lifecycle state of the condition. + */ + state?: pulumi.Input; + /** + * (Output) + * Type of the condition. + * (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + */ + type?: pulumi.Input; + } + + export interface VmwareAdminClusterStatus { /** * (Output) - * The scenario when the preflight checks were run.. - */ - scenario?: pulumi.Input; - /** - * (Output) - * Specifies the detailed validation check status + * ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. * Structure is documented below. */ - statuses?: pulumi.Input[]>; - } - - export interface VMwareClusterValidationCheckStatus { + conditions?: pulumi.Input[]>; /** * (Output) - * Individual checks which failed as part of the Preflight check execution. - * Structure is documented below. + * Human-friendly representation of the error message from the admin cluster + * controller. The error message can be temporary as the admin cluster + * controller creates a cluster or node pool. If the error message persists + * for a longer period of time, it can be used to surface error message to + * indicate real problems requiring user intervention. */ - results?: pulumi.Input[]>; + errorMessage?: pulumi.Input; } - export interface VMwareClusterValidationCheckStatusResult { + export interface VmwareAdminClusterStatusCondition { /** * (Output) - * The category of the validation. + * Last time the condition transit from one status to another. */ - category?: pulumi.Input; + lastTransitionTime?: pulumi.Input; /** * (Output) - * The description of the validation check. + * Human-readable message indicating details about last transition. */ - description?: pulumi.Input; + message?: pulumi.Input; /** * (Output) - * Detailed failure information, which might be unformatted. + * Machine-readable message indicating details about last transition. */ - details?: pulumi.Input; + reason?: pulumi.Input; /** * (Output) - * Options used for the validation check. + * The lifecycle state of the condition. */ - options?: pulumi.Input; + state?: pulumi.Input; /** * (Output) - * Machine-readable message indicating details about last transition. + * Type of the condition. + * (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) */ - reason?: pulumi.Input; + type?: pulumi.Input; } - export interface VMwareClusterVcenter { + export interface VmwareAdminClusterVcenter { /** - * (Output) * The vCenter IP address. */ address?: pulumi.Input; @@ -55048,23 +55894,27 @@ export namespace gkeonprem { */ caCertData?: pulumi.Input; /** - * The name of the vCenter cluster for the user cluster. + * The name of the vCenter cluster for the admin cluster. */ cluster?: pulumi.Input; /** - * The name of the vCenter datacenter for the user cluster. + * The name of the virtual machine disk (VMDK) for the admin cluster. + */ + dataDisk?: pulumi.Input; + /** + * The name of the vCenter datacenter for the admin cluster. */ datacenter?: pulumi.Input; /** - * The name of the vCenter datastore for the user cluster. + * The name of the vCenter datastore for the admin cluster. */ datastore?: pulumi.Input; /** - * The name of the vCenter folder for the user cluster. + * The name of the vCenter folder for the admin cluster. */ folder?: pulumi.Input; /** - * The name of the vCenter resource pool for the user cluster. + * The name of the vCenter resource pool for the admin cluster. */ resourcePool?: pulumi.Input; /** @@ -55072,161 +55922,6 @@ export namespace gkeonprem { */ storagePolicyName?: pulumi.Input; } - - export interface VMwareNodePoolConfig { - /** - * VMware disk size to be used during creation. - */ - bootDiskSizeGb?: pulumi.Input; - /** - * The number of CPUs for each node in the node pool. - */ - cpus?: pulumi.Input; - /** - * Allow node pool traffic to be load balanced. Only works for clusters with - * MetalLB load balancers. - */ - enableLoadBalancer?: pulumi.Input; - /** - * The OS image name in vCenter, only valid when using Windows. - */ - image?: pulumi.Input; - /** - * The OS image to be used for each node in a node pool. - * Currently `cos`, `cosCgv2`, `ubuntu`, `ubuntuCgv2`, `ubuntuContainerd` and `windows` are supported. - */ - imageType: pulumi.Input; - /** - * The map of Kubernetes labels (key/value pairs) to be applied to each node. - * These will added in addition to any default label(s) that - * Kubernetes may apply to the node. - * In case of conflict in label keys, the applied set may differ depending on - * the Kubernetes version -- it's best to assume the behavior is undefined - * and conflicts should be avoided. - */ - labels?: pulumi.Input<{[key: string]: pulumi.Input}>; - /** - * The megabytes of memory for each node in the node pool. - */ - memoryMb?: pulumi.Input; - /** - * The number of nodes in the node pool. - */ - replicas?: pulumi.Input; - /** - * The initial taints assigned to nodes of this node pool. - * Structure is documented below. - */ - taints?: pulumi.Input[]>; - /** - * Specifies the vSphere config for node pool. - * Structure is documented below. - */ - vsphereConfig?: pulumi.Input; - } - - export interface VMwareNodePoolConfigTaint { - /** - * Available taint effects. - * Possible values are: `EFFECT_UNSPECIFIED`, `NO_SCHEDULE`, `PREFER_NO_SCHEDULE`, `NO_EXECUTE`. - */ - effect?: pulumi.Input; - /** - * Key associated with the effect. - */ - key: pulumi.Input; - /** - * Value associated with the effect. - */ - value: pulumi.Input; - } - - export interface VMwareNodePoolConfigVsphereConfig { - /** - * The name of the vCenter datastore. Inherited from the user cluster. - */ - datastore?: pulumi.Input; - /** - * Vsphere host groups to apply to all VMs in the node pool - */ - hostGroups?: pulumi.Input[]>; - /** - * Tags to apply to VMs. - * Structure is documented below. - */ - tags?: pulumi.Input[]>; - } - - export interface VMwareNodePoolConfigVsphereConfigTag { - /** - * The Vsphere tag category. - */ - category?: pulumi.Input; - /** - * The Vsphere tag name. - * - * - - - - */ - tag?: pulumi.Input; - } - - export interface VMwareNodePoolNodePoolAutoscaling { - /** - * Maximum number of replicas in the NodePool. - */ - maxReplicas: pulumi.Input; - /** - * Minimum number of replicas in the NodePool. - */ - minReplicas: pulumi.Input; - } - - export interface VMwareNodePoolStatus { - /** - * (Output) - * ResourceConditions provide a standard mechanism for higher-level status reporting from user cluster controller. - * Structure is documented below. - */ - conditions?: pulumi.Input[]>; - /** - * (Output) - * Human-friendly representation of the error message from the user cluster - * controller. The error message can be temporary as the user cluster - * controller creates a cluster or node pool. If the error message persists - * for a longer period of time, it can be used to surface error message to - * indicate real problems requiring user intervention. - */ - errorMessage?: pulumi.Input; - } - - export interface VMwareNodePoolStatusCondition { - /** - * (Output) - * Last time the condition transit from one status to another. - */ - lastTransitionTime?: pulumi.Input; - /** - * (Output) - * Human-readable message indicating details about last transition. - */ - message?: pulumi.Input; - /** - * (Output) - * Machine-readable message indicating details about last transition. - */ - reason?: pulumi.Input; - /** - * (Output) - * The lifecycle state of the condition. - */ - state?: pulumi.Input; - /** - * (Output) - * Type of the condition. - * (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) - */ - type?: pulumi.Input; - } } export namespace healthcare { @@ -57645,7 +58340,7 @@ export namespace integrationconnectors { export interface ConnectionEventingRuntimeDataStatus { /** - * An arbitrary description for the Conection. + * An arbitrary description for the Connection. */ description?: pulumi.Input; /** @@ -57816,7 +58511,7 @@ export namespace integrationconnectors { export interface ConnectionStatus { /** - * An arbitrary description for the Conection. + * An arbitrary description for the Connection. */ description?: pulumi.Input; /** @@ -61960,6 +62655,25 @@ export namespace networksecurity { name?: pulumi.Input; } + export interface InterceptEndpointGroupAssociationLocationsDetail { + /** + * The location of the Intercept Endpoint Group Association, currently restricted to `global`. + * + * + * - - - + */ + location?: pulumi.Input; + /** + * (Output) + * The association state in this location. + * Possible values: + * STATE_UNSPECIFIED + * ACTIVE + * OUT_OF_SYNC + */ + state?: pulumi.Input; + } + export interface MirroringDeploymentGroupConnectedEndpointGroup { /** * (Output) @@ -71846,6 +72560,94 @@ export namespace storage { pubsubTopic: pulumi.Input; } + export interface TransferJobReplicationSpec { + /** + * A Google Cloud Storage data sink. Structure documented below. + */ + gcsDataSink?: pulumi.Input; + /** + * A Google Cloud Storage data source. Structure documented below. + */ + gcsDataSource?: pulumi.Input; + /** + * Only objects that satisfy these object conditions are included in the set of data source and data sink objects. Object conditions based on objects' `lastModificationTime` do not exclude objects in a data sink. Structure documented below. + */ + objectConditions?: pulumi.Input; + /** + * Characteristics of how to treat files from datasource and sink during job. If the option `deleteObjectsUniqueInSink` is true, object conditions based on objects' `lastModificationTime` are ignored and do not exclude objects in a data source or a data sink. Structure documented below. + */ + transferOptions?: pulumi.Input; + } + + export interface TransferJobReplicationSpecGcsDataSink { + /** + * Google Cloud Storage bucket name. + */ + bucketName: pulumi.Input; + /** + * 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 '/'. + */ + path?: pulumi.Input; + } + + export interface TransferJobReplicationSpecGcsDataSource { + /** + * Google Cloud Storage bucket name. + */ + bucketName: pulumi.Input; + /** + * 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 '/'. + */ + path?: pulumi.Input; + } + + export interface TransferJobReplicationSpecObjectConditions { + /** + * `excludePrefixes` must follow the requirements described for `includePrefixes`. See [Requirements](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#ObjectConditions). + */ + excludePrefixes?: pulumi.Input[]>; + /** + * If `includePrefixes` is specified, objects that satisfy the object conditions must have names that start with one of the `includePrefixes` and that do not start with any of the `excludePrefixes`. If `includePrefixes` is not specified, all objects except those that have names starting with one of the `excludePrefixes` must satisfy the object conditions. See [Requirements](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#ObjectConditions). + */ + includePrefixes?: pulumi.Input[]>; + /** + * 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". + */ + lastModifiedBefore?: pulumi.Input; + /** + * 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". + */ + lastModifiedSince?: pulumi.Input; + /** + * A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + */ + maxTimeElapsedSinceLastModification?: pulumi.Input; + /** + * A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + */ + minTimeElapsedSinceLastModification?: pulumi.Input; + } + + export interface TransferJobReplicationSpecTransferOptions { + /** + * Whether objects should be deleted from the source after they are transferred to the sink. Note that this option and `deleteObjectsUniqueInSink` are mutually exclusive. + */ + deleteObjectsFromSourceAfterTransfer?: pulumi.Input; + /** + * Whether objects that exist only in the sink should be deleted. Note that this option and + * `deleteObjectsFromSourceAfterTransfer` are mutually exclusive. + */ + deleteObjectsUniqueInSink?: pulumi.Input; + /** + * Whether overwriting objects that already exist in the sink is allowed. + */ + overwriteObjectsAlreadyExistingInSink?: pulumi.Input; + /** + * When to overwrite objects that already exist in the sink. If not set, overwrite behavior is determined by `overwriteObjectsAlreadyExistingInSink`. Possible values: ALWAYS, DIFFERENT, NEVER. + */ + overwriteWhen?: pulumi.Input; + } + export interface TransferJobSchedule { /** * Interval between the start of each scheduled transfer. If unspecified, the default value is 24 hours. This value may not be less than 1 hour. A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". @@ -73897,7 +74699,7 @@ export namespace vertex { * The expected structure and format of the files this URI points to is * described at https://cloud.google.com/vertex-ai/docs/matching-engine/using-matching-engine#input-data-format */ - contentsDeltaUri: pulumi.Input; + contentsDeltaUri?: pulumi.Input; /** * If this field is set together with contentsDeltaUri when calling IndexService.UpdateIndex, * then existing content of the Index will be replaced by the data from the contentsDeltaUri. diff --git a/sdk/nodejs/types/output.ts b/sdk/nodejs/types/output.ts index 94f3b0bff9..0654fc23da 100644 --- a/sdk/nodejs/types/output.ts +++ b/sdk/nodejs/types/output.ts @@ -148,7 +148,7 @@ export namespace accesscontextmanager { */ network: string; /** - * CIDR block IP subnetwork specification. Must be IPv4. + * A list of CIDR block IP subnetwork specification. Must be IPv4. */ vpcIpSubnetworks?: string[]; } @@ -4971,6 +4971,21 @@ export namespace artifactregistry { repository: string; } + export interface GetRepositoryVulnerabilityScanningConfig { + /** + * This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository. Possible values: ["INHERITED", "DISABLED"] + */ + enablementConfig: string; + /** + * This field returns whether scanning is active for this repository. + */ + enablementState: string; + /** + * This provides an explanation for the state of scanning on this repository. + */ + enablementStateReason: string; + } + export interface RepositoryCleanupPolicy { /** * Policy action. @@ -5299,6 +5314,24 @@ export namespace artifactregistry { repository?: string; } + export interface RepositoryVulnerabilityScanningConfig { + /** + * This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository. + * Possible values are: `INHERITED`, `DISABLED`. + */ + enablementConfig?: string; + /** + * (Output) + * This field returns whether scanning is active for this repository. + */ + enablementState: string; + /** + * (Output) + * This provides an explanation for the state of scanning on this repository. + */ + enablementStateReason: string; + } + } export namespace assuredworkloads { @@ -5524,15 +5557,15 @@ export namespace backupdisasterrecovery { */ backupId: string; /** - * Name of the Backup Vault associated with Backup. + * The ID of the Backup Vault of the Data Source in which the Backup belongs. */ backupVaultId: string; /** - * Name of the Data Source associated with Backup. + * The ID of the Data Source in which the Backup belongs. */ dataSourceId: string; /** - * Location of the resource. + * The location in which the Backup belongs. */ location: string; /** @@ -5756,7 +5789,7 @@ export namespace backupdisasterrecovery { */ gcpResourcename: string; /** - * Location of the resource: //"global"/"unspecified". + * The location in which the Data Source belongs. */ location: string; /** @@ -6285,6 +6318,12 @@ export namespace bigquery { } export interface DatasetAccess { + /** + * Condition for the binding. If CEL expression in this field is true, this + * access binding will be considered. + * Structure is documented below. + */ + condition?: outputs.bigquery.DatasetAccessCondition; /** * Grants all resources of particular types in a particular dataset read access to the current dataset. * Structure is documented below. @@ -6369,6 +6408,28 @@ export namespace bigquery { projectId: string; } + export interface DatasetAccessCondition { + /** + * Description of the expression. This is a longer text which describes the expression, + * e.g. when hovered over it in a UI. + */ + description?: string; + /** + * Textual representation of an expression in Common Expression Language syntax. + */ + expression: string; + /** + * String indicating the location of the expression for error reporting, e.g. a file + * name and a position in the file. + */ + location?: string; + /** + * 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. + */ + title?: string; + } + export interface DatasetAccessDataset { /** * The dataset this entry applies to @@ -6474,6 +6535,11 @@ export namespace bigquery { } export interface GetDatasetAccess { + /** + * Condition for the binding. If CEL expression in this field is true, this + * access binding will be considered. + */ + conditions: outputs.bigquery.GetDatasetAccessCondition[]; /** * Grants all resources of particular types in a particular dataset read access to the current dataset. */ @@ -6531,6 +6597,28 @@ export namespace bigquery { views: outputs.bigquery.GetDatasetAccessView[]; } + export interface GetDatasetAccessCondition { + /** + * Description of the expression. This is a longer text which describes the expression, + * e.g. when hovered over it in a UI. + */ + description: string; + /** + * Textual representation of an expression in Common Expression Language syntax. + */ + expression: string; + /** + * String indicating the location of the expression for error reporting, e.g. a file + * name and a position in the file. + */ + location: string; + /** + * 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. + */ + title: string; + } + export interface GetDatasetAccessDataset { /** * The dataset this entry applies to @@ -7392,6 +7480,55 @@ export namespace bigquery { kmsKeyVersion: string; } + export interface 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 connectionId can have the form .. or projects//locations//connections/. + */ + connectionId?: string; + /** + * 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. + */ + parameters?: {[key: string]: string}; + /** + * A storage descriptor containing information about the physical storage of this table. + */ + storageDescriptor?: outputs.bigquery.TableExternalCatalogTableOptionsStorageDescriptor; + } + + export interface 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. + */ + inputFormat?: string; + /** + * 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. + */ + locationUri?: string; + /** + * 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. + */ + outputFormat?: string; + /** + * Serializer and deserializer information. + */ + serdeInfo?: outputs.bigquery.TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo; + } + + export interface TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo { + /** + * Name of the SerDe. The maximum length is 256 characters. + */ + name?: string; + /** + * Key-value pairs that define the initialization parameters for the serialization library. Maximum size 10 Kib. + */ + parameters?: {[key: string]: string}; + /** + * 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. + */ + serializationLibrary: string; + } + export interface TableExternalDataConfiguration { /** * Let BigQuery try to autodetect the schema @@ -11300,6 +11437,41 @@ export namespace certificatemanager { } +export namespace chronicle { + export interface WatchlistEntityCount { + /** + * (Output) + * Output only. Count of asset type entities in the watchlist. + */ + asset: number; + /** + * (Output) + * Output only. Count of user type entities in the watchlist. + */ + user: number; + } + + export interface WatchlistEntityPopulationMechanism { + /** + * Entities are added manually. + * + * - - - + */ + manual: outputs.chronicle.WatchlistEntityPopulationMechanismManual; + } + + export interface WatchlistEntityPopulationMechanismManual { + } + + export interface WatchlistWatchlistUserPreferences { + /** + * Optional. Whether the watchlist is pinned on the dashboard. + */ + pinned?: boolean; + } + +} + export namespace cloudasset { export interface FolderFeedCondition { /** @@ -18485,11 +18657,12 @@ export namespace cloudrunv2 { export interface GetServiceTemplateScaling { /** - * 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. */ maxInstanceCount: number; /** - * 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. */ minInstanceCount: number; } @@ -19649,7 +19822,8 @@ export namespace cloudrunv2 { export interface 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. */ maxInstanceCount?: number; /** @@ -20424,10 +20598,25 @@ export namespace composer { } export interface EnvironmentConfigDataRetentionConfig { + /** + * Optional. The configuration setting for database retention. + */ + airflowMetadataRetentionConfigs: outputs.composer.EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig[]; /** * Optional. The configuration setting for Task Logs. */ - taskLogsRetentionConfigs: outputs.composer.EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig[]; + taskLogsRetentionConfigs?: outputs.composer.EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig[]; + } + + export interface EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig { + /** + * How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer. + */ + retentionDays: number; + /** + * Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer. + */ + retentionMode: string; } export interface EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig { @@ -20904,12 +21093,27 @@ export namespace composer { } export interface GetEnvironmentConfigDataRetentionConfig { + /** + * Optional. The configuration setting for database retention. + */ + airflowMetadataRetentionConfigs: outputs.composer.GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig[]; /** * Optional. The configuration setting for Task Logs. */ taskLogsRetentionConfigs: outputs.composer.GetEnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig[]; } + export interface GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig { + /** + * How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer. + */ + retentionDays: number; + /** + * Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer. + */ + retentionMode: string; + } + export interface GetEnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig { /** * Whether logs in cloud logging only is enabled or not. This field is supported for Cloud Composer environments in versions composer-2.0.32-airflow-2.1.4 and newer. @@ -25015,6 +25219,10 @@ export namespace compute { * restarted if it was terminated by Compute Engine (not a user). */ automaticRestart: boolean; + /** + * Specifies the availability domain, which this instance should be scheduled on. + */ + availabilityDomain: number; /** * Beta Time in seconds for host error detection. */ @@ -25522,6 +25730,10 @@ export namespace compute { * terminated by a user). This defaults to true. */ automaticRestart: boolean; + /** + * Specifies the availability domain, which this instance should be scheduled on. + */ + availabilityDomain: number; /** * Beta Time in seconds for host error detection. */ @@ -26414,6 +26626,10 @@ export namespace compute { * terminated by a user). This defaults to true. */ automaticRestart: boolean; + /** + * Specifies the availability domain, which this instance should be scheduled on. + */ + availabilityDomain: number; /** * Beta Time in seconds for host error detection. */ @@ -28367,7 +28583,7 @@ export namespace compute { */ resourceManagerTags?: {[key: string]: string}; /** - * A list of selfLinks 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 selfLinks 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. */ resourcePolicies: string; /** @@ -28729,6 +28945,10 @@ export namespace compute { * Specifies if the instance should be restarted if it was terminated by Compute Engine (not a user). */ automaticRestart: boolean; + /** + * Specifies the availability domain, which this instance should be scheduled on. + */ + availabilityDomain: number; /** * 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. */ @@ -29187,6 +29407,10 @@ export namespace compute { * Specifies if the instance should be restarted if it was terminated by Compute Engine (not a user). */ automaticRestart: boolean; + /** + * Specifies the availability domain, which this instance should be scheduled on. + */ + availabilityDomain: number; /** * 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. */ @@ -29802,6 +30026,10 @@ export namespace compute { * Defaults to true. */ automaticRestart?: boolean; + /** + * 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. + */ + availabilityDomain?: number; /** * 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. */ @@ -30355,6 +30583,10 @@ export namespace compute { * terminated by a user). This defaults to true. */ automaticRestart?: boolean; + /** + * 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. + */ + availabilityDomain?: number; /** * 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. */ @@ -33493,6 +33725,10 @@ export namespace compute { * terminated by a user). This defaults to true. */ automaticRestart?: boolean; + /** + * 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. + */ + availabilityDomain?: number; /** * 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. */ @@ -36730,7 +36966,7 @@ export namespace compute { */ nanos?: number; /** - * 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. */ seconds: string; } @@ -36738,13 +36974,13 @@ export namespace compute { export interface 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. */ errors: outputs.compute.ResizeRequestStatusError[]; /** * (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. */ lastAttempts: outputs.compute.ResizeRequestStatusLastAttempt[]; @@ -36753,7 +36989,7 @@ export namespace compute { export interface 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. */ errors: outputs.compute.ResizeRequestStatusErrorError[]; @@ -36762,18 +36998,18 @@ export namespace compute { export interface ResizeRequestStatusErrorError { /** * (Output) - * [Output Only] The error type identifier for this error. + * The error type identifier for this error. */ code: string; /** * (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. */ errorDetails: outputs.compute.ResizeRequestStatusErrorErrorErrorDetail[]; /** * (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. */ location: string; /** @@ -36786,25 +37022,25 @@ export namespace compute { export interface ResizeRequestStatusErrorErrorErrorDetail { /** * (Output) - * [Output Only] + * A nested object resource. * Structure is documented below. */ errorInfos: outputs.compute.ResizeRequestStatusErrorErrorErrorDetailErrorInfo[]; /** * (Output) - * [Output Only] + * A nested object resource. * Structure is documented below. */ helps: outputs.compute.ResizeRequestStatusErrorErrorErrorDetailHelp[]; /** * (Output) - * [Output Only] + * A nested object resource. * Structure is documented below. */ localizedMessages: outputs.compute.ResizeRequestStatusErrorErrorErrorDetailLocalizedMessage[]; /** * (Output) - * [Output Only] + * A nested object resource. * Structure is documented below. */ quotaInfos: outputs.compute.ResizeRequestStatusErrorErrorErrorDetailQuotaInfo[]; @@ -36813,18 +37049,17 @@ export namespace compute { export interface 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". */ domain: string; /** * (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. */ metadatas: {[key: string]: string}; /** * (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. */ reason: string; } @@ -36832,7 +37067,7 @@ export namespace compute { export interface ResizeRequestStatusErrorErrorErrorDetailHelp { /** * (Output) - * [Output Only] + * A nested object resource. * Structure is documented below. */ links: outputs.compute.ResizeRequestStatusErrorErrorErrorDetailHelpLink[]; @@ -36899,7 +37134,7 @@ export namespace compute { export interface 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. */ errors: outputs.compute.ResizeRequestStatusLastAttemptError[]; @@ -36908,7 +37143,7 @@ export namespace compute { export interface 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. */ errors: outputs.compute.ResizeRequestStatusLastAttemptErrorError[]; @@ -36917,18 +37152,18 @@ export namespace compute { export interface ResizeRequestStatusLastAttemptErrorError { /** * (Output) - * [Output Only] The error type identifier for this error. + * The error type identifier for this error. */ code: string; /** * (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. */ errorDetails: outputs.compute.ResizeRequestStatusLastAttemptErrorErrorErrorDetail[]; /** * (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. */ location: string; /** @@ -36941,25 +37176,25 @@ export namespace compute { export interface ResizeRequestStatusLastAttemptErrorErrorErrorDetail { /** * (Output) - * [Output Only] + * A nested object resource. * Structure is documented below. */ errorInfos: outputs.compute.ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo[]; /** * (Output) - * [Output Only] + * A nested object resource. * Structure is documented below. */ helps: outputs.compute.ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp[]; /** * (Output) - * [Output Only] + * A nested object resource. * Structure is documented below. */ localizedMessages: outputs.compute.ResizeRequestStatusLastAttemptErrorErrorErrorDetailLocalizedMessage[]; /** * (Output) - * [Output Only] + * A nested object resource. * Structure is documented below. */ quotaInfos: outputs.compute.ResizeRequestStatusLastAttemptErrorErrorErrorDetailQuotaInfo[]; @@ -36968,18 +37203,17 @@ export namespace compute { export interface 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". */ domain: string; /** * (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. */ metadatas: {[key: string]: string}; /** * (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. */ reason: string; } @@ -36987,7 +37221,7 @@ export namespace compute { export interface ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp { /** * (Output) - * [Output Only] + * A nested object resource. * Structure is documented below. */ links: outputs.compute.ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpLink[]; @@ -59182,11 +59416,19 @@ export namespace datastream { } export interface StreamSourceConfigMysqlSourceConfig { + /** + * CDC reader reads from binary logs replication cdc method. + */ + binaryLogPosition?: outputs.datastream.StreamSourceConfigMysqlSourceConfigBinaryLogPosition; /** * MySQL objects to exclude from the stream. * Structure is documented below. */ excludeObjects?: outputs.datastream.StreamSourceConfigMysqlSourceConfigExcludeObjects; + /** + * CDC reader reads from gtid based replication. + */ + gtid?: outputs.datastream.StreamSourceConfigMysqlSourceConfigGtid; /** * MySQL objects to retrieve from the source. * Structure is documented below. @@ -59204,6 +59446,9 @@ export namespace datastream { maxConcurrentCdcTasks: number; } + export interface StreamSourceConfigMysqlSourceConfigBinaryLogPosition { + } + export interface StreamSourceConfigMysqlSourceConfigExcludeObjects { /** * MySQL databases on the server @@ -59269,6 +59514,9 @@ export namespace datastream { primaryKey?: boolean; } + export interface StreamSourceConfigMysqlSourceConfigGtid { + } + export interface StreamSourceConfigMysqlSourceConfigIncludeObjects { /** * MySQL databases on the server @@ -59939,13 +60187,13 @@ export namespace developerconnect { /** * Optional. GitHub App installation id. */ - appInstallationId?: string; + appInstallationId: string; /** * Represents an OAuth token of the account that authorized the Connection,and * associated metadata. * Structure is documented below. */ - authorizerCredential?: outputs.developerconnect.ConnectionGithubConfigAuthorizerCredential; + authorizerCredential: outputs.developerconnect.ConnectionGithubConfigAuthorizerCredential; /** * Required. Immutable. The GitHub Application that was installed to * the GitHub user or organization. @@ -60092,7 +60340,7 @@ export namespace diagflow { */ noSpeechTimeout?: string; /** - * Use timeout based endpointing, interpreting endpointer sensitivy as seconds of timeout value. + * Use timeout based endpointing, interpreting endpointer sensitivity as seconds of timeout value. */ useTimeoutBasedEndpointing?: boolean; } @@ -64660,7 +64908,7 @@ export namespace firestore { * 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. */ kmsKeyName: string; @@ -66468,364 +66716,783 @@ export namespace gkehub { code: string; } - export interface GetMembershipBindingState { + export interface GetFeatureFleetDefaultMemberConfig { /** - * Code describes the state of a MembershipBinding resource. + * Config Management spec */ - code: string; - } - - export interface MembershipAuthority { - issuer: string; - } - - export interface MembershipBindingState { + configmanagements: outputs.gkehub.GetFeatureFleetDefaultMemberConfigConfigmanagement[]; /** - * (Output) - * Code describes the state of a MembershipBinding resource. + * Service Mesh spec */ - code: string; - } - - export interface MembershipEndpoint { + meshes: outputs.gkehub.GetFeatureFleetDefaultMemberConfigMesh[]; /** - * If this Membership is a Kubernetes API server hosted on GKE, this is a self link to its GCP resource. - * Structure is documented below. + * Policy Controller spec */ - gkeCluster?: outputs.gkehub.MembershipEndpointGkeCluster; - } - - export interface MembershipEndpointGkeCluster { - resourceLink: string; - } - - export interface MembershipIamBindingCondition { - description?: string; - expression: string; - title: string; - } - - export interface MembershipIamMemberCondition { - description?: string; - expression: string; - title: string; + policycontrollers: outputs.gkehub.GetFeatureFleetDefaultMemberConfigPolicycontroller[]; } - export interface MembershipRbacRoleBindingRole { + export interface GetFeatureFleetDefaultMemberConfigConfigmanagement { /** - * PredefinedRole is an ENUM representation of the default Kubernetes Roles - * Possible values are: `UNKNOWN`, `ADMIN`, `EDIT`, `VIEW`, `ANTHOS_SUPPORT`. - * - * - - - + * ConfigSync configuration for the cluster */ - predefinedRole: string; - } - - export interface MembershipRbacRoleBindingState { + configSyncs: outputs.gkehub.GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync[]; /** - * (Output) - * Code describes the state of a RBAC Role Binding resource. + * 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"] */ - code: string; - } - - export interface NamespaceState { + management: string; /** - * (Output) - * Code describes the state of a Namespace resource. + * Version of Config Sync installed */ - code: string; - } - - export interface ScopeIamBindingCondition { - description?: string; - expression: string; - title: string; - } - - export interface ScopeIamMemberCondition { - description?: string; - expression: string; - title: string; + version: string; } - export interface ScopeRbacRoleBindingRole { + export interface GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSync { /** - * PredefinedRole is an ENUM representation of the default Kubernetes Roles - * Possible values are: `UNKNOWN`, `ADMIN`, `EDIT`, `VIEW`. - * - * - - - + * 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. */ - predefinedRole?: string; - } - - export interface ScopeRbacRoleBindingState { + enabled: boolean; /** - * (Output) - * Code describes the state of a RBAC Role Binding resource. + * Git repo configuration for the cluster */ - code: string; - } - - export interface ScopeState { + gits: outputs.gkehub.GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit[]; /** - * (Output) - * Code describes the state of a Scope resource. + * OCI repo configuration for the cluster */ - code: string; - } - -} - -export namespace gkeonprem { - export interface BareMetalAdminClusterClusterOperations { + ocis: outputs.gkehub.GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci[]; /** - * Whether collection of application logs/metrics should be enabled (in addition to system logs/metrics). + * 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. */ - enableApplicationLogs?: boolean; + preventDrift: boolean; + /** + * Specifies whether the Config Sync Repo is in hierarchical or unstructured mode + */ + sourceFormat: string; } - export interface BareMetalAdminClusterControlPlane { + export interface GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGit { /** - * Customizes the default API server args. Only a subset of - * customized flags are supported. Please refer to the API server - * documentation below to know the exact format: - * https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/ - * Structure is documented below. + * The Google Cloud Service Account Email used for auth when secretType is gcpServiceAccount */ - apiServerArgs?: outputs.gkeonprem.BareMetalAdminClusterControlPlaneApiServerArg[]; + gcpServiceAccountEmail: string; /** - * Configures the node pool running the control plane. If specified the corresponding NodePool will be created for the cluster's control plane. The NodePool will have the same name and namespace as the cluster. - * Structure is documented below. + * URL for the HTTPS Proxy to be used when communicating with the Git repo */ - controlPlaneNodePoolConfig: outputs.gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfig; - } - - export interface BareMetalAdminClusterControlPlaneApiServerArg { + httpsProxy: string; /** - * The argument name as it appears on the API Server command line please make sure to remove the leading dashes. + * The path within the Git repository that represents the top level of the repo to sync */ - argument: string; + policyDir: string; /** - * The value of the arg as it will be passed to the API Server command line. + * Type of secret configured for access to the Git repo */ - value: string; - } - - export interface BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfig { + secretType: string; /** - * The generic configuration for a node pool running the control plane. - * Structure is documented below. + * The branch of the repository to sync from. Default: master */ - nodePoolConfig: outputs.gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfig; + syncBranch: string; + /** + * The URL of the Git repository to use as the source of truth + */ + syncRepo: string; + /** + * Git revision (tag or hash) to check out. Default HEAD + */ + syncRev: string; + /** + * Period in seconds between consecutive syncs. Default: 15 + */ + syncWaitSecs: string; } - export interface BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfig { + export interface GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOci { /** - * The map of Kubernetes labels (key/value pairs) to be applied to - * each node. These will added in addition to any default label(s) - * that Kubernetes may apply to the node. In case of conflict in - * label keys, the applied set may differ depending on the Kubernetes - * version -- it's best to assume the behavior is undefined and - * conflicts should be avoided. For more information, including usage - * and the valid values, see: - * - http://kubernetes.io/v1.1/docs/user-guide/labels.html - * An object containing a list of "key": value pairs. - * For example: { "name": "wrench", "mass": "1.3kg", "count": "3" }. + * The Google Cloud Service Account Email used for auth when secretType is gcpServiceAccount */ - labels?: {[key: string]: string}; + gcpServiceAccountEmail: string; /** - * The list of machine addresses in the Bare Metal Node Pool. - * Structure is documented below. + * The absolute path of the directory that contains the local resources. Default: the root directory of the image */ - nodeConfigs?: outputs.gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfig[]; + policyDir: string; /** - * Specifies the nodes operating system (default: LINUX). + * Type of secret configured for access to the Git repo */ - operatingSystem?: string; + secretType: string; /** - * The initial taints assigned to nodes of this node pool. - * Structure is documented below. + * The OCI image repository URL for the package to sync from */ - taints?: outputs.gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaint[]; - } - - export interface BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfig { + syncRepo: string; /** - * The map of Kubernetes labels (key/value pairs) to be applied to - * each node. These will added in addition to any default label(s) - * that Kubernetes may apply to the node. In case of conflict in - * label keys, the applied set may differ depending on the Kubernetes - * version -- it's best to assume the behavior is undefined and - * conflicts should be avoided. For more information, including usage - * and the valid values, see: - * - http://kubernetes.io/v1.1/docs/user-guide/labels.html - * An object containing a list of "key": value pairs. - * For example: { "name": "wrench", "mass": "1.3kg", "count": "3" }. + * Period in seconds between consecutive syncs. Default: 15 */ - labels?: {[key: string]: string}; + syncWaitSecs: string; /** - * The default IPv4 address for SSH access and Kubernetes node. - * Example: 192.168.0.1 + * Version of Config Sync installed */ - nodeIp?: string; + version: string; } - export interface BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaint { + export interface GetFeatureFleetDefaultMemberConfigMesh { /** - * Specifies the nodes operating system (default: LINUX). - * Possible values are: `EFFECT_UNSPECIFIED`, `PREFER_NO_SCHEDULE`, `NO_EXECUTE`. + * Whether to automatically manage Service Mesh Possible values: ["MANAGEMENT_UNSPECIFIED", "MANAGEMENT_AUTOMATIC", "MANAGEMENT_MANUAL"] */ - effect?: string; + management: string; + } + + export interface GetFeatureFleetDefaultMemberConfigPolicycontroller { /** - * Key associated with the effect. + * Configuration of Policy Controller */ - key?: string; + policyControllerHubConfigs: outputs.gkehub.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig[]; /** - * Value associated with the effect. + * Configures the version of Policy Controller */ - value?: string; + version: string; } - export interface BareMetalAdminClusterFleet { + export interface GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfig { /** - * (Output) - * The name of the managed Hub Membership resource associated to this cluster. - * Membership names are formatted as - * `projects//locations//memberships/`. + * Interval for Policy Controller Audit scans (in seconds). When set to 0, this disables audit functionality altogether. */ - membership: string; - } - - export interface BareMetalAdminClusterLoadBalancer { + auditIntervalSeconds: number; /** - * A nested object resource. - * Structure is documented below. + * The maximum number of audit violations to be stored in a constraint. If not set, the internal default of 20 will be used. */ - manualLbConfig?: outputs.gkeonprem.BareMetalAdminClusterLoadBalancerManualLbConfig; + constraintViolationLimit: number; /** - * Specifies the load balancer ports. - * Structure is documented below. + * Map of deployment configs to deployments ("admission", "audit", "mutation"). */ - portConfig: outputs.gkeonprem.BareMetalAdminClusterLoadBalancerPortConfig; + deploymentConfigs: outputs.gkehub.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig[]; /** - * Specified the Bare Metal Load Balancer Config - * Structure is documented below. + * The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster. */ - vipConfig: outputs.gkeonprem.BareMetalAdminClusterLoadBalancerVipConfig; - } - - export interface BareMetalAdminClusterLoadBalancerManualLbConfig { + exemptableNamespaces: string[]; /** - * Whether manual load balancing is enabled. + * 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"] */ - enabled: boolean; - } - - export interface BareMetalAdminClusterLoadBalancerPortConfig { + installSpec: string; /** - * The port that control plane hosted load balancers will listen on. + * Logs all denies and dry run failures. */ - controlPlaneLoadBalancerPort: number; - } - - export interface BareMetalAdminClusterLoadBalancerVipConfig { + logDeniesEnabled: boolean; /** - * The VIP which you previously set aside for the Kubernetes API of this Bare Metal Admin Cluster. + * Monitoring specifies the configuration of monitoring Policy Controller. */ - controlPlaneVip: string; - } - - export interface BareMetalAdminClusterMaintenanceConfig { + monitorings: outputs.gkehub.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoring[]; /** - * All IPv4 address from these ranges will be placed into maintenance mode. - * Nodes in maintenance mode will be cordoned and drained. When both of these - * are true, the "baremetal.cluster.gke.io/maintenance" annotation will be set - * on the node resource. + * Enables the ability to mutate resources using Policy Controller. */ - maintenanceAddressCidrBlocks: string[]; - } - - export interface BareMetalAdminClusterNetworkConfig { + mutationEnabled: boolean; /** - * A nested object resource. - * Structure is documented below. + * Specifies the desired policy content on the cluster. */ - islandModeCidr?: outputs.gkeonprem.BareMetalAdminClusterNetworkConfigIslandModeCidr; + policyContents: outputs.gkehub.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent[]; + /** + * Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated. + */ + referentialRulesEnabled: boolean; } - export interface BareMetalAdminClusterNetworkConfigIslandModeCidr { + export interface GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfig { + component: string; /** - * All pods in the cluster are assigned an RFC1918 IPv4 address from these ranges. This field cannot be changed after creation. + * Container resource requirements. */ - podAddressCidrBlocks: string[]; + containerResources: outputs.gkehub.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource[]; /** - * All services in the cluster are assigned an RFC1918 IPv4 address from these ranges. This field cannot be changed after creation. + * Pod affinity configuration. Possible values: ["AFFINITY_UNSPECIFIED", "NO_AFFINITY", "ANTI_AFFINITY"] */ - serviceAddressCidrBlocks: string[]; - } - - export interface BareMetalAdminClusterNodeAccessConfig { + podAffinity: string; /** - * LoginUser is the user name used to access node machines. - * It defaults to "root" if not set. + * Pod tolerations of node taints. */ - loginUser?: string; - } - - export interface BareMetalAdminClusterNodeConfig { + podTolerations: outputs.gkehub.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration[]; /** - * The maximum number of pods a node can run. The size of the CIDR range - * assigned to the node will be derived from this parameter. + * Pod replica count. */ - maxPodsPerNode?: number; + replicaCount: number; } - export interface BareMetalAdminClusterProxy { + export interface GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResource { /** - * A list of IPs, hostnames, and domains that should skip the proxy. - * For example: ["127.0.0.1", "example.com", ".corp", "localhost"]. + * Limits describes the maximum amount of compute resources allowed for use by the running container. */ - noProxies?: string[]; + limits: outputs.gkehub.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit[]; /** - * Specifies the address of your proxy server. - * For Example: http://domain - * WARNING: Do not provide credentials in the format - * of http://(username:password@)domain these will be rejected by the server. + * Requests describes the amount of compute resources reserved for the container by the kube-scheduler. */ - uri: string; + requests: outputs.gkehub.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest[]; } - export interface BareMetalAdminClusterSecurityConfig { + export interface GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimit { /** - * Configures user access to the Bare Metal User cluster. - * Structure is documented below. + * CPU requirement expressed in Kubernetes resource units. */ - authorization?: outputs.gkeonprem.BareMetalAdminClusterSecurityConfigAuthorization; - } - - export interface BareMetalAdminClusterSecurityConfigAuthorization { + cpu: string; /** - * Users that will be granted the cluster-admin role on the cluster, providing full access to the cluster. - * Structure is documented below. + * Memory requirement expressed in Kubernetes resource units. */ - adminUsers: outputs.gkeonprem.BareMetalAdminClusterSecurityConfigAuthorizationAdminUser[]; + memory: string; } - export interface BareMetalAdminClusterSecurityConfigAuthorizationAdminUser { + export interface GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequest { /** - * The name of the user, e.g. `my-gcp-id@gmail.com`. + * CPU requirement expressed in Kubernetes resource units. */ - username: string; + cpu: string; + /** + * Memory requirement expressed in Kubernetes resource units. + */ + memory: string; } - export interface BareMetalAdminClusterStatus { + export interface GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodToleration { /** - * (Output) - * ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. - * Structure is documented below. + * Matches a taint effect. */ - conditions: outputs.gkeonprem.BareMetalAdminClusterStatusCondition[]; + effect: string; + /** + * Matches a taint key (not necessarily unique). + */ + key: string; + /** + * Matches a taint operator. + */ + operator: string; + /** + * Matches a taint value. + */ + value: string; + } + + export interface GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoring { + /** + * 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"] + */ + backends: string[]; + } + + export interface GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContent { + /** + * Configures which bundles to install and their corresponding install specs. + */ + bundles: outputs.gkehub.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle[]; + /** + * Configures the installation of the Template Library. + */ + templateLibraries: outputs.gkehub.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibrary[]; + } + + export interface GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundle { + bundle: string; + /** + * The set of namespaces to be exempted from the bundle. + */ + exemptedNamespaces: string[]; + } + + export interface GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibrary { + /** + * Configures the manner in which the template library is installed on the cluster. Possible values: ["INSTALLATION_UNSPECIFIED", "NOT_INSTALLED", "ALL"] + */ + installation: string; + } + + export interface GetFeatureResourceState { + /** + * Whether this Feature has outstanding resources that need to be cleaned up before it can be disabled. + */ + hasResources: boolean; + /** + * The current state of the Feature resource in the Hub API. + */ + state: string; + } + + export interface GetFeatureSpec { + /** + * Clusterupgrade feature spec. + */ + clusterupgrades: outputs.gkehub.GetFeatureSpecClusterupgrade[]; + /** + * Fleet Observability feature spec. + */ + fleetobservabilities: outputs.gkehub.GetFeatureSpecFleetobservability[]; + /** + * Multicluster Ingress-specific spec. + */ + multiclusteringresses: outputs.gkehub.GetFeatureSpecMulticlusteringress[]; + } + + export interface GetFeatureSpecClusterupgrade { + /** + * Configuration overrides for individual upgrades. + */ + gkeUpgradeOverrides: outputs.gkehub.GetFeatureSpecClusterupgradeGkeUpgradeOverride[]; + /** + * Post conditions to override for the specified upgrade. + */ + postConditions: outputs.gkehub.GetFeatureSpecClusterupgradePostCondition[]; + /** + * 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. + */ + upstreamFleets: string[]; + } + + export interface GetFeatureSpecClusterupgradeGkeUpgradeOverride { + /** + * Post conditions to override for the specified upgrade. + */ + postConditions: outputs.gkehub.GetFeatureSpecClusterupgradeGkeUpgradeOverridePostCondition[]; + /** + * Which upgrade to override. + */ + upgrades: outputs.gkehub.GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade[]; + } + + export interface GetFeatureSpecClusterupgradeGkeUpgradeOverridePostCondition { + /** + * Amount of time to "soak" after a rollout has been finished before marking it COMPLETE. Cannot exceed 30 days. + */ + soaking: string; + } + + export interface GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgrade { + /** + * Name of the upgrade, e.g., "k8sControlPlane". It should be a valid upgrade name. It must not exceet 99 characters. + */ + name: string; + /** + * Version of the upgrade, e.g., "1.22.1-gke.100". It should be a valid version. It must not exceet 99 characters. + */ + version: string; + } + + export interface GetFeatureSpecClusterupgradePostCondition { + /** + * Amount of time to "soak" after a rollout has been finished before marking it COMPLETE. Cannot exceed 30 days. + */ + soaking: string; + } + + export interface GetFeatureSpecFleetobservability { + /** + * Specified if fleet logging feature is enabled for the entire fleet. If UNSPECIFIED, fleet logging feature is disabled for the entire fleet. + */ + loggingConfigs: outputs.gkehub.GetFeatureSpecFleetobservabilityLoggingConfig[]; + } + + export interface GetFeatureSpecFleetobservabilityLoggingConfig { + /** + * Specified if applying the default routing config to logs not specified in other configs. + */ + defaultConfigs: outputs.gkehub.GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfig[]; + /** + * Specified if applying the routing config to all logs for all fleet scopes. + */ + fleetScopeLogsConfigs: outputs.gkehub.GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfig[]; + } + + export interface GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfig { + /** + * Specified if fleet logging feature is enabled. Possible values: ["MODE_UNSPECIFIED", "COPY", "MOVE"] + */ + mode: string; + } + + export interface GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfig { + /** + * Specified if fleet logging feature is enabled. Possible values: ["MODE_UNSPECIFIED", "COPY", "MOVE"] + */ + mode: string; + } + + export interface GetFeatureSpecMulticlusteringress { + /** + * Fully-qualified Membership name which hosts the MultiClusterIngress CRD. Example: 'projects/foo-proj/locations/global/memberships/bar' + */ + configMembership: string; + } + + export interface GetFeatureState { + /** + * Output only. The "running state" of the Feature in this Hub. + */ + states: outputs.gkehub.GetFeatureStateState[]; + } + + export interface GetFeatureStateState { + /** + * The high-level, machine-readable status of this Feature. + */ + code: string; + /** + * A human-readable description of the current status. + */ + description: string; + /** + * 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" + */ + updateTime: string; + } + + export interface GetMembershipBindingState { + /** + * Code describes the state of a MembershipBinding resource. + */ + code: string; + } + + export interface MembershipAuthority { + issuer: string; + } + + export interface MembershipBindingState { + /** + * (Output) + * Code describes the state of a MembershipBinding resource. + */ + code: string; + } + + export interface MembershipEndpoint { + /** + * If this Membership is a Kubernetes API server hosted on GKE, this is a self link to its GCP resource. + * Structure is documented below. + */ + gkeCluster?: outputs.gkehub.MembershipEndpointGkeCluster; + } + + export interface MembershipEndpointGkeCluster { + resourceLink: string; + } + + export interface MembershipIamBindingCondition { + description?: string; + expression: string; + title: string; + } + + export interface MembershipIamMemberCondition { + description?: string; + expression: string; + title: string; + } + + export interface MembershipRbacRoleBindingRole { + /** + * PredefinedRole is an ENUM representation of the default Kubernetes Roles + * Possible values are: `UNKNOWN`, `ADMIN`, `EDIT`, `VIEW`, `ANTHOS_SUPPORT`. + * + * - - - + */ + predefinedRole: string; + } + + export interface MembershipRbacRoleBindingState { + /** + * (Output) + * Code describes the state of a RBAC Role Binding resource. + */ + code: string; + } + + export interface NamespaceState { + /** + * (Output) + * Code describes the state of a Namespace resource. + */ + code: string; + } + + export interface ScopeIamBindingCondition { + description?: string; + expression: string; + title: string; + } + + export interface ScopeIamMemberCondition { + description?: string; + expression: string; + title: string; + } + + export interface ScopeRbacRoleBindingRole { + /** + * PredefinedRole is an ENUM representation of the default Kubernetes Roles + * Possible values are: `UNKNOWN`, `ADMIN`, `EDIT`, `VIEW`. + * + * - - - + */ + predefinedRole?: string; + } + + export interface ScopeRbacRoleBindingState { + /** + * (Output) + * Code describes the state of a RBAC Role Binding resource. + */ + code: string; + } + + export interface ScopeState { + /** + * (Output) + * Code describes the state of a Scope resource. + */ + code: string; + } + +} + +export namespace gkeonprem { + export interface BareMetalAdminClusterClusterOperations { + /** + * Whether collection of application logs/metrics should be enabled (in addition to system logs/metrics). + */ + enableApplicationLogs?: boolean; + } + + export interface BareMetalAdminClusterControlPlane { + /** + * Customizes the default API server args. Only a subset of + * customized flags are supported. Please refer to the API server + * documentation below to know the exact format: + * https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/ + * Structure is documented below. + */ + apiServerArgs?: outputs.gkeonprem.BareMetalAdminClusterControlPlaneApiServerArg[]; + /** + * Configures the node pool running the control plane. If specified the corresponding NodePool will be created for the cluster's control plane. The NodePool will have the same name and namespace as the cluster. + * Structure is documented below. + */ + controlPlaneNodePoolConfig: outputs.gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfig; + } + + export interface BareMetalAdminClusterControlPlaneApiServerArg { + /** + * The argument name as it appears on the API Server command line please make sure to remove the leading dashes. + */ + argument: string; + /** + * The value of the arg as it will be passed to the API Server command line. + */ + value: string; + } + + export interface BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfig { + /** + * The generic configuration for a node pool running the control plane. + * Structure is documented below. + */ + nodePoolConfig: outputs.gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfig; + } + + export interface BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfig { + /** + * The map of Kubernetes labels (key/value pairs) to be applied to + * each node. These will added in addition to any default label(s) + * that Kubernetes may apply to the node. In case of conflict in + * label keys, the applied set may differ depending on the Kubernetes + * version -- it's best to assume the behavior is undefined and + * conflicts should be avoided. For more information, including usage + * and the valid values, see: + * - http://kubernetes.io/v1.1/docs/user-guide/labels.html + * An object containing a list of "key": value pairs. + * For example: { "name": "wrench", "mass": "1.3kg", "count": "3" }. + */ + labels?: {[key: string]: string}; + /** + * The list of machine addresses in the Bare Metal Node Pool. + * Structure is documented below. + */ + nodeConfigs?: outputs.gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfig[]; + /** + * Specifies the nodes operating system (default: LINUX). + */ + operatingSystem?: string; + /** + * The initial taints assigned to nodes of this node pool. + * Structure is documented below. + */ + taints?: outputs.gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaint[]; + } + + export interface BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfig { + /** + * The map of Kubernetes labels (key/value pairs) to be applied to + * each node. These will added in addition to any default label(s) + * that Kubernetes may apply to the node. In case of conflict in + * label keys, the applied set may differ depending on the Kubernetes + * version -- it's best to assume the behavior is undefined and + * conflicts should be avoided. For more information, including usage + * and the valid values, see: + * - http://kubernetes.io/v1.1/docs/user-guide/labels.html + * An object containing a list of "key": value pairs. + * For example: { "name": "wrench", "mass": "1.3kg", "count": "3" }. + */ + labels?: {[key: string]: string}; + /** + * The default IPv4 address for SSH access and Kubernetes node. + * Example: 192.168.0.1 + */ + nodeIp?: string; + } + + export interface BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaint { + /** + * Specifies the nodes operating system (default: LINUX). + * Possible values are: `EFFECT_UNSPECIFIED`, `PREFER_NO_SCHEDULE`, `NO_EXECUTE`. + */ + effect?: string; + /** + * Key associated with the effect. + */ + key?: string; + /** + * Value associated with the effect. + */ + value?: string; + } + + export interface BareMetalAdminClusterFleet { + /** + * (Output) + * The name of the managed Hub Membership resource associated to this cluster. + * Membership names are formatted as + * `projects//locations//memberships/`. + */ + membership: string; + } + + export interface BareMetalAdminClusterLoadBalancer { + /** + * A nested object resource. + * Structure is documented below. + */ + manualLbConfig?: outputs.gkeonprem.BareMetalAdminClusterLoadBalancerManualLbConfig; + /** + * Specifies the load balancer ports. + * Structure is documented below. + */ + portConfig: outputs.gkeonprem.BareMetalAdminClusterLoadBalancerPortConfig; + /** + * Specified the Bare Metal Load Balancer Config + * Structure is documented below. + */ + vipConfig: outputs.gkeonprem.BareMetalAdminClusterLoadBalancerVipConfig; + } + + export interface BareMetalAdminClusterLoadBalancerManualLbConfig { + /** + * Whether manual load balancing is enabled. + */ + enabled: boolean; + } + + export interface BareMetalAdminClusterLoadBalancerPortConfig { + /** + * The port that control plane hosted load balancers will listen on. + */ + controlPlaneLoadBalancerPort: number; + } + + export interface BareMetalAdminClusterLoadBalancerVipConfig { + /** + * The VIP which you previously set aside for the Kubernetes API of this Bare Metal Admin Cluster. + */ + controlPlaneVip: string; + } + + export interface BareMetalAdminClusterMaintenanceConfig { + /** + * All IPv4 address from these ranges will be placed into maintenance mode. + * Nodes in maintenance mode will be cordoned and drained. When both of these + * are true, the "baremetal.cluster.gke.io/maintenance" annotation will be set + * on the node resource. + */ + maintenanceAddressCidrBlocks: string[]; + } + + export interface BareMetalAdminClusterNetworkConfig { + /** + * A nested object resource. + * Structure is documented below. + */ + islandModeCidr?: outputs.gkeonprem.BareMetalAdminClusterNetworkConfigIslandModeCidr; + } + + export interface BareMetalAdminClusterNetworkConfigIslandModeCidr { + /** + * All pods in the cluster are assigned an RFC1918 IPv4 address from these ranges. This field cannot be changed after creation. + */ + podAddressCidrBlocks: string[]; + /** + * All services in the cluster are assigned an RFC1918 IPv4 address from these ranges. This field cannot be changed after creation. + */ + serviceAddressCidrBlocks: string[]; + } + + export interface BareMetalAdminClusterNodeAccessConfig { + /** + * LoginUser is the user name used to access node machines. + * It defaults to "root" if not set. + */ + loginUser?: string; + } + + export interface BareMetalAdminClusterNodeConfig { + /** + * The maximum number of pods a node can run. The size of the CIDR range + * assigned to the node will be derived from this parameter. + */ + maxPodsPerNode?: number; + } + + export interface BareMetalAdminClusterProxy { + /** + * A list of IPs, hostnames, and domains that should skip the proxy. + * For example: ["127.0.0.1", "example.com", ".corp", "localhost"]. + */ + noProxies?: string[]; + /** + * Specifies the address of your proxy server. + * For Example: http://domain + * WARNING: Do not provide credentials in the format + * of http://(username:password@)domain these will be rejected by the server. + */ + uri: string; + } + + export interface BareMetalAdminClusterSecurityConfig { + /** + * Configures user access to the Bare Metal User cluster. + * Structure is documented below. + */ + authorization?: outputs.gkeonprem.BareMetalAdminClusterSecurityConfigAuthorization; + } + + export interface BareMetalAdminClusterSecurityConfigAuthorization { + /** + * Users that will be granted the cluster-admin role on the cluster, providing full access to the cluster. + * Structure is documented below. + */ + adminUsers: outputs.gkeonprem.BareMetalAdminClusterSecurityConfigAuthorizationAdminUser[]; + } + + export interface BareMetalAdminClusterSecurityConfigAuthorizationAdminUser { + /** + * The name of the user, e.g. `my-gcp-id@gmail.com`. + */ + username: string; + } + + export interface BareMetalAdminClusterStatus { + /** + * (Output) + * ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + * Structure is documented below. + */ + conditions: outputs.gkeonprem.BareMetalAdminClusterStatusCondition[]; /** * (Output) * Human-friendly representation of the error message from the admin cluster @@ -68240,105 +68907,778 @@ export namespace gkeonprem { type: string; } - export interface VMwareClusterStorage { - /** - * Whether or not to deploy vSphere CSI components in the VMware User Cluster. - * Enabled by default. - */ - vsphereCsiDisabled: boolean; - } - - export interface VMwareClusterUpgradePolicy { - /** - * Controls whether the upgrade applies to the control plane only. - */ - controlPlaneOnly?: boolean; - } - - export interface VMwareClusterValidationCheck { - /** - * (Output) - * Options used for the validation check. - */ - options: string; + export interface VMwareClusterStorage { + /** + * Whether or not to deploy vSphere CSI components in the VMware User Cluster. + * Enabled by default. + */ + vsphereCsiDisabled: boolean; + } + + export interface VMwareClusterUpgradePolicy { + /** + * Controls whether the upgrade applies to the control plane only. + */ + controlPlaneOnly?: boolean; + } + + export interface VMwareClusterValidationCheck { + /** + * (Output) + * Options used for the validation check. + */ + options: string; + /** + * (Output) + * The scenario when the preflight checks were run.. + */ + scenario: string; + /** + * (Output) + * Specifies the detailed validation check status + * Structure is documented below. + */ + statuses: outputs.gkeonprem.VMwareClusterValidationCheckStatus[]; + } + + export interface VMwareClusterValidationCheckStatus { + /** + * (Output) + * Individual checks which failed as part of the Preflight check execution. + * Structure is documented below. + */ + results: outputs.gkeonprem.VMwareClusterValidationCheckStatusResult[]; + } + + export interface VMwareClusterValidationCheckStatusResult { + /** + * (Output) + * The category of the validation. + */ + category: string; + /** + * (Output) + * The description of the validation check. + */ + description: string; + /** + * (Output) + * Detailed failure information, which might be unformatted. + */ + details: string; + /** + * (Output) + * Options used for the validation check. + */ + options: string; + /** + * (Output) + * Machine-readable message indicating details about last transition. + */ + reason: string; + } + + export interface VMwareClusterVcenter { + /** + * (Output) + * The vCenter IP address. + */ + address: string; + /** + * Contains the vCenter CA certificate public key for SSL verification. + */ + caCertData?: string; + /** + * The name of the vCenter cluster for the user cluster. + */ + cluster?: string; + /** + * The name of the vCenter datacenter for the user cluster. + */ + datacenter?: string; + /** + * The name of the vCenter datastore for the user cluster. + */ + datastore?: string; + /** + * The name of the vCenter folder for the user cluster. + */ + folder?: string; + /** + * The name of the vCenter resource pool for the user cluster. + */ + resourcePool?: string; + /** + * The name of the vCenter storage policy for the user cluster. + */ + storagePolicyName?: string; + } + + export interface VMwareNodePoolConfig { + /** + * VMware disk size to be used during creation. + */ + bootDiskSizeGb?: number; + /** + * The number of CPUs for each node in the node pool. + */ + cpus?: number; + /** + * Allow node pool traffic to be load balanced. Only works for clusters with + * MetalLB load balancers. + */ + enableLoadBalancer?: boolean; + /** + * The OS image name in vCenter, only valid when using Windows. + */ + image?: string; + /** + * The OS image to be used for each node in a node pool. + * Currently `cos`, `cosCgv2`, `ubuntu`, `ubuntuCgv2`, `ubuntuContainerd` and `windows` are supported. + */ + imageType: string; + /** + * The map of Kubernetes labels (key/value pairs) to be applied to each node. + * These will added in addition to any default label(s) that + * Kubernetes may apply to the node. + * In case of conflict in label keys, the applied set may differ depending on + * the Kubernetes version -- it's best to assume the behavior is undefined + * and conflicts should be avoided. + */ + labels: {[key: string]: string}; + /** + * The megabytes of memory for each node in the node pool. + */ + memoryMb?: number; + /** + * The number of nodes in the node pool. + */ + replicas?: number; + /** + * The initial taints assigned to nodes of this node pool. + * Structure is documented below. + */ + taints?: outputs.gkeonprem.VMwareNodePoolConfigTaint[]; + /** + * Specifies the vSphere config for node pool. + * Structure is documented below. + */ + vsphereConfig?: outputs.gkeonprem.VMwareNodePoolConfigVsphereConfig; + } + + export interface VMwareNodePoolConfigTaint { + /** + * Available taint effects. + * Possible values are: `EFFECT_UNSPECIFIED`, `NO_SCHEDULE`, `PREFER_NO_SCHEDULE`, `NO_EXECUTE`. + */ + effect?: string; + /** + * Key associated with the effect. + */ + key: string; + /** + * Value associated with the effect. + */ + value: string; + } + + export interface VMwareNodePoolConfigVsphereConfig { + /** + * The name of the vCenter datastore. Inherited from the user cluster. + */ + datastore?: string; + /** + * Vsphere host groups to apply to all VMs in the node pool + */ + hostGroups?: string[]; + /** + * Tags to apply to VMs. + * Structure is documented below. + */ + tags?: outputs.gkeonprem.VMwareNodePoolConfigVsphereConfigTag[]; + } + + export interface VMwareNodePoolConfigVsphereConfigTag { + /** + * The Vsphere tag category. + */ + category?: string; + /** + * The Vsphere tag name. + * + * - - - + */ + tag?: string; + } + + export interface VMwareNodePoolNodePoolAutoscaling { + /** + * Maximum number of replicas in the NodePool. + */ + maxReplicas: number; + /** + * Minimum number of replicas in the NodePool. + */ + minReplicas: number; + } + + export interface VMwareNodePoolStatus { + /** + * (Output) + * ResourceConditions provide a standard mechanism for higher-level status reporting from user cluster controller. + * Structure is documented below. + */ + conditions: outputs.gkeonprem.VMwareNodePoolStatusCondition[]; + /** + * (Output) + * Human-friendly representation of the error message from the user cluster + * controller. The error message can be temporary as the user cluster + * controller creates a cluster or node pool. If the error message persists + * for a longer period of time, it can be used to surface error message to + * indicate real problems requiring user intervention. + */ + errorMessage: string; + } + + export interface VMwareNodePoolStatusCondition { + /** + * (Output) + * Last time the condition transit from one status to another. + */ + lastTransitionTime: string; + /** + * (Output) + * Human-readable message indicating details about last transition. + */ + message: string; + /** + * (Output) + * Machine-readable message indicating details about last transition. + */ + reason: string; + /** + * (Output) + * The lifecycle state of the condition. + */ + state: string; + /** + * (Output) + * Type of the condition. + * (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + */ + type: string; + } + + export interface VmwareAdminClusterAddonNode { + /** + * Specifies auto resize config. + * Structure is documented below. + */ + autoResizeConfig: outputs.gkeonprem.VmwareAdminClusterAddonNodeAutoResizeConfig; + } + + export interface VmwareAdminClusterAddonNodeAutoResizeConfig { + /** + * Whether to enable controle plane node auto resizing. + */ + enabled: boolean; + } + + export interface VmwareAdminClusterAntiAffinityGroups { + /** + * Spread nodes across at least three physical hosts (requires at least three + * hosts). + * Enabled by default. + */ + aagConfigDisabled: boolean; + } + + export interface VmwareAdminClusterAuthorization { + /** + * Users that will be granted the cluster-admin role on the cluster, providing + * full access to the cluster. + * Structure is documented below. + */ + viewerUsers?: outputs.gkeonprem.VmwareAdminClusterAuthorizationViewerUser[]; + } + + export interface VmwareAdminClusterAuthorizationViewerUser { + /** + * The name of the user, e.g. `my-gcp-id@gmail.com`. + */ + username: string; + } + + export interface VmwareAdminClusterAutoRepairConfig { + /** + * Whether auto repair is enabled. + */ + enabled: boolean; + } + + export interface VmwareAdminClusterControlPlaneNode { + /** + * The number of vCPUs for the control-plane node of the admin cluster. + */ + cpus?: number; + /** + * The number of mebibytes of memory for the control-plane node of the admin cluster. + */ + memory?: number; + /** + * The number of control plane nodes for this VMware admin cluster. + */ + replicas?: number; + } + + export interface VmwareAdminClusterFleet { + /** + * (Output) + * The name of the managed Fleet Membership resource associated to this cluster. + * Membership names are formatted as + * `projects//locations//memberships/`. + */ + membership: string; + } + + export interface VmwareAdminClusterLoadBalancer { + /** + * Configuration for F5 Big IP typed load balancers. + * Structure is documented below. + */ + f5Config?: outputs.gkeonprem.VmwareAdminClusterLoadBalancerF5Config; + /** + * Manually configured load balancers. + * Structure is documented below. + */ + manualLbConfig?: outputs.gkeonprem.VmwareAdminClusterLoadBalancerManualLbConfig; + /** + * Metal LB load balancers. + * Structure is documented below. + */ + metalLbConfig?: outputs.gkeonprem.VmwareAdminClusterLoadBalancerMetalLbConfig; + /** + * Specified the VMware Load Balancer Config + * Structure is documented below. + */ + vipConfig: outputs.gkeonprem.VmwareAdminClusterLoadBalancerVipConfig; + } + + export interface VmwareAdminClusterLoadBalancerF5Config { + /** + * The load balancer's IP address. + */ + address?: string; + /** + * 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'. + */ + partition?: string; + /** + * The pool name. Only necessary, if using SNAT. + */ + snatPool?: string; + } + + export interface VmwareAdminClusterLoadBalancerManualLbConfig { + /** + * NodePort for add-ons server in the admin cluster. + */ + addonsNodePort: number; + /** + * NodePort for control plane service. The Kubernetes API server in the admin + * cluster is implemented as a Service of type NodePort (ex. 30968). + */ + controlPlaneNodePort: number; + /** + * NodePort for ingress service's http. The ingress service in the admin + * cluster is implemented as a Service of type NodePort (ex. 32527). + */ + ingressHttpNodePort: number; + /** + * NodePort for ingress service's https. The ingress service in the admin + * cluster is implemented as a Service of type NodePort (ex. 30139). + */ + ingressHttpsNodePort: number; + /** + * NodePort for konnectivity server service running as a sidecar in each + * kube-apiserver pod (ex. 30564). + */ + konnectivityServerNodePort: number; + } + + export interface VmwareAdminClusterLoadBalancerMetalLbConfig { + /** + * Metal LB is enabled. + */ + enabled?: boolean; + } + + export interface VmwareAdminClusterLoadBalancerVipConfig { + /** + * The VIP to configure the load balancer for add-ons. + * + * The `f5Config` block supports: + */ + addonsVip?: string; + /** + * The VIP which you previously set aside for the Kubernetes + * API of this VMware Admin Cluster. + */ + controlPlaneVip: string; + } + + export interface VmwareAdminClusterNetworkConfig { + /** + * Configuration settings for a DHCP IP configuration. + * Structure is documented below. + */ + dhcpIpConfig: outputs.gkeonprem.VmwareAdminClusterNetworkConfigDhcpIpConfig; + /** + * Configuration for HA admin cluster control plane. + * Structure is documented below. + */ + haControlPlaneConfig?: outputs.gkeonprem.VmwareAdminClusterNetworkConfigHaControlPlaneConfig; + /** + * Represents common network settings irrespective of the host's IP address. + * Structure is documented below. + */ + hostConfig: outputs.gkeonprem.VmwareAdminClusterNetworkConfigHostConfig; + /** + * 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. + */ + podAddressCidrBlocks: string[]; + /** + * 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. + */ + serviceAddressCidrBlocks: string[]; + /** + * Configuration settings for a static IP configuration. + * Structure is documented below. + */ + staticIpConfig?: outputs.gkeonprem.VmwareAdminClusterNetworkConfigStaticIpConfig; + /** + * vcenter_network specifies vCenter network name. + */ + vcenterNetwork?: string; + } + + export interface VmwareAdminClusterNetworkConfigDhcpIpConfig { + /** + * enabled is a flag to mark if DHCP IP allocation is + * used for VMware admin clusters. + */ + enabled: boolean; + } + + export interface VmwareAdminClusterNetworkConfigHaControlPlaneConfig { + /** + * Static IP addresses for the control plane nodes. + * Structure is documented below. + */ + controlPlaneIpBlock?: outputs.gkeonprem.VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock; + } + + export interface VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock { + /** + * The network gateway used by the VMware Admin Cluster. + */ + gateway: string; + /** + * The node's network configurations used by the VMware Admin Cluster. + * Structure is documented below. + */ + ips: outputs.gkeonprem.VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp[]; + /** + * The netmask used by the VMware Admin Cluster. + */ + netmask: string; + } + + export interface VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp { + /** + * Hostname of the machine. VM's name will be used if this field is empty. + * + * - - - + */ + hostname: string; + /** + * IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + */ + ip: string; + } + + export interface VmwareAdminClusterNetworkConfigHostConfig { + /** + * DNS search domains. + */ + dnsSearchDomains?: string[]; + /** + * DNS servers. + */ + dnsServers?: string[]; + /** + * NTP servers. + */ + ntpServers?: string[]; + } + + export interface VmwareAdminClusterNetworkConfigStaticIpConfig { + /** + * Represents the configuration values for static IP allocation to nodes. + * Structure is documented below. + */ + ipBlocks?: outputs.gkeonprem.VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock[]; + } + + export interface VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock { + /** + * The network gateway used by the VMware Admin Cluster. + */ + gateway: string; + /** + * The node's network configurations used by the VMware Admin Cluster. + * Structure is documented below. + */ + ips: outputs.gkeonprem.VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp[]; + /** + * The netmask used by the VMware Admin Cluster. + */ + netmask: string; + } + + export interface VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp { + /** + * Hostname of the machine. VM's name will be used if this field is empty. + * + * - - - + */ + hostname: string; + /** + * IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + */ + ip: string; + } + + export interface VmwareAdminClusterPlatformConfig { + /** + * (Output) + * The list of bundles installed in the admin cluster. + * Structure is documented below. + */ + bundles: outputs.gkeonprem.VmwareAdminClusterPlatformConfigBundle[]; + /** + * (Output) + * The platform version e.g. 1.13.2. + */ + platformVersion: string; + /** + * The required platform version e.g. 1.13.1. + * If the current platform version is lower than the target version, + * the platform version will be updated to the target version. + * If the target version is not installed in the platform + * (bundle versions), download the target version bundle. + */ + requiredPlatformVersion?: string; + /** + * (Output) + * ResourceStatus representing detailed cluster state. + * Structure is documented below. + * + * + * The `status` block contains: + */ + statuses: outputs.gkeonprem.VmwareAdminClusterPlatformConfigStatus[]; + } + + export interface VmwareAdminClusterPlatformConfigBundle { + /** + * ResourceStatus representing detailed cluster state. + * Structure is documented below. + */ + statuses: outputs.gkeonprem.VmwareAdminClusterPlatformConfigBundleStatus[]; + /** + * The version of the bundle. + */ + version: string; + } + + export interface VmwareAdminClusterPlatformConfigBundleStatus { + /** + * (Output) + * ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + * Structure is documented below. + */ + conditions: outputs.gkeonprem.VmwareAdminClusterPlatformConfigBundleStatusCondition[]; + /** + * (Output) + * Human-friendly representation of the error message from the admin cluster + * controller. The error message can be temporary as the admin cluster + * controller creates a cluster or node pool. If the error message persists + * for a longer period of time, it can be used to surface error message to + * indicate real problems requiring user intervention. + */ + errorMessage: string; + } + + export interface VmwareAdminClusterPlatformConfigBundleStatusCondition { + /** + * (Output) + * Last time the condition transit from one status to another. + */ + lastTransitionTime: string; + /** + * (Output) + * Human-readable message indicating details about last transition. + */ + message: string; + /** + * (Output) + * Machine-readable message indicating details about last transition. + */ + reason: string; + /** + * (Output) + * The lifecycle state of the condition. + */ + state: string; + /** + * (Output) + * Type of the condition. + * (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + */ + type: string; + } + + export interface VmwareAdminClusterPlatformConfigStatus { + /** + * (Output) + * ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + * Structure is documented below. + */ + conditions: outputs.gkeonprem.VmwareAdminClusterPlatformConfigStatusCondition[]; + /** + * (Output) + * Human-friendly representation of the error message from the admin cluster + * controller. The error message can be temporary as the admin cluster + * controller creates a cluster or node pool. If the error message persists + * for a longer period of time, it can be used to surface error message to + * indicate real problems requiring user intervention. + */ + errorMessage: string; + } + + export interface VmwareAdminClusterPlatformConfigStatusCondition { + /** + * (Output) + * Last time the condition transit from one status to another. + */ + lastTransitionTime: string; + /** + * (Output) + * Human-readable message indicating details about last transition. + */ + message: string; + /** + * (Output) + * Machine-readable message indicating details about last transition. + */ + reason: string; + /** + * (Output) + * The lifecycle state of the condition. + */ + state: string; + /** + * (Output) + * Type of the condition. + * (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + */ + type: string; + } + + export interface VmwareAdminClusterStatus { /** * (Output) - * The scenario when the preflight checks were run.. - */ - scenario: string; - /** - * (Output) - * Specifies the detailed validation check status + * ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. * Structure is documented below. */ - statuses: outputs.gkeonprem.VMwareClusterValidationCheckStatus[]; - } - - export interface VMwareClusterValidationCheckStatus { + conditions: outputs.gkeonprem.VmwareAdminClusterStatusCondition[]; /** * (Output) - * Individual checks which failed as part of the Preflight check execution. - * Structure is documented below. + * Human-friendly representation of the error message from the admin cluster + * controller. The error message can be temporary as the admin cluster + * controller creates a cluster or node pool. If the error message persists + * for a longer period of time, it can be used to surface error message to + * indicate real problems requiring user intervention. */ - results: outputs.gkeonprem.VMwareClusterValidationCheckStatusResult[]; + errorMessage: string; } - export interface VMwareClusterValidationCheckStatusResult { + export interface VmwareAdminClusterStatusCondition { /** * (Output) - * The category of the validation. + * Last time the condition transit from one status to another. */ - category: string; + lastTransitionTime: string; /** * (Output) - * The description of the validation check. + * Human-readable message indicating details about last transition. */ - description: string; + message: string; /** * (Output) - * Detailed failure information, which might be unformatted. + * Machine-readable message indicating details about last transition. */ - details: string; + reason: string; /** * (Output) - * Options used for the validation check. + * The lifecycle state of the condition. */ - options: string; + state: string; /** * (Output) - * Machine-readable message indicating details about last transition. + * Type of the condition. + * (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) */ - reason: string; + type: string; } - export interface VMwareClusterVcenter { + export interface VmwareAdminClusterVcenter { /** - * (Output) * The vCenter IP address. */ - address: string; + address?: string; /** * Contains the vCenter CA certificate public key for SSL verification. */ caCertData?: string; /** - * The name of the vCenter cluster for the user cluster. + * The name of the vCenter cluster for the admin cluster. */ cluster?: string; /** - * The name of the vCenter datacenter for the user cluster. + * The name of the virtual machine disk (VMDK) for the admin cluster. + */ + dataDisk?: string; + /** + * The name of the vCenter datacenter for the admin cluster. */ datacenter?: string; /** - * The name of the vCenter datastore for the user cluster. + * The name of the vCenter datastore for the admin cluster. */ datastore?: string; /** - * The name of the vCenter folder for the user cluster. + * The name of the vCenter folder for the admin cluster. */ folder?: string; /** - * The name of the vCenter resource pool for the user cluster. + * The name of the vCenter resource pool for the admin cluster. */ resourcePool?: string; /** @@ -68347,161 +69687,6 @@ export namespace gkeonprem { storagePolicyName?: string; } - export interface VMwareNodePoolConfig { - /** - * VMware disk size to be used during creation. - */ - bootDiskSizeGb?: number; - /** - * The number of CPUs for each node in the node pool. - */ - cpus?: number; - /** - * Allow node pool traffic to be load balanced. Only works for clusters with - * MetalLB load balancers. - */ - enableLoadBalancer?: boolean; - /** - * The OS image name in vCenter, only valid when using Windows. - */ - image?: string; - /** - * The OS image to be used for each node in a node pool. - * Currently `cos`, `cosCgv2`, `ubuntu`, `ubuntuCgv2`, `ubuntuContainerd` and `windows` are supported. - */ - imageType: string; - /** - * The map of Kubernetes labels (key/value pairs) to be applied to each node. - * These will added in addition to any default label(s) that - * Kubernetes may apply to the node. - * In case of conflict in label keys, the applied set may differ depending on - * the Kubernetes version -- it's best to assume the behavior is undefined - * and conflicts should be avoided. - */ - labels: {[key: string]: string}; - /** - * The megabytes of memory for each node in the node pool. - */ - memoryMb?: number; - /** - * The number of nodes in the node pool. - */ - replicas?: number; - /** - * The initial taints assigned to nodes of this node pool. - * Structure is documented below. - */ - taints?: outputs.gkeonprem.VMwareNodePoolConfigTaint[]; - /** - * Specifies the vSphere config for node pool. - * Structure is documented below. - */ - vsphereConfig?: outputs.gkeonprem.VMwareNodePoolConfigVsphereConfig; - } - - export interface VMwareNodePoolConfigTaint { - /** - * Available taint effects. - * Possible values are: `EFFECT_UNSPECIFIED`, `NO_SCHEDULE`, `PREFER_NO_SCHEDULE`, `NO_EXECUTE`. - */ - effect?: string; - /** - * Key associated with the effect. - */ - key: string; - /** - * Value associated with the effect. - */ - value: string; - } - - export interface VMwareNodePoolConfigVsphereConfig { - /** - * The name of the vCenter datastore. Inherited from the user cluster. - */ - datastore?: string; - /** - * Vsphere host groups to apply to all VMs in the node pool - */ - hostGroups?: string[]; - /** - * Tags to apply to VMs. - * Structure is documented below. - */ - tags?: outputs.gkeonprem.VMwareNodePoolConfigVsphereConfigTag[]; - } - - export interface VMwareNodePoolConfigVsphereConfigTag { - /** - * The Vsphere tag category. - */ - category?: string; - /** - * The Vsphere tag name. - * - * - - - - */ - tag?: string; - } - - export interface VMwareNodePoolNodePoolAutoscaling { - /** - * Maximum number of replicas in the NodePool. - */ - maxReplicas: number; - /** - * Minimum number of replicas in the NodePool. - */ - minReplicas: number; - } - - export interface VMwareNodePoolStatus { - /** - * (Output) - * ResourceConditions provide a standard mechanism for higher-level status reporting from user cluster controller. - * Structure is documented below. - */ - conditions: outputs.gkeonprem.VMwareNodePoolStatusCondition[]; - /** - * (Output) - * Human-friendly representation of the error message from the user cluster - * controller. The error message can be temporary as the user cluster - * controller creates a cluster or node pool. If the error message persists - * for a longer period of time, it can be used to surface error message to - * indicate real problems requiring user intervention. - */ - errorMessage: string; - } - - export interface VMwareNodePoolStatusCondition { - /** - * (Output) - * Last time the condition transit from one status to another. - */ - lastTransitionTime: string; - /** - * (Output) - * Human-readable message indicating details about last transition. - */ - message: string; - /** - * (Output) - * Machine-readable message indicating details about last transition. - */ - reason: string; - /** - * (Output) - * The lifecycle state of the condition. - */ - state: string; - /** - * (Output) - * Type of the condition. - * (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) - */ - type: string; - } - } export namespace healthcare { @@ -71051,7 +72236,7 @@ export namespace integrationconnectors { export interface ConnectionEventingRuntimeDataStatus { /** - * An arbitrary description for the Conection. + * An arbitrary description for the Connection. */ description: string; /** @@ -71222,7 +72407,7 @@ export namespace integrationconnectors { export interface ConnectionStatus { /** - * An arbitrary description for the Conection. + * An arbitrary description for the Connection. */ description: string; /** @@ -75687,6 +76872,25 @@ export namespace networksecurity { name: string; } + export interface InterceptEndpointGroupAssociationLocationsDetail { + /** + * The location of the Intercept Endpoint Group Association, currently restricted to `global`. + * + * + * - - - + */ + location: string; + /** + * (Output) + * The association state in this location. + * Possible values: + * STATE_UNSPECIFIED + * ACTIVE + * OUT_OF_SYNC + */ + state: string; + } + export interface MirroringDeploymentGroupConnectedEndpointGroup { /** * (Output) @@ -90481,6 +91685,94 @@ export namespace storage { pubsubTopic: string; } + export interface TransferJobReplicationSpec { + /** + * A Google Cloud Storage data sink. Structure documented below. + */ + gcsDataSink?: outputs.storage.TransferJobReplicationSpecGcsDataSink; + /** + * A Google Cloud Storage data source. Structure documented below. + */ + gcsDataSource?: outputs.storage.TransferJobReplicationSpecGcsDataSource; + /** + * Only objects that satisfy these object conditions are included in the set of data source and data sink objects. Object conditions based on objects' `lastModificationTime` do not exclude objects in a data sink. Structure documented below. + */ + objectConditions?: outputs.storage.TransferJobReplicationSpecObjectConditions; + /** + * Characteristics of how to treat files from datasource and sink during job. If the option `deleteObjectsUniqueInSink` is true, object conditions based on objects' `lastModificationTime` are ignored and do not exclude objects in a data source or a data sink. Structure documented below. + */ + transferOptions?: outputs.storage.TransferJobReplicationSpecTransferOptions; + } + + export interface TransferJobReplicationSpecGcsDataSink { + /** + * Google Cloud Storage bucket name. + */ + bucketName: string; + /** + * 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 '/'. + */ + path: string; + } + + export interface TransferJobReplicationSpecGcsDataSource { + /** + * Google Cloud Storage bucket name. + */ + bucketName: string; + /** + * 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 '/'. + */ + path: string; + } + + export interface TransferJobReplicationSpecObjectConditions { + /** + * `excludePrefixes` must follow the requirements described for `includePrefixes`. See [Requirements](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#ObjectConditions). + */ + excludePrefixes?: string[]; + /** + * If `includePrefixes` is specified, objects that satisfy the object conditions must have names that start with one of the `includePrefixes` and that do not start with any of the `excludePrefixes`. If `includePrefixes` is not specified, all objects except those that have names starting with one of the `excludePrefixes` must satisfy the object conditions. See [Requirements](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#ObjectConditions). + */ + includePrefixes?: string[]; + /** + * 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". + */ + lastModifiedBefore?: string; + /** + * 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". + */ + lastModifiedSince?: string; + /** + * A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + */ + maxTimeElapsedSinceLastModification?: string; + /** + * A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + */ + minTimeElapsedSinceLastModification?: string; + } + + export interface TransferJobReplicationSpecTransferOptions { + /** + * Whether objects should be deleted from the source after they are transferred to the sink. Note that this option and `deleteObjectsUniqueInSink` are mutually exclusive. + */ + deleteObjectsFromSourceAfterTransfer?: boolean; + /** + * Whether objects that exist only in the sink should be deleted. Note that this option and + * `deleteObjectsFromSourceAfterTransfer` are mutually exclusive. + */ + deleteObjectsUniqueInSink?: boolean; + /** + * Whether overwriting objects that already exist in the sink is allowed. + */ + overwriteObjectsAlreadyExistingInSink?: boolean; + /** + * When to overwrite objects that already exist in the sink. If not set, overwrite behavior is determined by `overwriteObjectsAlreadyExistingInSink`. Possible values: ALWAYS, DIFFERENT, NEVER. + */ + overwriteWhen?: string; + } + export interface TransferJobSchedule { /** * Interval between the start of each scheduled transfer. If unspecified, the default value is 24 hours. This value may not be less than 1 hour. A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". @@ -92610,7 +93902,7 @@ export namespace vertex { * The expected structure and format of the files this URI points to is * described at https://cloud.google.com/vertex-ai/docs/matching-engine/using-matching-engine#input-data-format */ - contentsDeltaUri: string; + contentsDeltaUri?: string; /** * If this field is set together with contentsDeltaUri when calling IndexService.UpdateIndex, * then existing content of the Index will be replaced by the data from the contentsDeltaUri. diff --git a/sdk/nodejs/vertex/aiEndpoint.ts b/sdk/nodejs/vertex/aiEndpoint.ts index 2e3ef68279..f2a16d8441 100644 --- a/sdk/nodejs/vertex/aiEndpoint.ts +++ b/sdk/nodejs/vertex/aiEndpoint.ts @@ -84,7 +84,7 @@ import * as utilities from "../utilities"; * * const project = gcp.organizations.getProject({}); * const endpoint = new gcp.vertex.AiEndpoint("endpoint", { - * name: "endpoint-name_8270", + * name: "endpoint-name_89313", * displayName: "sample-endpoint", * description: "A sample vertex endpoint", * location: "us-central1", @@ -106,7 +106,7 @@ import * as utilities from "../utilities"; * import * as gcp from "@pulumi/gcp"; * * const endpoint = new gcp.vertex.AiEndpoint("endpoint", { - * name: "endpoint-name_41150", + * name: "endpoint-name_60646", * displayName: "sample-endpoint", * description: "A sample vertex endpoint", * location: "us-central1", diff --git a/sdk/nodejs/vertex/aiFeatureOnlineStoreFeatureview.ts b/sdk/nodejs/vertex/aiFeatureOnlineStoreFeatureview.ts index c2e0ce8663..6a03ada94b 100644 --- a/sdk/nodejs/vertex/aiFeatureOnlineStoreFeatureview.ts +++ b/sdk/nodejs/vertex/aiFeatureOnlineStoreFeatureview.ts @@ -179,8 +179,8 @@ import * as utilities from "../utilities"; * * const testProject = gcp.organizations.getProject({}); * const project = new gcp.organizations.Project("project", { - * projectId: "tf-test_89313", - * name: "tf-test_60646", + * projectId: "tf-test_9394", + * name: "tf-test_11380", * orgId: "123456789", * billingAccount: "000000-0000000-0000000-000000", * deletionPolicy: "DELETE", diff --git a/sdk/nodejs/workstations/workstation.ts b/sdk/nodejs/workstations/workstation.ts index 39a936492b..926e6e2661 100644 --- a/sdk/nodejs/workstations/workstation.ts +++ b/sdk/nodejs/workstations/workstation.ts @@ -172,6 +172,11 @@ export class Workstation extends pulumi.CustomResource { * and default labels configured on the provider. */ public /*out*/ readonly pulumiLabels!: pulumi.Output<{[key: string]: string}>; + /** + * Full resource name of the source workstation from which the workstation's persistent + * directories will be cloned from during creation. + */ + public readonly sourceWorkstation!: pulumi.Output; /** * Current state of the workstation. */ @@ -218,6 +223,7 @@ export class Workstation extends pulumi.CustomResource { resourceInputs["name"] = state ? state.name : undefined; resourceInputs["project"] = state ? state.project : undefined; resourceInputs["pulumiLabels"] = state ? state.pulumiLabels : undefined; + resourceInputs["sourceWorkstation"] = state ? state.sourceWorkstation : undefined; resourceInputs["state"] = state ? state.state : undefined; resourceInputs["uid"] = state ? state.uid : undefined; resourceInputs["workstationClusterId"] = state ? state.workstationClusterId : undefined; @@ -243,6 +249,7 @@ export class Workstation extends pulumi.CustomResource { resourceInputs["labels"] = args ? args.labels : undefined; resourceInputs["location"] = args ? args.location : undefined; resourceInputs["project"] = args ? args.project : undefined; + resourceInputs["sourceWorkstation"] = args ? args.sourceWorkstation : undefined; resourceInputs["workstationClusterId"] = args ? args.workstationClusterId : undefined; resourceInputs["workstationConfigId"] = args ? args.workstationConfigId : undefined; resourceInputs["workstationId"] = args ? args.workstationId : undefined; @@ -322,6 +329,11 @@ export interface WorkstationState { * and default labels configured on the provider. */ pulumiLabels?: pulumi.Input<{[key: string]: pulumi.Input}>; + /** + * Full resource name of the source workstation from which the workstation's persistent + * directories will be cloned from during creation. + */ + sourceWorkstation?: pulumi.Input; /** * Current state of the workstation. */ @@ -380,6 +392,11 @@ export interface WorkstationArgs { * If it is not provided, the provider project is used. */ project?: pulumi.Input; + /** + * Full resource name of the source workstation from which the workstation's persistent + * directories will be cloned from during creation. + */ + sourceWorkstation?: pulumi.Input; /** * The ID of the parent workstation cluster. */ diff --git a/sdk/python/pulumi_gcp/__init__.py b/sdk/python/pulumi_gcp/__init__.py index 9c9e2c2a0f..2519c68e2f 100644 --- a/sdk/python/pulumi_gcp/__init__.py +++ b/sdk/python/pulumi_gcp/__init__.py @@ -56,6 +56,8 @@ certificateauthority = __certificateauthority import pulumi_gcp.certificatemanager as __certificatemanager certificatemanager = __certificatemanager + import pulumi_gcp.chronicle as __chronicle + chronicle = __chronicle import pulumi_gcp.cloudasset as __cloudasset cloudasset = __cloudasset import pulumi_gcp.cloudbuild as __cloudbuild @@ -284,6 +286,7 @@ blockchainnodeengine = _utilities.lazy_import('pulumi_gcp.blockchainnodeengine') certificateauthority = _utilities.lazy_import('pulumi_gcp.certificateauthority') certificatemanager = _utilities.lazy_import('pulumi_gcp.certificatemanager') + chronicle = _utilities.lazy_import('pulumi_gcp.chronicle') cloudasset = _utilities.lazy_import('pulumi_gcp.cloudasset') cloudbuild = _utilities.lazy_import('pulumi_gcp.cloudbuild') cloudbuildv2 = _utilities.lazy_import('pulumi_gcp.cloudbuildv2') @@ -1718,6 +1721,14 @@ "gcp:certificatemanager/trustConfig:TrustConfig": "TrustConfig" } }, + { + "pkg": "gcp", + "mod": "chronicle/watchlist", + "fqn": "pulumi_gcp.chronicle", + "classes": { + "gcp:chronicle/watchlist:Watchlist": "Watchlist" + } + }, { "pkg": "gcp", "mod": "cloudasset/folderFeed", @@ -5230,6 +5241,14 @@ "gcp:gkeonprem/vMwareNodePool:VMwareNodePool": "VMwareNodePool" } }, + { + "pkg": "gcp", + "mod": "gkeonprem/vmwareAdminCluster", + "fqn": "pulumi_gcp.gkeonprem", + "classes": { + "gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster": "VmwareAdminCluster" + } + }, { "pkg": "gcp", "mod": "healthcare/consentStore", @@ -6542,6 +6561,22 @@ "gcp:networksecurity/interceptDeploymentGroup:InterceptDeploymentGroup": "InterceptDeploymentGroup" } }, + { + "pkg": "gcp", + "mod": "networksecurity/interceptEndpointGroup", + "fqn": "pulumi_gcp.networksecurity", + "classes": { + "gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup": "InterceptEndpointGroup" + } + }, + { + "pkg": "gcp", + "mod": "networksecurity/interceptEndpointGroupAssociation", + "fqn": "pulumi_gcp.networksecurity", + "classes": { + "gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation": "InterceptEndpointGroupAssociation" + } + }, { "pkg": "gcp", "mod": "networksecurity/mirroringDeployment", @@ -8110,6 +8145,14 @@ "gcp:storage/defaultObjectAccessControl:DefaultObjectAccessControl": "DefaultObjectAccessControl" } }, + { + "pkg": "gcp", + "mod": "storage/folder", + "fqn": "pulumi_gcp.storage", + "classes": { + "gcp:storage/folder:Folder": "Folder" + } + }, { "pkg": "gcp", "mod": "storage/hmacKey", diff --git a/sdk/python/pulumi_gcp/accesscontextmanager/_inputs.py b/sdk/python/pulumi_gcp/accesscontextmanager/_inputs.py index 9b2bc43047..e6e56adc64 100644 --- a/sdk/python/pulumi_gcp/accesscontextmanager/_inputs.py +++ b/sdk/python/pulumi_gcp/accesscontextmanager/_inputs.py @@ -800,7 +800,7 @@ class AccessLevelBasicConditionVpcNetworkSourceVpcSubnetworkArgsDict(TypedDict): """ vpc_ip_subnetworks: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]] """ - CIDR block IP subnetwork specification. Must be IPv4. + A list of CIDR block IP subnetwork specification. Must be IPv4. """ elif False: AccessLevelBasicConditionVpcNetworkSourceVpcSubnetworkArgsDict: TypeAlias = Mapping[str, Any] @@ -812,7 +812,7 @@ def __init__(__self__, *, vpc_ip_subnetworks: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None): """ :param pulumi.Input[str] network: Required. Network name to be allowed by this Access Level. Networks of foreign organizations requires `compute.network.get` permission to be granted to caller. - :param pulumi.Input[Sequence[pulumi.Input[str]]] vpc_ip_subnetworks: CIDR block IP subnetwork specification. Must be IPv4. + :param pulumi.Input[Sequence[pulumi.Input[str]]] vpc_ip_subnetworks: A list of CIDR block IP subnetwork specification. Must be IPv4. """ pulumi.set(__self__, "network", network) if vpc_ip_subnetworks is not None: @@ -834,7 +834,7 @@ def network(self, value: pulumi.Input[str]): @pulumi.getter(name="vpcIpSubnetworks") def vpc_ip_subnetworks(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: """ - CIDR block IP subnetwork specification. Must be IPv4. + A list of CIDR block IP subnetwork specification. Must be IPv4. """ return pulumi.get(self, "vpc_ip_subnetworks") diff --git a/sdk/python/pulumi_gcp/accesscontextmanager/outputs.py b/sdk/python/pulumi_gcp/accesscontextmanager/outputs.py index d2bf9db905..bb44763c8d 100644 --- a/sdk/python/pulumi_gcp/accesscontextmanager/outputs.py +++ b/sdk/python/pulumi_gcp/accesscontextmanager/outputs.py @@ -598,7 +598,7 @@ def __init__(__self__, *, vpc_ip_subnetworks: Optional[Sequence[str]] = None): """ :param str network: Required. Network name to be allowed by this Access Level. Networks of foreign organizations requires `compute.network.get` permission to be granted to caller. - :param Sequence[str] vpc_ip_subnetworks: CIDR block IP subnetwork specification. Must be IPv4. + :param Sequence[str] vpc_ip_subnetworks: A list of CIDR block IP subnetwork specification. Must be IPv4. """ pulumi.set(__self__, "network", network) if vpc_ip_subnetworks is not None: @@ -616,7 +616,7 @@ def network(self) -> str: @pulumi.getter(name="vpcIpSubnetworks") def vpc_ip_subnetworks(self) -> Optional[Sequence[str]]: """ - CIDR block IP subnetwork specification. Must be IPv4. + A list of CIDR block IP subnetwork specification. Must be IPv4. """ return pulumi.get(self, "vpc_ip_subnetworks") diff --git a/sdk/python/pulumi_gcp/artifactregistry/_inputs.py b/sdk/python/pulumi_gcp/artifactregistry/_inputs.py index 4993be0051..d43f6454e4 100644 --- a/sdk/python/pulumi_gcp/artifactregistry/_inputs.py +++ b/sdk/python/pulumi_gcp/artifactregistry/_inputs.py @@ -65,6 +65,8 @@ 'RepositoryVirtualRepositoryConfigArgsDict', 'RepositoryVirtualRepositoryConfigUpstreamPolicyArgs', 'RepositoryVirtualRepositoryConfigUpstreamPolicyArgsDict', + 'RepositoryVulnerabilityScanningConfigArgs', + 'RepositoryVulnerabilityScanningConfigArgsDict', ] MYPY = False @@ -1582,3 +1584,84 @@ def repository(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "repository", value) +if not MYPY: + class RepositoryVulnerabilityScanningConfigArgsDict(TypedDict): + enablement_config: NotRequired[pulumi.Input[str]] + """ + This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository. + Possible values are: `INHERITED`, `DISABLED`. + """ + enablement_state: NotRequired[pulumi.Input[str]] + """ + (Output) + This field returns whether scanning is active for this repository. + """ + enablement_state_reason: NotRequired[pulumi.Input[str]] + """ + (Output) + This provides an explanation for the state of scanning on this repository. + """ +elif False: + RepositoryVulnerabilityScanningConfigArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class RepositoryVulnerabilityScanningConfigArgs: + def __init__(__self__, *, + enablement_config: Optional[pulumi.Input[str]] = None, + enablement_state: Optional[pulumi.Input[str]] = None, + enablement_state_reason: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] enablement_config: This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository. + Possible values are: `INHERITED`, `DISABLED`. + :param pulumi.Input[str] enablement_state: (Output) + This field returns whether scanning is active for this repository. + :param pulumi.Input[str] enablement_state_reason: (Output) + This provides an explanation for the state of scanning on this repository. + """ + if enablement_config is not None: + pulumi.set(__self__, "enablement_config", enablement_config) + if enablement_state is not None: + pulumi.set(__self__, "enablement_state", enablement_state) + if enablement_state_reason is not None: + pulumi.set(__self__, "enablement_state_reason", enablement_state_reason) + + @property + @pulumi.getter(name="enablementConfig") + def enablement_config(self) -> Optional[pulumi.Input[str]]: + """ + This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository. + Possible values are: `INHERITED`, `DISABLED`. + """ + return pulumi.get(self, "enablement_config") + + @enablement_config.setter + def enablement_config(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "enablement_config", value) + + @property + @pulumi.getter(name="enablementState") + def enablement_state(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + This field returns whether scanning is active for this repository. + """ + return pulumi.get(self, "enablement_state") + + @enablement_state.setter + def enablement_state(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "enablement_state", value) + + @property + @pulumi.getter(name="enablementStateReason") + def enablement_state_reason(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + This provides an explanation for the state of scanning on this repository. + """ + return pulumi.get(self, "enablement_state_reason") + + @enablement_state_reason.setter + def enablement_state_reason(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "enablement_state_reason", value) + + diff --git a/sdk/python/pulumi_gcp/artifactregistry/get_repository.py b/sdk/python/pulumi_gcp/artifactregistry/get_repository.py index d170cf011d..6b7d3d290d 100644 --- a/sdk/python/pulumi_gcp/artifactregistry/get_repository.py +++ b/sdk/python/pulumi_gcp/artifactregistry/get_repository.py @@ -27,7 +27,7 @@ class GetRepositoryResult: """ A collection of values returned by getRepository. """ - def __init__(__self__, cleanup_policies=None, cleanup_policy_dry_run=None, create_time=None, description=None, docker_configs=None, effective_labels=None, format=None, id=None, kms_key_name=None, labels=None, location=None, maven_configs=None, mode=None, name=None, project=None, pulumi_labels=None, remote_repository_configs=None, repository_id=None, update_time=None, virtual_repository_configs=None): + def __init__(__self__, cleanup_policies=None, cleanup_policy_dry_run=None, create_time=None, description=None, docker_configs=None, effective_labels=None, format=None, id=None, kms_key_name=None, labels=None, location=None, maven_configs=None, mode=None, name=None, project=None, pulumi_labels=None, remote_repository_configs=None, repository_id=None, update_time=None, virtual_repository_configs=None, vulnerability_scanning_configs=None): if cleanup_policies and not isinstance(cleanup_policies, list): raise TypeError("Expected argument 'cleanup_policies' to be a list") pulumi.set(__self__, "cleanup_policies", cleanup_policies) @@ -88,6 +88,9 @@ def __init__(__self__, cleanup_policies=None, cleanup_policy_dry_run=None, creat if virtual_repository_configs and not isinstance(virtual_repository_configs, list): raise TypeError("Expected argument 'virtual_repository_configs' to be a list") pulumi.set(__self__, "virtual_repository_configs", virtual_repository_configs) + if vulnerability_scanning_configs and not isinstance(vulnerability_scanning_configs, list): + raise TypeError("Expected argument 'vulnerability_scanning_configs' to be a list") + pulumi.set(__self__, "vulnerability_scanning_configs", vulnerability_scanning_configs) @property @pulumi.getter(name="cleanupPolicies") @@ -192,6 +195,11 @@ def update_time(self) -> str: def virtual_repository_configs(self) -> Sequence['outputs.GetRepositoryVirtualRepositoryConfigResult']: return pulumi.get(self, "virtual_repository_configs") + @property + @pulumi.getter(name="vulnerabilityScanningConfigs") + def vulnerability_scanning_configs(self) -> Sequence['outputs.GetRepositoryVulnerabilityScanningConfigResult']: + return pulumi.get(self, "vulnerability_scanning_configs") + class AwaitableGetRepositoryResult(GetRepositoryResult): # pylint: disable=using-constant-test @@ -218,7 +226,8 @@ def __await__(self): remote_repository_configs=self.remote_repository_configs, repository_id=self.repository_id, update_time=self.update_time, - virtual_repository_configs=self.virtual_repository_configs) + virtual_repository_configs=self.virtual_repository_configs, + vulnerability_scanning_configs=self.vulnerability_scanning_configs) def get_repository(location: Optional[str] = None, @@ -275,7 +284,8 @@ def get_repository(location: Optional[str] = None, remote_repository_configs=pulumi.get(__ret__, 'remote_repository_configs'), repository_id=pulumi.get(__ret__, 'repository_id'), update_time=pulumi.get(__ret__, 'update_time'), - virtual_repository_configs=pulumi.get(__ret__, 'virtual_repository_configs')) + virtual_repository_configs=pulumi.get(__ret__, 'virtual_repository_configs'), + vulnerability_scanning_configs=pulumi.get(__ret__, 'vulnerability_scanning_configs')) def get_repository_output(location: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, repository_id: Optional[pulumi.Input[str]] = None, @@ -329,4 +339,5 @@ def get_repository_output(location: Optional[pulumi.Input[str]] = None, remote_repository_configs=pulumi.get(__response__, 'remote_repository_configs'), repository_id=pulumi.get(__response__, 'repository_id'), update_time=pulumi.get(__response__, 'update_time'), - virtual_repository_configs=pulumi.get(__response__, 'virtual_repository_configs'))) + virtual_repository_configs=pulumi.get(__response__, 'virtual_repository_configs'), + vulnerability_scanning_configs=pulumi.get(__response__, 'vulnerability_scanning_configs'))) diff --git a/sdk/python/pulumi_gcp/artifactregistry/outputs.py b/sdk/python/pulumi_gcp/artifactregistry/outputs.py index 55a189ebea..be5757aecb 100644 --- a/sdk/python/pulumi_gcp/artifactregistry/outputs.py +++ b/sdk/python/pulumi_gcp/artifactregistry/outputs.py @@ -41,6 +41,7 @@ 'RepositoryRemoteRepositoryConfigYumRepositoryPublicRepository', 'RepositoryVirtualRepositoryConfig', 'RepositoryVirtualRepositoryConfigUpstreamPolicy', + 'RepositoryVulnerabilityScanningConfig', 'GetRepositoryCleanupPolicyResult', 'GetRepositoryCleanupPolicyConditionResult', 'GetRepositoryCleanupPolicyMostRecentVersionResult', @@ -64,6 +65,7 @@ 'GetRepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryResult', 'GetRepositoryVirtualRepositoryConfigResult', 'GetRepositoryVirtualRepositoryConfigUpstreamPolicyResult', + 'GetRepositoryVulnerabilityScanningConfigResult', ] @pulumi.output_type @@ -1304,6 +1306,76 @@ def repository(self) -> Optional[str]: return pulumi.get(self, "repository") +@pulumi.output_type +class RepositoryVulnerabilityScanningConfig(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "enablementConfig": + suggest = "enablement_config" + elif key == "enablementState": + suggest = "enablement_state" + elif key == "enablementStateReason": + suggest = "enablement_state_reason" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in RepositoryVulnerabilityScanningConfig. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + RepositoryVulnerabilityScanningConfig.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + RepositoryVulnerabilityScanningConfig.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + enablement_config: Optional[str] = None, + enablement_state: Optional[str] = None, + enablement_state_reason: Optional[str] = None): + """ + :param str enablement_config: This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository. + Possible values are: `INHERITED`, `DISABLED`. + :param str enablement_state: (Output) + This field returns whether scanning is active for this repository. + :param str enablement_state_reason: (Output) + This provides an explanation for the state of scanning on this repository. + """ + if enablement_config is not None: + pulumi.set(__self__, "enablement_config", enablement_config) + if enablement_state is not None: + pulumi.set(__self__, "enablement_state", enablement_state) + if enablement_state_reason is not None: + pulumi.set(__self__, "enablement_state_reason", enablement_state_reason) + + @property + @pulumi.getter(name="enablementConfig") + def enablement_config(self) -> Optional[str]: + """ + This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository. + Possible values are: `INHERITED`, `DISABLED`. + """ + return pulumi.get(self, "enablement_config") + + @property + @pulumi.getter(name="enablementState") + def enablement_state(self) -> Optional[str]: + """ + (Output) + This field returns whether scanning is active for this repository. + """ + return pulumi.get(self, "enablement_state") + + @property + @pulumi.getter(name="enablementStateReason") + def enablement_state_reason(self) -> Optional[str]: + """ + (Output) + This provides an explanation for the state of scanning on this repository. + """ + return pulumi.get(self, "enablement_state_reason") + + @pulumi.output_type class GetRepositoryCleanupPolicyResult(dict): def __init__(__self__, *, @@ -2042,3 +2114,43 @@ def repository(self) -> str: return pulumi.get(self, "repository") +@pulumi.output_type +class GetRepositoryVulnerabilityScanningConfigResult(dict): + def __init__(__self__, *, + enablement_config: str, + enablement_state: str, + enablement_state_reason: str): + """ + :param str enablement_config: This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository. Possible values: ["INHERITED", "DISABLED"] + :param str enablement_state: This field returns whether scanning is active for this repository. + :param str enablement_state_reason: This provides an explanation for the state of scanning on this repository. + """ + pulumi.set(__self__, "enablement_config", enablement_config) + pulumi.set(__self__, "enablement_state", enablement_state) + pulumi.set(__self__, "enablement_state_reason", enablement_state_reason) + + @property + @pulumi.getter(name="enablementConfig") + def enablement_config(self) -> str: + """ + This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository. Possible values: ["INHERITED", "DISABLED"] + """ + return pulumi.get(self, "enablement_config") + + @property + @pulumi.getter(name="enablementState") + def enablement_state(self) -> str: + """ + This field returns whether scanning is active for this repository. + """ + return pulumi.get(self, "enablement_state") + + @property + @pulumi.getter(name="enablementStateReason") + def enablement_state_reason(self) -> str: + """ + This provides an explanation for the state of scanning on this repository. + """ + return pulumi.get(self, "enablement_state_reason") + + diff --git a/sdk/python/pulumi_gcp/artifactregistry/repository.py b/sdk/python/pulumi_gcp/artifactregistry/repository.py index e411d642df..64e48c3e2f 100644 --- a/sdk/python/pulumi_gcp/artifactregistry/repository.py +++ b/sdk/python/pulumi_gcp/artifactregistry/repository.py @@ -34,7 +34,8 @@ def __init__(__self__, *, mode: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, remote_repository_config: Optional[pulumi.Input['RepositoryRemoteRepositoryConfigArgs']] = None, - virtual_repository_config: Optional[pulumi.Input['RepositoryVirtualRepositoryConfigArgs']] = None): + virtual_repository_config: Optional[pulumi.Input['RepositoryVirtualRepositoryConfigArgs']] = None, + vulnerability_scanning_config: Optional[pulumi.Input['RepositoryVulnerabilityScanningConfigArgs']] = None): """ The set of arguments for constructing a Repository resource. :param pulumi.Input[str] format: The format of packages that are stored in the repository. Supported formats @@ -87,6 +88,8 @@ def __init__(__self__, *, Structure is documented below. :param pulumi.Input['RepositoryVirtualRepositoryConfigArgs'] virtual_repository_config: Configuration specific for a Virtual Repository. Structure is documented below. + :param pulumi.Input['RepositoryVulnerabilityScanningConfigArgs'] vulnerability_scanning_config: Configuration for vulnerability scanning of artifacts stored in this repository. + Structure is documented below. """ pulumi.set(__self__, "format", format) pulumi.set(__self__, "repository_id", repository_id) @@ -114,6 +117,8 @@ def __init__(__self__, *, pulumi.set(__self__, "remote_repository_config", remote_repository_config) if virtual_repository_config is not None: pulumi.set(__self__, "virtual_repository_config", virtual_repository_config) + if vulnerability_scanning_config is not None: + pulumi.set(__self__, "vulnerability_scanning_config", vulnerability_scanning_config) @property @pulumi.getter @@ -319,6 +324,19 @@ def virtual_repository_config(self) -> Optional[pulumi.Input['RepositoryVirtualR def virtual_repository_config(self, value: Optional[pulumi.Input['RepositoryVirtualRepositoryConfigArgs']]): pulumi.set(self, "virtual_repository_config", value) + @property + @pulumi.getter(name="vulnerabilityScanningConfig") + def vulnerability_scanning_config(self) -> Optional[pulumi.Input['RepositoryVulnerabilityScanningConfigArgs']]: + """ + Configuration for vulnerability scanning of artifacts stored in this repository. + Structure is documented below. + """ + return pulumi.get(self, "vulnerability_scanning_config") + + @vulnerability_scanning_config.setter + def vulnerability_scanning_config(self, value: Optional[pulumi.Input['RepositoryVulnerabilityScanningConfigArgs']]): + pulumi.set(self, "vulnerability_scanning_config", value) + @pulumi.input_type class _RepositoryState: @@ -341,7 +359,8 @@ def __init__(__self__, *, remote_repository_config: Optional[pulumi.Input['RepositoryRemoteRepositoryConfigArgs']] = None, repository_id: Optional[pulumi.Input[str]] = None, update_time: Optional[pulumi.Input[str]] = None, - virtual_repository_config: Optional[pulumi.Input['RepositoryVirtualRepositoryConfigArgs']] = None): + virtual_repository_config: Optional[pulumi.Input['RepositoryVirtualRepositoryConfigArgs']] = None, + vulnerability_scanning_config: Optional[pulumi.Input['RepositoryVulnerabilityScanningConfigArgs']] = None): """ Input properties used for looking up and filtering Repository resources. :param pulumi.Input[Sequence[pulumi.Input['RepositoryCleanupPolicyArgs']]] cleanup_policies: Cleanup policies for this repository. Cleanup policies indicate when @@ -401,6 +420,8 @@ def __init__(__self__, *, :param pulumi.Input[str] update_time: The time when the repository was last updated. :param pulumi.Input['RepositoryVirtualRepositoryConfigArgs'] virtual_repository_config: Configuration specific for a Virtual Repository. Structure is documented below. + :param pulumi.Input['RepositoryVulnerabilityScanningConfigArgs'] vulnerability_scanning_config: Configuration for vulnerability scanning of artifacts stored in this repository. + Structure is documented below. """ if cleanup_policies is not None: pulumi.set(__self__, "cleanup_policies", cleanup_policies) @@ -440,6 +461,8 @@ def __init__(__self__, *, pulumi.set(__self__, "update_time", update_time) if virtual_repository_config is not None: pulumi.set(__self__, "virtual_repository_config", virtual_repository_config) + if vulnerability_scanning_config is not None: + pulumi.set(__self__, "vulnerability_scanning_config", vulnerability_scanning_config) @property @pulumi.getter(name="cleanupPolicies") @@ -707,6 +730,19 @@ def virtual_repository_config(self) -> Optional[pulumi.Input['RepositoryVirtualR def virtual_repository_config(self, value: Optional[pulumi.Input['RepositoryVirtualRepositoryConfigArgs']]): pulumi.set(self, "virtual_repository_config", value) + @property + @pulumi.getter(name="vulnerabilityScanningConfig") + def vulnerability_scanning_config(self) -> Optional[pulumi.Input['RepositoryVulnerabilityScanningConfigArgs']]: + """ + Configuration for vulnerability scanning of artifacts stored in this repository. + Structure is documented below. + """ + return pulumi.get(self, "vulnerability_scanning_config") + + @vulnerability_scanning_config.setter + def vulnerability_scanning_config(self, value: Optional[pulumi.Input['RepositoryVulnerabilityScanningConfigArgs']]): + pulumi.set(self, "vulnerability_scanning_config", value) + class Repository(pulumi.CustomResource): @overload @@ -727,6 +763,7 @@ def __init__(__self__, remote_repository_config: Optional[pulumi.Input[Union['RepositoryRemoteRepositoryConfigArgs', 'RepositoryRemoteRepositoryConfigArgsDict']]] = None, repository_id: Optional[pulumi.Input[str]] = None, virtual_repository_config: Optional[pulumi.Input[Union['RepositoryVirtualRepositoryConfigArgs', 'RepositoryVirtualRepositoryConfigArgsDict']]] = None, + vulnerability_scanning_config: Optional[pulumi.Input[Union['RepositoryVulnerabilityScanningConfigArgs', 'RepositoryVulnerabilityScanningConfigArgsDict']]] = None, __props__=None): """ A repository for storing artifacts @@ -1196,9 +1233,10 @@ def __init__(__self__, remote_repository_config={ "description": "pull-through cache of another Artifact Registry repository by URL", "common_repository": { - "uri": "https://us-central1-docker.pkg.dev//example-upstream-repo", + "uri": f"https://us-central1-docker.pkg.dev/{project.project_id}/example-upstream-repo", }, - }) + }, + opts = pulumi.ResourceOptions(depends_on=[upstream_repo])) ``` ### Artifact Registry Repository Remote Common Repository With Custom Upstream @@ -1239,6 +1277,21 @@ def __init__(__self__, }, }) ``` + ### Artifact Registry Repository Vulnerability Scanning + + ```python + import pulumi + import pulumi_gcp as gcp + + my_repo = gcp.artifactregistry.Repository("my-repo", + location="us-central1", + repository_id="my-repository", + description="example docker repository with vulnerability scanning config", + format="DOCKER", + vulnerability_scanning_config={ + "enablement_config": "INHERITED", + }) + ``` ## Import @@ -1316,6 +1369,8 @@ def __init__(__self__, - - - :param pulumi.Input[Union['RepositoryVirtualRepositoryConfigArgs', 'RepositoryVirtualRepositoryConfigArgsDict']] virtual_repository_config: Configuration specific for a Virtual Repository. Structure is documented below. + :param pulumi.Input[Union['RepositoryVulnerabilityScanningConfigArgs', 'RepositoryVulnerabilityScanningConfigArgsDict']] vulnerability_scanning_config: Configuration for vulnerability scanning of artifacts stored in this repository. + Structure is documented below. """ ... @overload @@ -1791,9 +1846,10 @@ def __init__(__self__, remote_repository_config={ "description": "pull-through cache of another Artifact Registry repository by URL", "common_repository": { - "uri": "https://us-central1-docker.pkg.dev//example-upstream-repo", + "uri": f"https://us-central1-docker.pkg.dev/{project.project_id}/example-upstream-repo", }, - }) + }, + opts = pulumi.ResourceOptions(depends_on=[upstream_repo])) ``` ### Artifact Registry Repository Remote Common Repository With Custom Upstream @@ -1834,6 +1890,21 @@ def __init__(__self__, }, }) ``` + ### Artifact Registry Repository Vulnerability Scanning + + ```python + import pulumi + import pulumi_gcp as gcp + + my_repo = gcp.artifactregistry.Repository("my-repo", + location="us-central1", + repository_id="my-repository", + description="example docker repository with vulnerability scanning config", + format="DOCKER", + vulnerability_scanning_config={ + "enablement_config": "INHERITED", + }) + ``` ## Import @@ -1888,6 +1959,7 @@ def _internal_init(__self__, remote_repository_config: Optional[pulumi.Input[Union['RepositoryRemoteRepositoryConfigArgs', 'RepositoryRemoteRepositoryConfigArgsDict']]] = None, repository_id: Optional[pulumi.Input[str]] = None, virtual_repository_config: Optional[pulumi.Input[Union['RepositoryVirtualRepositoryConfigArgs', 'RepositoryVirtualRepositoryConfigArgsDict']]] = None, + vulnerability_scanning_config: Optional[pulumi.Input[Union['RepositoryVulnerabilityScanningConfigArgs', 'RepositoryVulnerabilityScanningConfigArgsDict']]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) if not isinstance(opts, pulumi.ResourceOptions): @@ -1915,6 +1987,7 @@ def _internal_init(__self__, raise TypeError("Missing required property 'repository_id'") __props__.__dict__["repository_id"] = repository_id __props__.__dict__["virtual_repository_config"] = virtual_repository_config + __props__.__dict__["vulnerability_scanning_config"] = vulnerability_scanning_config __props__.__dict__["create_time"] = None __props__.__dict__["effective_labels"] = None __props__.__dict__["name"] = None @@ -1950,7 +2023,8 @@ def get(resource_name: str, remote_repository_config: Optional[pulumi.Input[Union['RepositoryRemoteRepositoryConfigArgs', 'RepositoryRemoteRepositoryConfigArgsDict']]] = None, repository_id: Optional[pulumi.Input[str]] = None, update_time: Optional[pulumi.Input[str]] = None, - virtual_repository_config: Optional[pulumi.Input[Union['RepositoryVirtualRepositoryConfigArgs', 'RepositoryVirtualRepositoryConfigArgsDict']]] = None) -> 'Repository': + virtual_repository_config: Optional[pulumi.Input[Union['RepositoryVirtualRepositoryConfigArgs', 'RepositoryVirtualRepositoryConfigArgsDict']]] = None, + vulnerability_scanning_config: Optional[pulumi.Input[Union['RepositoryVulnerabilityScanningConfigArgs', 'RepositoryVulnerabilityScanningConfigArgsDict']]] = None) -> 'Repository': """ Get an existing Repository resource's state with the given name, id, and optional extra properties used to qualify the lookup. @@ -2015,6 +2089,8 @@ def get(resource_name: str, :param pulumi.Input[str] update_time: The time when the repository was last updated. :param pulumi.Input[Union['RepositoryVirtualRepositoryConfigArgs', 'RepositoryVirtualRepositoryConfigArgsDict']] virtual_repository_config: Configuration specific for a Virtual Repository. Structure is documented below. + :param pulumi.Input[Union['RepositoryVulnerabilityScanningConfigArgs', 'RepositoryVulnerabilityScanningConfigArgsDict']] vulnerability_scanning_config: Configuration for vulnerability scanning of artifacts stored in this repository. + Structure is documented below. """ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) @@ -2039,6 +2115,7 @@ def get(resource_name: str, __props__.__dict__["repository_id"] = repository_id __props__.__dict__["update_time"] = update_time __props__.__dict__["virtual_repository_config"] = virtual_repository_config + __props__.__dict__["vulnerability_scanning_config"] = vulnerability_scanning_config return Repository(resource_name, opts=opts, __props__=__props__) @property @@ -2231,3 +2308,12 @@ def virtual_repository_config(self) -> pulumi.Output[Optional['outputs.Repositor """ return pulumi.get(self, "virtual_repository_config") + @property + @pulumi.getter(name="vulnerabilityScanningConfig") + def vulnerability_scanning_config(self) -> pulumi.Output['outputs.RepositoryVulnerabilityScanningConfig']: + """ + Configuration for vulnerability scanning of artifacts stored in this repository. + Structure is documented below. + """ + return pulumi.get(self, "vulnerability_scanning_config") + diff --git a/sdk/python/pulumi_gcp/backupdisasterrecovery/get_backup.py b/sdk/python/pulumi_gcp/backupdisasterrecovery/get_backup.py index be97925e06..9fdd1d464d 100644 --- a/sdk/python/pulumi_gcp/backupdisasterrecovery/get_backup.py +++ b/sdk/python/pulumi_gcp/backupdisasterrecovery/get_backup.py @@ -110,7 +110,25 @@ def get_backup(backup_vault_id: Optional[str] = None, project: Optional[str] = None, opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetBackupResult: """ - Use this data source to access information about an existing resource. + A Backup and DR Backup. + + ## Example Usage + + ```python + import pulumi + import pulumi_gcp as gcp + + foo = gcp.backupdisasterrecovery.get_backup(location="us-central1", + project="project-test", + data_source_id="ds-test", + backup_vault_id="bv-test") + ``` + + + :param str backup_vault_id: The ID of the Backup Vault of the Data Source in which the Backup belongs. + :param str data_source_id: The ID of the Data Source in which the Backup belongs. + :param str location: The location in which the Backup belongs. + :param str project: The Google Cloud Project in which the Backup belongs. """ __args__ = dict() __args__['backupVaultId'] = backup_vault_id @@ -134,7 +152,25 @@ def get_backup_output(backup_vault_id: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetBackupResult]: """ - Use this data source to access information about an existing resource. + A Backup and DR Backup. + + ## Example Usage + + ```python + import pulumi + import pulumi_gcp as gcp + + foo = gcp.backupdisasterrecovery.get_backup(location="us-central1", + project="project-test", + data_source_id="ds-test", + backup_vault_id="bv-test") + ``` + + + :param str backup_vault_id: The ID of the Backup Vault of the Data Source in which the Backup belongs. + :param str data_source_id: The ID of the Data Source in which the Backup belongs. + :param str location: The location in which the Backup belongs. + :param str project: The Google Cloud Project in which the Backup belongs. """ __args__ = dict() __args__['backupVaultId'] = backup_vault_id diff --git a/sdk/python/pulumi_gcp/backupdisasterrecovery/get_data_source.py b/sdk/python/pulumi_gcp/backupdisasterrecovery/get_data_source.py index af7a70c7ca..d424e27106 100644 --- a/sdk/python/pulumi_gcp/backupdisasterrecovery/get_data_source.py +++ b/sdk/python/pulumi_gcp/backupdisasterrecovery/get_data_source.py @@ -200,7 +200,25 @@ def get_data_source(backup_vault_id: Optional[str] = None, project: Optional[str] = None, opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetDataSourceResult: """ - Use this data source to access information about an existing resource. + A Backup and DR Data Source. + + ## Example Usage + + ```python + import pulumi + import pulumi_gcp as gcp + + foo = gcp.backupdisasterrecovery.get_data_source(location="us-central1", + project="project-test", + data_source_id="ds-test", + backup_vault_id="bv-test") + ``` + + + :param str backup_vault_id: The ID of the Backup Vault in which the Data Source belongs. + :param str data_source_id: The ID of the Data Source. + :param str location: The location in which the Data Source belongs. + :param str project: The Google Cloud Project in which the Data Source belongs. """ __args__ = dict() __args__['backupVaultId'] = backup_vault_id @@ -234,7 +252,25 @@ def get_data_source_output(backup_vault_id: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetDataSourceResult]: """ - Use this data source to access information about an existing resource. + A Backup and DR Data Source. + + ## Example Usage + + ```python + import pulumi + import pulumi_gcp as gcp + + foo = gcp.backupdisasterrecovery.get_data_source(location="us-central1", + project="project-test", + data_source_id="ds-test", + backup_vault_id="bv-test") + ``` + + + :param str backup_vault_id: The ID of the Backup Vault in which the Data Source belongs. + :param str data_source_id: The ID of the Data Source. + :param str location: The location in which the Data Source belongs. + :param str project: The Google Cloud Project in which the Data Source belongs. """ __args__ = dict() __args__['backupVaultId'] = backup_vault_id diff --git a/sdk/python/pulumi_gcp/backupdisasterrecovery/outputs.py b/sdk/python/pulumi_gcp/backupdisasterrecovery/outputs.py index 7ea8aee1db..3d67692749 100644 --- a/sdk/python/pulumi_gcp/backupdisasterrecovery/outputs.py +++ b/sdk/python/pulumi_gcp/backupdisasterrecovery/outputs.py @@ -575,9 +575,9 @@ def __init__(__self__, *, name: str): """ :param str backup_id: Id of the requesting object, Backup. - :param str backup_vault_id: Name of the Backup Vault associated with Backup. - :param str data_source_id: Name of the Data Source associated with Backup. - :param str location: Location of the resource. + :param str backup_vault_id: The ID of the Backup Vault of the Data Source in which the Backup belongs. + :param str data_source_id: The ID of the Data Source in which the Backup belongs. + :param str location: The location in which the Backup belongs. :param str name: Name of the resource. """ pulumi.set(__self__, "backup_id", backup_id) @@ -598,7 +598,7 @@ def backup_id(self) -> str: @pulumi.getter(name="backupVaultId") def backup_vault_id(self) -> str: """ - Name of the Backup Vault associated with Backup. + The ID of the Backup Vault of the Data Source in which the Backup belongs. """ return pulumi.get(self, "backup_vault_id") @@ -606,7 +606,7 @@ def backup_vault_id(self) -> str: @pulumi.getter(name="dataSourceId") def data_source_id(self) -> str: """ - Name of the Data Source associated with Backup. + The ID of the Data Source in which the Backup belongs. """ return pulumi.get(self, "data_source_id") @@ -614,7 +614,7 @@ def data_source_id(self) -> str: @pulumi.getter def location(self) -> str: """ - Location of the resource. + The location in which the Backup belongs. """ return pulumi.get(self, "location") @@ -1186,7 +1186,7 @@ def __init__(__self__, *, """ :param Sequence['GetDataSourceDataSourceGcpResourceComputeInstanceDataSourcePropertyArgs'] compute_instance_data_source_properties: ComputeInstanceDataSourceProperties has a subset of Compute Instance properties that are useful at the Datasource level. :param str gcp_resourcename: Full resource pathname URL of the source Google Cloud resource. - :param str location: Location of the resource: //"global"/"unspecified". + :param str location: The location in which the Data Source belongs. :param str type: The type of the Google Cloud resource. Use the Unified Resource Type, eg. compute.googleapis.com/Instance. """ @@ -1215,7 +1215,7 @@ def gcp_resourcename(self) -> str: @pulumi.getter def location(self) -> str: """ - Location of the resource: //"global"/"unspecified". + The location in which the Data Source belongs. """ return pulumi.get(self, "location") diff --git a/sdk/python/pulumi_gcp/bigquery/_inputs.py b/sdk/python/pulumi_gcp/bigquery/_inputs.py index 15c6bf15c1..01a0158fb3 100644 --- a/sdk/python/pulumi_gcp/bigquery/_inputs.py +++ b/sdk/python/pulumi_gcp/bigquery/_inputs.py @@ -61,6 +61,8 @@ 'DatasetAccessAuthorizedDatasetArgsDict', 'DatasetAccessAuthorizedDatasetDatasetArgs', 'DatasetAccessAuthorizedDatasetDatasetArgsDict', + 'DatasetAccessConditionArgs', + 'DatasetAccessConditionArgsDict', 'DatasetAccessDatasetArgs', 'DatasetAccessDatasetArgsDict', 'DatasetAccessDatasetDatasetArgs', @@ -137,6 +139,12 @@ 'TableBiglakeConfigurationArgsDict', 'TableEncryptionConfigurationArgs', 'TableEncryptionConfigurationArgsDict', + 'TableExternalCatalogTableOptionsArgs', + 'TableExternalCatalogTableOptionsArgsDict', + 'TableExternalCatalogTableOptionsStorageDescriptorArgs', + 'TableExternalCatalogTableOptionsStorageDescriptorArgsDict', + 'TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs', + 'TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgsDict', 'TableExternalDataConfigurationArgs', 'TableExternalDataConfigurationArgsDict', 'TableExternalDataConfigurationAvroOptionsArgs', @@ -1422,6 +1430,12 @@ def secret_access_key(self, value: pulumi.Input[str]): if not MYPY: class DatasetAccessArgsDict(TypedDict): + condition: NotRequired[pulumi.Input['DatasetAccessConditionArgsDict']] + """ + Condition for the binding. If CEL expression in this field is true, this + access binding will be considered. + Structure is documented below. + """ dataset: NotRequired[pulumi.Input['DatasetAccessDatasetArgsDict']] """ Grants all resources of particular types in a particular dataset read access to the current dataset. @@ -1486,6 +1500,7 @@ class DatasetAccessArgsDict(TypedDict): @pulumi.input_type class DatasetAccessArgs: def __init__(__self__, *, + condition: Optional[pulumi.Input['DatasetAccessConditionArgs']] = None, dataset: Optional[pulumi.Input['DatasetAccessDatasetArgs']] = None, domain: Optional[pulumi.Input[str]] = None, group_by_email: Optional[pulumi.Input[str]] = None, @@ -1496,6 +1511,9 @@ def __init__(__self__, *, user_by_email: Optional[pulumi.Input[str]] = None, view: Optional[pulumi.Input['DatasetAccessViewArgs']] = None): """ + :param pulumi.Input['DatasetAccessConditionArgs'] condition: Condition for the binding. If CEL expression in this field is true, this + access binding will be considered. + Structure is documented below. :param pulumi.Input['DatasetAccessDatasetArgs'] dataset: Grants all resources of particular types in a particular dataset read access to the current dataset. Structure is documented below. :param pulumi.Input[str] domain: A domain to grant access to. Any users signed in with the @@ -1528,6 +1546,8 @@ def __init__(__self__, *, needs to be granted again via an update operation. Structure is documented below. """ + if condition is not None: + pulumi.set(__self__, "condition", condition) if dataset is not None: pulumi.set(__self__, "dataset", dataset) if domain is not None: @@ -1547,6 +1567,20 @@ def __init__(__self__, *, if view is not None: pulumi.set(__self__, "view", view) + @property + @pulumi.getter + def condition(self) -> Optional[pulumi.Input['DatasetAccessConditionArgs']]: + """ + Condition for the binding. If CEL expression in this field is true, this + access binding will be considered. + Structure is documented below. + """ + return pulumi.get(self, "condition") + + @condition.setter + def condition(self, value: Optional[pulumi.Input['DatasetAccessConditionArgs']]): + pulumi.set(self, "condition", value) + @property @pulumi.getter def dataset(self) -> Optional[pulumi.Input['DatasetAccessDatasetArgs']]: @@ -1784,6 +1818,106 @@ def project_id(self, value: pulumi.Input[str]): pulumi.set(self, "project_id", value) +if not MYPY: + class DatasetAccessConditionArgsDict(TypedDict): + expression: pulumi.Input[str] + """ + Textual representation of an expression in Common Expression Language syntax. + """ + description: NotRequired[pulumi.Input[str]] + """ + Description of the expression. This is a longer text which describes the expression, + e.g. when hovered over it in a UI. + """ + location: NotRequired[pulumi.Input[str]] + """ + String indicating the location of the expression for error reporting, e.g. a file + name and a position in the file. + """ + title: NotRequired[pulumi.Input[str]] + """ + 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. + """ +elif False: + DatasetAccessConditionArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class DatasetAccessConditionArgs: + def __init__(__self__, *, + expression: pulumi.Input[str], + description: Optional[pulumi.Input[str]] = None, + location: Optional[pulumi.Input[str]] = None, + title: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] expression: Textual representation of an expression in Common Expression Language syntax. + :param pulumi.Input[str] description: Description of the expression. This is a longer text which describes the expression, + e.g. when hovered over it in a UI. + :param pulumi.Input[str] location: String indicating the location of the expression for error reporting, e.g. a file + name and a position in the file. + :param pulumi.Input[str] title: 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. + """ + pulumi.set(__self__, "expression", expression) + if description is not None: + pulumi.set(__self__, "description", description) + if location is not None: + pulumi.set(__self__, "location", location) + if title is not None: + pulumi.set(__self__, "title", title) + + @property + @pulumi.getter + def expression(self) -> pulumi.Input[str]: + """ + Textual representation of an expression in Common Expression Language syntax. + """ + return pulumi.get(self, "expression") + + @expression.setter + def expression(self, value: pulumi.Input[str]): + pulumi.set(self, "expression", value) + + @property + @pulumi.getter + def description(self) -> Optional[pulumi.Input[str]]: + """ + Description of the expression. This is a longer text which describes the expression, + e.g. when hovered over it in a UI. + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "description", value) + + @property + @pulumi.getter + def location(self) -> Optional[pulumi.Input[str]]: + """ + String indicating the location of the expression for error reporting, e.g. a file + name and a position in the file. + """ + return pulumi.get(self, "location") + + @location.setter + def location(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "location", value) + + @property + @pulumi.getter + def title(self) -> Optional[pulumi.Input[str]]: + """ + 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. + """ + return pulumi.get(self, "title") + + @title.setter + def title(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "title", value) + + if not MYPY: class DatasetAccessDatasetArgsDict(TypedDict): dataset: pulumi.Input['DatasetAccessDatasetDatasetArgsDict'] @@ -5651,6 +5785,241 @@ def kms_key_version(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "kms_key_version", value) +if not MYPY: + class TableExternalCatalogTableOptionsArgsDict(TypedDict): + connection_id: NotRequired[pulumi.Input[str]] + """ + 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 .. or projects//locations//connections/. + """ + parameters: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[str]]]] + """ + 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. + """ + storage_descriptor: NotRequired[pulumi.Input['TableExternalCatalogTableOptionsStorageDescriptorArgsDict']] + """ + A storage descriptor containing information about the physical storage of this table. + """ +elif False: + TableExternalCatalogTableOptionsArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class TableExternalCatalogTableOptionsArgs: + def __init__(__self__, *, + connection_id: Optional[pulumi.Input[str]] = None, + parameters: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + storage_descriptor: Optional[pulumi.Input['TableExternalCatalogTableOptionsStorageDescriptorArgs']] = None): + """ + :param pulumi.Input[str] connection_id: 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 .. or projects//locations//connections/. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] 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. + :param pulumi.Input['TableExternalCatalogTableOptionsStorageDescriptorArgs'] storage_descriptor: A storage descriptor containing information about the physical storage of this table. + """ + if connection_id is not None: + pulumi.set(__self__, "connection_id", connection_id) + if parameters is not None: + pulumi.set(__self__, "parameters", parameters) + if storage_descriptor is not None: + pulumi.set(__self__, "storage_descriptor", storage_descriptor) + + @property + @pulumi.getter(name="connectionId") + def connection_id(self) -> Optional[pulumi.Input[str]]: + """ + 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 .. or projects//locations//connections/. + """ + return pulumi.get(self, "connection_id") + + @connection_id.setter + def connection_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "connection_id", value) + + @property + @pulumi.getter + def parameters(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + 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. + """ + return pulumi.get(self, "parameters") + + @parameters.setter + def parameters(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "parameters", value) + + @property + @pulumi.getter(name="storageDescriptor") + def storage_descriptor(self) -> Optional[pulumi.Input['TableExternalCatalogTableOptionsStorageDescriptorArgs']]: + """ + A storage descriptor containing information about the physical storage of this table. + """ + return pulumi.get(self, "storage_descriptor") + + @storage_descriptor.setter + def storage_descriptor(self, value: Optional[pulumi.Input['TableExternalCatalogTableOptionsStorageDescriptorArgs']]): + pulumi.set(self, "storage_descriptor", value) + + +if not MYPY: + class TableExternalCatalogTableOptionsStorageDescriptorArgsDict(TypedDict): + input_format: NotRequired[pulumi.Input[str]] + """ + 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. + """ + location_uri: NotRequired[pulumi.Input[str]] + """ + 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. + """ + output_format: NotRequired[pulumi.Input[str]] + """ + 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. + """ + serde_info: NotRequired[pulumi.Input['TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgsDict']] + """ + Serializer and deserializer information. + """ +elif False: + TableExternalCatalogTableOptionsStorageDescriptorArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class TableExternalCatalogTableOptionsStorageDescriptorArgs: + def __init__(__self__, *, + input_format: Optional[pulumi.Input[str]] = None, + location_uri: Optional[pulumi.Input[str]] = None, + output_format: Optional[pulumi.Input[str]] = None, + serde_info: Optional[pulumi.Input['TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs']] = None): + """ + :param pulumi.Input[str] input_format: 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. + :param pulumi.Input[str] location_uri: 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. + :param pulumi.Input[str] output_format: 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. + :param pulumi.Input['TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs'] serde_info: Serializer and deserializer information. + """ + if input_format is not None: + pulumi.set(__self__, "input_format", input_format) + if location_uri is not None: + pulumi.set(__self__, "location_uri", location_uri) + if output_format is not None: + pulumi.set(__self__, "output_format", output_format) + if serde_info is not None: + pulumi.set(__self__, "serde_info", serde_info) + + @property + @pulumi.getter(name="inputFormat") + def input_format(self) -> Optional[pulumi.Input[str]]: + """ + 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. + """ + return pulumi.get(self, "input_format") + + @input_format.setter + def input_format(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "input_format", value) + + @property + @pulumi.getter(name="locationUri") + def location_uri(self) -> Optional[pulumi.Input[str]]: + """ + 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. + """ + return pulumi.get(self, "location_uri") + + @location_uri.setter + def location_uri(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "location_uri", value) + + @property + @pulumi.getter(name="outputFormat") + def output_format(self) -> Optional[pulumi.Input[str]]: + """ + 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. + """ + return pulumi.get(self, "output_format") + + @output_format.setter + def output_format(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "output_format", value) + + @property + @pulumi.getter(name="serdeInfo") + def serde_info(self) -> Optional[pulumi.Input['TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs']]: + """ + Serializer and deserializer information. + """ + return pulumi.get(self, "serde_info") + + @serde_info.setter + def serde_info(self, value: Optional[pulumi.Input['TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs']]): + pulumi.set(self, "serde_info", value) + + +if not MYPY: + class TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgsDict(TypedDict): + serialization_library: pulumi.Input[str] + """ + 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. + """ + name: NotRequired[pulumi.Input[str]] + """ + Name of the SerDe. The maximum length is 256 characters. + """ + parameters: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[str]]]] + """ + Key-value pairs that define the initialization parameters for the serialization library. Maximum size 10 Kib. + """ +elif False: + TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs: + def __init__(__self__, *, + serialization_library: pulumi.Input[str], + name: Optional[pulumi.Input[str]] = None, + parameters: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None): + """ + :param pulumi.Input[str] serialization_library: 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. + :param pulumi.Input[str] name: Name of the SerDe. The maximum length is 256 characters. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] parameters: Key-value pairs that define the initialization parameters for the serialization library. Maximum size 10 Kib. + """ + pulumi.set(__self__, "serialization_library", serialization_library) + if name is not None: + pulumi.set(__self__, "name", name) + if parameters is not None: + pulumi.set(__self__, "parameters", parameters) + + @property + @pulumi.getter(name="serializationLibrary") + def serialization_library(self) -> pulumi.Input[str]: + """ + 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. + """ + return pulumi.get(self, "serialization_library") + + @serialization_library.setter + def serialization_library(self, value: pulumi.Input[str]): + pulumi.set(self, "serialization_library", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + Name of the SerDe. The maximum length is 256 characters. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter + def parameters(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + Key-value pairs that define the initialization parameters for the serialization library. Maximum size 10 Kib. + """ + return pulumi.get(self, "parameters") + + @parameters.setter + def parameters(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "parameters", value) + + if not MYPY: class TableExternalDataConfigurationArgsDict(TypedDict): autodetect: pulumi.Input[bool] diff --git a/sdk/python/pulumi_gcp/bigquery/dataset_access.py b/sdk/python/pulumi_gcp/bigquery/dataset_access.py index 9e23c793cf..94c26c96ce 100644 --- a/sdk/python/pulumi_gcp/bigquery/dataset_access.py +++ b/sdk/python/pulumi_gcp/bigquery/dataset_access.py @@ -23,6 +23,7 @@ class DatasetAccessInitArgs: def __init__(__self__, *, dataset_id: pulumi.Input[str], authorized_dataset: Optional[pulumi.Input['DatasetAccessAuthorizedDatasetArgs']] = None, + condition: Optional[pulumi.Input['DatasetAccessConditionArgs']] = None, domain: Optional[pulumi.Input[str]] = None, group_by_email: Optional[pulumi.Input[str]] = None, iam_member: Optional[pulumi.Input[str]] = None, @@ -42,6 +43,9 @@ def __init__(__self__, *, - - - :param pulumi.Input['DatasetAccessAuthorizedDatasetArgs'] authorized_dataset: Grants all resources of particular types in a particular dataset read access to the current dataset. Structure is documented below. + :param pulumi.Input['DatasetAccessConditionArgs'] condition: Condition for the binding. If CEL expression in this field is true, this + access binding will be considered. + Structure is documented below. :param pulumi.Input[str] domain: A domain to grant access to. Any users signed in with the domain specified will be granted the specified access :param pulumi.Input[str] group_by_email: An email address of a Google Group to grant access to. @@ -78,6 +82,8 @@ def __init__(__self__, *, pulumi.set(__self__, "dataset_id", dataset_id) if authorized_dataset is not None: pulumi.set(__self__, "authorized_dataset", authorized_dataset) + if condition is not None: + pulumi.set(__self__, "condition", condition) if domain is not None: pulumi.set(__self__, "domain", domain) if group_by_email is not None: @@ -127,6 +133,20 @@ def authorized_dataset(self) -> Optional[pulumi.Input['DatasetAccessAuthorizedDa def authorized_dataset(self, value: Optional[pulumi.Input['DatasetAccessAuthorizedDatasetArgs']]): pulumi.set(self, "authorized_dataset", value) + @property + @pulumi.getter + def condition(self) -> Optional[pulumi.Input['DatasetAccessConditionArgs']]: + """ + Condition for the binding. If CEL expression in this field is true, this + access binding will be considered. + Structure is documented below. + """ + return pulumi.get(self, "condition") + + @condition.setter + def condition(self, value: Optional[pulumi.Input['DatasetAccessConditionArgs']]): + pulumi.set(self, "condition", value) + @property @pulumi.getter def domain(self) -> Optional[pulumi.Input[str]]: @@ -264,6 +284,7 @@ class _DatasetAccessState: def __init__(__self__, *, api_updated_member: Optional[pulumi.Input[bool]] = None, authorized_dataset: Optional[pulumi.Input['DatasetAccessAuthorizedDatasetArgs']] = None, + condition: Optional[pulumi.Input['DatasetAccessConditionArgs']] = None, dataset_id: Optional[pulumi.Input[str]] = None, domain: Optional[pulumi.Input[str]] = None, group_by_email: Optional[pulumi.Input[str]] = None, @@ -280,6 +301,9 @@ def __init__(__self__, *, stored in state as a different member type :param pulumi.Input['DatasetAccessAuthorizedDatasetArgs'] authorized_dataset: Grants all resources of particular types in a particular dataset read access to the current dataset. Structure is documented below. + :param pulumi.Input['DatasetAccessConditionArgs'] condition: Condition for the binding. If CEL expression in this field is true, this + access binding will be considered. + Structure is documented below. :param pulumi.Input[str] dataset_id: A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters. @@ -323,6 +347,8 @@ def __init__(__self__, *, pulumi.set(__self__, "api_updated_member", api_updated_member) if authorized_dataset is not None: pulumi.set(__self__, "authorized_dataset", authorized_dataset) + if condition is not None: + pulumi.set(__self__, "condition", condition) if dataset_id is not None: pulumi.set(__self__, "dataset_id", dataset_id) if domain is not None: @@ -370,6 +396,20 @@ def authorized_dataset(self) -> Optional[pulumi.Input['DatasetAccessAuthorizedDa def authorized_dataset(self, value: Optional[pulumi.Input['DatasetAccessAuthorizedDatasetArgs']]): pulumi.set(self, "authorized_dataset", value) + @property + @pulumi.getter + def condition(self) -> Optional[pulumi.Input['DatasetAccessConditionArgs']]: + """ + Condition for the binding. If CEL expression in this field is true, this + access binding will be considered. + Structure is documented below. + """ + return pulumi.get(self, "condition") + + @condition.setter + def condition(self, value: Optional[pulumi.Input['DatasetAccessConditionArgs']]): + pulumi.set(self, "condition", value) + @property @pulumi.getter(name="datasetId") def dataset_id(self) -> Optional[pulumi.Input[str]]: @@ -525,6 +565,7 @@ def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, authorized_dataset: Optional[pulumi.Input[Union['DatasetAccessAuthorizedDatasetArgs', 'DatasetAccessAuthorizedDatasetArgsDict']]] = None, + condition: Optional[pulumi.Input[Union['DatasetAccessConditionArgs', 'DatasetAccessConditionArgsDict']]] = None, dataset_id: Optional[pulumi.Input[str]] = None, domain: Optional[pulumi.Input[str]] = None, group_by_email: Optional[pulumi.Input[str]] = None, @@ -645,6 +686,9 @@ def __init__(__self__, :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[Union['DatasetAccessAuthorizedDatasetArgs', 'DatasetAccessAuthorizedDatasetArgsDict']] authorized_dataset: Grants all resources of particular types in a particular dataset read access to the current dataset. Structure is documented below. + :param pulumi.Input[Union['DatasetAccessConditionArgs', 'DatasetAccessConditionArgsDict']] condition: Condition for the binding. If CEL expression in this field is true, this + access binding will be considered. + Structure is documented below. :param pulumi.Input[str] dataset_id: A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters. @@ -811,6 +855,7 @@ def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, authorized_dataset: Optional[pulumi.Input[Union['DatasetAccessAuthorizedDatasetArgs', 'DatasetAccessAuthorizedDatasetArgsDict']]] = None, + condition: Optional[pulumi.Input[Union['DatasetAccessConditionArgs', 'DatasetAccessConditionArgsDict']]] = None, dataset_id: Optional[pulumi.Input[str]] = None, domain: Optional[pulumi.Input[str]] = None, group_by_email: Optional[pulumi.Input[str]] = None, @@ -831,6 +876,7 @@ def _internal_init(__self__, __props__ = DatasetAccessInitArgs.__new__(DatasetAccessInitArgs) __props__.__dict__["authorized_dataset"] = authorized_dataset + __props__.__dict__["condition"] = condition if dataset_id is None and not opts.urn: raise TypeError("Missing required property 'dataset_id'") __props__.__dict__["dataset_id"] = dataset_id @@ -856,6 +902,7 @@ def get(resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, api_updated_member: Optional[pulumi.Input[bool]] = None, authorized_dataset: Optional[pulumi.Input[Union['DatasetAccessAuthorizedDatasetArgs', 'DatasetAccessAuthorizedDatasetArgsDict']]] = None, + condition: Optional[pulumi.Input[Union['DatasetAccessConditionArgs', 'DatasetAccessConditionArgsDict']]] = None, dataset_id: Optional[pulumi.Input[str]] = None, domain: Optional[pulumi.Input[str]] = None, group_by_email: Optional[pulumi.Input[str]] = None, @@ -877,6 +924,9 @@ def get(resource_name: str, stored in state as a different member type :param pulumi.Input[Union['DatasetAccessAuthorizedDatasetArgs', 'DatasetAccessAuthorizedDatasetArgsDict']] authorized_dataset: Grants all resources of particular types in a particular dataset read access to the current dataset. Structure is documented below. + :param pulumi.Input[Union['DatasetAccessConditionArgs', 'DatasetAccessConditionArgsDict']] condition: Condition for the binding. If CEL expression in this field is true, this + access binding will be considered. + Structure is documented below. :param pulumi.Input[str] dataset_id: A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters. @@ -922,6 +972,7 @@ def get(resource_name: str, __props__.__dict__["api_updated_member"] = api_updated_member __props__.__dict__["authorized_dataset"] = authorized_dataset + __props__.__dict__["condition"] = condition __props__.__dict__["dataset_id"] = dataset_id __props__.__dict__["domain"] = domain __props__.__dict__["group_by_email"] = group_by_email @@ -952,6 +1003,16 @@ def authorized_dataset(self) -> pulumi.Output[Optional['outputs.DatasetAccessAut """ return pulumi.get(self, "authorized_dataset") + @property + @pulumi.getter + def condition(self) -> pulumi.Output[Optional['outputs.DatasetAccessCondition']]: + """ + Condition for the binding. If CEL expression in this field is true, this + access binding will be considered. + Structure is documented below. + """ + return pulumi.get(self, "condition") + @property @pulumi.getter(name="datasetId") def dataset_id(self) -> pulumi.Output[str]: diff --git a/sdk/python/pulumi_gcp/bigquery/job.py b/sdk/python/pulumi_gcp/bigquery/job.py index 712f9eeee2..fae5fe5cac 100644 --- a/sdk/python/pulumi_gcp/bigquery/job.py +++ b/sdk/python/pulumi_gcp/bigquery/job.py @@ -687,15 +687,9 @@ def __init__(__self__, friendly_name="test", description="This is a test description", location="US") - key_ring = gcp.kms.KeyRing("key_ring", - name="example-keyring", - location="global") - crypto_key = gcp.kms.CryptoKey("crypto_key", - name="example-key", - key_ring=key_ring.id) project = gcp.organizations.get_project(project_id="my-project-name") encrypt_role = gcp.kms.CryptoKeyIAMMember("encrypt_role", - crypto_key_id=crypto_key.id, + crypto_key_id="example-key", role="roles/cloudkms.cryptoKeyEncrypterDecrypter", member=f"serviceAccount:bq-{project.number}@bigquery-encryption.iam.gserviceaccount.com") dest = gcp.bigquery.Table("dest", @@ -721,7 +715,7 @@ def __init__(__self__, ] \"\"\", encryption_configuration={ - "kms_key_name": crypto_key.id, + "kms_key_name": "example-key", }, opts = pulumi.ResourceOptions(depends_on=[encrypt_role])) job = gcp.bigquery.Job("job", @@ -745,7 +739,7 @@ def __init__(__self__, "table_id": dest.table_id, }, "destination_encryption_configuration": { - "kms_key_name": crypto_key.id, + "kms_key_name": "example-key", }, }, opts = pulumi.ResourceOptions(depends_on=[encrypt_role])) @@ -1123,15 +1117,9 @@ def __init__(__self__, friendly_name="test", description="This is a test description", location="US") - key_ring = gcp.kms.KeyRing("key_ring", - name="example-keyring", - location="global") - crypto_key = gcp.kms.CryptoKey("crypto_key", - name="example-key", - key_ring=key_ring.id) project = gcp.organizations.get_project(project_id="my-project-name") encrypt_role = gcp.kms.CryptoKeyIAMMember("encrypt_role", - crypto_key_id=crypto_key.id, + crypto_key_id="example-key", role="roles/cloudkms.cryptoKeyEncrypterDecrypter", member=f"serviceAccount:bq-{project.number}@bigquery-encryption.iam.gserviceaccount.com") dest = gcp.bigquery.Table("dest", @@ -1157,7 +1145,7 @@ def __init__(__self__, ] \"\"\", encryption_configuration={ - "kms_key_name": crypto_key.id, + "kms_key_name": "example-key", }, opts = pulumi.ResourceOptions(depends_on=[encrypt_role])) job = gcp.bigquery.Job("job", @@ -1181,7 +1169,7 @@ def __init__(__self__, "table_id": dest.table_id, }, "destination_encryption_configuration": { - "kms_key_name": crypto_key.id, + "kms_key_name": "example-key", }, }, opts = pulumi.ResourceOptions(depends_on=[encrypt_role])) diff --git a/sdk/python/pulumi_gcp/bigquery/outputs.py b/sdk/python/pulumi_gcp/bigquery/outputs.py index ac371e2993..9b4991df0c 100644 --- a/sdk/python/pulumi_gcp/bigquery/outputs.py +++ b/sdk/python/pulumi_gcp/bigquery/outputs.py @@ -39,6 +39,7 @@ 'DatasetAccess', 'DatasetAccessAuthorizedDataset', 'DatasetAccessAuthorizedDatasetDataset', + 'DatasetAccessCondition', 'DatasetAccessDataset', 'DatasetAccessDatasetDataset', 'DatasetAccessRoutine', @@ -77,6 +78,9 @@ 'RoutineSparkOptions', 'TableBiglakeConfiguration', 'TableEncryptionConfiguration', + 'TableExternalCatalogTableOptions', + 'TableExternalCatalogTableOptionsStorageDescriptor', + 'TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo', 'TableExternalDataConfiguration', 'TableExternalDataConfigurationAvroOptions', 'TableExternalDataConfigurationBigtableOptions', @@ -99,6 +103,7 @@ 'TableTimePartitioning', 'TableView', 'GetDatasetAccessResult', + 'GetDatasetAccessConditionResult', 'GetDatasetAccessDatasetResult', 'GetDatasetAccessDatasetDatasetResult', 'GetDatasetAccessRoutineResult', @@ -1174,6 +1179,7 @@ def get(self, key: str, default = None) -> Any: return super().get(key, default) def __init__(__self__, *, + condition: Optional['outputs.DatasetAccessCondition'] = None, dataset: Optional['outputs.DatasetAccessDataset'] = None, domain: Optional[str] = None, group_by_email: Optional[str] = None, @@ -1184,6 +1190,9 @@ def __init__(__self__, *, user_by_email: Optional[str] = None, view: Optional['outputs.DatasetAccessView'] = None): """ + :param 'DatasetAccessConditionArgs' condition: Condition for the binding. If CEL expression in this field is true, this + access binding will be considered. + Structure is documented below. :param 'DatasetAccessDatasetArgs' dataset: Grants all resources of particular types in a particular dataset read access to the current dataset. Structure is documented below. :param str domain: A domain to grant access to. Any users signed in with the @@ -1216,6 +1225,8 @@ def __init__(__self__, *, needs to be granted again via an update operation. Structure is documented below. """ + if condition is not None: + pulumi.set(__self__, "condition", condition) if dataset is not None: pulumi.set(__self__, "dataset", dataset) if domain is not None: @@ -1235,6 +1246,16 @@ def __init__(__self__, *, if view is not None: pulumi.set(__self__, "view", view) + @property + @pulumi.getter + def condition(self) -> Optional['outputs.DatasetAccessCondition']: + """ + Condition for the binding. If CEL expression in this field is true, this + access binding will be considered. + Structure is documented below. + """ + return pulumi.get(self, "condition") + @property @pulumi.getter def dataset(self) -> Optional['outputs.DatasetAccessDataset']: @@ -1428,6 +1449,66 @@ def project_id(self) -> str: return pulumi.get(self, "project_id") +@pulumi.output_type +class DatasetAccessCondition(dict): + def __init__(__self__, *, + expression: str, + description: Optional[str] = None, + location: Optional[str] = None, + title: Optional[str] = None): + """ + :param str expression: Textual representation of an expression in Common Expression Language syntax. + :param str description: Description of the expression. This is a longer text which describes the expression, + e.g. when hovered over it in a UI. + :param str location: String indicating the location of the expression for error reporting, e.g. a file + name and a position in the file. + :param str title: 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. + """ + pulumi.set(__self__, "expression", expression) + if description is not None: + pulumi.set(__self__, "description", description) + if location is not None: + pulumi.set(__self__, "location", location) + if title is not None: + pulumi.set(__self__, "title", title) + + @property + @pulumi.getter + def expression(self) -> str: + """ + Textual representation of an expression in Common Expression Language syntax. + """ + return pulumi.get(self, "expression") + + @property + @pulumi.getter + def description(self) -> Optional[str]: + """ + Description of the expression. This is a longer text which describes the expression, + e.g. when hovered over it in a UI. + """ + return pulumi.get(self, "description") + + @property + @pulumi.getter + def location(self) -> Optional[str]: + """ + String indicating the location of the expression for error reporting, e.g. a file + name and a position in the file. + """ + return pulumi.get(self, "location") + + @property + @pulumi.getter + def title(self) -> Optional[str]: + """ + 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. + """ + return pulumi.get(self, "title") + + @pulumi.output_type class DatasetAccessDataset(dict): @staticmethod @@ -4464,6 +4545,205 @@ def kms_key_version(self) -> Optional[str]: return pulumi.get(self, "kms_key_version") +@pulumi.output_type +class TableExternalCatalogTableOptions(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "connectionId": + suggest = "connection_id" + elif key == "storageDescriptor": + suggest = "storage_descriptor" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in TableExternalCatalogTableOptions. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + TableExternalCatalogTableOptions.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + TableExternalCatalogTableOptions.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + connection_id: Optional[str] = None, + parameters: Optional[Mapping[str, str]] = None, + storage_descriptor: Optional['outputs.TableExternalCatalogTableOptionsStorageDescriptor'] = None): + """ + :param str connection_id: 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 .. or projects//locations//connections/. + :param Mapping[str, str] 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. + :param 'TableExternalCatalogTableOptionsStorageDescriptorArgs' storage_descriptor: A storage descriptor containing information about the physical storage of this table. + """ + if connection_id is not None: + pulumi.set(__self__, "connection_id", connection_id) + if parameters is not None: + pulumi.set(__self__, "parameters", parameters) + if storage_descriptor is not None: + pulumi.set(__self__, "storage_descriptor", storage_descriptor) + + @property + @pulumi.getter(name="connectionId") + def connection_id(self) -> Optional[str]: + """ + 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 .. or projects//locations//connections/. + """ + return pulumi.get(self, "connection_id") + + @property + @pulumi.getter + def parameters(self) -> Optional[Mapping[str, str]]: + """ + 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. + """ + return pulumi.get(self, "parameters") + + @property + @pulumi.getter(name="storageDescriptor") + def storage_descriptor(self) -> Optional['outputs.TableExternalCatalogTableOptionsStorageDescriptor']: + """ + A storage descriptor containing information about the physical storage of this table. + """ + return pulumi.get(self, "storage_descriptor") + + +@pulumi.output_type +class TableExternalCatalogTableOptionsStorageDescriptor(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "inputFormat": + suggest = "input_format" + elif key == "locationUri": + suggest = "location_uri" + elif key == "outputFormat": + suggest = "output_format" + elif key == "serdeInfo": + suggest = "serde_info" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in TableExternalCatalogTableOptionsStorageDescriptor. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + TableExternalCatalogTableOptionsStorageDescriptor.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + TableExternalCatalogTableOptionsStorageDescriptor.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + input_format: Optional[str] = None, + location_uri: Optional[str] = None, + output_format: Optional[str] = None, + serde_info: Optional['outputs.TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo'] = None): + """ + :param str input_format: 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. + :param str location_uri: 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. + :param str output_format: 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. + :param 'TableExternalCatalogTableOptionsStorageDescriptorSerdeInfoArgs' serde_info: Serializer and deserializer information. + """ + if input_format is not None: + pulumi.set(__self__, "input_format", input_format) + if location_uri is not None: + pulumi.set(__self__, "location_uri", location_uri) + if output_format is not None: + pulumi.set(__self__, "output_format", output_format) + if serde_info is not None: + pulumi.set(__self__, "serde_info", serde_info) + + @property + @pulumi.getter(name="inputFormat") + def input_format(self) -> Optional[str]: + """ + 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. + """ + return pulumi.get(self, "input_format") + + @property + @pulumi.getter(name="locationUri") + def location_uri(self) -> Optional[str]: + """ + 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. + """ + return pulumi.get(self, "location_uri") + + @property + @pulumi.getter(name="outputFormat") + def output_format(self) -> Optional[str]: + """ + 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. + """ + return pulumi.get(self, "output_format") + + @property + @pulumi.getter(name="serdeInfo") + def serde_info(self) -> Optional['outputs.TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo']: + """ + Serializer and deserializer information. + """ + return pulumi.get(self, "serde_info") + + +@pulumi.output_type +class TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "serializationLibrary": + suggest = "serialization_library" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + serialization_library: str, + name: Optional[str] = None, + parameters: Optional[Mapping[str, str]] = None): + """ + :param str serialization_library: 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. + :param str name: Name of the SerDe. The maximum length is 256 characters. + :param Mapping[str, str] parameters: Key-value pairs that define the initialization parameters for the serialization library. Maximum size 10 Kib. + """ + pulumi.set(__self__, "serialization_library", serialization_library) + if name is not None: + pulumi.set(__self__, "name", name) + if parameters is not None: + pulumi.set(__self__, "parameters", parameters) + + @property + @pulumi.getter(name="serializationLibrary") + def serialization_library(self) -> str: + """ + 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. + """ + return pulumi.get(self, "serialization_library") + + @property + @pulumi.getter + def name(self) -> Optional[str]: + """ + Name of the SerDe. The maximum length is 256 characters. + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter + def parameters(self) -> Optional[Mapping[str, str]]: + """ + Key-value pairs that define the initialization parameters for the serialization library. Maximum size 10 Kib. + """ + return pulumi.get(self, "parameters") + + @pulumi.output_type class TableExternalDataConfiguration(dict): @staticmethod @@ -6131,6 +6411,7 @@ def use_legacy_sql(self) -> Optional[bool]: @pulumi.output_type class GetDatasetAccessResult(dict): def __init__(__self__, *, + conditions: Sequence['outputs.GetDatasetAccessConditionResult'], datasets: Sequence['outputs.GetDatasetAccessDatasetResult'], domain: str, group_by_email: str, @@ -6141,6 +6422,8 @@ def __init__(__self__, *, user_by_email: str, views: Sequence['outputs.GetDatasetAccessViewResult']): """ + :param Sequence['GetDatasetAccessConditionArgs'] conditions: Condition for the binding. If CEL expression in this field is true, this + access binding will be considered. :param Sequence['GetDatasetAccessDatasetArgs'] datasets: Grants all resources of particular types in a particular dataset read access to the current dataset. :param str domain: A domain to grant access to. Any users signed in with the domain specified will be granted the specified access @@ -6170,6 +6453,7 @@ def __init__(__self__, *, set. If that view is updated by any user, access to the view needs to be granted again via an update operation. """ + pulumi.set(__self__, "conditions", conditions) pulumi.set(__self__, "datasets", datasets) pulumi.set(__self__, "domain", domain) pulumi.set(__self__, "group_by_email", group_by_email) @@ -6180,6 +6464,15 @@ def __init__(__self__, *, pulumi.set(__self__, "user_by_email", user_by_email) pulumi.set(__self__, "views", views) + @property + @pulumi.getter + def conditions(self) -> Sequence['outputs.GetDatasetAccessConditionResult']: + """ + Condition for the binding. If CEL expression in this field is true, this + access binding will be considered. + """ + return pulumi.get(self, "conditions") + @property @pulumi.getter def datasets(self) -> Sequence['outputs.GetDatasetAccessDatasetResult']: @@ -6272,6 +6565,63 @@ def views(self) -> Sequence['outputs.GetDatasetAccessViewResult']: return pulumi.get(self, "views") +@pulumi.output_type +class GetDatasetAccessConditionResult(dict): + def __init__(__self__, *, + description: str, + expression: str, + location: str, + title: str): + """ + :param str description: Description of the expression. This is a longer text which describes the expression, + e.g. when hovered over it in a UI. + :param str expression: Textual representation of an expression in Common Expression Language syntax. + :param str location: String indicating the location of the expression for error reporting, e.g. a file + name and a position in the file. + :param str title: 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. + """ + pulumi.set(__self__, "description", description) + pulumi.set(__self__, "expression", expression) + pulumi.set(__self__, "location", location) + pulumi.set(__self__, "title", title) + + @property + @pulumi.getter + def description(self) -> str: + """ + Description of the expression. This is a longer text which describes the expression, + e.g. when hovered over it in a UI. + """ + return pulumi.get(self, "description") + + @property + @pulumi.getter + def expression(self) -> str: + """ + Textual representation of an expression in Common Expression Language syntax. + """ + return pulumi.get(self, "expression") + + @property + @pulumi.getter + def location(self) -> str: + """ + String indicating the location of the expression for error reporting, e.g. a file + name and a position in the file. + """ + return pulumi.get(self, "location") + + @property + @pulumi.getter + def title(self) -> str: + """ + 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. + """ + return pulumi.get(self, "title") + + @pulumi.output_type class GetDatasetAccessDatasetResult(dict): def __init__(__self__, *, diff --git a/sdk/python/pulumi_gcp/bigquery/table.py b/sdk/python/pulumi_gcp/bigquery/table.py index 554e8344bc..7da9d0250c 100644 --- a/sdk/python/pulumi_gcp/bigquery/table.py +++ b/sdk/python/pulumi_gcp/bigquery/table.py @@ -29,6 +29,7 @@ def __init__(__self__, *, description: Optional[pulumi.Input[str]] = None, encryption_configuration: Optional[pulumi.Input['TableEncryptionConfigurationArgs']] = None, expiration_time: Optional[pulumi.Input[int]] = None, + external_catalog_table_options: Optional[pulumi.Input['TableExternalCatalogTableOptionsArgs']] = None, external_data_configuration: Optional[pulumi.Input['TableExternalDataConfigurationArgs']] = None, friendly_name: Optional[pulumi.Input[str]] = None, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, @@ -63,6 +64,7 @@ def __init__(__self__, *, milliseconds since the epoch. If not present, the table will persist indefinitely. Expired tables will be deleted and their storage reclaimed. + :param pulumi.Input['TableExternalCatalogTableOptionsArgs'] external_catalog_table_options: Options defining open source compatible table. :param pulumi.Input['TableExternalDataConfigurationArgs'] external_data_configuration: Describes the data format, location, and other properties of a table stored outside of BigQuery. By defining these properties, the data source can then be queried as @@ -116,6 +118,8 @@ def __init__(__self__, *, pulumi.set(__self__, "encryption_configuration", encryption_configuration) if expiration_time is not None: pulumi.set(__self__, "expiration_time", expiration_time) + if external_catalog_table_options is not None: + pulumi.set(__self__, "external_catalog_table_options", external_catalog_table_options) if external_data_configuration is not None: pulumi.set(__self__, "external_data_configuration", external_data_configuration) if friendly_name is not None: @@ -251,6 +255,18 @@ def expiration_time(self) -> Optional[pulumi.Input[int]]: def expiration_time(self, value: Optional[pulumi.Input[int]]): pulumi.set(self, "expiration_time", value) + @property + @pulumi.getter(name="externalCatalogTableOptions") + def external_catalog_table_options(self) -> Optional[pulumi.Input['TableExternalCatalogTableOptionsArgs']]: + """ + Options defining open source compatible table. + """ + return pulumi.get(self, "external_catalog_table_options") + + @external_catalog_table_options.setter + def external_catalog_table_options(self, value: Optional[pulumi.Input['TableExternalCatalogTableOptionsArgs']]): + pulumi.set(self, "external_catalog_table_options", value) + @property @pulumi.getter(name="externalDataConfiguration") def external_data_configuration(self) -> Optional[pulumi.Input['TableExternalDataConfigurationArgs']]: @@ -457,6 +473,7 @@ def __init__(__self__, *, encryption_configuration: Optional[pulumi.Input['TableEncryptionConfigurationArgs']] = None, etag: Optional[pulumi.Input[str]] = None, expiration_time: Optional[pulumi.Input[int]] = None, + external_catalog_table_options: Optional[pulumi.Input['TableExternalCatalogTableOptionsArgs']] = None, external_data_configuration: Optional[pulumi.Input['TableExternalDataConfigurationArgs']] = None, friendly_name: Optional[pulumi.Input[str]] = None, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, @@ -516,6 +533,7 @@ def __init__(__self__, *, milliseconds since the epoch. If not present, the table will persist indefinitely. Expired tables will be deleted and their storage reclaimed. + :param pulumi.Input['TableExternalCatalogTableOptionsArgs'] external_catalog_table_options: Options defining open source compatible table. :param pulumi.Input['TableExternalDataConfigurationArgs'] external_data_configuration: Describes the data format, location, and other properties of a table stored outside of BigQuery. By defining these properties, the data source can then be queried as @@ -585,6 +603,8 @@ def __init__(__self__, *, pulumi.set(__self__, "etag", etag) if expiration_time is not None: pulumi.set(__self__, "expiration_time", expiration_time) + if external_catalog_table_options is not None: + pulumi.set(__self__, "external_catalog_table_options", external_catalog_table_options) if external_data_configuration is not None: pulumi.set(__self__, "external_data_configuration", external_data_configuration) if friendly_name is not None: @@ -776,6 +796,18 @@ def expiration_time(self) -> Optional[pulumi.Input[int]]: def expiration_time(self, value: Optional[pulumi.Input[int]]): pulumi.set(self, "expiration_time", value) + @property + @pulumi.getter(name="externalCatalogTableOptions") + def external_catalog_table_options(self) -> Optional[pulumi.Input['TableExternalCatalogTableOptionsArgs']]: + """ + Options defining open source compatible table. + """ + return pulumi.get(self, "external_catalog_table_options") + + @external_catalog_table_options.setter + def external_catalog_table_options(self, value: Optional[pulumi.Input['TableExternalCatalogTableOptionsArgs']]): + pulumi.set(self, "external_catalog_table_options", value) + @property @pulumi.getter(name="externalDataConfiguration") def external_data_configuration(self) -> Optional[pulumi.Input['TableExternalDataConfigurationArgs']]: @@ -1090,6 +1122,7 @@ def __init__(__self__, description: Optional[pulumi.Input[str]] = None, encryption_configuration: Optional[pulumi.Input[Union['TableEncryptionConfigurationArgs', 'TableEncryptionConfigurationArgsDict']]] = None, expiration_time: Optional[pulumi.Input[int]] = None, + external_catalog_table_options: Optional[pulumi.Input[Union['TableExternalCatalogTableOptionsArgs', 'TableExternalCatalogTableOptionsArgsDict']]] = None, external_data_configuration: Optional[pulumi.Input[Union['TableExternalDataConfigurationArgs', 'TableExternalDataConfigurationArgsDict']]] = None, friendly_name: Optional[pulumi.Input[str]] = None, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, @@ -1209,6 +1242,7 @@ def __init__(__self__, milliseconds since the epoch. If not present, the table will persist indefinitely. Expired tables will be deleted and their storage reclaimed. + :param pulumi.Input[Union['TableExternalCatalogTableOptionsArgs', 'TableExternalCatalogTableOptionsArgsDict']] external_catalog_table_options: Options defining open source compatible table. :param pulumi.Input[Union['TableExternalDataConfigurationArgs', 'TableExternalDataConfigurationArgsDict']] external_data_configuration: Describes the data format, location, and other properties of a table stored outside of BigQuery. By defining these properties, the data source can then be queried as @@ -1363,6 +1397,7 @@ def _internal_init(__self__, description: Optional[pulumi.Input[str]] = None, encryption_configuration: Optional[pulumi.Input[Union['TableEncryptionConfigurationArgs', 'TableEncryptionConfigurationArgsDict']]] = None, expiration_time: Optional[pulumi.Input[int]] = None, + external_catalog_table_options: Optional[pulumi.Input[Union['TableExternalCatalogTableOptionsArgs', 'TableExternalCatalogTableOptionsArgsDict']]] = None, external_data_configuration: Optional[pulumi.Input[Union['TableExternalDataConfigurationArgs', 'TableExternalDataConfigurationArgsDict']]] = None, friendly_name: Optional[pulumi.Input[str]] = None, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, @@ -1396,6 +1431,7 @@ def _internal_init(__self__, __props__.__dict__["description"] = description __props__.__dict__["encryption_configuration"] = encryption_configuration __props__.__dict__["expiration_time"] = expiration_time + __props__.__dict__["external_catalog_table_options"] = external_catalog_table_options __props__.__dict__["external_data_configuration"] = external_data_configuration __props__.__dict__["friendly_name"] = friendly_name __props__.__dict__["labels"] = labels @@ -1446,6 +1482,7 @@ def get(resource_name: str, encryption_configuration: Optional[pulumi.Input[Union['TableEncryptionConfigurationArgs', 'TableEncryptionConfigurationArgsDict']]] = None, etag: Optional[pulumi.Input[str]] = None, expiration_time: Optional[pulumi.Input[int]] = None, + external_catalog_table_options: Optional[pulumi.Input[Union['TableExternalCatalogTableOptionsArgs', 'TableExternalCatalogTableOptionsArgsDict']]] = None, external_data_configuration: Optional[pulumi.Input[Union['TableExternalDataConfigurationArgs', 'TableExternalDataConfigurationArgsDict']]] = None, friendly_name: Optional[pulumi.Input[str]] = None, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, @@ -1510,6 +1547,7 @@ def get(resource_name: str, milliseconds since the epoch. If not present, the table will persist indefinitely. Expired tables will be deleted and their storage reclaimed. + :param pulumi.Input[Union['TableExternalCatalogTableOptionsArgs', 'TableExternalCatalogTableOptionsArgsDict']] external_catalog_table_options: Options defining open source compatible table. :param pulumi.Input[Union['TableExternalDataConfigurationArgs', 'TableExternalDataConfigurationArgsDict']] external_data_configuration: Describes the data format, location, and other properties of a table stored outside of BigQuery. By defining these properties, the data source can then be queried as @@ -1573,6 +1611,7 @@ def get(resource_name: str, __props__.__dict__["encryption_configuration"] = encryption_configuration __props__.__dict__["etag"] = etag __props__.__dict__["expiration_time"] = expiration_time + __props__.__dict__["external_catalog_table_options"] = external_catalog_table_options __props__.__dict__["external_data_configuration"] = external_data_configuration __props__.__dict__["friendly_name"] = friendly_name __props__.__dict__["labels"] = labels @@ -1702,6 +1741,14 @@ def expiration_time(self) -> pulumi.Output[int]: """ return pulumi.get(self, "expiration_time") + @property + @pulumi.getter(name="externalCatalogTableOptions") + def external_catalog_table_options(self) -> pulumi.Output[Optional['outputs.TableExternalCatalogTableOptions']]: + """ + Options defining open source compatible table. + """ + return pulumi.get(self, "external_catalog_table_options") + @property @pulumi.getter(name="externalDataConfiguration") def external_data_configuration(self) -> pulumi.Output[Optional['outputs.TableExternalDataConfiguration']]: diff --git a/sdk/python/pulumi_gcp/chronicle/__init__.py b/sdk/python/pulumi_gcp/chronicle/__init__.py new file mode 100644 index 0000000000..4c767b9681 --- /dev/null +++ b/sdk/python/pulumi_gcp/chronicle/__init__.py @@ -0,0 +1,10 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +from .. import _utilities +import typing +# Export this package's modules as members: +from .watchlist import * +from ._inputs import * +from . import outputs diff --git a/sdk/python/pulumi_gcp/chronicle/_inputs.py b/sdk/python/pulumi_gcp/chronicle/_inputs.py new file mode 100644 index 0000000000..e7a450ebdc --- /dev/null +++ b/sdk/python/pulumi_gcp/chronicle/_inputs.py @@ -0,0 +1,169 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import sys +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +if sys.version_info >= (3, 11): + from typing import NotRequired, TypedDict, TypeAlias +else: + from typing_extensions import NotRequired, TypedDict, TypeAlias +from .. import _utilities + +__all__ = [ + 'WatchlistEntityCountArgs', + 'WatchlistEntityCountArgsDict', + 'WatchlistEntityPopulationMechanismArgs', + 'WatchlistEntityPopulationMechanismArgsDict', + 'WatchlistEntityPopulationMechanismManualArgs', + 'WatchlistEntityPopulationMechanismManualArgsDict', + 'WatchlistWatchlistUserPreferencesArgs', + 'WatchlistWatchlistUserPreferencesArgsDict', +] + +MYPY = False + +if not MYPY: + class WatchlistEntityCountArgsDict(TypedDict): + asset: NotRequired[pulumi.Input[int]] + """ + (Output) + Output only. Count of asset type entities in the watchlist. + """ + user: NotRequired[pulumi.Input[int]] + """ + (Output) + Output only. Count of user type entities in the watchlist. + """ +elif False: + WatchlistEntityCountArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class WatchlistEntityCountArgs: + def __init__(__self__, *, + asset: Optional[pulumi.Input[int]] = None, + user: Optional[pulumi.Input[int]] = None): + """ + :param pulumi.Input[int] asset: (Output) + Output only. Count of asset type entities in the watchlist. + :param pulumi.Input[int] user: (Output) + Output only. Count of user type entities in the watchlist. + """ + if asset is not None: + pulumi.set(__self__, "asset", asset) + if user is not None: + pulumi.set(__self__, "user", user) + + @property + @pulumi.getter + def asset(self) -> Optional[pulumi.Input[int]]: + """ + (Output) + Output only. Count of asset type entities in the watchlist. + """ + return pulumi.get(self, "asset") + + @asset.setter + def asset(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "asset", value) + + @property + @pulumi.getter + def user(self) -> Optional[pulumi.Input[int]]: + """ + (Output) + Output only. Count of user type entities in the watchlist. + """ + return pulumi.get(self, "user") + + @user.setter + def user(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "user", value) + + +if not MYPY: + class WatchlistEntityPopulationMechanismArgsDict(TypedDict): + manual: NotRequired[pulumi.Input['WatchlistEntityPopulationMechanismManualArgsDict']] + """ + Entities are added manually. + + - - - + """ +elif False: + WatchlistEntityPopulationMechanismArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class WatchlistEntityPopulationMechanismArgs: + def __init__(__self__, *, + manual: Optional[pulumi.Input['WatchlistEntityPopulationMechanismManualArgs']] = None): + """ + :param pulumi.Input['WatchlistEntityPopulationMechanismManualArgs'] manual: Entities are added manually. + + - - - + """ + if manual is not None: + pulumi.set(__self__, "manual", manual) + + @property + @pulumi.getter + def manual(self) -> Optional[pulumi.Input['WatchlistEntityPopulationMechanismManualArgs']]: + """ + Entities are added manually. + + - - - + """ + return pulumi.get(self, "manual") + + @manual.setter + def manual(self, value: Optional[pulumi.Input['WatchlistEntityPopulationMechanismManualArgs']]): + pulumi.set(self, "manual", value) + + +if not MYPY: + class WatchlistEntityPopulationMechanismManualArgsDict(TypedDict): + pass +elif False: + WatchlistEntityPopulationMechanismManualArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class WatchlistEntityPopulationMechanismManualArgs: + def __init__(__self__): + pass + + +if not MYPY: + class WatchlistWatchlistUserPreferencesArgsDict(TypedDict): + pinned: NotRequired[pulumi.Input[bool]] + """ + Optional. Whether the watchlist is pinned on the dashboard. + """ +elif False: + WatchlistWatchlistUserPreferencesArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class WatchlistWatchlistUserPreferencesArgs: + def __init__(__self__, *, + pinned: Optional[pulumi.Input[bool]] = None): + """ + :param pulumi.Input[bool] pinned: Optional. Whether the watchlist is pinned on the dashboard. + """ + if pinned is not None: + pulumi.set(__self__, "pinned", pinned) + + @property + @pulumi.getter + def pinned(self) -> Optional[pulumi.Input[bool]]: + """ + Optional. Whether the watchlist is pinned on the dashboard. + """ + return pulumi.get(self, "pinned") + + @pinned.setter + def pinned(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "pinned", value) + + diff --git a/sdk/python/pulumi_gcp/chronicle/outputs.py b/sdk/python/pulumi_gcp/chronicle/outputs.py new file mode 100644 index 0000000000..a20e721f53 --- /dev/null +++ b/sdk/python/pulumi_gcp/chronicle/outputs.py @@ -0,0 +1,107 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import sys +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +if sys.version_info >= (3, 11): + from typing import NotRequired, TypedDict, TypeAlias +else: + from typing_extensions import NotRequired, TypedDict, TypeAlias +from .. import _utilities +from . import outputs + +__all__ = [ + 'WatchlistEntityCount', + 'WatchlistEntityPopulationMechanism', + 'WatchlistEntityPopulationMechanismManual', + 'WatchlistWatchlistUserPreferences', +] + +@pulumi.output_type +class WatchlistEntityCount(dict): + def __init__(__self__, *, + asset: Optional[int] = None, + user: Optional[int] = None): + """ + :param int asset: (Output) + Output only. Count of asset type entities in the watchlist. + :param int user: (Output) + Output only. Count of user type entities in the watchlist. + """ + if asset is not None: + pulumi.set(__self__, "asset", asset) + if user is not None: + pulumi.set(__self__, "user", user) + + @property + @pulumi.getter + def asset(self) -> Optional[int]: + """ + (Output) + Output only. Count of asset type entities in the watchlist. + """ + return pulumi.get(self, "asset") + + @property + @pulumi.getter + def user(self) -> Optional[int]: + """ + (Output) + Output only. Count of user type entities in the watchlist. + """ + return pulumi.get(self, "user") + + +@pulumi.output_type +class WatchlistEntityPopulationMechanism(dict): + def __init__(__self__, *, + manual: Optional['outputs.WatchlistEntityPopulationMechanismManual'] = None): + """ + :param 'WatchlistEntityPopulationMechanismManualArgs' manual: Entities are added manually. + + - - - + """ + if manual is not None: + pulumi.set(__self__, "manual", manual) + + @property + @pulumi.getter + def manual(self) -> Optional['outputs.WatchlistEntityPopulationMechanismManual']: + """ + Entities are added manually. + + - - - + """ + return pulumi.get(self, "manual") + + +@pulumi.output_type +class WatchlistEntityPopulationMechanismManual(dict): + def __init__(__self__): + pass + + +@pulumi.output_type +class WatchlistWatchlistUserPreferences(dict): + def __init__(__self__, *, + pinned: Optional[bool] = None): + """ + :param bool pinned: Optional. Whether the watchlist is pinned on the dashboard. + """ + if pinned is not None: + pulumi.set(__self__, "pinned", pinned) + + @property + @pulumi.getter + def pinned(self) -> Optional[bool]: + """ + Optional. Whether the watchlist is pinned on the dashboard. + """ + return pulumi.get(self, "pinned") + + diff --git a/sdk/python/pulumi_gcp/chronicle/watchlist.py b/sdk/python/pulumi_gcp/chronicle/watchlist.py new file mode 100644 index 0000000000..42a3e64bbf --- /dev/null +++ b/sdk/python/pulumi_gcp/chronicle/watchlist.py @@ -0,0 +1,776 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import sys +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +if sys.version_info >= (3, 11): + from typing import NotRequired, TypedDict, TypeAlias +else: + from typing_extensions import NotRequired, TypedDict, TypeAlias +from .. import _utilities +from . import outputs +from ._inputs import * + +__all__ = ['WatchlistArgs', 'Watchlist'] + +@pulumi.input_type +class WatchlistArgs: + def __init__(__self__, *, + display_name: pulumi.Input[str], + entity_population_mechanism: pulumi.Input['WatchlistEntityPopulationMechanismArgs'], + instance: pulumi.Input[str], + location: pulumi.Input[str], + watchlist_id: pulumi.Input[str], + description: Optional[pulumi.Input[str]] = None, + multiplying_factor: Optional[pulumi.Input[float]] = None, + project: Optional[pulumi.Input[str]] = None, + watchlist_user_preferences: Optional[pulumi.Input['WatchlistWatchlistUserPreferencesArgs']] = None): + """ + The set of arguments for constructing a Watchlist resource. + :param pulumi.Input[str] display_name: 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). + :param pulumi.Input['WatchlistEntityPopulationMechanismArgs'] entity_population_mechanism: Mechanism to populate entities in the watchlist. + Structure is documented below. + :param pulumi.Input[str] instance: The unique identifier for the Chronicle instance, which is the same as the customer ID. + :param pulumi.Input[str] location: The location of the resource. This is the geographical region where the Chronicle instance resides, such as "us" or "europe-west2". + :param pulumi.Input[str] watchlist_id: 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-/. + :param pulumi.Input[str] description: Optional. Description of the watchlist. + :param pulumi.Input[float] multiplying_factor: Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified. + :param pulumi.Input['WatchlistWatchlistUserPreferencesArgs'] watchlist_user_preferences: A collection of user preferences for watchlist UI configuration. + """ + pulumi.set(__self__, "display_name", display_name) + pulumi.set(__self__, "entity_population_mechanism", entity_population_mechanism) + pulumi.set(__self__, "instance", instance) + pulumi.set(__self__, "location", location) + pulumi.set(__self__, "watchlist_id", watchlist_id) + if description is not None: + pulumi.set(__self__, "description", description) + if multiplying_factor is not None: + pulumi.set(__self__, "multiplying_factor", multiplying_factor) + if project is not None: + pulumi.set(__self__, "project", project) + if watchlist_user_preferences is not None: + pulumi.set(__self__, "watchlist_user_preferences", watchlist_user_preferences) + + @property + @pulumi.getter(name="displayName") + def display_name(self) -> pulumi.Input[str]: + """ + 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). + """ + return pulumi.get(self, "display_name") + + @display_name.setter + def display_name(self, value: pulumi.Input[str]): + pulumi.set(self, "display_name", value) + + @property + @pulumi.getter(name="entityPopulationMechanism") + def entity_population_mechanism(self) -> pulumi.Input['WatchlistEntityPopulationMechanismArgs']: + """ + Mechanism to populate entities in the watchlist. + Structure is documented below. + """ + return pulumi.get(self, "entity_population_mechanism") + + @entity_population_mechanism.setter + def entity_population_mechanism(self, value: pulumi.Input['WatchlistEntityPopulationMechanismArgs']): + pulumi.set(self, "entity_population_mechanism", value) + + @property + @pulumi.getter + def instance(self) -> pulumi.Input[str]: + """ + The unique identifier for the Chronicle instance, which is the same as the customer ID. + """ + return pulumi.get(self, "instance") + + @instance.setter + def instance(self, value: pulumi.Input[str]): + pulumi.set(self, "instance", value) + + @property + @pulumi.getter + def location(self) -> pulumi.Input[str]: + """ + The location of the resource. This is the geographical region where the Chronicle instance resides, such as "us" or "europe-west2". + """ + return pulumi.get(self, "location") + + @location.setter + def location(self, value: pulumi.Input[str]): + pulumi.set(self, "location", value) + + @property + @pulumi.getter(name="watchlistId") + def watchlist_id(self) -> pulumi.Input[str]: + """ + 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-/. + """ + return pulumi.get(self, "watchlist_id") + + @watchlist_id.setter + def watchlist_id(self, value: pulumi.Input[str]): + pulumi.set(self, "watchlist_id", value) + + @property + @pulumi.getter + def description(self) -> Optional[pulumi.Input[str]]: + """ + Optional. Description of the watchlist. + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "description", value) + + @property + @pulumi.getter(name="multiplyingFactor") + def multiplying_factor(self) -> Optional[pulumi.Input[float]]: + """ + Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified. + """ + return pulumi.get(self, "multiplying_factor") + + @multiplying_factor.setter + def multiplying_factor(self, value: Optional[pulumi.Input[float]]): + pulumi.set(self, "multiplying_factor", value) + + @property + @pulumi.getter + def project(self) -> Optional[pulumi.Input[str]]: + return pulumi.get(self, "project") + + @project.setter + def project(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "project", value) + + @property + @pulumi.getter(name="watchlistUserPreferences") + def watchlist_user_preferences(self) -> Optional[pulumi.Input['WatchlistWatchlistUserPreferencesArgs']]: + """ + A collection of user preferences for watchlist UI configuration. + """ + return pulumi.get(self, "watchlist_user_preferences") + + @watchlist_user_preferences.setter + def watchlist_user_preferences(self, value: Optional[pulumi.Input['WatchlistWatchlistUserPreferencesArgs']]): + pulumi.set(self, "watchlist_user_preferences", value) + + +@pulumi.input_type +class _WatchlistState: + def __init__(__self__, *, + create_time: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + display_name: Optional[pulumi.Input[str]] = None, + entity_counts: Optional[pulumi.Input[Sequence[pulumi.Input['WatchlistEntityCountArgs']]]] = None, + entity_population_mechanism: Optional[pulumi.Input['WatchlistEntityPopulationMechanismArgs']] = None, + instance: Optional[pulumi.Input[str]] = None, + location: Optional[pulumi.Input[str]] = None, + multiplying_factor: Optional[pulumi.Input[float]] = None, + name: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None, + update_time: Optional[pulumi.Input[str]] = None, + watchlist_id: Optional[pulumi.Input[str]] = None, + watchlist_user_preferences: Optional[pulumi.Input['WatchlistWatchlistUserPreferencesArgs']] = None): + """ + Input properties used for looking up and filtering Watchlist resources. + :param pulumi.Input[str] create_time: Output only. Time the watchlist was created. + :param pulumi.Input[str] description: Optional. Description of the watchlist. + :param pulumi.Input[str] display_name: 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). + :param pulumi.Input[Sequence[pulumi.Input['WatchlistEntityCountArgs']]] entity_counts: Count of different types of entities in the watchlist. + Structure is documented below. + :param pulumi.Input['WatchlistEntityPopulationMechanismArgs'] entity_population_mechanism: Mechanism to populate entities in the watchlist. + Structure is documented below. + :param pulumi.Input[str] instance: The unique identifier for the Chronicle instance, which is the same as the customer ID. + :param pulumi.Input[str] location: The location of the resource. This is the geographical region where the Chronicle instance resides, such as "us" or "europe-west2". + :param pulumi.Input[float] multiplying_factor: Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified. + :param pulumi.Input[str] name: 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} + :param pulumi.Input[str] update_time: Output only. Time the watchlist was last updated. + :param pulumi.Input[str] watchlist_id: 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-/. + :param pulumi.Input['WatchlistWatchlistUserPreferencesArgs'] watchlist_user_preferences: A collection of user preferences for watchlist UI configuration. + """ + if create_time is not None: + pulumi.set(__self__, "create_time", create_time) + if description is not None: + pulumi.set(__self__, "description", description) + if display_name is not None: + pulumi.set(__self__, "display_name", display_name) + if entity_counts is not None: + pulumi.set(__self__, "entity_counts", entity_counts) + if entity_population_mechanism is not None: + pulumi.set(__self__, "entity_population_mechanism", entity_population_mechanism) + if instance is not None: + pulumi.set(__self__, "instance", instance) + if location is not None: + pulumi.set(__self__, "location", location) + if multiplying_factor is not None: + pulumi.set(__self__, "multiplying_factor", multiplying_factor) + if name is not None: + pulumi.set(__self__, "name", name) + if project is not None: + pulumi.set(__self__, "project", project) + if update_time is not None: + pulumi.set(__self__, "update_time", update_time) + if watchlist_id is not None: + pulumi.set(__self__, "watchlist_id", watchlist_id) + if watchlist_user_preferences is not None: + pulumi.set(__self__, "watchlist_user_preferences", watchlist_user_preferences) + + @property + @pulumi.getter(name="createTime") + def create_time(self) -> Optional[pulumi.Input[str]]: + """ + Output only. Time the watchlist was created. + """ + return pulumi.get(self, "create_time") + + @create_time.setter + def create_time(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "create_time", value) + + @property + @pulumi.getter + def description(self) -> Optional[pulumi.Input[str]]: + """ + Optional. Description of the watchlist. + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "description", value) + + @property + @pulumi.getter(name="displayName") + def display_name(self) -> Optional[pulumi.Input[str]]: + """ + 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). + """ + return pulumi.get(self, "display_name") + + @display_name.setter + def display_name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "display_name", value) + + @property + @pulumi.getter(name="entityCounts") + def entity_counts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['WatchlistEntityCountArgs']]]]: + """ + Count of different types of entities in the watchlist. + Structure is documented below. + """ + return pulumi.get(self, "entity_counts") + + @entity_counts.setter + def entity_counts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['WatchlistEntityCountArgs']]]]): + pulumi.set(self, "entity_counts", value) + + @property + @pulumi.getter(name="entityPopulationMechanism") + def entity_population_mechanism(self) -> Optional[pulumi.Input['WatchlistEntityPopulationMechanismArgs']]: + """ + Mechanism to populate entities in the watchlist. + Structure is documented below. + """ + return pulumi.get(self, "entity_population_mechanism") + + @entity_population_mechanism.setter + def entity_population_mechanism(self, value: Optional[pulumi.Input['WatchlistEntityPopulationMechanismArgs']]): + pulumi.set(self, "entity_population_mechanism", value) + + @property + @pulumi.getter + def instance(self) -> Optional[pulumi.Input[str]]: + """ + The unique identifier for the Chronicle instance, which is the same as the customer ID. + """ + return pulumi.get(self, "instance") + + @instance.setter + def instance(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "instance", value) + + @property + @pulumi.getter + def location(self) -> Optional[pulumi.Input[str]]: + """ + The location of the resource. This is the geographical region where the Chronicle instance resides, such as "us" or "europe-west2". + """ + return pulumi.get(self, "location") + + @location.setter + def location(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "location", value) + + @property + @pulumi.getter(name="multiplyingFactor") + def multiplying_factor(self) -> Optional[pulumi.Input[float]]: + """ + Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified. + """ + return pulumi.get(self, "multiplying_factor") + + @multiplying_factor.setter + def multiplying_factor(self, value: Optional[pulumi.Input[float]]): + pulumi.set(self, "multiplying_factor", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + 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} + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter + def project(self) -> Optional[pulumi.Input[str]]: + return pulumi.get(self, "project") + + @project.setter + def project(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "project", value) + + @property + @pulumi.getter(name="updateTime") + def update_time(self) -> Optional[pulumi.Input[str]]: + """ + Output only. Time the watchlist was last updated. + """ + return pulumi.get(self, "update_time") + + @update_time.setter + def update_time(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "update_time", value) + + @property + @pulumi.getter(name="watchlistId") + def watchlist_id(self) -> Optional[pulumi.Input[str]]: + """ + 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-/. + """ + return pulumi.get(self, "watchlist_id") + + @watchlist_id.setter + def watchlist_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "watchlist_id", value) + + @property + @pulumi.getter(name="watchlistUserPreferences") + def watchlist_user_preferences(self) -> Optional[pulumi.Input['WatchlistWatchlistUserPreferencesArgs']]: + """ + A collection of user preferences for watchlist UI configuration. + """ + return pulumi.get(self, "watchlist_user_preferences") + + @watchlist_user_preferences.setter + def watchlist_user_preferences(self, value: Optional[pulumi.Input['WatchlistWatchlistUserPreferencesArgs']]): + pulumi.set(self, "watchlist_user_preferences", value) + + +class Watchlist(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + description: Optional[pulumi.Input[str]] = None, + display_name: Optional[pulumi.Input[str]] = None, + entity_population_mechanism: Optional[pulumi.Input[Union['WatchlistEntityPopulationMechanismArgs', 'WatchlistEntityPopulationMechanismArgsDict']]] = None, + instance: Optional[pulumi.Input[str]] = None, + location: Optional[pulumi.Input[str]] = None, + multiplying_factor: Optional[pulumi.Input[float]] = None, + project: Optional[pulumi.Input[str]] = None, + watchlist_id: Optional[pulumi.Input[str]] = None, + watchlist_user_preferences: Optional[pulumi.Input[Union['WatchlistWatchlistUserPreferencesArgs', 'WatchlistWatchlistUserPreferencesArgsDict']]] = None, + __props__=None): + """ + ## Example Usage + + ### Chronicle Watchlist Basic + + ```python + import pulumi + import pulumi_gcp as gcp + + example = gcp.chronicle.Watchlist("example", + location="us", + instance="00000000-0000-0000-0000-000000000000", + watchlist_id="watchlist-name", + description="watchlist-description", + display_name="watchlist-name", + multiplying_factor=1, + entity_population_mechanism={ + "manual": {}, + }, + watchlist_user_preferences={ + "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}} + ``` + + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] description: Optional. Description of the watchlist. + :param pulumi.Input[str] display_name: 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). + :param pulumi.Input[Union['WatchlistEntityPopulationMechanismArgs', 'WatchlistEntityPopulationMechanismArgsDict']] entity_population_mechanism: Mechanism to populate entities in the watchlist. + Structure is documented below. + :param pulumi.Input[str] instance: The unique identifier for the Chronicle instance, which is the same as the customer ID. + :param pulumi.Input[str] location: The location of the resource. This is the geographical region where the Chronicle instance resides, such as "us" or "europe-west2". + :param pulumi.Input[float] multiplying_factor: Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified. + :param pulumi.Input[str] watchlist_id: 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-/. + :param pulumi.Input[Union['WatchlistWatchlistUserPreferencesArgs', 'WatchlistWatchlistUserPreferencesArgsDict']] watchlist_user_preferences: A collection of user preferences for watchlist UI configuration. + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: WatchlistArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + ## Example Usage + + ### Chronicle Watchlist Basic + + ```python + import pulumi + import pulumi_gcp as gcp + + example = gcp.chronicle.Watchlist("example", + location="us", + instance="00000000-0000-0000-0000-000000000000", + watchlist_id="watchlist-name", + description="watchlist-description", + display_name="watchlist-name", + multiplying_factor=1, + entity_population_mechanism={ + "manual": {}, + }, + watchlist_user_preferences={ + "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}} + ``` + + :param str resource_name: The name of the resource. + :param WatchlistArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(WatchlistArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + description: Optional[pulumi.Input[str]] = None, + display_name: Optional[pulumi.Input[str]] = None, + entity_population_mechanism: Optional[pulumi.Input[Union['WatchlistEntityPopulationMechanismArgs', 'WatchlistEntityPopulationMechanismArgsDict']]] = None, + instance: Optional[pulumi.Input[str]] = None, + location: Optional[pulumi.Input[str]] = None, + multiplying_factor: Optional[pulumi.Input[float]] = None, + project: Optional[pulumi.Input[str]] = None, + watchlist_id: Optional[pulumi.Input[str]] = None, + watchlist_user_preferences: Optional[pulumi.Input[Union['WatchlistWatchlistUserPreferencesArgs', 'WatchlistWatchlistUserPreferencesArgsDict']]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = WatchlistArgs.__new__(WatchlistArgs) + + __props__.__dict__["description"] = description + if display_name is None and not opts.urn: + raise TypeError("Missing required property 'display_name'") + __props__.__dict__["display_name"] = display_name + if entity_population_mechanism is None and not opts.urn: + raise TypeError("Missing required property 'entity_population_mechanism'") + __props__.__dict__["entity_population_mechanism"] = entity_population_mechanism + if instance is None and not opts.urn: + raise TypeError("Missing required property 'instance'") + __props__.__dict__["instance"] = instance + if location is None and not opts.urn: + raise TypeError("Missing required property 'location'") + __props__.__dict__["location"] = location + __props__.__dict__["multiplying_factor"] = multiplying_factor + __props__.__dict__["project"] = project + if watchlist_id is None and not opts.urn: + raise TypeError("Missing required property 'watchlist_id'") + __props__.__dict__["watchlist_id"] = watchlist_id + __props__.__dict__["watchlist_user_preferences"] = watchlist_user_preferences + __props__.__dict__["create_time"] = None + __props__.__dict__["entity_counts"] = None + __props__.__dict__["name"] = None + __props__.__dict__["update_time"] = None + super(Watchlist, __self__).__init__( + 'gcp:chronicle/watchlist:Watchlist', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + create_time: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + display_name: Optional[pulumi.Input[str]] = None, + entity_counts: Optional[pulumi.Input[Sequence[pulumi.Input[Union['WatchlistEntityCountArgs', 'WatchlistEntityCountArgsDict']]]]] = None, + entity_population_mechanism: Optional[pulumi.Input[Union['WatchlistEntityPopulationMechanismArgs', 'WatchlistEntityPopulationMechanismArgsDict']]] = None, + instance: Optional[pulumi.Input[str]] = None, + location: Optional[pulumi.Input[str]] = None, + multiplying_factor: Optional[pulumi.Input[float]] = None, + name: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None, + update_time: Optional[pulumi.Input[str]] = None, + watchlist_id: Optional[pulumi.Input[str]] = None, + watchlist_user_preferences: Optional[pulumi.Input[Union['WatchlistWatchlistUserPreferencesArgs', 'WatchlistWatchlistUserPreferencesArgsDict']]] = None) -> 'Watchlist': + """ + Get an existing Watchlist resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] create_time: Output only. Time the watchlist was created. + :param pulumi.Input[str] description: Optional. Description of the watchlist. + :param pulumi.Input[str] display_name: 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). + :param pulumi.Input[Sequence[pulumi.Input[Union['WatchlistEntityCountArgs', 'WatchlistEntityCountArgsDict']]]] entity_counts: Count of different types of entities in the watchlist. + Structure is documented below. + :param pulumi.Input[Union['WatchlistEntityPopulationMechanismArgs', 'WatchlistEntityPopulationMechanismArgsDict']] entity_population_mechanism: Mechanism to populate entities in the watchlist. + Structure is documented below. + :param pulumi.Input[str] instance: The unique identifier for the Chronicle instance, which is the same as the customer ID. + :param pulumi.Input[str] location: The location of the resource. This is the geographical region where the Chronicle instance resides, such as "us" or "europe-west2". + :param pulumi.Input[float] multiplying_factor: Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified. + :param pulumi.Input[str] name: 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} + :param pulumi.Input[str] update_time: Output only. Time the watchlist was last updated. + :param pulumi.Input[str] watchlist_id: 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-/. + :param pulumi.Input[Union['WatchlistWatchlistUserPreferencesArgs', 'WatchlistWatchlistUserPreferencesArgsDict']] watchlist_user_preferences: A collection of user preferences for watchlist UI configuration. + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _WatchlistState.__new__(_WatchlistState) + + __props__.__dict__["create_time"] = create_time + __props__.__dict__["description"] = description + __props__.__dict__["display_name"] = display_name + __props__.__dict__["entity_counts"] = entity_counts + __props__.__dict__["entity_population_mechanism"] = entity_population_mechanism + __props__.__dict__["instance"] = instance + __props__.__dict__["location"] = location + __props__.__dict__["multiplying_factor"] = multiplying_factor + __props__.__dict__["name"] = name + __props__.__dict__["project"] = project + __props__.__dict__["update_time"] = update_time + __props__.__dict__["watchlist_id"] = watchlist_id + __props__.__dict__["watchlist_user_preferences"] = watchlist_user_preferences + return Watchlist(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter(name="createTime") + def create_time(self) -> pulumi.Output[str]: + """ + Output only. Time the watchlist was created. + """ + return pulumi.get(self, "create_time") + + @property + @pulumi.getter + def description(self) -> pulumi.Output[Optional[str]]: + """ + Optional. Description of the watchlist. + """ + return pulumi.get(self, "description") + + @property + @pulumi.getter(name="displayName") + def display_name(self) -> pulumi.Output[str]: + """ + 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). + """ + return pulumi.get(self, "display_name") + + @property + @pulumi.getter(name="entityCounts") + def entity_counts(self) -> pulumi.Output[Sequence['outputs.WatchlistEntityCount']]: + """ + Count of different types of entities in the watchlist. + Structure is documented below. + """ + return pulumi.get(self, "entity_counts") + + @property + @pulumi.getter(name="entityPopulationMechanism") + def entity_population_mechanism(self) -> pulumi.Output['outputs.WatchlistEntityPopulationMechanism']: + """ + Mechanism to populate entities in the watchlist. + Structure is documented below. + """ + return pulumi.get(self, "entity_population_mechanism") + + @property + @pulumi.getter + def instance(self) -> pulumi.Output[str]: + """ + The unique identifier for the Chronicle instance, which is the same as the customer ID. + """ + return pulumi.get(self, "instance") + + @property + @pulumi.getter + def location(self) -> pulumi.Output[str]: + """ + The location of the resource. This is the geographical region where the Chronicle instance resides, such as "us" or "europe-west2". + """ + return pulumi.get(self, "location") + + @property + @pulumi.getter(name="multiplyingFactor") + def multiplying_factor(self) -> pulumi.Output[Optional[float]]: + """ + Optional. Weight applied to the risk score for entities in this watchlist. The default is 1.0 if it is not specified. + """ + return pulumi.get(self, "multiplying_factor") + + @property + @pulumi.getter + def name(self) -> pulumi.Output[str]: + """ + 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} + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter + def project(self) -> pulumi.Output[str]: + return pulumi.get(self, "project") + + @property + @pulumi.getter(name="updateTime") + def update_time(self) -> pulumi.Output[str]: + """ + Output only. Time the watchlist was last updated. + """ + return pulumi.get(self, "update_time") + + @property + @pulumi.getter(name="watchlistId") + def watchlist_id(self) -> pulumi.Output[str]: + """ + 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-/. + """ + return pulumi.get(self, "watchlist_id") + + @property + @pulumi.getter(name="watchlistUserPreferences") + def watchlist_user_preferences(self) -> pulumi.Output['outputs.WatchlistWatchlistUserPreferences']: + """ + A collection of user preferences for watchlist UI configuration. + """ + return pulumi.get(self, "watchlist_user_preferences") + diff --git a/sdk/python/pulumi_gcp/cloudrunv2/_inputs.py b/sdk/python/pulumi_gcp/cloudrunv2/_inputs.py index 3f9c4cccf7..a73cc08504 100644 --- a/sdk/python/pulumi_gcp/cloudrunv2/_inputs.py +++ b/sdk/python/pulumi_gcp/cloudrunv2/_inputs.py @@ -4480,7 +4480,8 @@ def accelerator(self, value: pulumi.Input[str]): class ServiceTemplateScalingArgsDict(TypedDict): max_instance_count: NotRequired[pulumi.Input[int]] """ - 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. """ min_instance_count: NotRequired[pulumi.Input[int]] """ @@ -4495,7 +4496,8 @@ def __init__(__self__, *, max_instance_count: Optional[pulumi.Input[int]] = None, min_instance_count: Optional[pulumi.Input[int]] = None): """ - :param pulumi.Input[int] max_instance_count: Maximum number of serving instances that this resource should have. + :param pulumi.Input[int] max_instance_count: 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. :param pulumi.Input[int] min_instance_count: Minimum number of instances for the service, to be divided among all revisions receiving traffic. """ if max_instance_count is not None: @@ -4507,7 +4509,8 @@ def __init__(__self__, *, @pulumi.getter(name="maxInstanceCount") def max_instance_count(self) -> Optional[pulumi.Input[int]]: """ - 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. """ return pulumi.get(self, "max_instance_count") diff --git a/sdk/python/pulumi_gcp/cloudrunv2/outputs.py b/sdk/python/pulumi_gcp/cloudrunv2/outputs.py index dd5579badf..5726e81aca 100644 --- a/sdk/python/pulumi_gcp/cloudrunv2/outputs.py +++ b/sdk/python/pulumi_gcp/cloudrunv2/outputs.py @@ -3366,7 +3366,8 @@ def __init__(__self__, *, max_instance_count: Optional[int] = None, min_instance_count: Optional[int] = None): """ - :param int max_instance_count: Maximum number of serving instances that this resource should have. + :param int max_instance_count: 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. :param int min_instance_count: Minimum number of instances for the service, to be divided among all revisions receiving traffic. """ if max_instance_count is not None: @@ -3378,7 +3379,8 @@ def __init__(__self__, *, @pulumi.getter(name="maxInstanceCount") def max_instance_count(self) -> Optional[int]: """ - 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. """ return pulumi.get(self, "max_instance_count") @@ -6442,8 +6444,9 @@ def __init__(__self__, *, max_instance_count: int, min_instance_count: int): """ - :param int max_instance_count: Maximum number of serving instances that this resource should have. - :param int min_instance_count: Minimum number of serving instances that this resource should have. + :param int max_instance_count: 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. + :param int min_instance_count: Minimum number of serving instances that this resource should have. Defaults to 0. Must not be greater than maximum instance count. """ pulumi.set(__self__, "max_instance_count", max_instance_count) pulumi.set(__self__, "min_instance_count", min_instance_count) @@ -6452,7 +6455,8 @@ def __init__(__self__, *, @pulumi.getter(name="maxInstanceCount") def max_instance_count(self) -> int: """ - 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. """ return pulumi.get(self, "max_instance_count") @@ -6460,7 +6464,7 @@ def max_instance_count(self) -> int: @pulumi.getter(name="minInstanceCount") def min_instance_count(self) -> int: """ - 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. """ return pulumi.get(self, "min_instance_count") diff --git a/sdk/python/pulumi_gcp/composer/_inputs.py b/sdk/python/pulumi_gcp/composer/_inputs.py index 92acccc337..b3cc968558 100644 --- a/sdk/python/pulumi_gcp/composer/_inputs.py +++ b/sdk/python/pulumi_gcp/composer/_inputs.py @@ -19,6 +19,8 @@ 'EnvironmentConfigArgsDict', 'EnvironmentConfigDataRetentionConfigArgs', 'EnvironmentConfigDataRetentionConfigArgsDict', + 'EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs', + 'EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgsDict', 'EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArgs', 'EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArgsDict', 'EnvironmentConfigDatabaseConfigArgs', @@ -498,7 +500,11 @@ def workloads_config(self, value: Optional[pulumi.Input['EnvironmentConfigWorklo if not MYPY: class EnvironmentConfigDataRetentionConfigArgsDict(TypedDict): - task_logs_retention_configs: pulumi.Input[Sequence[pulumi.Input['EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArgsDict']]] + airflow_metadata_retention_configs: NotRequired[pulumi.Input[Sequence[pulumi.Input['EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgsDict']]]] + """ + Optional. The configuration setting for database retention. + """ + task_logs_retention_configs: NotRequired[pulumi.Input[Sequence[pulumi.Input['EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArgsDict']]]] """ Optional. The configuration setting for Task Logs. """ @@ -508,25 +514,94 @@ class EnvironmentConfigDataRetentionConfigArgsDict(TypedDict): @pulumi.input_type class EnvironmentConfigDataRetentionConfigArgs: def __init__(__self__, *, - task_logs_retention_configs: pulumi.Input[Sequence[pulumi.Input['EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArgs']]]): + airflow_metadata_retention_configs: Optional[pulumi.Input[Sequence[pulumi.Input['EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs']]]] = None, + task_logs_retention_configs: Optional[pulumi.Input[Sequence[pulumi.Input['EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArgs']]]] = None): """ + :param pulumi.Input[Sequence[pulumi.Input['EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs']]] airflow_metadata_retention_configs: Optional. The configuration setting for database retention. :param pulumi.Input[Sequence[pulumi.Input['EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArgs']]] task_logs_retention_configs: Optional. The configuration setting for Task Logs. """ - pulumi.set(__self__, "task_logs_retention_configs", task_logs_retention_configs) + if airflow_metadata_retention_configs is not None: + pulumi.set(__self__, "airflow_metadata_retention_configs", airflow_metadata_retention_configs) + if task_logs_retention_configs is not None: + pulumi.set(__self__, "task_logs_retention_configs", task_logs_retention_configs) + + @property + @pulumi.getter(name="airflowMetadataRetentionConfigs") + def airflow_metadata_retention_configs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs']]]]: + """ + Optional. The configuration setting for database retention. + """ + return pulumi.get(self, "airflow_metadata_retention_configs") + + @airflow_metadata_retention_configs.setter + def airflow_metadata_retention_configs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs']]]]): + pulumi.set(self, "airflow_metadata_retention_configs", value) @property @pulumi.getter(name="taskLogsRetentionConfigs") - def task_logs_retention_configs(self) -> pulumi.Input[Sequence[pulumi.Input['EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArgs']]]: + def task_logs_retention_configs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArgs']]]]: """ Optional. The configuration setting for Task Logs. """ return pulumi.get(self, "task_logs_retention_configs") @task_logs_retention_configs.setter - def task_logs_retention_configs(self, value: pulumi.Input[Sequence[pulumi.Input['EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArgs']]]): + def task_logs_retention_configs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArgs']]]]): pulumi.set(self, "task_logs_retention_configs", value) +if not MYPY: + class EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgsDict(TypedDict): + retention_days: NotRequired[pulumi.Input[int]] + """ + How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer. + """ + retention_mode: NotRequired[pulumi.Input[str]] + """ + Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer. + """ +elif False: + EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs: + def __init__(__self__, *, + retention_days: Optional[pulumi.Input[int]] = None, + retention_mode: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[int] retention_days: How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer. + :param pulumi.Input[str] retention_mode: Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer. + """ + if retention_days is not None: + pulumi.set(__self__, "retention_days", retention_days) + if retention_mode is not None: + pulumi.set(__self__, "retention_mode", retention_mode) + + @property + @pulumi.getter(name="retentionDays") + def retention_days(self) -> Optional[pulumi.Input[int]]: + """ + How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer. + """ + return pulumi.get(self, "retention_days") + + @retention_days.setter + def retention_days(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "retention_days", value) + + @property + @pulumi.getter(name="retentionMode") + def retention_mode(self) -> Optional[pulumi.Input[str]]: + """ + Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer. + """ + return pulumi.get(self, "retention_mode") + + @retention_mode.setter + def retention_mode(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "retention_mode", value) + + if not MYPY: class EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArgsDict(TypedDict): storage_mode: NotRequired[pulumi.Input[str]] diff --git a/sdk/python/pulumi_gcp/composer/outputs.py b/sdk/python/pulumi_gcp/composer/outputs.py index 9f81b4af31..0a4a131773 100644 --- a/sdk/python/pulumi_gcp/composer/outputs.py +++ b/sdk/python/pulumi_gcp/composer/outputs.py @@ -18,6 +18,7 @@ __all__ = [ 'EnvironmentConfig', 'EnvironmentConfigDataRetentionConfig', + 'EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig', 'EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig', 'EnvironmentConfigDatabaseConfig', 'EnvironmentConfigEncryptionConfig', @@ -43,6 +44,7 @@ 'EnvironmentStorageConfig', 'GetEnvironmentConfigResult', 'GetEnvironmentConfigDataRetentionConfigResult', + 'GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigResult', 'GetEnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigResult', 'GetEnvironmentConfigDatabaseConfigResult', 'GetEnvironmentConfigEncryptionConfigResult', @@ -386,7 +388,9 @@ class EnvironmentConfigDataRetentionConfig(dict): @staticmethod def __key_warning(key: str): suggest = None - if key == "taskLogsRetentionConfigs": + if key == "airflowMetadataRetentionConfigs": + suggest = "airflow_metadata_retention_configs" + elif key == "taskLogsRetentionConfigs": suggest = "task_logs_retention_configs" if suggest: @@ -401,21 +405,84 @@ def get(self, key: str, default = None) -> Any: return super().get(key, default) def __init__(__self__, *, - task_logs_retention_configs: Sequence['outputs.EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig']): + airflow_metadata_retention_configs: Optional[Sequence['outputs.EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig']] = None, + task_logs_retention_configs: Optional[Sequence['outputs.EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig']] = None): """ + :param Sequence['EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs'] airflow_metadata_retention_configs: Optional. The configuration setting for database retention. :param Sequence['EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArgs'] task_logs_retention_configs: Optional. The configuration setting for Task Logs. """ - pulumi.set(__self__, "task_logs_retention_configs", task_logs_retention_configs) + if airflow_metadata_retention_configs is not None: + pulumi.set(__self__, "airflow_metadata_retention_configs", airflow_metadata_retention_configs) + if task_logs_retention_configs is not None: + pulumi.set(__self__, "task_logs_retention_configs", task_logs_retention_configs) + + @property + @pulumi.getter(name="airflowMetadataRetentionConfigs") + def airflow_metadata_retention_configs(self) -> Optional[Sequence['outputs.EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig']]: + """ + Optional. The configuration setting for database retention. + """ + return pulumi.get(self, "airflow_metadata_retention_configs") @property @pulumi.getter(name="taskLogsRetentionConfigs") - def task_logs_retention_configs(self) -> Sequence['outputs.EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig']: + def task_logs_retention_configs(self) -> Optional[Sequence['outputs.EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig']]: """ Optional. The configuration setting for Task Logs. """ return pulumi.get(self, "task_logs_retention_configs") +@pulumi.output_type +class EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "retentionDays": + suggest = "retention_days" + elif key == "retentionMode": + suggest = "retention_mode" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + retention_days: Optional[int] = None, + retention_mode: Optional[str] = None): + """ + :param int retention_days: How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer. + :param str retention_mode: Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer. + """ + if retention_days is not None: + pulumi.set(__self__, "retention_days", retention_days) + if retention_mode is not None: + pulumi.set(__self__, "retention_mode", retention_mode) + + @property + @pulumi.getter(name="retentionDays") + def retention_days(self) -> Optional[int]: + """ + How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer. + """ + return pulumi.get(self, "retention_days") + + @property + @pulumi.getter(name="retentionMode") + def retention_mode(self) -> Optional[str]: + """ + Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer. + """ + return pulumi.get(self, "retention_mode") + + @pulumi.output_type class EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig(dict): @staticmethod @@ -2169,12 +2236,23 @@ def workloads_configs(self) -> Sequence['outputs.GetEnvironmentConfigWorkloadsCo @pulumi.output_type class GetEnvironmentConfigDataRetentionConfigResult(dict): def __init__(__self__, *, + airflow_metadata_retention_configs: Sequence['outputs.GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigResult'], task_logs_retention_configs: Sequence['outputs.GetEnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigResult']): """ + :param Sequence['GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigArgs'] airflow_metadata_retention_configs: Optional. The configuration setting for database retention. :param Sequence['GetEnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigArgs'] task_logs_retention_configs: Optional. The configuration setting for Task Logs. """ + pulumi.set(__self__, "airflow_metadata_retention_configs", airflow_metadata_retention_configs) pulumi.set(__self__, "task_logs_retention_configs", task_logs_retention_configs) + @property + @pulumi.getter(name="airflowMetadataRetentionConfigs") + def airflow_metadata_retention_configs(self) -> Sequence['outputs.GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigResult']: + """ + Optional. The configuration setting for database retention. + """ + return pulumi.get(self, "airflow_metadata_retention_configs") + @property @pulumi.getter(name="taskLogsRetentionConfigs") def task_logs_retention_configs(self) -> Sequence['outputs.GetEnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigResult']: @@ -2184,6 +2262,35 @@ def task_logs_retention_configs(self) -> Sequence['outputs.GetEnvironmentConfigD return pulumi.get(self, "task_logs_retention_configs") +@pulumi.output_type +class GetEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfigResult(dict): + def __init__(__self__, *, + retention_days: int, + retention_mode: str): + """ + :param int retention_days: How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer. + :param str retention_mode: Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer. + """ + pulumi.set(__self__, "retention_days", retention_days) + pulumi.set(__self__, "retention_mode", retention_mode) + + @property + @pulumi.getter(name="retentionDays") + def retention_days(self) -> int: + """ + How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer. + """ + return pulumi.get(self, "retention_days") + + @property + @pulumi.getter(name="retentionMode") + def retention_mode(self) -> str: + """ + Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer. + """ + return pulumi.get(self, "retention_mode") + + @pulumi.output_type class GetEnvironmentConfigDataRetentionConfigTaskLogsRetentionConfigResult(dict): def __init__(__self__, *, diff --git a/sdk/python/pulumi_gcp/compute/_inputs.py b/sdk/python/pulumi_gcp/compute/_inputs.py index c84b47aafc..078448b765 100644 --- a/sdk/python/pulumi_gcp/compute/_inputs.py +++ b/sdk/python/pulumi_gcp/compute/_inputs.py @@ -10570,7 +10570,7 @@ class InstanceBootDiskInitializeParamsArgsDict(TypedDict): """ resource_policies: NotRequired[pulumi.Input[str]] """ - 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. """ size: NotRequired[pulumi.Input[int]] """ @@ -10635,7 +10635,7 @@ def __init__(__self__, *, for an update of throughput every 4 hours. To update your hyperdisk more frequently, you'll need to manually delete and recreate it. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] resource_manager_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/456. The field is ignored (both PUT & PATCH) when empty. - :param pulumi.Input[str] resource_policies: 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. + :param pulumi.Input[str] resource_policies: 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. :param pulumi.Input[int] size: The size of the image in gigabytes. If not specified, it will inherit the size of its base image. :param pulumi.Input[str] storage_pool: The URL or the name of the storage pool in which the new disk is created. @@ -10765,7 +10765,7 @@ def resource_manager_tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi @pulumi.getter(name="resourcePolicies") def resource_policies(self) -> Optional[pulumi.Input[str]]: """ - 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. """ return pulumi.get(self, "resource_policies") @@ -12428,6 +12428,10 @@ class InstanceFromMachineImageSchedulingArgsDict(TypedDict): """ Specifies if the instance should be restarted if it was terminated by Compute Engine (not a user). """ + availability_domain: NotRequired[pulumi.Input[int]] + """ + Specifies the availability domain, which this instance should be scheduled on. + """ host_error_timeout_seconds: NotRequired[pulumi.Input[int]] """ 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. @@ -12479,6 +12483,7 @@ class InstanceFromMachineImageSchedulingArgsDict(TypedDict): class InstanceFromMachineImageSchedulingArgs: def __init__(__self__, *, automatic_restart: Optional[pulumi.Input[bool]] = None, + availability_domain: Optional[pulumi.Input[int]] = None, host_error_timeout_seconds: Optional[pulumi.Input[int]] = None, instance_termination_action: Optional[pulumi.Input[str]] = None, local_ssd_recovery_timeout: Optional[pulumi.Input['InstanceFromMachineImageSchedulingLocalSsdRecoveryTimeoutArgs']] = None, @@ -12492,6 +12497,7 @@ def __init__(__self__, *, provisioning_model: Optional[pulumi.Input[str]] = None): """ :param pulumi.Input[bool] automatic_restart: Specifies if the instance should be restarted if it was terminated by Compute Engine (not a user). + :param pulumi.Input[int] availability_domain: Specifies the availability domain, which this instance should be scheduled on. :param pulumi.Input[int] host_error_timeout_seconds: 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. :param pulumi.Input[str] instance_termination_action: Specifies the action GCE should take when SPOT VM is preempted. :param pulumi.Input['InstanceFromMachineImageSchedulingLocalSsdRecoveryTimeoutArgs'] local_ssd_recovery_timeout: Specifies the maximum amount of time a Local Ssd Vm should wait while @@ -12508,6 +12514,8 @@ def __init__(__self__, *, """ if automatic_restart is not None: pulumi.set(__self__, "automatic_restart", automatic_restart) + if availability_domain is not None: + pulumi.set(__self__, "availability_domain", availability_domain) if host_error_timeout_seconds is not None: pulumi.set(__self__, "host_error_timeout_seconds", host_error_timeout_seconds) if instance_termination_action is not None: @@ -12543,6 +12551,18 @@ def automatic_restart(self) -> Optional[pulumi.Input[bool]]: def automatic_restart(self, value: Optional[pulumi.Input[bool]]): pulumi.set(self, "automatic_restart", value) + @property + @pulumi.getter(name="availabilityDomain") + def availability_domain(self) -> Optional[pulumi.Input[int]]: + """ + Specifies the availability domain, which this instance should be scheduled on. + """ + return pulumi.get(self, "availability_domain") + + @availability_domain.setter + def availability_domain(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "availability_domain", value) + @property @pulumi.getter(name="hostErrorTimeoutSeconds") def host_error_timeout_seconds(self) -> Optional[pulumi.Input[int]]: @@ -14634,6 +14654,10 @@ class InstanceFromTemplateSchedulingArgsDict(TypedDict): """ Specifies if the instance should be restarted if it was terminated by Compute Engine (not a user). """ + availability_domain: NotRequired[pulumi.Input[int]] + """ + Specifies the availability domain, which this instance should be scheduled on. + """ host_error_timeout_seconds: NotRequired[pulumi.Input[int]] """ 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. @@ -14685,6 +14709,7 @@ class InstanceFromTemplateSchedulingArgsDict(TypedDict): class InstanceFromTemplateSchedulingArgs: def __init__(__self__, *, automatic_restart: Optional[pulumi.Input[bool]] = None, + availability_domain: Optional[pulumi.Input[int]] = None, host_error_timeout_seconds: Optional[pulumi.Input[int]] = None, instance_termination_action: Optional[pulumi.Input[str]] = None, local_ssd_recovery_timeout: Optional[pulumi.Input['InstanceFromTemplateSchedulingLocalSsdRecoveryTimeoutArgs']] = None, @@ -14698,6 +14723,7 @@ def __init__(__self__, *, provisioning_model: Optional[pulumi.Input[str]] = None): """ :param pulumi.Input[bool] automatic_restart: Specifies if the instance should be restarted if it was terminated by Compute Engine (not a user). + :param pulumi.Input[int] availability_domain: Specifies the availability domain, which this instance should be scheduled on. :param pulumi.Input[int] host_error_timeout_seconds: 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. :param pulumi.Input[str] instance_termination_action: Specifies the action GCE should take when SPOT VM is preempted. :param pulumi.Input['InstanceFromTemplateSchedulingLocalSsdRecoveryTimeoutArgs'] local_ssd_recovery_timeout: Specifies the maximum amount of time a Local Ssd Vm should wait while @@ -14714,6 +14740,8 @@ def __init__(__self__, *, """ if automatic_restart is not None: pulumi.set(__self__, "automatic_restart", automatic_restart) + if availability_domain is not None: + pulumi.set(__self__, "availability_domain", availability_domain) if host_error_timeout_seconds is not None: pulumi.set(__self__, "host_error_timeout_seconds", host_error_timeout_seconds) if instance_termination_action is not None: @@ -14749,6 +14777,18 @@ def automatic_restart(self) -> Optional[pulumi.Input[bool]]: def automatic_restart(self, value: Optional[pulumi.Input[bool]]): pulumi.set(self, "automatic_restart", value) + @property + @pulumi.getter(name="availabilityDomain") + def availability_domain(self) -> Optional[pulumi.Input[int]]: + """ + Specifies the availability domain, which this instance should be scheduled on. + """ + return pulumi.get(self, "availability_domain") + + @availability_domain.setter + def availability_domain(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "availability_domain", value) + @property @pulumi.getter(name="hostErrorTimeoutSeconds") def host_error_timeout_seconds(self) -> Optional[pulumi.Input[int]]: @@ -17467,6 +17507,10 @@ class InstanceSchedulingArgsDict(TypedDict): restarted if it was terminated by Compute Engine (not a user). Defaults to true. """ + availability_domain: NotRequired[pulumi.Input[int]] + """ + 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. + """ host_error_timeout_seconds: NotRequired[pulumi.Input[int]] """ 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. @@ -17532,6 +17576,7 @@ class InstanceSchedulingArgsDict(TypedDict): class InstanceSchedulingArgs: def __init__(__self__, *, automatic_restart: Optional[pulumi.Input[bool]] = None, + availability_domain: Optional[pulumi.Input[int]] = None, host_error_timeout_seconds: Optional[pulumi.Input[int]] = None, instance_termination_action: Optional[pulumi.Input[str]] = None, local_ssd_recovery_timeout: Optional[pulumi.Input['InstanceSchedulingLocalSsdRecoveryTimeoutArgs']] = None, @@ -17547,6 +17592,7 @@ def __init__(__self__, *, :param pulumi.Input[bool] automatic_restart: Specifies if the instance should be restarted if it was terminated by Compute Engine (not a user). Defaults to true. + :param pulumi.Input[int] availability_domain: 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. :param pulumi.Input[int] host_error_timeout_seconds: 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. :param pulumi.Input[str] instance_termination_action: Describe the type of termination action for VM. Can be `STOP` or `DELETE`. Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot) :param pulumi.Input['InstanceSchedulingLocalSsdRecoveryTimeoutArgs'] local_ssd_recovery_timeout: Specifies the maximum amount of time a Local Ssd Vm should wait while @@ -17575,6 +17621,8 @@ def __init__(__self__, *, """ if automatic_restart is not None: pulumi.set(__self__, "automatic_restart", automatic_restart) + if availability_domain is not None: + pulumi.set(__self__, "availability_domain", availability_domain) if host_error_timeout_seconds is not None: pulumi.set(__self__, "host_error_timeout_seconds", host_error_timeout_seconds) if instance_termination_action is not None: @@ -17612,6 +17660,18 @@ def automatic_restart(self) -> Optional[pulumi.Input[bool]]: def automatic_restart(self, value: Optional[pulumi.Input[bool]]): pulumi.set(self, "automatic_restart", value) + @property + @pulumi.getter(name="availabilityDomain") + def availability_domain(self) -> Optional[pulumi.Input[int]]: + """ + 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. + """ + return pulumi.get(self, "availability_domain") + + @availability_domain.setter + def availability_domain(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "availability_domain", value) + @property @pulumi.getter(name="hostErrorTimeoutSeconds") def host_error_timeout_seconds(self) -> Optional[pulumi.Input[int]]: @@ -19929,6 +19989,10 @@ class InstanceTemplateSchedulingArgsDict(TypedDict): automatically restarted if it is terminated by Compute Engine (not terminated by a user). This defaults to true. """ + availability_domain: NotRequired[pulumi.Input[int]] + """ + 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. + """ host_error_timeout_seconds: NotRequired[pulumi.Input[int]] """ 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. @@ -19993,6 +20057,7 @@ class InstanceTemplateSchedulingArgsDict(TypedDict): class InstanceTemplateSchedulingArgs: def __init__(__self__, *, automatic_restart: Optional[pulumi.Input[bool]] = None, + availability_domain: Optional[pulumi.Input[int]] = None, host_error_timeout_seconds: Optional[pulumi.Input[int]] = None, instance_termination_action: Optional[pulumi.Input[str]] = None, local_ssd_recovery_timeouts: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgs']]]] = None, @@ -20008,6 +20073,7 @@ def __init__(__self__, *, :param pulumi.Input[bool] automatic_restart: Specifies whether the instance should be automatically restarted if it is terminated by Compute Engine (not terminated by a user). This defaults to true. + :param pulumi.Input[int] availability_domain: 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. :param pulumi.Input[int] host_error_timeout_seconds: 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. :param pulumi.Input[str] instance_termination_action: Describe the type of termination action for `SPOT` VM. Can be `STOP` or `DELETE`. Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot) :param pulumi.Input[Sequence[pulumi.Input['InstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgs']]] local_ssd_recovery_timeouts: Specifies the maximum amount of time a Local Ssd Vm should wait while @@ -20035,6 +20101,8 @@ def __init__(__self__, *, """ if automatic_restart is not None: pulumi.set(__self__, "automatic_restart", automatic_restart) + if availability_domain is not None: + pulumi.set(__self__, "availability_domain", availability_domain) if host_error_timeout_seconds is not None: pulumi.set(__self__, "host_error_timeout_seconds", host_error_timeout_seconds) if instance_termination_action is not None: @@ -20072,6 +20140,18 @@ def automatic_restart(self) -> Optional[pulumi.Input[bool]]: def automatic_restart(self, value: Optional[pulumi.Input[bool]]): pulumi.set(self, "automatic_restart", value) + @property + @pulumi.getter(name="availabilityDomain") + def availability_domain(self) -> Optional[pulumi.Input[int]]: + """ + 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. + """ + return pulumi.get(self, "availability_domain") + + @availability_domain.setter + def availability_domain(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "availability_domain", value) + @property @pulumi.getter(name="hostErrorTimeoutSeconds") def host_error_timeout_seconds(self) -> Optional[pulumi.Input[int]]: @@ -33486,6 +33566,10 @@ class RegionInstanceTemplateSchedulingArgsDict(TypedDict): automatically restarted if it is terminated by Compute Engine (not terminated by a user). This defaults to true. """ + availability_domain: NotRequired[pulumi.Input[int]] + """ + 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. + """ host_error_timeout_seconds: NotRequired[pulumi.Input[int]] """ 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. @@ -33550,6 +33634,7 @@ class RegionInstanceTemplateSchedulingArgsDict(TypedDict): class RegionInstanceTemplateSchedulingArgs: def __init__(__self__, *, automatic_restart: Optional[pulumi.Input[bool]] = None, + availability_domain: Optional[pulumi.Input[int]] = None, host_error_timeout_seconds: Optional[pulumi.Input[int]] = None, instance_termination_action: Optional[pulumi.Input[str]] = None, local_ssd_recovery_timeouts: Optional[pulumi.Input[Sequence[pulumi.Input['RegionInstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgs']]]] = None, @@ -33565,6 +33650,7 @@ def __init__(__self__, *, :param pulumi.Input[bool] automatic_restart: Specifies whether the instance should be automatically restarted if it is terminated by Compute Engine (not terminated by a user). This defaults to true. + :param pulumi.Input[int] availability_domain: 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. :param pulumi.Input[int] host_error_timeout_seconds: 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. :param pulumi.Input[str] instance_termination_action: Describe the type of termination action for `SPOT` VM. Can be `STOP` or `DELETE`. Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot) :param pulumi.Input[Sequence[pulumi.Input['RegionInstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgs']]] local_ssd_recovery_timeouts: Specifies the maximum amount of time a Local Ssd Vm should wait while @@ -33592,6 +33678,8 @@ def __init__(__self__, *, """ if automatic_restart is not None: pulumi.set(__self__, "automatic_restart", automatic_restart) + if availability_domain is not None: + pulumi.set(__self__, "availability_domain", availability_domain) if host_error_timeout_seconds is not None: pulumi.set(__self__, "host_error_timeout_seconds", host_error_timeout_seconds) if instance_termination_action is not None: @@ -33629,6 +33717,18 @@ def automatic_restart(self) -> Optional[pulumi.Input[bool]]: def automatic_restart(self, value: Optional[pulumi.Input[bool]]): pulumi.set(self, "automatic_restart", value) + @property + @pulumi.getter(name="availabilityDomain") + def availability_domain(self) -> Optional[pulumi.Input[int]]: + """ + 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. + """ + return pulumi.get(self, "availability_domain") + + @availability_domain.setter + def availability_domain(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "availability_domain", value) + @property @pulumi.getter(name="hostErrorTimeoutSeconds") def host_error_timeout_seconds(self) -> Optional[pulumi.Input[int]]: @@ -47343,7 +47443,7 @@ def interface(self, value: Optional[pulumi.Input[str]]): class ResizeRequestRequestedRunDurationArgsDict(TypedDict): seconds: pulumi.Input[str] """ - 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. """ nanos: NotRequired[pulumi.Input[int]] """ @@ -47358,7 +47458,7 @@ def __init__(__self__, *, seconds: pulumi.Input[str], nanos: Optional[pulumi.Input[int]] = None): """ - :param pulumi.Input[str] seconds: 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 + :param pulumi.Input[str] seconds: 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. :param pulumi.Input[int] nanos: Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive. """ pulumi.set(__self__, "seconds", seconds) @@ -47369,7 +47469,7 @@ def __init__(__self__, *, @pulumi.getter def seconds(self) -> pulumi.Input[str]: """ - 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. """ return pulumi.get(self, "seconds") @@ -47395,13 +47495,13 @@ class ResizeRequestStatusArgsDict(TypedDict): errors: NotRequired[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusErrorArgsDict']]]] """ (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. """ last_attempts: NotRequired[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptArgsDict']]]] """ (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. """ elif False: @@ -47414,10 +47514,10 @@ def __init__(__self__, *, last_attempts: Optional[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptArgs']]]] = None): """ :param pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusErrorArgs']]] errors: (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. :param pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptArgs']]] last_attempts: (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. """ if errors is not None: @@ -47430,7 +47530,7 @@ def __init__(__self__, *, def errors(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusErrorArgs']]]]: """ (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. """ return pulumi.get(self, "errors") @@ -47444,7 +47544,7 @@ def errors(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ResizeReque def last_attempts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptArgs']]]]: """ (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. """ return pulumi.get(self, "last_attempts") @@ -47459,7 +47559,7 @@ class ResizeRequestStatusErrorArgsDict(TypedDict): errors: NotRequired[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusErrorErrorArgsDict']]]] """ (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. """ elif False: @@ -47471,7 +47571,7 @@ def __init__(__self__, *, errors: Optional[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusErrorErrorArgs']]]] = None): """ :param pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusErrorErrorArgs']]] errors: (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. """ if errors is not None: @@ -47482,7 +47582,7 @@ def __init__(__self__, *, def errors(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusErrorErrorArgs']]]]: """ (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. """ return pulumi.get(self, "errors") @@ -47497,18 +47597,18 @@ class ResizeRequestStatusErrorErrorArgsDict(TypedDict): code: NotRequired[pulumi.Input[str]] """ (Output) - [Output Only] The error type identifier for this error. + The error type identifier for this error. """ error_details: NotRequired[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusErrorErrorErrorDetailArgsDict']]]] """ (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. """ location: NotRequired[pulumi.Input[str]] """ (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. """ message: NotRequired[pulumi.Input[str]] """ @@ -47527,12 +47627,12 @@ def __init__(__self__, *, message: Optional[pulumi.Input[str]] = None): """ :param pulumi.Input[str] code: (Output) - [Output Only] The error type identifier for this error. + The error type identifier for this error. :param pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusErrorErrorErrorDetailArgs']]] error_details: (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. :param pulumi.Input[str] location: (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. :param pulumi.Input[str] message: (Output) The localized error message in the above locale. """ @@ -47550,7 +47650,7 @@ def __init__(__self__, *, def code(self) -> Optional[pulumi.Input[str]]: """ (Output) - [Output Only] The error type identifier for this error. + The error type identifier for this error. """ return pulumi.get(self, "code") @@ -47563,7 +47663,7 @@ def code(self, value: Optional[pulumi.Input[str]]): def error_details(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusErrorErrorErrorDetailArgs']]]]: """ (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. """ return pulumi.get(self, "error_details") @@ -47577,7 +47677,7 @@ def error_details(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['Resi def location(self) -> Optional[pulumi.Input[str]]: """ (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. """ return pulumi.get(self, "location") @@ -47604,25 +47704,25 @@ class ResizeRequestStatusErrorErrorErrorDetailArgsDict(TypedDict): error_infos: NotRequired[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusErrorErrorErrorDetailErrorInfoArgsDict']]]] """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ helps: NotRequired[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusErrorErrorErrorDetailHelpArgsDict']]]] """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ localized_messages: NotRequired[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusErrorErrorErrorDetailLocalizedMessageArgsDict']]]] """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ quota_infos: NotRequired[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusErrorErrorErrorDetailQuotaInfoArgsDict']]]] """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ elif False: @@ -47637,16 +47737,16 @@ def __init__(__self__, *, quota_infos: Optional[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusErrorErrorErrorDetailQuotaInfoArgs']]]] = None): """ :param pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusErrorErrorErrorDetailErrorInfoArgs']]] error_infos: (Output) - [Output Only] + A nested object resource. Structure is documented below. :param pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusErrorErrorErrorDetailHelpArgs']]] helps: (Output) - [Output Only] + A nested object resource. Structure is documented below. :param pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusErrorErrorErrorDetailLocalizedMessageArgs']]] localized_messages: (Output) - [Output Only] + A nested object resource. Structure is documented below. :param pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusErrorErrorErrorDetailQuotaInfoArgs']]] quota_infos: (Output) - [Output Only] + A nested object resource. Structure is documented below. """ if error_infos is not None: @@ -47663,7 +47763,7 @@ def __init__(__self__, *, def error_infos(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusErrorErrorErrorDetailErrorInfoArgs']]]]: """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ return pulumi.get(self, "error_infos") @@ -47677,7 +47777,7 @@ def error_infos(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['Resize def helps(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusErrorErrorErrorDetailHelpArgs']]]]: """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ return pulumi.get(self, "helps") @@ -47691,7 +47791,7 @@ def helps(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ResizeReques def localized_messages(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusErrorErrorErrorDetailLocalizedMessageArgs']]]]: """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ return pulumi.get(self, "localized_messages") @@ -47705,7 +47805,7 @@ def localized_messages(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[ def quota_infos(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusErrorErrorErrorDetailQuotaInfoArgs']]]]: """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ return pulumi.get(self, "quota_infos") @@ -47720,18 +47820,17 @@ class ResizeRequestStatusErrorErrorErrorDetailErrorInfoArgsDict(TypedDict): domain: NotRequired[pulumi.Input[str]] """ (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". """ metadatas: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[str]]]] """ (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. """ reason: NotRequired[pulumi.Input[str]] """ (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. """ elif False: ResizeRequestStatusErrorErrorErrorDetailErrorInfoArgsDict: TypeAlias = Mapping[str, Any] @@ -47744,12 +47843,11 @@ def __init__(__self__, *, reason: Optional[pulumi.Input[str]] = None): """ :param pulumi.Input[str] domain: (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". :param pulumi.Input[Mapping[str, pulumi.Input[str]]] metadatas: (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. :param pulumi.Input[str] reason: (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. """ if domain is not None: pulumi.set(__self__, "domain", domain) @@ -47763,7 +47861,7 @@ def __init__(__self__, *, def domain(self) -> Optional[pulumi.Input[str]]: """ (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". """ return pulumi.get(self, "domain") @@ -47777,7 +47875,6 @@ def metadatas(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: """ (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. """ return pulumi.get(self, "metadatas") @@ -47790,7 +47887,7 @@ def metadatas(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]] def reason(self) -> Optional[pulumi.Input[str]]: """ (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. """ return pulumi.get(self, "reason") @@ -47804,7 +47901,7 @@ class ResizeRequestStatusErrorErrorErrorDetailHelpArgsDict(TypedDict): links: NotRequired[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusErrorErrorErrorDetailHelpLinkArgsDict']]]] """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ elif False: @@ -47816,7 +47913,7 @@ def __init__(__self__, *, links: Optional[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusErrorErrorErrorDetailHelpLinkArgs']]]] = None): """ :param pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusErrorErrorErrorDetailHelpLinkArgs']]] links: (Output) - [Output Only] + A nested object resource. Structure is documented below. """ if links is not None: @@ -47827,7 +47924,7 @@ def __init__(__self__, *, def links(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusErrorErrorErrorDetailHelpLinkArgs']]]]: """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ return pulumi.get(self, "links") @@ -48105,7 +48202,7 @@ class ResizeRequestStatusLastAttemptArgsDict(TypedDict): errors: NotRequired[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptErrorArgsDict']]]] """ (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. """ elif False: @@ -48117,7 +48214,7 @@ def __init__(__self__, *, errors: Optional[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptErrorArgs']]]] = None): """ :param pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptErrorArgs']]] errors: (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. """ if errors is not None: @@ -48128,7 +48225,7 @@ def __init__(__self__, *, def errors(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptErrorArgs']]]]: """ (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. """ return pulumi.get(self, "errors") @@ -48143,7 +48240,7 @@ class ResizeRequestStatusLastAttemptErrorArgsDict(TypedDict): errors: NotRequired[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptErrorErrorArgsDict']]]] """ (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. """ elif False: @@ -48155,7 +48252,7 @@ def __init__(__self__, *, errors: Optional[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptErrorErrorArgs']]]] = None): """ :param pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptErrorErrorArgs']]] errors: (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. """ if errors is not None: @@ -48166,7 +48263,7 @@ def __init__(__self__, *, def errors(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptErrorErrorArgs']]]]: """ (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. """ return pulumi.get(self, "errors") @@ -48181,18 +48278,18 @@ class ResizeRequestStatusLastAttemptErrorErrorArgsDict(TypedDict): code: NotRequired[pulumi.Input[str]] """ (Output) - [Output Only] The error type identifier for this error. + The error type identifier for this error. """ error_details: NotRequired[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptErrorErrorErrorDetailArgsDict']]]] """ (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. """ location: NotRequired[pulumi.Input[str]] """ (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. """ message: NotRequired[pulumi.Input[str]] """ @@ -48211,12 +48308,12 @@ def __init__(__self__, *, message: Optional[pulumi.Input[str]] = None): """ :param pulumi.Input[str] code: (Output) - [Output Only] The error type identifier for this error. + The error type identifier for this error. :param pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptErrorErrorErrorDetailArgs']]] error_details: (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. :param pulumi.Input[str] location: (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. :param pulumi.Input[str] message: (Output) The localized error message in the above locale. """ @@ -48234,7 +48331,7 @@ def __init__(__self__, *, def code(self) -> Optional[pulumi.Input[str]]: """ (Output) - [Output Only] The error type identifier for this error. + The error type identifier for this error. """ return pulumi.get(self, "code") @@ -48247,7 +48344,7 @@ def code(self, value: Optional[pulumi.Input[str]]): def error_details(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptErrorErrorErrorDetailArgs']]]]: """ (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. """ return pulumi.get(self, "error_details") @@ -48261,7 +48358,7 @@ def error_details(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['Resi def location(self) -> Optional[pulumi.Input[str]]: """ (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. """ return pulumi.get(self, "location") @@ -48288,25 +48385,25 @@ class ResizeRequestStatusLastAttemptErrorErrorErrorDetailArgsDict(TypedDict): error_infos: NotRequired[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfoArgsDict']]]] """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ helps: NotRequired[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpArgsDict']]]] """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ localized_messages: NotRequired[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptErrorErrorErrorDetailLocalizedMessageArgsDict']]]] """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ quota_infos: NotRequired[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptErrorErrorErrorDetailQuotaInfoArgsDict']]]] """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ elif False: @@ -48321,16 +48418,16 @@ def __init__(__self__, *, quota_infos: Optional[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptErrorErrorErrorDetailQuotaInfoArgs']]]] = None): """ :param pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfoArgs']]] error_infos: (Output) - [Output Only] + A nested object resource. Structure is documented below. :param pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpArgs']]] helps: (Output) - [Output Only] + A nested object resource. Structure is documented below. :param pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptErrorErrorErrorDetailLocalizedMessageArgs']]] localized_messages: (Output) - [Output Only] + A nested object resource. Structure is documented below. :param pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptErrorErrorErrorDetailQuotaInfoArgs']]] quota_infos: (Output) - [Output Only] + A nested object resource. Structure is documented below. """ if error_infos is not None: @@ -48347,7 +48444,7 @@ def __init__(__self__, *, def error_infos(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfoArgs']]]]: """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ return pulumi.get(self, "error_infos") @@ -48361,7 +48458,7 @@ def error_infos(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['Resize def helps(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpArgs']]]]: """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ return pulumi.get(self, "helps") @@ -48375,7 +48472,7 @@ def helps(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ResizeReques def localized_messages(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptErrorErrorErrorDetailLocalizedMessageArgs']]]]: """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ return pulumi.get(self, "localized_messages") @@ -48389,7 +48486,7 @@ def localized_messages(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[ def quota_infos(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptErrorErrorErrorDetailQuotaInfoArgs']]]]: """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ return pulumi.get(self, "quota_infos") @@ -48404,18 +48501,17 @@ class ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfoArgsDict(Typed domain: NotRequired[pulumi.Input[str]] """ (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". """ metadatas: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[str]]]] """ (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. """ reason: NotRequired[pulumi.Input[str]] """ (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. """ elif False: ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfoArgsDict: TypeAlias = Mapping[str, Any] @@ -48428,12 +48524,11 @@ def __init__(__self__, *, reason: Optional[pulumi.Input[str]] = None): """ :param pulumi.Input[str] domain: (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". :param pulumi.Input[Mapping[str, pulumi.Input[str]]] metadatas: (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. :param pulumi.Input[str] reason: (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. """ if domain is not None: pulumi.set(__self__, "domain", domain) @@ -48447,7 +48542,7 @@ def __init__(__self__, *, def domain(self) -> Optional[pulumi.Input[str]]: """ (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". """ return pulumi.get(self, "domain") @@ -48461,7 +48556,6 @@ def metadatas(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: """ (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. """ return pulumi.get(self, "metadatas") @@ -48474,7 +48568,7 @@ def metadatas(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]] def reason(self) -> Optional[pulumi.Input[str]]: """ (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. """ return pulumi.get(self, "reason") @@ -48488,7 +48582,7 @@ class ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpArgsDict(TypedDict) links: NotRequired[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpLinkArgsDict']]]] """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ elif False: @@ -48500,7 +48594,7 @@ def __init__(__self__, *, links: Optional[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpLinkArgs']]]] = None): """ :param pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpLinkArgs']]] links: (Output) - [Output Only] + A nested object resource. Structure is documented below. """ if links is not None: @@ -48511,7 +48605,7 @@ def __init__(__self__, *, def links(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpLinkArgs']]]]: """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ return pulumi.get(self, "links") diff --git a/sdk/python/pulumi_gcp/compute/firewall_policy_association.py b/sdk/python/pulumi_gcp/compute/firewall_policy_association.py index e3faab0e1c..3f01fcd23b 100644 --- a/sdk/python/pulumi_gcp/compute/firewall_policy_association.py +++ b/sdk/python/pulumi_gcp/compute/firewall_policy_association.py @@ -25,12 +25,11 @@ def __init__(__self__, *, """ The set of arguments for constructing a FirewallPolicyAssociation resource. :param pulumi.Input[str] attachment_target: The target that the firewall policy is attached to. - :param pulumi.Input[str] firewall_policy: The firewall policy ID of the association. - :param pulumi.Input[str] name: The name for an association. - + :param pulumi.Input[str] firewall_policy: The firewall policy of the resource. - - - + :param pulumi.Input[str] name: The name for an association. """ pulumi.set(__self__, "attachment_target", attachment_target) pulumi.set(__self__, "firewall_policy", firewall_policy) @@ -53,7 +52,10 @@ def attachment_target(self, value: pulumi.Input[str]): @pulumi.getter(name="firewallPolicy") def firewall_policy(self) -> pulumi.Input[str]: """ - The firewall policy ID of the association. + The firewall policy of the resource. + + + - - - """ return pulumi.get(self, "firewall_policy") @@ -66,10 +68,6 @@ def firewall_policy(self, value: pulumi.Input[str]): def name(self) -> Optional[pulumi.Input[str]]: """ The name for an association. - - - - - - - """ return pulumi.get(self, "name") @@ -88,12 +86,11 @@ def __init__(__self__, *, """ Input properties used for looking up and filtering FirewallPolicyAssociation resources. :param pulumi.Input[str] attachment_target: The target that the firewall policy is attached to. - :param pulumi.Input[str] firewall_policy: The firewall policy ID of the association. - :param pulumi.Input[str] name: The name for an association. - + :param pulumi.Input[str] firewall_policy: The firewall policy of the resource. - - - + :param pulumi.Input[str] name: The name for an association. :param pulumi.Input[str] short_name: The short name of the firewall policy of the association. """ if attachment_target is not None: @@ -121,7 +118,10 @@ def attachment_target(self, value: Optional[pulumi.Input[str]]): @pulumi.getter(name="firewallPolicy") def firewall_policy(self) -> Optional[pulumi.Input[str]]: """ - The firewall policy ID of the association. + The firewall policy of the resource. + + + - - - """ return pulumi.get(self, "firewall_policy") @@ -134,10 +134,6 @@ def firewall_policy(self, value: Optional[pulumi.Input[str]]): def name(self) -> Optional[pulumi.Input[str]]: """ The name for an association. - - - - - - - """ return pulumi.get(self, "name") @@ -169,22 +165,31 @@ def __init__(__self__, __props__=None): """ 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) + + To get more information about FirewallPolicyAssociation, see: - 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) + * [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/firewallPolicies/addAssociation) ## Example Usage + ### Firewall Policy Association + ```python import pulumi import pulumi_gcp as gcp - default = gcp.compute.FirewallPolicy("default", - parent="organizations/12345", + folder = gcp.organizations.Folder("folder", + display_name="my-folder", + parent="organizations/123456789", + deletion_protection=False) + policy = gcp.compute.FirewallPolicy("policy", + parent="organizations/123456789", short_name="my-policy", description="Example Resource") - default_firewall_policy_association = gcp.compute.FirewallPolicyAssociation("default", - firewall_policy=default.id, - attachment_target=folder["name"], + default = gcp.compute.FirewallPolicyAssociation("default", + firewall_policy=policy.id, + attachment_target=folder.name, name="my-association") ``` @@ -209,12 +214,11 @@ def __init__(__self__, :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] attachment_target: The target that the firewall policy is attached to. - :param pulumi.Input[str] firewall_policy: The firewall policy ID of the association. - :param pulumi.Input[str] name: The name for an association. - + :param pulumi.Input[str] firewall_policy: The firewall policy of the resource. - - - + :param pulumi.Input[str] name: The name for an association. """ ... @overload @@ -224,22 +228,31 @@ def __init__(__self__, opts: Optional[pulumi.ResourceOptions] = None): """ 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) + + To get more information about FirewallPolicyAssociation, see: - 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) + * [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/firewallPolicies/addAssociation) ## Example Usage + ### Firewall Policy Association + ```python import pulumi import pulumi_gcp as gcp - default = gcp.compute.FirewallPolicy("default", - parent="organizations/12345", + folder = gcp.organizations.Folder("folder", + display_name="my-folder", + parent="organizations/123456789", + deletion_protection=False) + policy = gcp.compute.FirewallPolicy("policy", + parent="organizations/123456789", short_name="my-policy", description="Example Resource") - default_firewall_policy_association = gcp.compute.FirewallPolicyAssociation("default", - firewall_policy=default.id, - attachment_target=folder["name"], + default = gcp.compute.FirewallPolicyAssociation("default", + firewall_policy=policy.id, + attachment_target=folder.name, name="my-association") ``` @@ -318,12 +331,11 @@ def get(resource_name: str, :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] attachment_target: The target that the firewall policy is attached to. - :param pulumi.Input[str] firewall_policy: The firewall policy ID of the association. - :param pulumi.Input[str] name: The name for an association. - + :param pulumi.Input[str] firewall_policy: The firewall policy of the resource. - - - + :param pulumi.Input[str] name: The name for an association. :param pulumi.Input[str] short_name: The short name of the firewall policy of the association. """ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) @@ -348,7 +360,10 @@ def attachment_target(self) -> pulumi.Output[str]: @pulumi.getter(name="firewallPolicy") def firewall_policy(self) -> pulumi.Output[str]: """ - The firewall policy ID of the association. + The firewall policy of the resource. + + + - - - """ return pulumi.get(self, "firewall_policy") @@ -357,10 +372,6 @@ def firewall_policy(self) -> pulumi.Output[str]: def name(self) -> pulumi.Output[str]: """ The name for an association. - - - - - - - """ return pulumi.get(self, "name") diff --git a/sdk/python/pulumi_gcp/compute/get_network.py b/sdk/python/pulumi_gcp/compute/get_network.py index 302275dd78..83b753ab1c 100644 --- a/sdk/python/pulumi_gcp/compute/get_network.py +++ b/sdk/python/pulumi_gcp/compute/get_network.py @@ -26,7 +26,7 @@ class GetNetworkResult: """ A collection of values returned by getNetwork. """ - def __init__(__self__, description=None, gateway_ipv4=None, id=None, internal_ipv6_range=None, name=None, network_profile=None, numeric_id=None, project=None, self_link=None, subnetworks_self_links=None): + def __init__(__self__, description=None, gateway_ipv4=None, id=None, internal_ipv6_range=None, name=None, network_id=None, network_profile=None, numeric_id=None, project=None, self_link=None, subnetworks_self_links=None): if description and not isinstance(description, str): raise TypeError("Expected argument 'description' to be a str") pulumi.set(__self__, "description", description) @@ -42,6 +42,9 @@ def __init__(__self__, description=None, gateway_ipv4=None, id=None, internal_ip if name and not isinstance(name, str): raise TypeError("Expected argument 'name' to be a str") pulumi.set(__self__, "name", name) + if network_id and not isinstance(network_id, int): + raise TypeError("Expected argument 'network_id' to be a int") + pulumi.set(__self__, "network_id", network_id) if network_profile and not isinstance(network_profile, str): raise TypeError("Expected argument 'network_profile' to be a str") pulumi.set(__self__, "network_profile", network_profile) @@ -95,6 +98,14 @@ def internal_ipv6_range(self) -> str: def name(self) -> str: return pulumi.get(self, "name") + @property + @pulumi.getter(name="networkId") + def network_id(self) -> int: + """ + The numeric unique identifier for the resource. + """ + return pulumi.get(self, "network_id") + @property @pulumi.getter(name="networkProfile") def network_profile(self) -> Optional[str]: @@ -105,9 +116,10 @@ def network_profile(self) -> Optional[str]: @property @pulumi.getter(name="numericId") + @_utilities.deprecated("""`numeric_id` is deprecated and will be removed in a future major release. Use `network_id` instead.""") def numeric_id(self) -> str: """ - 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. """ return pulumi.get(self, "numeric_id") @@ -144,6 +156,7 @@ def __await__(self): id=self.id, internal_ipv6_range=self.internal_ipv6_range, name=self.name, + network_id=self.network_id, network_profile=self.network_profile, numeric_id=self.numeric_id, project=self.project, @@ -189,6 +202,7 @@ def get_network(name: Optional[str] = None, id=pulumi.get(__ret__, 'id'), internal_ipv6_range=pulumi.get(__ret__, 'internal_ipv6_range'), name=pulumi.get(__ret__, 'name'), + network_id=pulumi.get(__ret__, 'network_id'), network_profile=pulumi.get(__ret__, 'network_profile'), numeric_id=pulumi.get(__ret__, 'numeric_id'), project=pulumi.get(__ret__, 'project'), @@ -231,6 +245,7 @@ def get_network_output(name: Optional[pulumi.Input[str]] = None, id=pulumi.get(__response__, 'id'), internal_ipv6_range=pulumi.get(__response__, 'internal_ipv6_range'), name=pulumi.get(__response__, 'name'), + network_id=pulumi.get(__response__, 'network_id'), network_profile=pulumi.get(__response__, 'network_profile'), numeric_id=pulumi.get(__response__, 'numeric_id'), project=pulumi.get(__response__, 'project'), diff --git a/sdk/python/pulumi_gcp/compute/get_subnetwork.py b/sdk/python/pulumi_gcp/compute/get_subnetwork.py index 29ca098888..7d30d82679 100644 --- a/sdk/python/pulumi_gcp/compute/get_subnetwork.py +++ b/sdk/python/pulumi_gcp/compute/get_subnetwork.py @@ -27,7 +27,7 @@ class GetSubnetworkResult: """ A collection of values returned by getSubnetwork. """ - def __init__(__self__, description=None, gateway_address=None, id=None, internal_ipv6_prefix=None, ip_cidr_range=None, name=None, network=None, private_ip_google_access=None, project=None, region=None, secondary_ip_ranges=None, self_link=None): + def __init__(__self__, description=None, gateway_address=None, id=None, internal_ipv6_prefix=None, ip_cidr_range=None, name=None, network=None, private_ip_google_access=None, project=None, region=None, secondary_ip_ranges=None, self_link=None, subnetwork_id=None): if description and not isinstance(description, str): raise TypeError("Expected argument 'description' to be a str") pulumi.set(__self__, "description", description) @@ -64,6 +64,9 @@ def __init__(__self__, description=None, gateway_address=None, id=None, internal if self_link and not isinstance(self_link, str): raise TypeError("Expected argument 'self_link' to be a str") pulumi.set(__self__, "self_link", self_link) + if subnetwork_id and not isinstance(subnetwork_id, int): + raise TypeError("Expected argument 'subnetwork_id' to be a int") + pulumi.set(__self__, "subnetwork_id", subnetwork_id) @property @pulumi.getter @@ -154,6 +157,14 @@ def secondary_ip_ranges(self) -> Sequence['outputs.GetSubnetworkSecondaryIpRange def self_link(self) -> str: return pulumi.get(self, "self_link") + @property + @pulumi.getter(name="subnetworkId") + def subnetwork_id(self) -> int: + """ + The numeric ID of the resource. + """ + return pulumi.get(self, "subnetwork_id") + class AwaitableGetSubnetworkResult(GetSubnetworkResult): # pylint: disable=using-constant-test @@ -172,7 +183,8 @@ def __await__(self): project=self.project, region=self.region, secondary_ip_ranges=self.secondary_ip_ranges, - self_link=self.self_link) + self_link=self.self_link, + subnetwork_id=self.subnetwork_id) def get_subnetwork(name: Optional[str] = None, @@ -223,7 +235,8 @@ def get_subnetwork(name: Optional[str] = None, project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region'), secondary_ip_ranges=pulumi.get(__ret__, 'secondary_ip_ranges'), - self_link=pulumi.get(__ret__, 'self_link')) + self_link=pulumi.get(__ret__, 'self_link'), + subnetwork_id=pulumi.get(__ret__, 'subnetwork_id')) def get_subnetwork_output(name: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -271,4 +284,5 @@ def get_subnetwork_output(name: Optional[pulumi.Input[Optional[str]]] = None, project=pulumi.get(__response__, 'project'), region=pulumi.get(__response__, 'region'), secondary_ip_ranges=pulumi.get(__response__, 'secondary_ip_ranges'), - self_link=pulumi.get(__response__, 'self_link'))) + self_link=pulumi.get(__response__, 'self_link'), + subnetwork_id=pulumi.get(__response__, 'subnetwork_id'))) diff --git a/sdk/python/pulumi_gcp/compute/network.py b/sdk/python/pulumi_gcp/compute/network.py index b82fff37f8..8dc4229f27 100644 --- a/sdk/python/pulumi_gcp/compute/network.py +++ b/sdk/python/pulumi_gcp/compute/network.py @@ -341,6 +341,7 @@ def __init__(__self__, *, mtu: Optional[pulumi.Input[int]] = None, name: Optional[pulumi.Input[str]] = None, network_firewall_policy_enforcement_order: Optional[pulumi.Input[str]] = None, + network_id: Optional[pulumi.Input[str]] = None, network_profile: Optional[pulumi.Input[str]] = None, numeric_id: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, @@ -390,12 +391,14 @@ def __init__(__self__, *, :param pulumi.Input[str] network_firewall_policy_enforcement_order: Set the order that Firewall Rules and Firewall Policies are evaluated. Default value is `AFTER_CLASSIC_FIREWALL`. Possible values are: `BEFORE_CLASSIC_FIREWALL`, `AFTER_CLASSIC_FIREWALL`. + :param pulumi.Input[str] network_id: The unique identifier for the resource. This identifier is defined by the server. :param pulumi.Input[str] network_profile: 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 following are valid URLs: * https://www.googleapis.com/compute/beta/projects/{projectId}/global/networkProfiles/{network_profile_name} * projects/{projectId}/global/networkProfiles/{network_profile_name} - :param pulumi.Input[str] numeric_id: The unique identifier for the resource. This identifier is defined by the server. + :param pulumi.Input[str] numeric_id: (Deprecated) + The unique identifier for the resource. This identifier is defined by the server. :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. :param pulumi.Input[str] routing_mode: The network-wide routing mode to use. If set to `REGIONAL`, this @@ -430,8 +433,13 @@ def __init__(__self__, *, pulumi.set(__self__, "name", name) if network_firewall_policy_enforcement_order is not None: pulumi.set(__self__, "network_firewall_policy_enforcement_order", network_firewall_policy_enforcement_order) + if network_id is not None: + pulumi.set(__self__, "network_id", network_id) if network_profile is not None: pulumi.set(__self__, "network_profile", network_profile) + if numeric_id is not None: + warnings.warn("""`numeric_id` is deprecated and will be removed in a future major release. Use `network_id` instead.""", DeprecationWarning) + pulumi.log.warn("""numeric_id is deprecated: `numeric_id` is deprecated and will be removed in a future major release. Use `network_id` instead.""") if numeric_id is not None: pulumi.set(__self__, "numeric_id", numeric_id) if project is not None: @@ -615,6 +623,18 @@ def network_firewall_policy_enforcement_order(self) -> Optional[pulumi.Input[str def network_firewall_policy_enforcement_order(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "network_firewall_policy_enforcement_order", value) + @property + @pulumi.getter(name="networkId") + def network_id(self) -> Optional[pulumi.Input[str]]: + """ + The unique identifier for the resource. This identifier is defined by the server. + """ + return pulumi.get(self, "network_id") + + @network_id.setter + def network_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "network_id", value) + @property @pulumi.getter(name="networkProfile") def network_profile(self) -> Optional[pulumi.Input[str]]: @@ -633,8 +653,10 @@ def network_profile(self, value: Optional[pulumi.Input[str]]): @property @pulumi.getter(name="numericId") + @_utilities.deprecated("""`numeric_id` is deprecated and will be removed in a future major release. Use `network_id` instead.""") def numeric_id(self) -> Optional[pulumi.Input[str]]: """ + (Deprecated) The unique identifier for the resource. This identifier is defined by the server. """ return pulumi.get(self, "numeric_id") @@ -1031,6 +1053,7 @@ def _internal_init(__self__, __props__.__dict__["project"] = project __props__.__dict__["routing_mode"] = routing_mode __props__.__dict__["gateway_ipv4"] = None + __props__.__dict__["network_id"] = None __props__.__dict__["numeric_id"] = None __props__.__dict__["self_link"] = None super(Network, __self__).__init__( @@ -1055,6 +1078,7 @@ def get(resource_name: str, mtu: Optional[pulumi.Input[int]] = None, name: Optional[pulumi.Input[str]] = None, network_firewall_policy_enforcement_order: Optional[pulumi.Input[str]] = None, + network_id: Optional[pulumi.Input[str]] = None, network_profile: Optional[pulumi.Input[str]] = None, numeric_id: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, @@ -1109,12 +1133,14 @@ def get(resource_name: str, :param pulumi.Input[str] network_firewall_policy_enforcement_order: Set the order that Firewall Rules and Firewall Policies are evaluated. Default value is `AFTER_CLASSIC_FIREWALL`. Possible values are: `BEFORE_CLASSIC_FIREWALL`, `AFTER_CLASSIC_FIREWALL`. + :param pulumi.Input[str] network_id: The unique identifier for the resource. This identifier is defined by the server. :param pulumi.Input[str] network_profile: 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 following are valid URLs: * https://www.googleapis.com/compute/beta/projects/{projectId}/global/networkProfiles/{network_profile_name} * projects/{projectId}/global/networkProfiles/{network_profile_name} - :param pulumi.Input[str] numeric_id: The unique identifier for the resource. This identifier is defined by the server. + :param pulumi.Input[str] numeric_id: (Deprecated) + The unique identifier for the resource. This identifier is defined by the server. :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. :param pulumi.Input[str] routing_mode: The network-wide routing mode to use. If set to `REGIONAL`, this @@ -1141,6 +1167,7 @@ def get(resource_name: str, __props__.__dict__["mtu"] = mtu __props__.__dict__["name"] = name __props__.__dict__["network_firewall_policy_enforcement_order"] = network_firewall_policy_enforcement_order + __props__.__dict__["network_id"] = network_id __props__.__dict__["network_profile"] = network_profile __props__.__dict__["numeric_id"] = numeric_id __props__.__dict__["project"] = project @@ -1274,6 +1301,14 @@ def network_firewall_policy_enforcement_order(self) -> pulumi.Output[Optional[st """ return pulumi.get(self, "network_firewall_policy_enforcement_order") + @property + @pulumi.getter(name="networkId") + def network_id(self) -> pulumi.Output[str]: + """ + The unique identifier for the resource. This identifier is defined by the server. + """ + return pulumi.get(self, "network_id") + @property @pulumi.getter(name="networkProfile") def network_profile(self) -> pulumi.Output[Optional[str]]: @@ -1288,8 +1323,10 @@ def network_profile(self) -> pulumi.Output[Optional[str]]: @property @pulumi.getter(name="numericId") + @_utilities.deprecated("""`numeric_id` is deprecated and will be removed in a future major release. Use `network_id` instead.""") def numeric_id(self) -> pulumi.Output[str]: """ + (Deprecated) The unique identifier for the resource. This identifier is defined by the server. """ return pulumi.get(self, "numeric_id") diff --git a/sdk/python/pulumi_gcp/compute/outputs.py b/sdk/python/pulumi_gcp/compute/outputs.py index 238cdacc11..8085cb73c0 100644 --- a/sdk/python/pulumi_gcp/compute/outputs.py +++ b/sdk/python/pulumi_gcp/compute/outputs.py @@ -7676,7 +7676,7 @@ def __init__(__self__, *, for an update of throughput every 4 hours. To update your hyperdisk more frequently, you'll need to manually delete and recreate it. :param Mapping[str, str] resource_manager_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/456. The field is ignored (both PUT & PATCH) when empty. - :param str resource_policies: 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. + :param str resource_policies: 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. :param int size: The size of the image in gigabytes. If not specified, it will inherit the size of its base image. :param str storage_pool: The URL or the name of the storage pool in which the new disk is created. @@ -7782,7 +7782,7 @@ def resource_manager_tags(self) -> Optional[Mapping[str, str]]: @pulumi.getter(name="resourcePolicies") def resource_policies(self) -> Optional[str]: """ - 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. """ return pulumi.get(self, "resource_policies") @@ -9083,6 +9083,8 @@ def __key_warning(key: str): suggest = None if key == "automaticRestart": suggest = "automatic_restart" + elif key == "availabilityDomain": + suggest = "availability_domain" elif key == "hostErrorTimeoutSeconds": suggest = "host_error_timeout_seconds" elif key == "instanceTerminationAction": @@ -9117,6 +9119,7 @@ def get(self, key: str, default = None) -> Any: def __init__(__self__, *, automatic_restart: Optional[bool] = None, + availability_domain: Optional[int] = None, host_error_timeout_seconds: Optional[int] = None, instance_termination_action: Optional[str] = None, local_ssd_recovery_timeout: Optional['outputs.InstanceFromMachineImageSchedulingLocalSsdRecoveryTimeout'] = None, @@ -9130,6 +9133,7 @@ def __init__(__self__, *, provisioning_model: Optional[str] = None): """ :param bool automatic_restart: Specifies if the instance should be restarted if it was terminated by Compute Engine (not a user). + :param int availability_domain: Specifies the availability domain, which this instance should be scheduled on. :param int host_error_timeout_seconds: 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. :param str instance_termination_action: Specifies the action GCE should take when SPOT VM is preempted. :param 'InstanceFromMachineImageSchedulingLocalSsdRecoveryTimeoutArgs' local_ssd_recovery_timeout: Specifies the maximum amount of time a Local Ssd Vm should wait while @@ -9146,6 +9150,8 @@ def __init__(__self__, *, """ if automatic_restart is not None: pulumi.set(__self__, "automatic_restart", automatic_restart) + if availability_domain is not None: + pulumi.set(__self__, "availability_domain", availability_domain) if host_error_timeout_seconds is not None: pulumi.set(__self__, "host_error_timeout_seconds", host_error_timeout_seconds) if instance_termination_action is not None: @@ -9177,6 +9183,14 @@ def automatic_restart(self) -> Optional[bool]: """ return pulumi.get(self, "automatic_restart") + @property + @pulumi.getter(name="availabilityDomain") + def availability_domain(self) -> Optional[int]: + """ + Specifies the availability domain, which this instance should be scheduled on. + """ + return pulumi.get(self, "availability_domain") + @property @pulumi.getter(name="hostErrorTimeoutSeconds") def host_error_timeout_seconds(self) -> Optional[int]: @@ -10773,6 +10787,8 @@ def __key_warning(key: str): suggest = None if key == "automaticRestart": suggest = "automatic_restart" + elif key == "availabilityDomain": + suggest = "availability_domain" elif key == "hostErrorTimeoutSeconds": suggest = "host_error_timeout_seconds" elif key == "instanceTerminationAction": @@ -10807,6 +10823,7 @@ def get(self, key: str, default = None) -> Any: def __init__(__self__, *, automatic_restart: Optional[bool] = None, + availability_domain: Optional[int] = None, host_error_timeout_seconds: Optional[int] = None, instance_termination_action: Optional[str] = None, local_ssd_recovery_timeout: Optional['outputs.InstanceFromTemplateSchedulingLocalSsdRecoveryTimeout'] = None, @@ -10820,6 +10837,7 @@ def __init__(__self__, *, provisioning_model: Optional[str] = None): """ :param bool automatic_restart: Specifies if the instance should be restarted if it was terminated by Compute Engine (not a user). + :param int availability_domain: Specifies the availability domain, which this instance should be scheduled on. :param int host_error_timeout_seconds: 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. :param str instance_termination_action: Specifies the action GCE should take when SPOT VM is preempted. :param 'InstanceFromTemplateSchedulingLocalSsdRecoveryTimeoutArgs' local_ssd_recovery_timeout: Specifies the maximum amount of time a Local Ssd Vm should wait while @@ -10836,6 +10854,8 @@ def __init__(__self__, *, """ if automatic_restart is not None: pulumi.set(__self__, "automatic_restart", automatic_restart) + if availability_domain is not None: + pulumi.set(__self__, "availability_domain", availability_domain) if host_error_timeout_seconds is not None: pulumi.set(__self__, "host_error_timeout_seconds", host_error_timeout_seconds) if instance_termination_action is not None: @@ -10867,6 +10887,14 @@ def automatic_restart(self) -> Optional[bool]: """ return pulumi.get(self, "automatic_restart") + @property + @pulumi.getter(name="availabilityDomain") + def availability_domain(self) -> Optional[int]: + """ + Specifies the availability domain, which this instance should be scheduled on. + """ + return pulumi.get(self, "availability_domain") + @property @pulumi.getter(name="hostErrorTimeoutSeconds") def host_error_timeout_seconds(self) -> Optional[int]: @@ -12986,6 +13014,8 @@ def __key_warning(key: str): suggest = None if key == "automaticRestart": suggest = "automatic_restart" + elif key == "availabilityDomain": + suggest = "availability_domain" elif key == "hostErrorTimeoutSeconds": suggest = "host_error_timeout_seconds" elif key == "instanceTerminationAction": @@ -13020,6 +13050,7 @@ def get(self, key: str, default = None) -> Any: def __init__(__self__, *, automatic_restart: Optional[bool] = None, + availability_domain: Optional[int] = None, host_error_timeout_seconds: Optional[int] = None, instance_termination_action: Optional[str] = None, local_ssd_recovery_timeout: Optional['outputs.InstanceSchedulingLocalSsdRecoveryTimeout'] = None, @@ -13035,6 +13066,7 @@ def __init__(__self__, *, :param bool automatic_restart: Specifies if the instance should be restarted if it was terminated by Compute Engine (not a user). Defaults to true. + :param int availability_domain: 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. :param int host_error_timeout_seconds: 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. :param str instance_termination_action: Describe the type of termination action for VM. Can be `STOP` or `DELETE`. Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot) :param 'InstanceSchedulingLocalSsdRecoveryTimeoutArgs' local_ssd_recovery_timeout: Specifies the maximum amount of time a Local Ssd Vm should wait while @@ -13063,6 +13095,8 @@ def __init__(__self__, *, """ if automatic_restart is not None: pulumi.set(__self__, "automatic_restart", automatic_restart) + if availability_domain is not None: + pulumi.set(__self__, "availability_domain", availability_domain) if host_error_timeout_seconds is not None: pulumi.set(__self__, "host_error_timeout_seconds", host_error_timeout_seconds) if instance_termination_action is not None: @@ -13096,6 +13130,14 @@ def automatic_restart(self) -> Optional[bool]: """ return pulumi.get(self, "automatic_restart") + @property + @pulumi.getter(name="availabilityDomain") + def availability_domain(self) -> Optional[int]: + """ + 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. + """ + return pulumi.get(self, "availability_domain") + @property @pulumi.getter(name="hostErrorTimeoutSeconds") def host_error_timeout_seconds(self) -> Optional[int]: @@ -14845,6 +14887,8 @@ def __key_warning(key: str): suggest = None if key == "automaticRestart": suggest = "automatic_restart" + elif key == "availabilityDomain": + suggest = "availability_domain" elif key == "hostErrorTimeoutSeconds": suggest = "host_error_timeout_seconds" elif key == "instanceTerminationAction": @@ -14879,6 +14923,7 @@ def get(self, key: str, default = None) -> Any: def __init__(__self__, *, automatic_restart: Optional[bool] = None, + availability_domain: Optional[int] = None, host_error_timeout_seconds: Optional[int] = None, instance_termination_action: Optional[str] = None, local_ssd_recovery_timeouts: Optional[Sequence['outputs.InstanceTemplateSchedulingLocalSsdRecoveryTimeout']] = None, @@ -14894,6 +14939,7 @@ def __init__(__self__, *, :param bool automatic_restart: Specifies whether the instance should be automatically restarted if it is terminated by Compute Engine (not terminated by a user). This defaults to true. + :param int availability_domain: 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. :param int host_error_timeout_seconds: 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. :param str instance_termination_action: Describe the type of termination action for `SPOT` VM. Can be `STOP` or `DELETE`. Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot) :param Sequence['InstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgs'] local_ssd_recovery_timeouts: Specifies the maximum amount of time a Local Ssd Vm should wait while @@ -14921,6 +14967,8 @@ def __init__(__self__, *, """ if automatic_restart is not None: pulumi.set(__self__, "automatic_restart", automatic_restart) + if availability_domain is not None: + pulumi.set(__self__, "availability_domain", availability_domain) if host_error_timeout_seconds is not None: pulumi.set(__self__, "host_error_timeout_seconds", host_error_timeout_seconds) if instance_termination_action is not None: @@ -14954,6 +15002,14 @@ def automatic_restart(self) -> Optional[bool]: """ return pulumi.get(self, "automatic_restart") + @property + @pulumi.getter(name="availabilityDomain") + def availability_domain(self) -> Optional[int]: + """ + 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. + """ + return pulumi.get(self, "availability_domain") + @property @pulumi.getter(name="hostErrorTimeoutSeconds") def host_error_timeout_seconds(self) -> Optional[int]: @@ -24978,6 +25034,8 @@ def __key_warning(key: str): suggest = None if key == "automaticRestart": suggest = "automatic_restart" + elif key == "availabilityDomain": + suggest = "availability_domain" elif key == "hostErrorTimeoutSeconds": suggest = "host_error_timeout_seconds" elif key == "instanceTerminationAction": @@ -25012,6 +25070,7 @@ def get(self, key: str, default = None) -> Any: def __init__(__self__, *, automatic_restart: Optional[bool] = None, + availability_domain: Optional[int] = None, host_error_timeout_seconds: Optional[int] = None, instance_termination_action: Optional[str] = None, local_ssd_recovery_timeouts: Optional[Sequence['outputs.RegionInstanceTemplateSchedulingLocalSsdRecoveryTimeout']] = None, @@ -25027,6 +25086,7 @@ def __init__(__self__, *, :param bool automatic_restart: Specifies whether the instance should be automatically restarted if it is terminated by Compute Engine (not terminated by a user). This defaults to true. + :param int availability_domain: 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. :param int host_error_timeout_seconds: 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. :param str instance_termination_action: Describe the type of termination action for `SPOT` VM. Can be `STOP` or `DELETE`. Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot) :param Sequence['RegionInstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgs'] local_ssd_recovery_timeouts: Specifies the maximum amount of time a Local Ssd Vm should wait while @@ -25054,6 +25114,8 @@ def __init__(__self__, *, """ if automatic_restart is not None: pulumi.set(__self__, "automatic_restart", automatic_restart) + if availability_domain is not None: + pulumi.set(__self__, "availability_domain", availability_domain) if host_error_timeout_seconds is not None: pulumi.set(__self__, "host_error_timeout_seconds", host_error_timeout_seconds) if instance_termination_action is not None: @@ -25087,6 +25149,14 @@ def automatic_restart(self) -> Optional[bool]: """ return pulumi.get(self, "automatic_restart") + @property + @pulumi.getter(name="availabilityDomain") + def availability_domain(self) -> Optional[int]: + """ + 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. + """ + return pulumi.get(self, "availability_domain") + @property @pulumi.getter(name="hostErrorTimeoutSeconds") def host_error_timeout_seconds(self) -> Optional[int]: @@ -35396,7 +35466,7 @@ def __init__(__self__, *, seconds: str, nanos: Optional[int] = None): """ - :param str seconds: 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 + :param str seconds: 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. :param int nanos: Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive. """ pulumi.set(__self__, "seconds", seconds) @@ -35407,7 +35477,7 @@ def __init__(__self__, *, @pulumi.getter def seconds(self) -> str: """ - 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. """ return pulumi.get(self, "seconds") @@ -35444,10 +35514,10 @@ def __init__(__self__, *, last_attempts: Optional[Sequence['outputs.ResizeRequestStatusLastAttempt']] = None): """ :param Sequence['ResizeRequestStatusErrorArgs'] errors: (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. :param Sequence['ResizeRequestStatusLastAttemptArgs'] last_attempts: (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. """ if errors is not None: @@ -35460,7 +35530,7 @@ def __init__(__self__, *, def errors(self) -> Optional[Sequence['outputs.ResizeRequestStatusError']]: """ (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. """ return pulumi.get(self, "errors") @@ -35470,7 +35540,7 @@ def errors(self) -> Optional[Sequence['outputs.ResizeRequestStatusError']]: def last_attempts(self) -> Optional[Sequence['outputs.ResizeRequestStatusLastAttempt']]: """ (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. """ return pulumi.get(self, "last_attempts") @@ -35482,7 +35552,7 @@ def __init__(__self__, *, errors: Optional[Sequence['outputs.ResizeRequestStatusErrorError']] = None): """ :param Sequence['ResizeRequestStatusErrorErrorArgs'] errors: (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. """ if errors is not None: @@ -35493,7 +35563,7 @@ def __init__(__self__, *, def errors(self) -> Optional[Sequence['outputs.ResizeRequestStatusErrorError']]: """ (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. """ return pulumi.get(self, "errors") @@ -35525,12 +35595,12 @@ def __init__(__self__, *, message: Optional[str] = None): """ :param str code: (Output) - [Output Only] The error type identifier for this error. + The error type identifier for this error. :param Sequence['ResizeRequestStatusErrorErrorErrorDetailArgs'] error_details: (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. :param str location: (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. :param str message: (Output) The localized error message in the above locale. """ @@ -35548,7 +35618,7 @@ def __init__(__self__, *, def code(self) -> Optional[str]: """ (Output) - [Output Only] The error type identifier for this error. + The error type identifier for this error. """ return pulumi.get(self, "code") @@ -35557,7 +35627,7 @@ def code(self) -> Optional[str]: def error_details(self) -> Optional[Sequence['outputs.ResizeRequestStatusErrorErrorErrorDetail']]: """ (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. """ return pulumi.get(self, "error_details") @@ -35567,7 +35637,7 @@ def error_details(self) -> Optional[Sequence['outputs.ResizeRequestStatusErrorEr def location(self) -> Optional[str]: """ (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. """ return pulumi.get(self, "location") @@ -35611,16 +35681,16 @@ def __init__(__self__, *, quota_infos: Optional[Sequence['outputs.ResizeRequestStatusErrorErrorErrorDetailQuotaInfo']] = None): """ :param Sequence['ResizeRequestStatusErrorErrorErrorDetailErrorInfoArgs'] error_infos: (Output) - [Output Only] + A nested object resource. Structure is documented below. :param Sequence['ResizeRequestStatusErrorErrorErrorDetailHelpArgs'] helps: (Output) - [Output Only] + A nested object resource. Structure is documented below. :param Sequence['ResizeRequestStatusErrorErrorErrorDetailLocalizedMessageArgs'] localized_messages: (Output) - [Output Only] + A nested object resource. Structure is documented below. :param Sequence['ResizeRequestStatusErrorErrorErrorDetailQuotaInfoArgs'] quota_infos: (Output) - [Output Only] + A nested object resource. Structure is documented below. """ if error_infos is not None: @@ -35637,7 +35707,7 @@ def __init__(__self__, *, def error_infos(self) -> Optional[Sequence['outputs.ResizeRequestStatusErrorErrorErrorDetailErrorInfo']]: """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ return pulumi.get(self, "error_infos") @@ -35647,7 +35717,7 @@ def error_infos(self) -> Optional[Sequence['outputs.ResizeRequestStatusErrorErro def helps(self) -> Optional[Sequence['outputs.ResizeRequestStatusErrorErrorErrorDetailHelp']]: """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ return pulumi.get(self, "helps") @@ -35657,7 +35727,7 @@ def helps(self) -> Optional[Sequence['outputs.ResizeRequestStatusErrorErrorError def localized_messages(self) -> Optional[Sequence['outputs.ResizeRequestStatusErrorErrorErrorDetailLocalizedMessage']]: """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ return pulumi.get(self, "localized_messages") @@ -35667,7 +35737,7 @@ def localized_messages(self) -> Optional[Sequence['outputs.ResizeRequestStatusEr def quota_infos(self) -> Optional[Sequence['outputs.ResizeRequestStatusErrorErrorErrorDetailQuotaInfo']]: """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ return pulumi.get(self, "quota_infos") @@ -35681,12 +35751,11 @@ def __init__(__self__, *, reason: Optional[str] = None): """ :param str domain: (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". :param Mapping[str, str] metadatas: (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. :param str reason: (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. """ if domain is not None: pulumi.set(__self__, "domain", domain) @@ -35700,7 +35769,7 @@ def __init__(__self__, *, def domain(self) -> Optional[str]: """ (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". """ return pulumi.get(self, "domain") @@ -35710,7 +35779,6 @@ def metadatas(self) -> Optional[Mapping[str, str]]: """ (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. """ return pulumi.get(self, "metadatas") @@ -35719,7 +35787,7 @@ def metadatas(self) -> Optional[Mapping[str, str]]: def reason(self) -> Optional[str]: """ (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. """ return pulumi.get(self, "reason") @@ -35730,7 +35798,7 @@ def __init__(__self__, *, links: Optional[Sequence['outputs.ResizeRequestStatusErrorErrorErrorDetailHelpLink']] = None): """ :param Sequence['ResizeRequestStatusErrorErrorErrorDetailHelpLinkArgs'] links: (Output) - [Output Only] + A nested object resource. Structure is documented below. """ if links is not None: @@ -35741,7 +35809,7 @@ def __init__(__self__, *, def links(self) -> Optional[Sequence['outputs.ResizeRequestStatusErrorErrorErrorDetailHelpLink']]: """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ return pulumi.get(self, "links") @@ -35935,7 +36003,7 @@ def __init__(__self__, *, errors: Optional[Sequence['outputs.ResizeRequestStatusLastAttemptError']] = None): """ :param Sequence['ResizeRequestStatusLastAttemptErrorArgs'] errors: (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. """ if errors is not None: @@ -35946,7 +36014,7 @@ def __init__(__self__, *, def errors(self) -> Optional[Sequence['outputs.ResizeRequestStatusLastAttemptError']]: """ (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. """ return pulumi.get(self, "errors") @@ -35958,7 +36026,7 @@ def __init__(__self__, *, errors: Optional[Sequence['outputs.ResizeRequestStatusLastAttemptErrorError']] = None): """ :param Sequence['ResizeRequestStatusLastAttemptErrorErrorArgs'] errors: (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. """ if errors is not None: @@ -35969,7 +36037,7 @@ def __init__(__self__, *, def errors(self) -> Optional[Sequence['outputs.ResizeRequestStatusLastAttemptErrorError']]: """ (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. """ return pulumi.get(self, "errors") @@ -36001,12 +36069,12 @@ def __init__(__self__, *, message: Optional[str] = None): """ :param str code: (Output) - [Output Only] The error type identifier for this error. + The error type identifier for this error. :param Sequence['ResizeRequestStatusLastAttemptErrorErrorErrorDetailArgs'] error_details: (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. :param str location: (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. :param str message: (Output) The localized error message in the above locale. """ @@ -36024,7 +36092,7 @@ def __init__(__self__, *, def code(self) -> Optional[str]: """ (Output) - [Output Only] The error type identifier for this error. + The error type identifier for this error. """ return pulumi.get(self, "code") @@ -36033,7 +36101,7 @@ def code(self) -> Optional[str]: def error_details(self) -> Optional[Sequence['outputs.ResizeRequestStatusLastAttemptErrorErrorErrorDetail']]: """ (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. """ return pulumi.get(self, "error_details") @@ -36043,7 +36111,7 @@ def error_details(self) -> Optional[Sequence['outputs.ResizeRequestStatusLastAtt def location(self) -> Optional[str]: """ (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. """ return pulumi.get(self, "location") @@ -36087,16 +36155,16 @@ def __init__(__self__, *, quota_infos: Optional[Sequence['outputs.ResizeRequestStatusLastAttemptErrorErrorErrorDetailQuotaInfo']] = None): """ :param Sequence['ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfoArgs'] error_infos: (Output) - [Output Only] + A nested object resource. Structure is documented below. :param Sequence['ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpArgs'] helps: (Output) - [Output Only] + A nested object resource. Structure is documented below. :param Sequence['ResizeRequestStatusLastAttemptErrorErrorErrorDetailLocalizedMessageArgs'] localized_messages: (Output) - [Output Only] + A nested object resource. Structure is documented below. :param Sequence['ResizeRequestStatusLastAttemptErrorErrorErrorDetailQuotaInfoArgs'] quota_infos: (Output) - [Output Only] + A nested object resource. Structure is documented below. """ if error_infos is not None: @@ -36113,7 +36181,7 @@ def __init__(__self__, *, def error_infos(self) -> Optional[Sequence['outputs.ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo']]: """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ return pulumi.get(self, "error_infos") @@ -36123,7 +36191,7 @@ def error_infos(self) -> Optional[Sequence['outputs.ResizeRequestStatusLastAttem def helps(self) -> Optional[Sequence['outputs.ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp']]: """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ return pulumi.get(self, "helps") @@ -36133,7 +36201,7 @@ def helps(self) -> Optional[Sequence['outputs.ResizeRequestStatusLastAttemptErro def localized_messages(self) -> Optional[Sequence['outputs.ResizeRequestStatusLastAttemptErrorErrorErrorDetailLocalizedMessage']]: """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ return pulumi.get(self, "localized_messages") @@ -36143,7 +36211,7 @@ def localized_messages(self) -> Optional[Sequence['outputs.ResizeRequestStatusLa def quota_infos(self) -> Optional[Sequence['outputs.ResizeRequestStatusLastAttemptErrorErrorErrorDetailQuotaInfo']]: """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ return pulumi.get(self, "quota_infos") @@ -36157,12 +36225,11 @@ def __init__(__self__, *, reason: Optional[str] = None): """ :param str domain: (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". :param Mapping[str, str] metadatas: (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. :param str reason: (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. """ if domain is not None: pulumi.set(__self__, "domain", domain) @@ -36176,7 +36243,7 @@ def __init__(__self__, *, def domain(self) -> Optional[str]: """ (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". """ return pulumi.get(self, "domain") @@ -36186,7 +36253,6 @@ def metadatas(self) -> Optional[Mapping[str, str]]: """ (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. """ return pulumi.get(self, "metadatas") @@ -36195,7 +36261,7 @@ def metadatas(self) -> Optional[Mapping[str, str]]: def reason(self) -> Optional[str]: """ (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. """ return pulumi.get(self, "reason") @@ -36206,7 +36272,7 @@ def __init__(__self__, *, links: Optional[Sequence['outputs.ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpLink']] = None): """ :param Sequence['ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpLinkArgs'] links: (Output) - [Output Only] + A nested object resource. Structure is documented below. """ if links is not None: @@ -36217,7 +36283,7 @@ def __init__(__self__, *, def links(self) -> Optional[Sequence['outputs.ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpLink']]: """ (Output) - [Output Only] + A nested object resource. Structure is documented below. """ return pulumi.get(self, "links") @@ -53433,6 +53499,7 @@ def values(self) -> Sequence[str]: class GetInstanceSchedulingResult(dict): def __init__(__self__, *, automatic_restart: bool, + availability_domain: int, host_error_timeout_seconds: int, instance_termination_action: str, local_ssd_recovery_timeouts: Sequence['outputs.GetInstanceSchedulingLocalSsdRecoveryTimeoutResult'], @@ -53447,6 +53514,7 @@ def __init__(__self__, *, """ :param bool automatic_restart: Specifies if the instance should be restarted if it was terminated by Compute Engine (not a user). + :param int availability_domain: Specifies the availability domain, which this instance should be scheduled on. :param int host_error_timeout_seconds: Beta Time in seconds for host error detection. :param str instance_termination_action: Describe the type of termination action for `SPOT` VM. Can be `STOP` or `DELETE`. Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot) :param Sequence['GetInstanceSchedulingLocalSsdRecoveryTimeoutArgs'] local_ssd_recovery_timeouts: Specifies the maximum amount of time a Local Ssd Vm should wait while @@ -53464,6 +53532,7 @@ def __init__(__self__, *, :param str provisioning_model: Describe the type of preemptible VM. """ pulumi.set(__self__, "automatic_restart", automatic_restart) + pulumi.set(__self__, "availability_domain", availability_domain) pulumi.set(__self__, "host_error_timeout_seconds", host_error_timeout_seconds) pulumi.set(__self__, "instance_termination_action", instance_termination_action) pulumi.set(__self__, "local_ssd_recovery_timeouts", local_ssd_recovery_timeouts) @@ -53485,6 +53554,14 @@ def automatic_restart(self) -> bool: """ return pulumi.get(self, "automatic_restart") + @property + @pulumi.getter(name="availabilityDomain") + def availability_domain(self) -> int: + """ + Specifies the availability domain, which this instance should be scheduled on. + """ + return pulumi.get(self, "availability_domain") + @property @pulumi.getter(name="hostErrorTimeoutSeconds") def host_error_timeout_seconds(self) -> int: @@ -54752,6 +54829,7 @@ def values(self) -> Sequence[str]: class GetInstanceTemplateSchedulingResult(dict): def __init__(__self__, *, automatic_restart: bool, + availability_domain: int, host_error_timeout_seconds: int, instance_termination_action: str, local_ssd_recovery_timeouts: Sequence['outputs.GetInstanceTemplateSchedulingLocalSsdRecoveryTimeoutResult'], @@ -54767,6 +54845,7 @@ def __init__(__self__, *, :param bool automatic_restart: Specifies whether the instance should be automatically restarted if it is terminated by Compute Engine (not terminated by a user). This defaults to true. + :param int availability_domain: Specifies the availability domain, which this instance should be scheduled on. :param int host_error_timeout_seconds: Beta Time in seconds for host error detection. :param str instance_termination_action: Describe the type of termination action for `SPOT` VM. Can be `STOP` or `DELETE`. Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot) :param Sequence['GetInstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgs'] local_ssd_recovery_timeouts: Specifies the maximum amount of time a Local Ssd Vm should wait while @@ -54790,6 +54869,7 @@ def __init__(__self__, *, :param str provisioning_model: Describe the type of preemptible VM. """ pulumi.set(__self__, "automatic_restart", automatic_restart) + pulumi.set(__self__, "availability_domain", availability_domain) pulumi.set(__self__, "host_error_timeout_seconds", host_error_timeout_seconds) pulumi.set(__self__, "instance_termination_action", instance_termination_action) pulumi.set(__self__, "local_ssd_recovery_timeouts", local_ssd_recovery_timeouts) @@ -54812,6 +54892,14 @@ def automatic_restart(self) -> bool: """ return pulumi.get(self, "automatic_restart") + @property + @pulumi.getter(name="availabilityDomain") + def availability_domain(self) -> int: + """ + Specifies the availability domain, which this instance should be scheduled on. + """ + return pulumi.get(self, "availability_domain") + @property @pulumi.getter(name="hostErrorTimeoutSeconds") def host_error_timeout_seconds(self) -> int: @@ -57085,6 +57173,7 @@ def values(self) -> Sequence[str]: class GetRegionInstanceTemplateSchedulingResult(dict): def __init__(__self__, *, automatic_restart: bool, + availability_domain: int, host_error_timeout_seconds: int, instance_termination_action: str, local_ssd_recovery_timeouts: Sequence['outputs.GetRegionInstanceTemplateSchedulingLocalSsdRecoveryTimeoutResult'], @@ -57100,6 +57189,7 @@ def __init__(__self__, *, :param bool automatic_restart: Specifies whether the instance should be automatically restarted if it is terminated by Compute Engine (not terminated by a user). This defaults to true. + :param int availability_domain: Specifies the availability domain, which this instance should be scheduled on. :param int host_error_timeout_seconds: Beta Time in seconds for host error detection. :param str instance_termination_action: Describe the type of termination action for `SPOT` VM. Can be `STOP` or `DELETE`. Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot) :param Sequence['GetRegionInstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgs'] local_ssd_recovery_timeouts: Specifies the maximum amount of time a Local Ssd Vm should wait while @@ -57123,6 +57213,7 @@ def __init__(__self__, *, :param str provisioning_model: Describe the type of preemptible VM. """ pulumi.set(__self__, "automatic_restart", automatic_restart) + pulumi.set(__self__, "availability_domain", availability_domain) pulumi.set(__self__, "host_error_timeout_seconds", host_error_timeout_seconds) pulumi.set(__self__, "instance_termination_action", instance_termination_action) pulumi.set(__self__, "local_ssd_recovery_timeouts", local_ssd_recovery_timeouts) @@ -57145,6 +57236,14 @@ def automatic_restart(self) -> bool: """ return pulumi.get(self, "automatic_restart") + @property + @pulumi.getter(name="availabilityDomain") + def availability_domain(self) -> int: + """ + Specifies the availability domain, which this instance should be scheduled on. + """ + return pulumi.get(self, "availability_domain") + @property @pulumi.getter(name="hostErrorTimeoutSeconds") def host_error_timeout_seconds(self) -> int: diff --git a/sdk/python/pulumi_gcp/compute/region_network_endpoint_group.py b/sdk/python/pulumi_gcp/compute/region_network_endpoint_group.py index 5dd1d16e85..4a41f045f4 100644 --- a/sdk/python/pulumi_gcp/compute/region_network_endpoint_group.py +++ b/sdk/python/pulumi_gcp/compute/region_network_endpoint_group.py @@ -1481,7 +1481,7 @@ def project(self) -> pulumi.Output[str]: @property @pulumi.getter(name="pscData") - def psc_data(self) -> pulumi.Output[Optional['outputs.RegionNetworkEndpointGroupPscData']]: + def psc_data(self) -> pulumi.Output['outputs.RegionNetworkEndpointGroupPscData']: """ This field is only used for PSC NEGs. Structure is documented below. diff --git a/sdk/python/pulumi_gcp/compute/resize_request.py b/sdk/python/pulumi_gcp/compute/resize_request.py index 9d08812662..a938b98f58 100644 --- a/sdk/python/pulumi_gcp/compute/resize_request.py +++ b/sdk/python/pulumi_gcp/compute/resize_request.py @@ -30,14 +30,12 @@ def __init__(__self__, *, requested_run_duration: Optional[pulumi.Input['ResizeRequestRequestedRunDurationArgs']] = None): """ The set of arguments for constructing a ResizeRequest resource. - :param pulumi.Input[str] instance_group_manager: 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 + :param pulumi.Input[str] instance_group_manager: The reference of the instance group manager this ResizeRequest is a part of. - - - :param pulumi.Input[int] resize_by: The number of instances to be created by this resize request. The group's target size will be increased by this number. - :param pulumi.Input[str] zone: Name of the compute zone scoping this request. Name should conform to RFC1035. + :param pulumi.Input[str] zone: The reference of the compute zone scoping this request. :param pulumi.Input[str] description: An optional description of this resize-request. :param pulumi.Input[str] name: The name of this resize request. The name must be 1-63 characters long, and comply with RFC1035. :param pulumi.Input[str] project: The ID of the project in which the resource belongs. @@ -61,9 +59,7 @@ def __init__(__self__, *, @pulumi.getter(name="instanceGroupManager") def instance_group_manager(self) -> pulumi.Input[str]: """ - 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. - - - @@ -90,7 +86,7 @@ def resize_by(self, value: pulumi.Input[int]): @pulumi.getter def zone(self) -> pulumi.Input[str]: """ - Name of the compute zone scoping this request. Name should conform to RFC1035. + The reference of the compute zone scoping this request. """ return pulumi.get(self, "zone") @@ -166,9 +162,7 @@ def __init__(__self__, *, Input properties used for looking up and filtering ResizeRequest resources. :param pulumi.Input[str] creation_timestamp: The creation timestamp for this resize request in RFC3339 text format. :param pulumi.Input[str] description: An optional description of this resize-request. - :param pulumi.Input[str] instance_group_manager: 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 + :param pulumi.Input[str] instance_group_manager: The reference of the instance group manager this ResizeRequest is a part of. - - - @@ -178,10 +172,10 @@ def __init__(__self__, *, :param pulumi.Input['ResizeRequestRequestedRunDurationArgs'] requested_run_duration: Requested run duration for instances that will be created by this request. At the end of the run duration instance will be deleted. Structure is documented below. :param pulumi.Input[int] resize_by: The number of instances to be created by this resize request. The group's target size will be increased by this number. - :param pulumi.Input[str] state: [Output only] Current state of the request. - :param pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusArgs']]] statuses: [Output only] Status of the request. + :param pulumi.Input[str] state: Current state of the request. + :param pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusArgs']]] statuses: Status of the request. Structure is documented below. - :param pulumi.Input[str] zone: Name of the compute zone scoping this request. Name should conform to RFC1035. + :param pulumi.Input[str] zone: The reference of the compute zone scoping this request. """ if creation_timestamp is not None: pulumi.set(__self__, "creation_timestamp", creation_timestamp) @@ -232,9 +226,7 @@ def description(self, value: Optional[pulumi.Input[str]]): @pulumi.getter(name="instanceGroupManager") def instance_group_manager(self) -> Optional[pulumi.Input[str]]: """ - 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. - - - @@ -299,7 +291,7 @@ def resize_by(self, value: Optional[pulumi.Input[int]]): @pulumi.getter def state(self) -> Optional[pulumi.Input[str]]: """ - [Output only] Current state of the request. + Current state of the request. """ return pulumi.get(self, "state") @@ -311,7 +303,7 @@ def state(self, value: Optional[pulumi.Input[str]]): @pulumi.getter def statuses(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusArgs']]]]: """ - [Output only] Status of the request. + Status of the request. Structure is documented below. """ return pulumi.get(self, "statuses") @@ -324,7 +316,7 @@ def statuses(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ResizeReq @pulumi.getter def zone(self) -> Optional[pulumi.Input[str]]: """ - Name of the compute zone scoping this request. Name should conform to RFC1035. + The reference of the compute zone scoping this request. """ return pulumi.get(self, "zone") @@ -351,13 +343,13 @@ def __init__(__self__, 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 @@ -456,9 +448,7 @@ def __init__(__self__, :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] description: An optional description of this resize-request. - :param pulumi.Input[str] instance_group_manager: 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 + :param pulumi.Input[str] instance_group_manager: The reference of the instance group manager this ResizeRequest is a part of. - - - @@ -468,7 +458,7 @@ def __init__(__self__, :param pulumi.Input[Union['ResizeRequestRequestedRunDurationArgs', 'ResizeRequestRequestedRunDurationArgsDict']] requested_run_duration: Requested run duration for instances that will be created by this request. At the end of the run duration instance will be deleted. Structure is documented below. :param pulumi.Input[int] resize_by: The number of instances to be created by this resize request. The group's target size will be increased by this number. - :param pulumi.Input[str] zone: Name of the compute zone scoping this request. Name should conform to RFC1035. + :param pulumi.Input[str] zone: The reference of the compute zone scoping this request. """ ... @overload @@ -481,13 +471,13 @@ def __init__(__self__, 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 @@ -659,9 +649,7 @@ def get(resource_name: str, :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] creation_timestamp: The creation timestamp for this resize request in RFC3339 text format. :param pulumi.Input[str] description: An optional description of this resize-request. - :param pulumi.Input[str] instance_group_manager: 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 + :param pulumi.Input[str] instance_group_manager: The reference of the instance group manager this ResizeRequest is a part of. - - - @@ -671,10 +659,10 @@ def get(resource_name: str, :param pulumi.Input[Union['ResizeRequestRequestedRunDurationArgs', 'ResizeRequestRequestedRunDurationArgsDict']] requested_run_duration: Requested run duration for instances that will be created by this request. At the end of the run duration instance will be deleted. Structure is documented below. :param pulumi.Input[int] resize_by: The number of instances to be created by this resize request. The group's target size will be increased by this number. - :param pulumi.Input[str] state: [Output only] Current state of the request. - :param pulumi.Input[Sequence[pulumi.Input[Union['ResizeRequestStatusArgs', 'ResizeRequestStatusArgsDict']]]] statuses: [Output only] Status of the request. + :param pulumi.Input[str] state: Current state of the request. + :param pulumi.Input[Sequence[pulumi.Input[Union['ResizeRequestStatusArgs', 'ResizeRequestStatusArgsDict']]]] statuses: Status of the request. Structure is documented below. - :param pulumi.Input[str] zone: Name of the compute zone scoping this request. Name should conform to RFC1035. + :param pulumi.Input[str] zone: The reference of the compute zone scoping this request. """ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) @@ -712,9 +700,7 @@ def description(self) -> pulumi.Output[Optional[str]]: @pulumi.getter(name="instanceGroupManager") def instance_group_manager(self) -> pulumi.Output[str]: """ - 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. - - - @@ -759,7 +745,7 @@ def resize_by(self) -> pulumi.Output[int]: @pulumi.getter def state(self) -> pulumi.Output[str]: """ - [Output only] Current state of the request. + Current state of the request. """ return pulumi.get(self, "state") @@ -767,7 +753,7 @@ def state(self) -> pulumi.Output[str]: @pulumi.getter def statuses(self) -> pulumi.Output[Sequence['outputs.ResizeRequestStatus']]: """ - [Output only] Status of the request. + Status of the request. Structure is documented below. """ return pulumi.get(self, "statuses") @@ -776,7 +762,7 @@ def statuses(self) -> pulumi.Output[Sequence['outputs.ResizeRequestStatus']]: @pulumi.getter def zone(self) -> pulumi.Output[str]: """ - Name of the compute zone scoping this request. Name should conform to RFC1035. + The reference of the compute zone scoping this request. """ return pulumi.get(self, "zone") diff --git a/sdk/python/pulumi_gcp/config/__init__.pyi b/sdk/python/pulumi_gcp/config/__init__.pyi index c1eb6803f4..93fa62a525 100644 --- a/sdk/python/pulumi_gcp/config/__init__.pyi +++ b/sdk/python/pulumi_gcp/config/__init__.pyi @@ -73,6 +73,8 @@ blockchainNodeEngineCustomEndpoint: Optional[str] certificateManagerCustomEndpoint: Optional[str] +chronicleCustomEndpoint: Optional[str] + cloudAssetCustomEndpoint: Optional[str] cloudBillingCustomEndpoint: Optional[str] diff --git a/sdk/python/pulumi_gcp/config/vars.py b/sdk/python/pulumi_gcp/config/vars.py index ab505b7719..1da02804fe 100644 --- a/sdk/python/pulumi_gcp/config/vars.py +++ b/sdk/python/pulumi_gcp/config/vars.py @@ -137,6 +137,10 @@ def blockchain_node_engine_custom_endpoint(self) -> Optional[str]: def certificate_manager_custom_endpoint(self) -> Optional[str]: return __config__.get('certificateManagerCustomEndpoint') + @property + def chronicle_custom_endpoint(self) -> Optional[str]: + return __config__.get('chronicleCustomEndpoint') + @property def cloud_asset_custom_endpoint(self) -> Optional[str]: return __config__.get('cloudAssetCustomEndpoint') diff --git a/sdk/python/pulumi_gcp/dataproc/batch.py b/sdk/python/pulumi_gcp/dataproc/batch.py index bb41adf82b..066b128e0a 100644 --- a/sdk/python/pulumi_gcp/dataproc/batch.py +++ b/sdk/python/pulumi_gcp/dataproc/batch.py @@ -672,15 +672,8 @@ def __init__(__self__, name="dataproc-bucket", location="US", force_destroy=True) - key_ring = gcp.kms.KeyRing("key_ring", - name="example-keyring", - location="us-central1") - crypto_key = gcp.kms.CryptoKey("crypto_key", - name="example-key", - key_ring=key_ring.id, - purpose="ENCRYPT_DECRYPT") crypto_key_member1 = gcp.kms.CryptoKeyIAMMember("crypto_key_member_1", - crypto_key_id=crypto_key.id, + crypto_key_id="example-key", role="roles/cloudkms.cryptoKeyEncrypterDecrypter", member=f"serviceAccount:service-{project.number}@dataproc-accounts.iam.gserviceaccount.com") ms = gcp.dataproc.MetastoreService("ms", @@ -736,7 +729,7 @@ def __init__(__self__, "execution_config": { "ttl": "3600s", "network_tags": ["tag1"], - "kms_key": crypto_key.id, + "kms_key": "example-key", "network_uri": "default", "service_account": f"{project.number}-compute@developer.gserviceaccount.com", "staging_bucket": bucket.name, @@ -995,15 +988,8 @@ def __init__(__self__, name="dataproc-bucket", location="US", force_destroy=True) - key_ring = gcp.kms.KeyRing("key_ring", - name="example-keyring", - location="us-central1") - crypto_key = gcp.kms.CryptoKey("crypto_key", - name="example-key", - key_ring=key_ring.id, - purpose="ENCRYPT_DECRYPT") crypto_key_member1 = gcp.kms.CryptoKeyIAMMember("crypto_key_member_1", - crypto_key_id=crypto_key.id, + crypto_key_id="example-key", role="roles/cloudkms.cryptoKeyEncrypterDecrypter", member=f"serviceAccount:service-{project.number}@dataproc-accounts.iam.gserviceaccount.com") ms = gcp.dataproc.MetastoreService("ms", @@ -1059,7 +1045,7 @@ def __init__(__self__, "execution_config": { "ttl": "3600s", "network_tags": ["tag1"], - "kms_key": crypto_key.id, + "kms_key": "example-key", "network_uri": "default", "service_account": f"{project.number}-compute@developer.gserviceaccount.com", "staging_bucket": bucket.name, diff --git a/sdk/python/pulumi_gcp/datastream/_inputs.py b/sdk/python/pulumi_gcp/datastream/_inputs.py index 3ae582d401..b1ed768da4 100644 --- a/sdk/python/pulumi_gcp/datastream/_inputs.py +++ b/sdk/python/pulumi_gcp/datastream/_inputs.py @@ -97,6 +97,8 @@ 'StreamSourceConfigArgsDict', 'StreamSourceConfigMysqlSourceConfigArgs', 'StreamSourceConfigMysqlSourceConfigArgsDict', + 'StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs', + 'StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgsDict', 'StreamSourceConfigMysqlSourceConfigExcludeObjectsArgs', 'StreamSourceConfigMysqlSourceConfigExcludeObjectsArgsDict', 'StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseArgs', @@ -105,6 +107,8 @@ 'StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableArgsDict', 'StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableMysqlColumnArgs', 'StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableMysqlColumnArgsDict', + 'StreamSourceConfigMysqlSourceConfigGtidArgs', + 'StreamSourceConfigMysqlSourceConfigGtidArgsDict', 'StreamSourceConfigMysqlSourceConfigIncludeObjectsArgs', 'StreamSourceConfigMysqlSourceConfigIncludeObjectsArgsDict', 'StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseArgs', @@ -3284,11 +3288,19 @@ def sql_server_source_config(self, value: Optional[pulumi.Input['StreamSourceCon if not MYPY: class StreamSourceConfigMysqlSourceConfigArgsDict(TypedDict): + binary_log_position: NotRequired[pulumi.Input['StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgsDict']] + """ + CDC reader reads from binary logs replication cdc method. + """ exclude_objects: NotRequired[pulumi.Input['StreamSourceConfigMysqlSourceConfigExcludeObjectsArgsDict']] """ MySQL objects to exclude from the stream. Structure is documented below. """ + gtid: NotRequired[pulumi.Input['StreamSourceConfigMysqlSourceConfigGtidArgsDict']] + """ + CDC reader reads from gtid based replication. + """ include_objects: NotRequired[pulumi.Input['StreamSourceConfigMysqlSourceConfigIncludeObjectsArgsDict']] """ MySQL objects to retrieve from the source. @@ -3310,13 +3322,17 @@ class StreamSourceConfigMysqlSourceConfigArgsDict(TypedDict): @pulumi.input_type class StreamSourceConfigMysqlSourceConfigArgs: def __init__(__self__, *, + binary_log_position: Optional[pulumi.Input['StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs']] = None, exclude_objects: Optional[pulumi.Input['StreamSourceConfigMysqlSourceConfigExcludeObjectsArgs']] = None, + gtid: Optional[pulumi.Input['StreamSourceConfigMysqlSourceConfigGtidArgs']] = None, include_objects: Optional[pulumi.Input['StreamSourceConfigMysqlSourceConfigIncludeObjectsArgs']] = None, max_concurrent_backfill_tasks: Optional[pulumi.Input[int]] = None, max_concurrent_cdc_tasks: Optional[pulumi.Input[int]] = None): """ + :param pulumi.Input['StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs'] binary_log_position: CDC reader reads from binary logs replication cdc method. :param pulumi.Input['StreamSourceConfigMysqlSourceConfigExcludeObjectsArgs'] exclude_objects: MySQL objects to exclude from the stream. Structure is documented below. + :param pulumi.Input['StreamSourceConfigMysqlSourceConfigGtidArgs'] gtid: CDC reader reads from gtid based replication. :param pulumi.Input['StreamSourceConfigMysqlSourceConfigIncludeObjectsArgs'] include_objects: MySQL objects to retrieve from the source. Structure is documented below. :param pulumi.Input[int] max_concurrent_backfill_tasks: Maximum number of concurrent backfill tasks. The number should be non negative. @@ -3324,8 +3340,12 @@ def __init__(__self__, *, :param pulumi.Input[int] max_concurrent_cdc_tasks: Maximum number of concurrent CDC tasks. The number should be non negative. If not set (or set to 0), the system's default value will be used. """ + if binary_log_position is not None: + pulumi.set(__self__, "binary_log_position", binary_log_position) if exclude_objects is not None: pulumi.set(__self__, "exclude_objects", exclude_objects) + if gtid is not None: + pulumi.set(__self__, "gtid", gtid) if include_objects is not None: pulumi.set(__self__, "include_objects", include_objects) if max_concurrent_backfill_tasks is not None: @@ -3333,6 +3353,18 @@ def __init__(__self__, *, if max_concurrent_cdc_tasks is not None: pulumi.set(__self__, "max_concurrent_cdc_tasks", max_concurrent_cdc_tasks) + @property + @pulumi.getter(name="binaryLogPosition") + def binary_log_position(self) -> Optional[pulumi.Input['StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs']]: + """ + CDC reader reads from binary logs replication cdc method. + """ + return pulumi.get(self, "binary_log_position") + + @binary_log_position.setter + def binary_log_position(self, value: Optional[pulumi.Input['StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs']]): + pulumi.set(self, "binary_log_position", value) + @property @pulumi.getter(name="excludeObjects") def exclude_objects(self) -> Optional[pulumi.Input['StreamSourceConfigMysqlSourceConfigExcludeObjectsArgs']]: @@ -3346,6 +3378,18 @@ def exclude_objects(self) -> Optional[pulumi.Input['StreamSourceConfigMysqlSourc def exclude_objects(self, value: Optional[pulumi.Input['StreamSourceConfigMysqlSourceConfigExcludeObjectsArgs']]): pulumi.set(self, "exclude_objects", value) + @property + @pulumi.getter + def gtid(self) -> Optional[pulumi.Input['StreamSourceConfigMysqlSourceConfigGtidArgs']]: + """ + CDC reader reads from gtid based replication. + """ + return pulumi.get(self, "gtid") + + @gtid.setter + def gtid(self, value: Optional[pulumi.Input['StreamSourceConfigMysqlSourceConfigGtidArgs']]): + pulumi.set(self, "gtid", value) + @property @pulumi.getter(name="includeObjects") def include_objects(self) -> Optional[pulumi.Input['StreamSourceConfigMysqlSourceConfigIncludeObjectsArgs']]: @@ -3386,6 +3430,18 @@ def max_concurrent_cdc_tasks(self, value: Optional[pulumi.Input[int]]): pulumi.set(self, "max_concurrent_cdc_tasks", value) +if not MYPY: + class StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgsDict(TypedDict): + pass +elif False: + StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs: + def __init__(__self__): + pass + + if not MYPY: class StreamSourceConfigMysqlSourceConfigExcludeObjectsArgsDict(TypedDict): mysql_databases: pulumi.Input[Sequence[pulumi.Input['StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseArgsDict']]] @@ -3686,6 +3742,18 @@ def primary_key(self, value: Optional[pulumi.Input[bool]]): pulumi.set(self, "primary_key", value) +if not MYPY: + class StreamSourceConfigMysqlSourceConfigGtidArgsDict(TypedDict): + pass +elif False: + StreamSourceConfigMysqlSourceConfigGtidArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class StreamSourceConfigMysqlSourceConfigGtidArgs: + def __init__(__self__): + pass + + if not MYPY: class StreamSourceConfigMysqlSourceConfigIncludeObjectsArgsDict(TypedDict): mysql_databases: pulumi.Input[Sequence[pulumi.Input['StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseArgsDict']]] diff --git a/sdk/python/pulumi_gcp/datastream/outputs.py b/sdk/python/pulumi_gcp/datastream/outputs.py index c1f28cf97d..820b27e4ce 100644 --- a/sdk/python/pulumi_gcp/datastream/outputs.py +++ b/sdk/python/pulumi_gcp/datastream/outputs.py @@ -57,10 +57,12 @@ 'StreamDestinationConfigGcsDestinationConfigJsonFileFormat', 'StreamSourceConfig', 'StreamSourceConfigMysqlSourceConfig', + 'StreamSourceConfigMysqlSourceConfigBinaryLogPosition', 'StreamSourceConfigMysqlSourceConfigExcludeObjects', 'StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabase', 'StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTable', 'StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableMysqlColumn', + 'StreamSourceConfigMysqlSourceConfigGtid', 'StreamSourceConfigMysqlSourceConfigIncludeObjects', 'StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabase', 'StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTable', @@ -2490,7 +2492,9 @@ class StreamSourceConfigMysqlSourceConfig(dict): @staticmethod def __key_warning(key: str): suggest = None - if key == "excludeObjects": + if key == "binaryLogPosition": + suggest = "binary_log_position" + elif key == "excludeObjects": suggest = "exclude_objects" elif key == "includeObjects": suggest = "include_objects" @@ -2511,13 +2515,17 @@ def get(self, key: str, default = None) -> Any: return super().get(key, default) def __init__(__self__, *, + binary_log_position: Optional['outputs.StreamSourceConfigMysqlSourceConfigBinaryLogPosition'] = None, exclude_objects: Optional['outputs.StreamSourceConfigMysqlSourceConfigExcludeObjects'] = None, + gtid: Optional['outputs.StreamSourceConfigMysqlSourceConfigGtid'] = None, include_objects: Optional['outputs.StreamSourceConfigMysqlSourceConfigIncludeObjects'] = None, max_concurrent_backfill_tasks: Optional[int] = None, max_concurrent_cdc_tasks: Optional[int] = None): """ + :param 'StreamSourceConfigMysqlSourceConfigBinaryLogPositionArgs' binary_log_position: CDC reader reads from binary logs replication cdc method. :param 'StreamSourceConfigMysqlSourceConfigExcludeObjectsArgs' exclude_objects: MySQL objects to exclude from the stream. Structure is documented below. + :param 'StreamSourceConfigMysqlSourceConfigGtidArgs' gtid: CDC reader reads from gtid based replication. :param 'StreamSourceConfigMysqlSourceConfigIncludeObjectsArgs' include_objects: MySQL objects to retrieve from the source. Structure is documented below. :param int max_concurrent_backfill_tasks: Maximum number of concurrent backfill tasks. The number should be non negative. @@ -2525,8 +2533,12 @@ def __init__(__self__, *, :param int max_concurrent_cdc_tasks: Maximum number of concurrent CDC tasks. The number should be non negative. If not set (or set to 0), the system's default value will be used. """ + if binary_log_position is not None: + pulumi.set(__self__, "binary_log_position", binary_log_position) if exclude_objects is not None: pulumi.set(__self__, "exclude_objects", exclude_objects) + if gtid is not None: + pulumi.set(__self__, "gtid", gtid) if include_objects is not None: pulumi.set(__self__, "include_objects", include_objects) if max_concurrent_backfill_tasks is not None: @@ -2534,6 +2546,14 @@ def __init__(__self__, *, if max_concurrent_cdc_tasks is not None: pulumi.set(__self__, "max_concurrent_cdc_tasks", max_concurrent_cdc_tasks) + @property + @pulumi.getter(name="binaryLogPosition") + def binary_log_position(self) -> Optional['outputs.StreamSourceConfigMysqlSourceConfigBinaryLogPosition']: + """ + CDC reader reads from binary logs replication cdc method. + """ + return pulumi.get(self, "binary_log_position") + @property @pulumi.getter(name="excludeObjects") def exclude_objects(self) -> Optional['outputs.StreamSourceConfigMysqlSourceConfigExcludeObjects']: @@ -2543,6 +2563,14 @@ def exclude_objects(self) -> Optional['outputs.StreamSourceConfigMysqlSourceConf """ return pulumi.get(self, "exclude_objects") + @property + @pulumi.getter + def gtid(self) -> Optional['outputs.StreamSourceConfigMysqlSourceConfigGtid']: + """ + CDC reader reads from gtid based replication. + """ + return pulumi.get(self, "gtid") + @property @pulumi.getter(name="includeObjects") def include_objects(self) -> Optional['outputs.StreamSourceConfigMysqlSourceConfigIncludeObjects']: @@ -2571,6 +2599,12 @@ def max_concurrent_cdc_tasks(self) -> Optional[int]: return pulumi.get(self, "max_concurrent_cdc_tasks") +@pulumi.output_type +class StreamSourceConfigMysqlSourceConfigBinaryLogPosition(dict): + def __init__(__self__): + pass + + @pulumi.output_type class StreamSourceConfigMysqlSourceConfigExcludeObjects(dict): @staticmethod @@ -2822,6 +2856,12 @@ def primary_key(self) -> Optional[bool]: return pulumi.get(self, "primary_key") +@pulumi.output_type +class StreamSourceConfigMysqlSourceConfigGtid(dict): + def __init__(__self__): + pass + + @pulumi.output_type class StreamSourceConfigMysqlSourceConfigIncludeObjects(dict): @staticmethod diff --git a/sdk/python/pulumi_gcp/developerconnect/connection.py b/sdk/python/pulumi_gcp/developerconnect/connection.py index ed5a5e9122..7260a73518 100644 --- a/sdk/python/pulumi_gcp/developerconnect/connection.py +++ b/sdk/python/pulumi_gcp/developerconnect/connection.py @@ -535,23 +535,45 @@ def __init__(__self__, """ ## Example Usage - ### Developer Connect Connection Basic + ### Developer Connect Connection New ```python import pulumi import pulumi_gcp as gcp + # Setup permissions. Only needed once per project + devconnect_p4sa = gcp.projects.ServiceIdentity("devconnect-p4sa", service="developerconnect.googleapis.com") + devconnect_secret = gcp.projects.IAMMember("devconnect-secret", + project="my-project-name", + role="roles/secretmanager.admin", + member=devconnect_p4sa.member) my_connection = gcp.developerconnect.Connection("my-connection", location="us-central1", - connection_id="tf-test-connection", + connection_id="tf-test-connection-new", + github_config={ + "github_app": "FIREBASE", + }, + opts = pulumi.ResourceOptions(depends_on=[devconnect_secret])) + pulumi.export("nextSteps", my_connection.installation_states) + ``` + ### Developer Connect Connection Existing Credentials + + ```python + import pulumi + import pulumi_gcp as gcp + + my_connection = gcp.developerconnect.Connection("my-connection", + location="us-central1", + connection_id="tf-test-connection-cred", github_config={ "github_app": "DEVELOPER_CONNECT", "authorizer_credential": { - "oauth_token_secret_version": "projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1", + "oauth_token_secret_version": "projects/your-project/secrets/your-secret-id/versions/latest", }, }) + pulumi.export("nextSteps", my_connection.installation_states) ``` - ### Developer Connect Connection Github Doc + ### Developer Connect Connection Existing Installation ```python import pulumi @@ -566,9 +588,10 @@ def __init__(__self__, github_token_secret_version = gcp.secretmanager.SecretVersion("github-token-secret-version", secret=github_token_secret.id, secret_data=std.file(input="my-github-token.txt").result) - p4sa_secret_accessor = gcp.organizations.get_iam_policy(bindings=[{ + devconnect_p4sa = gcp.projects.ServiceIdentity("devconnect-p4sa", service="developerconnect.googleapis.com") + p4sa_secret_accessor = gcp.organizations.get_iam_policy_output(bindings=[{ "role": "roles/secretmanager.secretAccessor", - "members": ["serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com"], + "members": [devconnect_p4sa.member], }]) policy = gcp.secretmanager.SecretIamPolicy("policy", secret_id=github_token_secret.secret_id, @@ -645,7 +668,28 @@ def __init__(__self__, """ ## Example Usage - ### Developer Connect Connection Basic + ### Developer Connect Connection New + + ```python + import pulumi + import pulumi_gcp as gcp + + # Setup permissions. Only needed once per project + devconnect_p4sa = gcp.projects.ServiceIdentity("devconnect-p4sa", service="developerconnect.googleapis.com") + devconnect_secret = gcp.projects.IAMMember("devconnect-secret", + project="my-project-name", + role="roles/secretmanager.admin", + member=devconnect_p4sa.member) + my_connection = gcp.developerconnect.Connection("my-connection", + location="us-central1", + connection_id="tf-test-connection-new", + github_config={ + "github_app": "FIREBASE", + }, + opts = pulumi.ResourceOptions(depends_on=[devconnect_secret])) + pulumi.export("nextSteps", my_connection.installation_states) + ``` + ### Developer Connect Connection Existing Credentials ```python import pulumi @@ -653,15 +697,16 @@ def __init__(__self__, my_connection = gcp.developerconnect.Connection("my-connection", location="us-central1", - connection_id="tf-test-connection", + connection_id="tf-test-connection-cred", github_config={ "github_app": "DEVELOPER_CONNECT", "authorizer_credential": { - "oauth_token_secret_version": "projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1", + "oauth_token_secret_version": "projects/your-project/secrets/your-secret-id/versions/latest", }, }) + pulumi.export("nextSteps", my_connection.installation_states) ``` - ### Developer Connect Connection Github Doc + ### Developer Connect Connection Existing Installation ```python import pulumi @@ -676,9 +721,10 @@ def __init__(__self__, github_token_secret_version = gcp.secretmanager.SecretVersion("github-token-secret-version", secret=github_token_secret.id, secret_data=std.file(input="my-github-token.txt").result) - p4sa_secret_accessor = gcp.organizations.get_iam_policy(bindings=[{ + devconnect_p4sa = gcp.projects.ServiceIdentity("devconnect-p4sa", service="developerconnect.googleapis.com") + p4sa_secret_accessor = gcp.organizations.get_iam_policy_output(bindings=[{ "role": "roles/secretmanager.secretAccessor", - "members": ["serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com"], + "members": [devconnect_p4sa.member], }]) policy = gcp.secretmanager.SecretIamPolicy("policy", secret_id=github_token_secret.secret_id, diff --git a/sdk/python/pulumi_gcp/diagflow/_inputs.py b/sdk/python/pulumi_gcp/diagflow/_inputs.py index 865d382060..3c09dfd9fc 100644 --- a/sdk/python/pulumi_gcp/diagflow/_inputs.py +++ b/sdk/python/pulumi_gcp/diagflow/_inputs.py @@ -627,7 +627,7 @@ class CxAgentAdvancedSettingsSpeechSettingsArgsDict(TypedDict): """ use_timeout_based_endpointing: NotRequired[pulumi.Input[bool]] """ - Use timeout based endpointing, interpreting endpointer sensitivy as seconds of timeout value. + Use timeout based endpointing, interpreting endpointer sensitivity as seconds of timeout value. """ elif False: CxAgentAdvancedSettingsSpeechSettingsArgsDict: TypeAlias = Mapping[str, Any] @@ -645,7 +645,7 @@ def __init__(__self__, *, An object containing a list of **"key": value** pairs. Example: **{ "name": "wrench", "mass": "1.3kg", "count": "3" }**. :param pulumi.Input[str] no_speech_timeout: Timeout before detecting no speech. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s". - :param pulumi.Input[bool] use_timeout_based_endpointing: Use timeout based endpointing, interpreting endpointer sensitivy as seconds of timeout value. + :param pulumi.Input[bool] use_timeout_based_endpointing: Use timeout based endpointing, interpreting endpointer sensitivity as seconds of timeout value. """ if endpointer_sensitivity is not None: pulumi.set(__self__, "endpointer_sensitivity", endpointer_sensitivity) @@ -698,7 +698,7 @@ def no_speech_timeout(self, value: Optional[pulumi.Input[str]]): @pulumi.getter(name="useTimeoutBasedEndpointing") def use_timeout_based_endpointing(self) -> Optional[pulumi.Input[bool]]: """ - Use timeout based endpointing, interpreting endpointer sensitivy as seconds of timeout value. + Use timeout based endpointing, interpreting endpointer sensitivity as seconds of timeout value. """ return pulumi.get(self, "use_timeout_based_endpointing") diff --git a/sdk/python/pulumi_gcp/diagflow/outputs.py b/sdk/python/pulumi_gcp/diagflow/outputs.py index 7672fc664c..000cd19d02 100644 --- a/sdk/python/pulumi_gcp/diagflow/outputs.py +++ b/sdk/python/pulumi_gcp/diagflow/outputs.py @@ -444,7 +444,7 @@ def __init__(__self__, *, An object containing a list of **"key": value** pairs. Example: **{ "name": "wrench", "mass": "1.3kg", "count": "3" }**. :param str no_speech_timeout: Timeout before detecting no speech. A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s". - :param bool use_timeout_based_endpointing: Use timeout based endpointing, interpreting endpointer sensitivy as seconds of timeout value. + :param bool use_timeout_based_endpointing: Use timeout based endpointing, interpreting endpointer sensitivity as seconds of timeout value. """ if endpointer_sensitivity is not None: pulumi.set(__self__, "endpointer_sensitivity", endpointer_sensitivity) @@ -485,7 +485,7 @@ def no_speech_timeout(self) -> Optional[str]: @pulumi.getter(name="useTimeoutBasedEndpointing") def use_timeout_based_endpointing(self) -> Optional[bool]: """ - Use timeout based endpointing, interpreting endpointer sensitivy as seconds of timeout value. + Use timeout based endpointing, interpreting endpointer sensitivity as seconds of timeout value. """ return pulumi.get(self, "use_timeout_based_endpointing") diff --git a/sdk/python/pulumi_gcp/filestore/backup.py b/sdk/python/pulumi_gcp/filestore/backup.py index 893162bf01..7d9ae20aa8 100644 --- a/sdk/python/pulumi_gcp/filestore/backup.py +++ b/sdk/python/pulumi_gcp/filestore/backup.py @@ -25,7 +25,8 @@ def __init__(__self__, *, description: Optional[pulumi.Input[str]] = None, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, name: Optional[pulumi.Input[str]] = None, - project: Optional[pulumi.Input[str]] = None): + project: Optional[pulumi.Input[str]] = None, + tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None): """ The set of arguments for constructing a Backup resource. :param pulumi.Input[str] location: The name of the location of the instance. This can be a region for ENTERPRISE tier instances. @@ -48,6 +49,10 @@ def __init__(__self__, *, character, which cannot be a dash. :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] 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. """ pulumi.set(__self__, "location", location) pulumi.set(__self__, "source_file_share", source_file_share) @@ -60,6 +65,8 @@ def __init__(__self__, *, pulumi.set(__self__, "name", name) if project is not None: pulumi.set(__self__, "project", project) + if tags is not None: + pulumi.set(__self__, "tags", tags) @property @pulumi.getter @@ -158,6 +165,21 @@ def project(self) -> Optional[pulumi.Input[str]]: def project(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "project", value) + @property + @pulumi.getter + def tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + 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. + """ + return pulumi.get(self, "tags") + + @tags.setter + def tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "tags", value) + @pulumi.input_type class _BackupState: @@ -177,7 +199,8 @@ def __init__(__self__, *, source_instance: Optional[pulumi.Input[str]] = None, source_instance_tier: Optional[pulumi.Input[str]] = None, state: Optional[pulumi.Input[str]] = None, - storage_bytes: Optional[pulumi.Input[str]] = None): + storage_bytes: Optional[pulumi.Input[str]] = None, + tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None): """ Input properties used for looking up and filtering Backup resources. :param pulumi.Input[str] capacity_gb: The amount of bytes needed to allocate a full copy of the snapshot content. @@ -210,6 +233,10 @@ def __init__(__self__, *, :param pulumi.Input[str] source_instance_tier: The service tier of the source Cloud Filestore instance that this backup is created from. :param pulumi.Input[str] state: The backup state. :param pulumi.Input[str] storage_bytes: The size of the storage used by the backup. As backups share storage, this number is expected to change with backup creation/deletion. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] 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. """ if capacity_gb is not None: pulumi.set(__self__, "capacity_gb", capacity_gb) @@ -243,6 +270,8 @@ def __init__(__self__, *, pulumi.set(__self__, "state", state) if storage_bytes is not None: pulumi.set(__self__, "storage_bytes", storage_bytes) + if tags is not None: + pulumi.set(__self__, "tags", tags) @property @pulumi.getter(name="capacityGb") @@ -450,6 +479,21 @@ def storage_bytes(self) -> Optional[pulumi.Input[str]]: def storage_bytes(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "storage_bytes", value) + @property + @pulumi.getter + def tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + 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. + """ + return pulumi.get(self, "tags") + + @tags.setter + def tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "tags", value) + class Backup(pulumi.CustomResource): @overload @@ -463,6 +507,7 @@ def __init__(__self__, project: Optional[pulumi.Input[str]] = None, source_file_share: Optional[pulumi.Input[str]] = None, source_instance: Optional[pulumi.Input[str]] = None, + tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, __props__=None): """ A Google Cloud Filestore backup. @@ -553,6 +598,10 @@ def __init__(__self__, If it is not provided, the provider project is used. :param pulumi.Input[str] source_file_share: Name of the file share in the source Cloud Filestore instance that the backup is created from. :param pulumi.Input[str] source_instance: The resource name of the source Cloud Filestore instance, in the format projects/{projectId}/locations/{locationId}/instances/{instanceId}, used to create this backup. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] 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. """ ... @overload @@ -649,6 +698,7 @@ def _internal_init(__self__, project: Optional[pulumi.Input[str]] = None, source_file_share: Optional[pulumi.Input[str]] = None, source_instance: Optional[pulumi.Input[str]] = None, + tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) if not isinstance(opts, pulumi.ResourceOptions): @@ -671,6 +721,7 @@ def _internal_init(__self__, if source_instance is None and not opts.urn: raise TypeError("Missing required property 'source_instance'") __props__.__dict__["source_instance"] = source_instance + __props__.__dict__["tags"] = tags __props__.__dict__["capacity_gb"] = None __props__.__dict__["create_time"] = None __props__.__dict__["download_bytes"] = None @@ -707,7 +758,8 @@ def get(resource_name: str, source_instance: Optional[pulumi.Input[str]] = None, source_instance_tier: Optional[pulumi.Input[str]] = None, state: Optional[pulumi.Input[str]] = None, - storage_bytes: Optional[pulumi.Input[str]] = None) -> 'Backup': + storage_bytes: Optional[pulumi.Input[str]] = None, + tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None) -> 'Backup': """ Get an existing Backup resource's state with the given name, id, and optional extra properties used to qualify the lookup. @@ -745,6 +797,10 @@ def get(resource_name: str, :param pulumi.Input[str] source_instance_tier: The service tier of the source Cloud Filestore instance that this backup is created from. :param pulumi.Input[str] state: The backup state. :param pulumi.Input[str] storage_bytes: The size of the storage used by the backup. As backups share storage, this number is expected to change with backup creation/deletion. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] 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. """ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) @@ -766,6 +822,7 @@ def get(resource_name: str, __props__.__dict__["source_instance_tier"] = source_instance_tier __props__.__dict__["state"] = state __props__.__dict__["storage_bytes"] = storage_bytes + __props__.__dict__["tags"] = tags return Backup(resource_name, opts=opts, __props__=__props__) @property @@ -910,3 +967,14 @@ def storage_bytes(self) -> pulumi.Output[str]: """ return pulumi.get(self, "storage_bytes") + @property + @pulumi.getter + def tags(self) -> pulumi.Output[Optional[Mapping[str, str]]]: + """ + 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. + """ + return pulumi.get(self, "tags") + diff --git a/sdk/python/pulumi_gcp/firebase/hosting_custom_domain.py b/sdk/python/pulumi_gcp/firebase/hosting_custom_domain.py index 869baa73eb..8551695b49 100644 --- a/sdk/python/pulumi_gcp/firebase/hosting_custom_domain.py +++ b/sdk/python/pulumi_gcp/firebase/hosting_custom_domain.py @@ -239,7 +239,7 @@ def __init__(__self__, *, permission to act on its behalf. :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. - :param pulumi.Input[bool] reconciling: if true, indicates that Hosting's systems are attmepting to + :param pulumi.Input[bool] reconciling: 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` @@ -506,7 +506,7 @@ def project(self, value: Optional[pulumi.Input[str]]): @pulumi.getter def reconciling(self) -> Optional[pulumi.Input[bool]]: """ - 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` @@ -989,7 +989,7 @@ def get(resource_name: str, permission to act on its behalf. :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. - :param pulumi.Input[bool] reconciling: if true, indicates that Hosting's systems are attmepting to + :param pulumi.Input[bool] reconciling: 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` @@ -1195,7 +1195,7 @@ def project(self) -> pulumi.Output[str]: @pulumi.getter def reconciling(self) -> pulumi.Output[bool]: """ - 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/python/pulumi_gcp/firestore/_inputs.py b/sdk/python/pulumi_gcp/firestore/_inputs.py index 8f5fe3daf3..4760a1a9eb 100644 --- a/sdk/python/pulumi_gcp/firestore/_inputs.py +++ b/sdk/python/pulumi_gcp/firestore/_inputs.py @@ -97,7 +97,7 @@ class DatabaseCmekConfigArgsDict(TypedDict): 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. """ active_key_versions: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]] @@ -127,7 +127,7 @@ def __init__(__self__, *, 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. :param pulumi.Input[Sequence[pulumi.Input[str]]] active_key_versions: (Output) Currently in-use KMS key versions (https://cloud.google.com/kms/docs/resource-hierarchy#key_versions). @@ -153,7 +153,7 @@ def kms_key_name(self) -> pulumi.Input[str]: 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. """ return pulumi.get(self, "kms_key_name") diff --git a/sdk/python/pulumi_gcp/firestore/outputs.py b/sdk/python/pulumi_gcp/firestore/outputs.py index fb99c37b01..4b93f238fa 100644 --- a/sdk/python/pulumi_gcp/firestore/outputs.py +++ b/sdk/python/pulumi_gcp/firestore/outputs.py @@ -88,7 +88,7 @@ def __init__(__self__, *, 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. :param Sequence[str] active_key_versions: (Output) Currently in-use KMS key versions (https://cloud.google.com/kms/docs/resource-hierarchy#key_versions). @@ -114,7 +114,7 @@ def kms_key_name(self) -> str: 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. """ return pulumi.get(self, "kms_key_name") diff --git a/sdk/python/pulumi_gcp/gkehub/__init__.py b/sdk/python/pulumi_gcp/gkehub/__init__.py index 44bbe02fd2..08af2ab5e7 100644 --- a/sdk/python/pulumi_gcp/gkehub/__init__.py +++ b/sdk/python/pulumi_gcp/gkehub/__init__.py @@ -11,6 +11,7 @@ from .feature_iam_policy import * from .feature_membership import * from .fleet import * +from .get_feature import * from .get_feature_iam_policy import * from .get_membership_binding import * from .get_membership_iam_policy import * diff --git a/sdk/python/pulumi_gcp/gkehub/get_feature.py b/sdk/python/pulumi_gcp/gkehub/get_feature.py new file mode 100644 index 0000000000..c906067b20 --- /dev/null +++ b/sdk/python/pulumi_gcp/gkehub/get_feature.py @@ -0,0 +1,226 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import sys +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +if sys.version_info >= (3, 11): + from typing import NotRequired, TypedDict, TypeAlias +else: + from typing_extensions import NotRequired, TypedDict, TypeAlias +from .. import _utilities +from . import outputs + +__all__ = [ + 'GetFeatureResult', + 'AwaitableGetFeatureResult', + 'get_feature', + 'get_feature_output', +] + +@pulumi.output_type +class GetFeatureResult: + """ + A collection of values returned by getFeature. + """ + def __init__(__self__, create_time=None, delete_time=None, effective_labels=None, fleet_default_member_configs=None, id=None, labels=None, location=None, name=None, project=None, pulumi_labels=None, resource_states=None, specs=None, states=None, update_time=None): + if create_time and not isinstance(create_time, str): + raise TypeError("Expected argument 'create_time' to be a str") + pulumi.set(__self__, "create_time", create_time) + if delete_time and not isinstance(delete_time, str): + raise TypeError("Expected argument 'delete_time' to be a str") + pulumi.set(__self__, "delete_time", delete_time) + if effective_labels and not isinstance(effective_labels, dict): + raise TypeError("Expected argument 'effective_labels' to be a dict") + pulumi.set(__self__, "effective_labels", effective_labels) + if fleet_default_member_configs and not isinstance(fleet_default_member_configs, list): + raise TypeError("Expected argument 'fleet_default_member_configs' to be a list") + pulumi.set(__self__, "fleet_default_member_configs", fleet_default_member_configs) + if id and not isinstance(id, str): + raise TypeError("Expected argument 'id' to be a str") + pulumi.set(__self__, "id", id) + if labels and not isinstance(labels, dict): + raise TypeError("Expected argument 'labels' to be a dict") + pulumi.set(__self__, "labels", labels) + if location and not isinstance(location, str): + raise TypeError("Expected argument 'location' to be a str") + pulumi.set(__self__, "location", location) + if name and not isinstance(name, str): + raise TypeError("Expected argument 'name' to be a str") + pulumi.set(__self__, "name", name) + if project and not isinstance(project, str): + raise TypeError("Expected argument 'project' to be a str") + pulumi.set(__self__, "project", project) + if pulumi_labels and not isinstance(pulumi_labels, dict): + raise TypeError("Expected argument 'pulumi_labels' to be a dict") + pulumi.set(__self__, "pulumi_labels", pulumi_labels) + if resource_states and not isinstance(resource_states, list): + raise TypeError("Expected argument 'resource_states' to be a list") + pulumi.set(__self__, "resource_states", resource_states) + if specs and not isinstance(specs, list): + raise TypeError("Expected argument 'specs' to be a list") + pulumi.set(__self__, "specs", specs) + if states and not isinstance(states, list): + raise TypeError("Expected argument 'states' to be a list") + pulumi.set(__self__, "states", states) + if update_time and not isinstance(update_time, str): + raise TypeError("Expected argument 'update_time' to be a str") + pulumi.set(__self__, "update_time", update_time) + + @property + @pulumi.getter(name="createTime") + def create_time(self) -> str: + return pulumi.get(self, "create_time") + + @property + @pulumi.getter(name="deleteTime") + def delete_time(self) -> str: + return pulumi.get(self, "delete_time") + + @property + @pulumi.getter(name="effectiveLabels") + def effective_labels(self) -> Mapping[str, str]: + return pulumi.get(self, "effective_labels") + + @property + @pulumi.getter(name="fleetDefaultMemberConfigs") + def fleet_default_member_configs(self) -> Sequence['outputs.GetFeatureFleetDefaultMemberConfigResult']: + return pulumi.get(self, "fleet_default_member_configs") + + @property + @pulumi.getter + def id(self) -> str: + """ + The provider-assigned unique ID for this managed resource. + """ + return pulumi.get(self, "id") + + @property + @pulumi.getter + def labels(self) -> Mapping[str, str]: + return pulumi.get(self, "labels") + + @property + @pulumi.getter + def location(self) -> str: + return pulumi.get(self, "location") + + @property + @pulumi.getter + def name(self) -> str: + return pulumi.get(self, "name") + + @property + @pulumi.getter + def project(self) -> Optional[str]: + return pulumi.get(self, "project") + + @property + @pulumi.getter(name="pulumiLabels") + def pulumi_labels(self) -> Mapping[str, str]: + return pulumi.get(self, "pulumi_labels") + + @property + @pulumi.getter(name="resourceStates") + def resource_states(self) -> Sequence['outputs.GetFeatureResourceStateResult']: + return pulumi.get(self, "resource_states") + + @property + @pulumi.getter + def specs(self) -> Sequence['outputs.GetFeatureSpecResult']: + return pulumi.get(self, "specs") + + @property + @pulumi.getter + def states(self) -> Sequence['outputs.GetFeatureStateResult']: + return pulumi.get(self, "states") + + @property + @pulumi.getter(name="updateTime") + def update_time(self) -> str: + return pulumi.get(self, "update_time") + + +class AwaitableGetFeatureResult(GetFeatureResult): + # pylint: disable=using-constant-test + def __await__(self): + if False: + yield self + return GetFeatureResult( + create_time=self.create_time, + delete_time=self.delete_time, + effective_labels=self.effective_labels, + fleet_default_member_configs=self.fleet_default_member_configs, + id=self.id, + labels=self.labels, + location=self.location, + name=self.name, + project=self.project, + pulumi_labels=self.pulumi_labels, + resource_states=self.resource_states, + specs=self.specs, + states=self.states, + update_time=self.update_time) + + +def get_feature(location: Optional[str] = None, + name: Optional[str] = None, + project: Optional[str] = None, + opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetFeatureResult: + """ + Use this data source to access information about an existing resource. + """ + __args__ = dict() + __args__['location'] = location + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke('gcp:gkehub/getFeature:getFeature', __args__, opts=opts, typ=GetFeatureResult).value + + return AwaitableGetFeatureResult( + create_time=pulumi.get(__ret__, 'create_time'), + delete_time=pulumi.get(__ret__, 'delete_time'), + effective_labels=pulumi.get(__ret__, 'effective_labels'), + fleet_default_member_configs=pulumi.get(__ret__, 'fleet_default_member_configs'), + id=pulumi.get(__ret__, 'id'), + labels=pulumi.get(__ret__, 'labels'), + location=pulumi.get(__ret__, 'location'), + name=pulumi.get(__ret__, 'name'), + project=pulumi.get(__ret__, 'project'), + pulumi_labels=pulumi.get(__ret__, 'pulumi_labels'), + resource_states=pulumi.get(__ret__, 'resource_states'), + specs=pulumi.get(__ret__, 'specs'), + states=pulumi.get(__ret__, 'states'), + update_time=pulumi.get(__ret__, 'update_time')) +def get_feature_output(location: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[Optional[str]]] = None, + opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetFeatureResult]: + """ + Use this data source to access information about an existing resource. + """ + __args__ = dict() + __args__['location'] = location + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:gkehub/getFeature:getFeature', __args__, opts=opts, typ=GetFeatureResult) + return __ret__.apply(lambda __response__: GetFeatureResult( + create_time=pulumi.get(__response__, 'create_time'), + delete_time=pulumi.get(__response__, 'delete_time'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + fleet_default_member_configs=pulumi.get(__response__, 'fleet_default_member_configs'), + id=pulumi.get(__response__, 'id'), + labels=pulumi.get(__response__, 'labels'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + resource_states=pulumi.get(__response__, 'resource_states'), + specs=pulumi.get(__response__, 'specs'), + states=pulumi.get(__response__, 'states'), + update_time=pulumi.get(__response__, 'update_time'))) diff --git a/sdk/python/pulumi_gcp/gkehub/outputs.py b/sdk/python/pulumi_gcp/gkehub/outputs.py index 26beaa5956..5aacbed8c3 100644 --- a/sdk/python/pulumi_gcp/gkehub/outputs.py +++ b/sdk/python/pulumi_gcp/gkehub/outputs.py @@ -88,6 +88,37 @@ 'ScopeRbacRoleBindingRole', 'ScopeRbacRoleBindingState', 'ScopeState', + 'GetFeatureFleetDefaultMemberConfigResult', + 'GetFeatureFleetDefaultMemberConfigConfigmanagementResult', + 'GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncResult', + 'GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitResult', + 'GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciResult', + 'GetFeatureFleetDefaultMemberConfigMeshResult', + 'GetFeatureFleetDefaultMemberConfigPolicycontrollerResult', + 'GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigResult', + 'GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigResult', + 'GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceResult', + 'GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitResult', + 'GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestResult', + 'GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationResult', + 'GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringResult', + 'GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentResult', + 'GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleResult', + 'GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryResult', + 'GetFeatureResourceStateResult', + 'GetFeatureSpecResult', + 'GetFeatureSpecClusterupgradeResult', + 'GetFeatureSpecClusterupgradeGkeUpgradeOverrideResult', + 'GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionResult', + 'GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeResult', + 'GetFeatureSpecClusterupgradePostConditionResult', + 'GetFeatureSpecFleetobservabilityResult', + 'GetFeatureSpecFleetobservabilityLoggingConfigResult', + 'GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigResult', + 'GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigResult', + 'GetFeatureSpecMulticlusteringressResult', + 'GetFeatureStateResult', + 'GetFeatureStateStateResult', 'GetMembershipBindingStateResult', ] @@ -3657,6 +3688,1128 @@ def code(self) -> Optional[str]: return pulumi.get(self, "code") +@pulumi.output_type +class GetFeatureFleetDefaultMemberConfigResult(dict): + def __init__(__self__, *, + configmanagements: Sequence['outputs.GetFeatureFleetDefaultMemberConfigConfigmanagementResult'], + meshes: Sequence['outputs.GetFeatureFleetDefaultMemberConfigMeshResult'], + policycontrollers: Sequence['outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerResult']): + """ + :param Sequence['GetFeatureFleetDefaultMemberConfigConfigmanagementArgs'] configmanagements: Config Management spec + :param Sequence['GetFeatureFleetDefaultMemberConfigMeshArgs'] meshes: Service Mesh spec + :param Sequence['GetFeatureFleetDefaultMemberConfigPolicycontrollerArgs'] policycontrollers: Policy Controller spec + """ + pulumi.set(__self__, "configmanagements", configmanagements) + pulumi.set(__self__, "meshes", meshes) + pulumi.set(__self__, "policycontrollers", policycontrollers) + + @property + @pulumi.getter + def configmanagements(self) -> Sequence['outputs.GetFeatureFleetDefaultMemberConfigConfigmanagementResult']: + """ + Config Management spec + """ + return pulumi.get(self, "configmanagements") + + @property + @pulumi.getter + def meshes(self) -> Sequence['outputs.GetFeatureFleetDefaultMemberConfigMeshResult']: + """ + Service Mesh spec + """ + return pulumi.get(self, "meshes") + + @property + @pulumi.getter + def policycontrollers(self) -> Sequence['outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerResult']: + """ + Policy Controller spec + """ + return pulumi.get(self, "policycontrollers") + + +@pulumi.output_type +class GetFeatureFleetDefaultMemberConfigConfigmanagementResult(dict): + def __init__(__self__, *, + config_syncs: Sequence['outputs.GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncResult'], + management: str, + version: str): + """ + :param Sequence['GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArgs'] config_syncs: ConfigSync configuration for the cluster + :param str management: 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"] + :param str version: Version of Config Sync installed + """ + pulumi.set(__self__, "config_syncs", config_syncs) + pulumi.set(__self__, "management", management) + pulumi.set(__self__, "version", version) + + @property + @pulumi.getter(name="configSyncs") + def config_syncs(self) -> Sequence['outputs.GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncResult']: + """ + ConfigSync configuration for the cluster + """ + return pulumi.get(self, "config_syncs") + + @property + @pulumi.getter + def management(self) -> str: + """ + 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"] + """ + return pulumi.get(self, "management") + + @property + @pulumi.getter + def version(self) -> str: + """ + Version of Config Sync installed + """ + return pulumi.get(self, "version") + + +@pulumi.output_type +class GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncResult(dict): + def __init__(__self__, *, + enabled: bool, + gits: Sequence['outputs.GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitResult'], + ocis: Sequence['outputs.GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciResult'], + prevent_drift: bool, + source_format: str): + """ + :param bool enabled: 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. + :param Sequence['GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArgs'] gits: Git repo configuration for the cluster + :param Sequence['GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciArgs'] ocis: OCI repo configuration for the cluster + :param bool prevent_drift: 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. + :param str source_format: Specifies whether the Config Sync Repo is in hierarchical or unstructured mode + """ + pulumi.set(__self__, "enabled", enabled) + pulumi.set(__self__, "gits", gits) + pulumi.set(__self__, "ocis", ocis) + pulumi.set(__self__, "prevent_drift", prevent_drift) + pulumi.set(__self__, "source_format", source_format) + + @property + @pulumi.getter + def enabled(self) -> bool: + """ + 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. + """ + return pulumi.get(self, "enabled") + + @property + @pulumi.getter + def gits(self) -> Sequence['outputs.GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitResult']: + """ + Git repo configuration for the cluster + """ + return pulumi.get(self, "gits") + + @property + @pulumi.getter + def ocis(self) -> Sequence['outputs.GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciResult']: + """ + OCI repo configuration for the cluster + """ + return pulumi.get(self, "ocis") + + @property + @pulumi.getter(name="preventDrift") + def prevent_drift(self) -> bool: + """ + 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. + """ + return pulumi.get(self, "prevent_drift") + + @property + @pulumi.getter(name="sourceFormat") + def source_format(self) -> str: + """ + Specifies whether the Config Sync Repo is in hierarchical or unstructured mode + """ + return pulumi.get(self, "source_format") + + +@pulumi.output_type +class GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitResult(dict): + def __init__(__self__, *, + gcp_service_account_email: str, + https_proxy: str, + policy_dir: str, + secret_type: str, + sync_branch: str, + sync_repo: str, + sync_rev: str, + sync_wait_secs: str): + """ + :param str gcp_service_account_email: The Google Cloud Service Account Email used for auth when secretType is gcpServiceAccount + :param str https_proxy: URL for the HTTPS Proxy to be used when communicating with the Git repo + :param str policy_dir: The path within the Git repository that represents the top level of the repo to sync + :param str secret_type: Type of secret configured for access to the Git repo + :param str sync_branch: The branch of the repository to sync from. Default: master + :param str sync_repo: The URL of the Git repository to use as the source of truth + :param str sync_rev: Git revision (tag or hash) to check out. Default HEAD + :param str sync_wait_secs: Period in seconds between consecutive syncs. Default: 15 + """ + pulumi.set(__self__, "gcp_service_account_email", gcp_service_account_email) + pulumi.set(__self__, "https_proxy", https_proxy) + pulumi.set(__self__, "policy_dir", policy_dir) + pulumi.set(__self__, "secret_type", secret_type) + pulumi.set(__self__, "sync_branch", sync_branch) + pulumi.set(__self__, "sync_repo", sync_repo) + pulumi.set(__self__, "sync_rev", sync_rev) + pulumi.set(__self__, "sync_wait_secs", sync_wait_secs) + + @property + @pulumi.getter(name="gcpServiceAccountEmail") + def gcp_service_account_email(self) -> str: + """ + The Google Cloud Service Account Email used for auth when secretType is gcpServiceAccount + """ + return pulumi.get(self, "gcp_service_account_email") + + @property + @pulumi.getter(name="httpsProxy") + def https_proxy(self) -> str: + """ + URL for the HTTPS Proxy to be used when communicating with the Git repo + """ + return pulumi.get(self, "https_proxy") + + @property + @pulumi.getter(name="policyDir") + def policy_dir(self) -> str: + """ + The path within the Git repository that represents the top level of the repo to sync + """ + return pulumi.get(self, "policy_dir") + + @property + @pulumi.getter(name="secretType") + def secret_type(self) -> str: + """ + Type of secret configured for access to the Git repo + """ + return pulumi.get(self, "secret_type") + + @property + @pulumi.getter(name="syncBranch") + def sync_branch(self) -> str: + """ + The branch of the repository to sync from. Default: master + """ + return pulumi.get(self, "sync_branch") + + @property + @pulumi.getter(name="syncRepo") + def sync_repo(self) -> str: + """ + The URL of the Git repository to use as the source of truth + """ + return pulumi.get(self, "sync_repo") + + @property + @pulumi.getter(name="syncRev") + def sync_rev(self) -> str: + """ + Git revision (tag or hash) to check out. Default HEAD + """ + return pulumi.get(self, "sync_rev") + + @property + @pulumi.getter(name="syncWaitSecs") + def sync_wait_secs(self) -> str: + """ + Period in seconds between consecutive syncs. Default: 15 + """ + return pulumi.get(self, "sync_wait_secs") + + +@pulumi.output_type +class GetFeatureFleetDefaultMemberConfigConfigmanagementConfigSyncOciResult(dict): + def __init__(__self__, *, + gcp_service_account_email: str, + policy_dir: str, + secret_type: str, + sync_repo: str, + sync_wait_secs: str, + version: str): + """ + :param str gcp_service_account_email: The Google Cloud Service Account Email used for auth when secretType is gcpServiceAccount + :param str policy_dir: The absolute path of the directory that contains the local resources. Default: the root directory of the image + :param str secret_type: Type of secret configured for access to the Git repo + :param str sync_repo: The OCI image repository URL for the package to sync from + :param str sync_wait_secs: Period in seconds between consecutive syncs. Default: 15 + :param str version: Version of Config Sync installed + """ + pulumi.set(__self__, "gcp_service_account_email", gcp_service_account_email) + pulumi.set(__self__, "policy_dir", policy_dir) + pulumi.set(__self__, "secret_type", secret_type) + pulumi.set(__self__, "sync_repo", sync_repo) + pulumi.set(__self__, "sync_wait_secs", sync_wait_secs) + pulumi.set(__self__, "version", version) + + @property + @pulumi.getter(name="gcpServiceAccountEmail") + def gcp_service_account_email(self) -> str: + """ + The Google Cloud Service Account Email used for auth when secretType is gcpServiceAccount + """ + return pulumi.get(self, "gcp_service_account_email") + + @property + @pulumi.getter(name="policyDir") + def policy_dir(self) -> str: + """ + The absolute path of the directory that contains the local resources. Default: the root directory of the image + """ + return pulumi.get(self, "policy_dir") + + @property + @pulumi.getter(name="secretType") + def secret_type(self) -> str: + """ + Type of secret configured for access to the Git repo + """ + return pulumi.get(self, "secret_type") + + @property + @pulumi.getter(name="syncRepo") + def sync_repo(self) -> str: + """ + The OCI image repository URL for the package to sync from + """ + return pulumi.get(self, "sync_repo") + + @property + @pulumi.getter(name="syncWaitSecs") + def sync_wait_secs(self) -> str: + """ + Period in seconds between consecutive syncs. Default: 15 + """ + return pulumi.get(self, "sync_wait_secs") + + @property + @pulumi.getter + def version(self) -> str: + """ + Version of Config Sync installed + """ + return pulumi.get(self, "version") + + +@pulumi.output_type +class GetFeatureFleetDefaultMemberConfigMeshResult(dict): + def __init__(__self__, *, + management: str): + """ + :param str management: Whether to automatically manage Service Mesh Possible values: ["MANAGEMENT_UNSPECIFIED", "MANAGEMENT_AUTOMATIC", "MANAGEMENT_MANUAL"] + """ + pulumi.set(__self__, "management", management) + + @property + @pulumi.getter + def management(self) -> str: + """ + Whether to automatically manage Service Mesh Possible values: ["MANAGEMENT_UNSPECIFIED", "MANAGEMENT_AUTOMATIC", "MANAGEMENT_MANUAL"] + """ + return pulumi.get(self, "management") + + +@pulumi.output_type +class GetFeatureFleetDefaultMemberConfigPolicycontrollerResult(dict): + def __init__(__self__, *, + policy_controller_hub_configs: Sequence['outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigResult'], + version: str): + """ + :param Sequence['GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs'] policy_controller_hub_configs: Configuration of Policy Controller + :param str version: Configures the version of Policy Controller + """ + pulumi.set(__self__, "policy_controller_hub_configs", policy_controller_hub_configs) + pulumi.set(__self__, "version", version) + + @property + @pulumi.getter(name="policyControllerHubConfigs") + def policy_controller_hub_configs(self) -> Sequence['outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigResult']: + """ + Configuration of Policy Controller + """ + return pulumi.get(self, "policy_controller_hub_configs") + + @property + @pulumi.getter + def version(self) -> str: + """ + Configures the version of Policy Controller + """ + return pulumi.get(self, "version") + + +@pulumi.output_type +class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigResult(dict): + def __init__(__self__, *, + audit_interval_seconds: int, + constraint_violation_limit: int, + deployment_configs: Sequence['outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigResult'], + exemptable_namespaces: Sequence[str], + install_spec: str, + log_denies_enabled: bool, + monitorings: Sequence['outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringResult'], + mutation_enabled: bool, + policy_contents: Sequence['outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentResult'], + referential_rules_enabled: bool): + """ + :param int audit_interval_seconds: Interval for Policy Controller Audit scans (in seconds). When set to 0, this disables audit functionality altogether. + :param int constraint_violation_limit: The maximum number of audit violations to be stored in a constraint. If not set, the internal default of 20 will be used. + :param Sequence['GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs'] deployment_configs: Map of deployment configs to deployments ("admission", "audit", "mutation"). + :param Sequence[str] exemptable_namespaces: The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster. + :param str install_spec: 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"] + :param bool log_denies_enabled: Logs all denies and dry run failures. + :param Sequence['GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs'] monitorings: Monitoring specifies the configuration of monitoring Policy Controller. + :param bool mutation_enabled: Enables the ability to mutate resources using Policy Controller. + :param Sequence['GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs'] policy_contents: Specifies the desired policy content on the cluster. + :param bool referential_rules_enabled: Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated. + """ + pulumi.set(__self__, "audit_interval_seconds", audit_interval_seconds) + pulumi.set(__self__, "constraint_violation_limit", constraint_violation_limit) + pulumi.set(__self__, "deployment_configs", deployment_configs) + pulumi.set(__self__, "exemptable_namespaces", exemptable_namespaces) + pulumi.set(__self__, "install_spec", install_spec) + pulumi.set(__self__, "log_denies_enabled", log_denies_enabled) + pulumi.set(__self__, "monitorings", monitorings) + pulumi.set(__self__, "mutation_enabled", mutation_enabled) + pulumi.set(__self__, "policy_contents", policy_contents) + pulumi.set(__self__, "referential_rules_enabled", referential_rules_enabled) + + @property + @pulumi.getter(name="auditIntervalSeconds") + def audit_interval_seconds(self) -> int: + """ + Interval for Policy Controller Audit scans (in seconds). When set to 0, this disables audit functionality altogether. + """ + return pulumi.get(self, "audit_interval_seconds") + + @property + @pulumi.getter(name="constraintViolationLimit") + def constraint_violation_limit(self) -> int: + """ + The maximum number of audit violations to be stored in a constraint. If not set, the internal default of 20 will be used. + """ + return pulumi.get(self, "constraint_violation_limit") + + @property + @pulumi.getter(name="deploymentConfigs") + def deployment_configs(self) -> Sequence['outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigResult']: + """ + Map of deployment configs to deployments ("admission", "audit", "mutation"). + """ + return pulumi.get(self, "deployment_configs") + + @property + @pulumi.getter(name="exemptableNamespaces") + def exemptable_namespaces(self) -> Sequence[str]: + """ + The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster. + """ + return pulumi.get(self, "exemptable_namespaces") + + @property + @pulumi.getter(name="installSpec") + def install_spec(self) -> str: + """ + 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"] + """ + return pulumi.get(self, "install_spec") + + @property + @pulumi.getter(name="logDeniesEnabled") + def log_denies_enabled(self) -> bool: + """ + Logs all denies and dry run failures. + """ + return pulumi.get(self, "log_denies_enabled") + + @property + @pulumi.getter + def monitorings(self) -> Sequence['outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringResult']: + """ + Monitoring specifies the configuration of monitoring Policy Controller. + """ + return pulumi.get(self, "monitorings") + + @property + @pulumi.getter(name="mutationEnabled") + def mutation_enabled(self) -> bool: + """ + Enables the ability to mutate resources using Policy Controller. + """ + return pulumi.get(self, "mutation_enabled") + + @property + @pulumi.getter(name="policyContents") + def policy_contents(self) -> Sequence['outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentResult']: + """ + Specifies the desired policy content on the cluster. + """ + return pulumi.get(self, "policy_contents") + + @property + @pulumi.getter(name="referentialRulesEnabled") + def referential_rules_enabled(self) -> bool: + """ + Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated. + """ + return pulumi.get(self, "referential_rules_enabled") + + +@pulumi.output_type +class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigResult(dict): + def __init__(__self__, *, + component: str, + container_resources: Sequence['outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceResult'], + pod_affinity: str, + pod_tolerations: Sequence['outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationResult'], + replica_count: int): + """ + :param Sequence['GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceArgs'] container_resources: Container resource requirements. + :param str pod_affinity: Pod affinity configuration. Possible values: ["AFFINITY_UNSPECIFIED", "NO_AFFINITY", "ANTI_AFFINITY"] + :param Sequence['GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArgs'] pod_tolerations: Pod tolerations of node taints. + :param int replica_count: Pod replica count. + """ + pulumi.set(__self__, "component", component) + pulumi.set(__self__, "container_resources", container_resources) + pulumi.set(__self__, "pod_affinity", pod_affinity) + pulumi.set(__self__, "pod_tolerations", pod_tolerations) + pulumi.set(__self__, "replica_count", replica_count) + + @property + @pulumi.getter + def component(self) -> str: + return pulumi.get(self, "component") + + @property + @pulumi.getter(name="containerResources") + def container_resources(self) -> Sequence['outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceResult']: + """ + Container resource requirements. + """ + return pulumi.get(self, "container_resources") + + @property + @pulumi.getter(name="podAffinity") + def pod_affinity(self) -> str: + """ + Pod affinity configuration. Possible values: ["AFFINITY_UNSPECIFIED", "NO_AFFINITY", "ANTI_AFFINITY"] + """ + return pulumi.get(self, "pod_affinity") + + @property + @pulumi.getter(name="podTolerations") + def pod_tolerations(self) -> Sequence['outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationResult']: + """ + Pod tolerations of node taints. + """ + return pulumi.get(self, "pod_tolerations") + + @property + @pulumi.getter(name="replicaCount") + def replica_count(self) -> int: + """ + Pod replica count. + """ + return pulumi.get(self, "replica_count") + + +@pulumi.output_type +class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceResult(dict): + def __init__(__self__, *, + limits: Sequence['outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitResult'], + requests: Sequence['outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestResult']): + """ + :param Sequence['GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitArgs'] limits: Limits describes the maximum amount of compute resources allowed for use by the running container. + :param Sequence['GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestArgs'] requests: Requests describes the amount of compute resources reserved for the container by the kube-scheduler. + """ + pulumi.set(__self__, "limits", limits) + pulumi.set(__self__, "requests", requests) + + @property + @pulumi.getter + def limits(self) -> Sequence['outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitResult']: + """ + Limits describes the maximum amount of compute resources allowed for use by the running container. + """ + return pulumi.get(self, "limits") + + @property + @pulumi.getter + def requests(self) -> Sequence['outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestResult']: + """ + Requests describes the amount of compute resources reserved for the container by the kube-scheduler. + """ + return pulumi.get(self, "requests") + + +@pulumi.output_type +class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceLimitResult(dict): + def __init__(__self__, *, + cpu: str, + memory: str): + """ + :param str cpu: CPU requirement expressed in Kubernetes resource units. + :param str memory: Memory requirement expressed in Kubernetes resource units. + """ + pulumi.set(__self__, "cpu", cpu) + pulumi.set(__self__, "memory", memory) + + @property + @pulumi.getter + def cpu(self) -> str: + """ + CPU requirement expressed in Kubernetes resource units. + """ + return pulumi.get(self, "cpu") + + @property + @pulumi.getter + def memory(self) -> str: + """ + Memory requirement expressed in Kubernetes resource units. + """ + return pulumi.get(self, "memory") + + +@pulumi.output_type +class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourceRequestResult(dict): + def __init__(__self__, *, + cpu: str, + memory: str): + """ + :param str cpu: CPU requirement expressed in Kubernetes resource units. + :param str memory: Memory requirement expressed in Kubernetes resource units. + """ + pulumi.set(__self__, "cpu", cpu) + pulumi.set(__self__, "memory", memory) + + @property + @pulumi.getter + def cpu(self) -> str: + """ + CPU requirement expressed in Kubernetes resource units. + """ + return pulumi.get(self, "cpu") + + @property + @pulumi.getter + def memory(self) -> str: + """ + Memory requirement expressed in Kubernetes resource units. + """ + return pulumi.get(self, "memory") + + +@pulumi.output_type +class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationResult(dict): + def __init__(__self__, *, + effect: str, + key: str, + operator: str, + value: str): + """ + :param str effect: Matches a taint effect. + :param str key: Matches a taint key (not necessarily unique). + :param str operator: Matches a taint operator. + :param str value: Matches a taint value. + """ + pulumi.set(__self__, "effect", effect) + pulumi.set(__self__, "key", key) + pulumi.set(__self__, "operator", operator) + pulumi.set(__self__, "value", value) + + @property + @pulumi.getter + def effect(self) -> str: + """ + Matches a taint effect. + """ + return pulumi.get(self, "effect") + + @property + @pulumi.getter + def key(self) -> str: + """ + Matches a taint key (not necessarily unique). + """ + return pulumi.get(self, "key") + + @property + @pulumi.getter + def operator(self) -> str: + """ + Matches a taint operator. + """ + return pulumi.get(self, "operator") + + @property + @pulumi.getter + def value(self) -> str: + """ + Matches a taint value. + """ + return pulumi.get(self, "value") + + +@pulumi.output_type +class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringResult(dict): + def __init__(__self__, *, + backends: Sequence[str]): + """ + :param Sequence[str] backends: 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"] + """ + pulumi.set(__self__, "backends", backends) + + @property + @pulumi.getter + def backends(self) -> Sequence[str]: + """ + 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"] + """ + return pulumi.get(self, "backends") + + +@pulumi.output_type +class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentResult(dict): + def __init__(__self__, *, + bundles: Sequence['outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleResult'], + template_libraries: Sequence['outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryResult']): + """ + :param Sequence['GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs'] bundles: Configures which bundles to install and their corresponding install specs. + :param Sequence['GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs'] template_libraries: Configures the installation of the Template Library. + """ + pulumi.set(__self__, "bundles", bundles) + pulumi.set(__self__, "template_libraries", template_libraries) + + @property + @pulumi.getter + def bundles(self) -> Sequence['outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleResult']: + """ + Configures which bundles to install and their corresponding install specs. + """ + return pulumi.get(self, "bundles") + + @property + @pulumi.getter(name="templateLibraries") + def template_libraries(self) -> Sequence['outputs.GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryResult']: + """ + Configures the installation of the Template Library. + """ + return pulumi.get(self, "template_libraries") + + +@pulumi.output_type +class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleResult(dict): + def __init__(__self__, *, + bundle: str, + exempted_namespaces: Sequence[str]): + """ + :param Sequence[str] exempted_namespaces: The set of namespaces to be exempted from the bundle. + """ + pulumi.set(__self__, "bundle", bundle) + pulumi.set(__self__, "exempted_namespaces", exempted_namespaces) + + @property + @pulumi.getter + def bundle(self) -> str: + return pulumi.get(self, "bundle") + + @property + @pulumi.getter(name="exemptedNamespaces") + def exempted_namespaces(self) -> Sequence[str]: + """ + The set of namespaces to be exempted from the bundle. + """ + return pulumi.get(self, "exempted_namespaces") + + +@pulumi.output_type +class GetFeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryResult(dict): + def __init__(__self__, *, + installation: str): + """ + :param str installation: Configures the manner in which the template library is installed on the cluster. Possible values: ["INSTALLATION_UNSPECIFIED", "NOT_INSTALLED", "ALL"] + """ + pulumi.set(__self__, "installation", installation) + + @property + @pulumi.getter + def installation(self) -> str: + """ + Configures the manner in which the template library is installed on the cluster. Possible values: ["INSTALLATION_UNSPECIFIED", "NOT_INSTALLED", "ALL"] + """ + return pulumi.get(self, "installation") + + +@pulumi.output_type +class GetFeatureResourceStateResult(dict): + def __init__(__self__, *, + has_resources: bool, + state: str): + """ + :param bool has_resources: Whether this Feature has outstanding resources that need to be cleaned up before it can be disabled. + :param str state: The current state of the Feature resource in the Hub API. + """ + pulumi.set(__self__, "has_resources", has_resources) + pulumi.set(__self__, "state", state) + + @property + @pulumi.getter(name="hasResources") + def has_resources(self) -> bool: + """ + Whether this Feature has outstanding resources that need to be cleaned up before it can be disabled. + """ + return pulumi.get(self, "has_resources") + + @property + @pulumi.getter + def state(self) -> str: + """ + The current state of the Feature resource in the Hub API. + """ + return pulumi.get(self, "state") + + +@pulumi.output_type +class GetFeatureSpecResult(dict): + def __init__(__self__, *, + clusterupgrades: Sequence['outputs.GetFeatureSpecClusterupgradeResult'], + fleetobservabilities: Sequence['outputs.GetFeatureSpecFleetobservabilityResult'], + multiclusteringresses: Sequence['outputs.GetFeatureSpecMulticlusteringressResult']): + """ + :param Sequence['GetFeatureSpecClusterupgradeArgs'] clusterupgrades: Clusterupgrade feature spec. + :param Sequence['GetFeatureSpecFleetobservabilityArgs'] fleetobservabilities: Fleet Observability feature spec. + :param Sequence['GetFeatureSpecMulticlusteringressArgs'] multiclusteringresses: Multicluster Ingress-specific spec. + """ + pulumi.set(__self__, "clusterupgrades", clusterupgrades) + pulumi.set(__self__, "fleetobservabilities", fleetobservabilities) + pulumi.set(__self__, "multiclusteringresses", multiclusteringresses) + + @property + @pulumi.getter + def clusterupgrades(self) -> Sequence['outputs.GetFeatureSpecClusterupgradeResult']: + """ + Clusterupgrade feature spec. + """ + return pulumi.get(self, "clusterupgrades") + + @property + @pulumi.getter + def fleetobservabilities(self) -> Sequence['outputs.GetFeatureSpecFleetobservabilityResult']: + """ + Fleet Observability feature spec. + """ + return pulumi.get(self, "fleetobservabilities") + + @property + @pulumi.getter + def multiclusteringresses(self) -> Sequence['outputs.GetFeatureSpecMulticlusteringressResult']: + """ + Multicluster Ingress-specific spec. + """ + return pulumi.get(self, "multiclusteringresses") + + +@pulumi.output_type +class GetFeatureSpecClusterupgradeResult(dict): + def __init__(__self__, *, + gke_upgrade_overrides: Sequence['outputs.GetFeatureSpecClusterupgradeGkeUpgradeOverrideResult'], + post_conditions: Sequence['outputs.GetFeatureSpecClusterupgradePostConditionResult'], + upstream_fleets: Sequence[str]): + """ + :param Sequence['GetFeatureSpecClusterupgradeGkeUpgradeOverrideArgs'] gke_upgrade_overrides: Configuration overrides for individual upgrades. + :param Sequence['GetFeatureSpecClusterupgradePostConditionArgs'] post_conditions: Post conditions to override for the specified upgrade. + :param Sequence[str] upstream_fleets: 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. + """ + pulumi.set(__self__, "gke_upgrade_overrides", gke_upgrade_overrides) + pulumi.set(__self__, "post_conditions", post_conditions) + pulumi.set(__self__, "upstream_fleets", upstream_fleets) + + @property + @pulumi.getter(name="gkeUpgradeOverrides") + def gke_upgrade_overrides(self) -> Sequence['outputs.GetFeatureSpecClusterupgradeGkeUpgradeOverrideResult']: + """ + Configuration overrides for individual upgrades. + """ + return pulumi.get(self, "gke_upgrade_overrides") + + @property + @pulumi.getter(name="postConditions") + def post_conditions(self) -> Sequence['outputs.GetFeatureSpecClusterupgradePostConditionResult']: + """ + Post conditions to override for the specified upgrade. + """ + return pulumi.get(self, "post_conditions") + + @property + @pulumi.getter(name="upstreamFleets") + def upstream_fleets(self) -> Sequence[str]: + """ + 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. + """ + return pulumi.get(self, "upstream_fleets") + + +@pulumi.output_type +class GetFeatureSpecClusterupgradeGkeUpgradeOverrideResult(dict): + def __init__(__self__, *, + post_conditions: Sequence['outputs.GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionResult'], + upgrades: Sequence['outputs.GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeResult']): + """ + :param Sequence['GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionArgs'] post_conditions: Post conditions to override for the specified upgrade. + :param Sequence['GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeArgs'] upgrades: Which upgrade to override. + """ + pulumi.set(__self__, "post_conditions", post_conditions) + pulumi.set(__self__, "upgrades", upgrades) + + @property + @pulumi.getter(name="postConditions") + def post_conditions(self) -> Sequence['outputs.GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionResult']: + """ + Post conditions to override for the specified upgrade. + """ + return pulumi.get(self, "post_conditions") + + @property + @pulumi.getter + def upgrades(self) -> Sequence['outputs.GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeResult']: + """ + Which upgrade to override. + """ + return pulumi.get(self, "upgrades") + + +@pulumi.output_type +class GetFeatureSpecClusterupgradeGkeUpgradeOverridePostConditionResult(dict): + def __init__(__self__, *, + soaking: str): + """ + :param str soaking: Amount of time to "soak" after a rollout has been finished before marking it COMPLETE. Cannot exceed 30 days. + """ + pulumi.set(__self__, "soaking", soaking) + + @property + @pulumi.getter + def soaking(self) -> str: + """ + Amount of time to "soak" after a rollout has been finished before marking it COMPLETE. Cannot exceed 30 days. + """ + return pulumi.get(self, "soaking") + + +@pulumi.output_type +class GetFeatureSpecClusterupgradeGkeUpgradeOverrideUpgradeResult(dict): + def __init__(__self__, *, + name: str, + version: str): + """ + :param str name: Name of the upgrade, e.g., "k8s_control_plane". It should be a valid upgrade name. It must not exceet 99 characters. + :param str version: Version of the upgrade, e.g., "1.22.1-gke.100". It should be a valid version. It must not exceet 99 characters. + """ + pulumi.set(__self__, "name", name) + pulumi.set(__self__, "version", version) + + @property + @pulumi.getter + def name(self) -> str: + """ + Name of the upgrade, e.g., "k8s_control_plane". It should be a valid upgrade name. It must not exceet 99 characters. + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter + def version(self) -> str: + """ + Version of the upgrade, e.g., "1.22.1-gke.100". It should be a valid version. It must not exceet 99 characters. + """ + return pulumi.get(self, "version") + + +@pulumi.output_type +class GetFeatureSpecClusterupgradePostConditionResult(dict): + def __init__(__self__, *, + soaking: str): + """ + :param str soaking: Amount of time to "soak" after a rollout has been finished before marking it COMPLETE. Cannot exceed 30 days. + """ + pulumi.set(__self__, "soaking", soaking) + + @property + @pulumi.getter + def soaking(self) -> str: + """ + Amount of time to "soak" after a rollout has been finished before marking it COMPLETE. Cannot exceed 30 days. + """ + return pulumi.get(self, "soaking") + + +@pulumi.output_type +class GetFeatureSpecFleetobservabilityResult(dict): + def __init__(__self__, *, + logging_configs: Sequence['outputs.GetFeatureSpecFleetobservabilityLoggingConfigResult']): + """ + :param Sequence['GetFeatureSpecFleetobservabilityLoggingConfigArgs'] logging_configs: Specified if fleet logging feature is enabled for the entire fleet. If UNSPECIFIED, fleet logging feature is disabled for the entire fleet. + """ + pulumi.set(__self__, "logging_configs", logging_configs) + + @property + @pulumi.getter(name="loggingConfigs") + def logging_configs(self) -> Sequence['outputs.GetFeatureSpecFleetobservabilityLoggingConfigResult']: + """ + Specified if fleet logging feature is enabled for the entire fleet. If UNSPECIFIED, fleet logging feature is disabled for the entire fleet. + """ + return pulumi.get(self, "logging_configs") + + +@pulumi.output_type +class GetFeatureSpecFleetobservabilityLoggingConfigResult(dict): + def __init__(__self__, *, + default_configs: Sequence['outputs.GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigResult'], + fleet_scope_logs_configs: Sequence['outputs.GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigResult']): + """ + :param Sequence['GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs'] default_configs: Specified if applying the default routing config to logs not specified in other configs. + :param Sequence['GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs'] fleet_scope_logs_configs: Specified if applying the routing config to all logs for all fleet scopes. + """ + pulumi.set(__self__, "default_configs", default_configs) + pulumi.set(__self__, "fleet_scope_logs_configs", fleet_scope_logs_configs) + + @property + @pulumi.getter(name="defaultConfigs") + def default_configs(self) -> Sequence['outputs.GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigResult']: + """ + Specified if applying the default routing config to logs not specified in other configs. + """ + return pulumi.get(self, "default_configs") + + @property + @pulumi.getter(name="fleetScopeLogsConfigs") + def fleet_scope_logs_configs(self) -> Sequence['outputs.GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigResult']: + """ + Specified if applying the routing config to all logs for all fleet scopes. + """ + return pulumi.get(self, "fleet_scope_logs_configs") + + +@pulumi.output_type +class GetFeatureSpecFleetobservabilityLoggingConfigDefaultConfigResult(dict): + def __init__(__self__, *, + mode: str): + """ + :param str mode: Specified if fleet logging feature is enabled. Possible values: ["MODE_UNSPECIFIED", "COPY", "MOVE"] + """ + pulumi.set(__self__, "mode", mode) + + @property + @pulumi.getter + def mode(self) -> str: + """ + Specified if fleet logging feature is enabled. Possible values: ["MODE_UNSPECIFIED", "COPY", "MOVE"] + """ + return pulumi.get(self, "mode") + + +@pulumi.output_type +class GetFeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigResult(dict): + def __init__(__self__, *, + mode: str): + """ + :param str mode: Specified if fleet logging feature is enabled. Possible values: ["MODE_UNSPECIFIED", "COPY", "MOVE"] + """ + pulumi.set(__self__, "mode", mode) + + @property + @pulumi.getter + def mode(self) -> str: + """ + Specified if fleet logging feature is enabled. Possible values: ["MODE_UNSPECIFIED", "COPY", "MOVE"] + """ + return pulumi.get(self, "mode") + + +@pulumi.output_type +class GetFeatureSpecMulticlusteringressResult(dict): + def __init__(__self__, *, + config_membership: str): + """ + :param str config_membership: Fully-qualified Membership name which hosts the MultiClusterIngress CRD. Example: 'projects/foo-proj/locations/global/memberships/bar' + """ + pulumi.set(__self__, "config_membership", config_membership) + + @property + @pulumi.getter(name="configMembership") + def config_membership(self) -> str: + """ + Fully-qualified Membership name which hosts the MultiClusterIngress CRD. Example: 'projects/foo-proj/locations/global/memberships/bar' + """ + return pulumi.get(self, "config_membership") + + +@pulumi.output_type +class GetFeatureStateResult(dict): + def __init__(__self__, *, + states: Sequence['outputs.GetFeatureStateStateResult']): + """ + :param Sequence['GetFeatureStateStateArgs'] states: Output only. The "running state" of the Feature in this Hub. + """ + pulumi.set(__self__, "states", states) + + @property + @pulumi.getter + def states(self) -> Sequence['outputs.GetFeatureStateStateResult']: + """ + Output only. The "running state" of the Feature in this Hub. + """ + return pulumi.get(self, "states") + + +@pulumi.output_type +class GetFeatureStateStateResult(dict): + def __init__(__self__, *, + code: str, + description: str, + update_time: str): + """ + :param str code: The high-level, machine-readable status of this Feature. + :param str description: A human-readable description of the current status. + :param str update_time: 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" + """ + pulumi.set(__self__, "code", code) + pulumi.set(__self__, "description", description) + pulumi.set(__self__, "update_time", update_time) + + @property + @pulumi.getter + def code(self) -> str: + """ + The high-level, machine-readable status of this Feature. + """ + return pulumi.get(self, "code") + + @property + @pulumi.getter + def description(self) -> str: + """ + A human-readable description of the current status. + """ + return pulumi.get(self, "description") + + @property + @pulumi.getter(name="updateTime") + def update_time(self) -> str: + """ + 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" + """ + return pulumi.get(self, "update_time") + + @pulumi.output_type class GetMembershipBindingStateResult(dict): def __init__(__self__, *, diff --git a/sdk/python/pulumi_gcp/gkeonprem/__init__.py b/sdk/python/pulumi_gcp/gkeonprem/__init__.py index d27bc7b4c1..32af3e8454 100644 --- a/sdk/python/pulumi_gcp/gkeonprem/__init__.py +++ b/sdk/python/pulumi_gcp/gkeonprem/__init__.py @@ -10,5 +10,6 @@ from .bare_metal_node_pool import * from .v_mware_cluster import * from .v_mware_node_pool import * +from .vmware_admin_cluster import * from ._inputs import * from . import outputs diff --git a/sdk/python/pulumi_gcp/gkeonprem/_inputs.py b/sdk/python/pulumi_gcp/gkeonprem/_inputs.py index 778246e505..cda33271e9 100644 --- a/sdk/python/pulumi_gcp/gkeonprem/_inputs.py +++ b/sdk/python/pulumi_gcp/gkeonprem/_inputs.py @@ -261,6 +261,68 @@ 'VMwareNodePoolStatusArgsDict', 'VMwareNodePoolStatusConditionArgs', 'VMwareNodePoolStatusConditionArgsDict', + 'VmwareAdminClusterAddonNodeArgs', + 'VmwareAdminClusterAddonNodeArgsDict', + 'VmwareAdminClusterAddonNodeAutoResizeConfigArgs', + 'VmwareAdminClusterAddonNodeAutoResizeConfigArgsDict', + 'VmwareAdminClusterAntiAffinityGroupsArgs', + 'VmwareAdminClusterAntiAffinityGroupsArgsDict', + 'VmwareAdminClusterAuthorizationArgs', + 'VmwareAdminClusterAuthorizationArgsDict', + 'VmwareAdminClusterAuthorizationViewerUserArgs', + 'VmwareAdminClusterAuthorizationViewerUserArgsDict', + 'VmwareAdminClusterAutoRepairConfigArgs', + 'VmwareAdminClusterAutoRepairConfigArgsDict', + 'VmwareAdminClusterControlPlaneNodeArgs', + 'VmwareAdminClusterControlPlaneNodeArgsDict', + 'VmwareAdminClusterFleetArgs', + 'VmwareAdminClusterFleetArgsDict', + 'VmwareAdminClusterLoadBalancerArgs', + 'VmwareAdminClusterLoadBalancerArgsDict', + 'VmwareAdminClusterLoadBalancerF5ConfigArgs', + 'VmwareAdminClusterLoadBalancerF5ConfigArgsDict', + 'VmwareAdminClusterLoadBalancerManualLbConfigArgs', + 'VmwareAdminClusterLoadBalancerManualLbConfigArgsDict', + 'VmwareAdminClusterLoadBalancerMetalLbConfigArgs', + 'VmwareAdminClusterLoadBalancerMetalLbConfigArgsDict', + 'VmwareAdminClusterLoadBalancerVipConfigArgs', + 'VmwareAdminClusterLoadBalancerVipConfigArgsDict', + 'VmwareAdminClusterNetworkConfigArgs', + 'VmwareAdminClusterNetworkConfigArgsDict', + 'VmwareAdminClusterNetworkConfigDhcpIpConfigArgs', + 'VmwareAdminClusterNetworkConfigDhcpIpConfigArgsDict', + 'VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs', + 'VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgsDict', + 'VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs', + 'VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgsDict', + 'VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs', + 'VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgsDict', + 'VmwareAdminClusterNetworkConfigHostConfigArgs', + 'VmwareAdminClusterNetworkConfigHostConfigArgsDict', + 'VmwareAdminClusterNetworkConfigStaticIpConfigArgs', + 'VmwareAdminClusterNetworkConfigStaticIpConfigArgsDict', + 'VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs', + 'VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgsDict', + 'VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs', + 'VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgsDict', + 'VmwareAdminClusterPlatformConfigArgs', + 'VmwareAdminClusterPlatformConfigArgsDict', + 'VmwareAdminClusterPlatformConfigBundleArgs', + 'VmwareAdminClusterPlatformConfigBundleArgsDict', + 'VmwareAdminClusterPlatformConfigBundleStatusArgs', + 'VmwareAdminClusterPlatformConfigBundleStatusArgsDict', + 'VmwareAdminClusterPlatformConfigBundleStatusConditionArgs', + 'VmwareAdminClusterPlatformConfigBundleStatusConditionArgsDict', + 'VmwareAdminClusterPlatformConfigStatusArgs', + 'VmwareAdminClusterPlatformConfigStatusArgsDict', + 'VmwareAdminClusterPlatformConfigStatusConditionArgs', + 'VmwareAdminClusterPlatformConfigStatusConditionArgsDict', + 'VmwareAdminClusterStatusArgs', + 'VmwareAdminClusterStatusArgsDict', + 'VmwareAdminClusterStatusConditionArgs', + 'VmwareAdminClusterStatusConditionArgsDict', + 'VmwareAdminClusterVcenterArgs', + 'VmwareAdminClusterVcenterArgsDict', ] MYPY = False @@ -8672,3 +8734,2305 @@ def type(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "type", value) +if not MYPY: + class VmwareAdminClusterAddonNodeArgsDict(TypedDict): + auto_resize_config: NotRequired[pulumi.Input['VmwareAdminClusterAddonNodeAutoResizeConfigArgsDict']] + """ + Specifies auto resize config. + Structure is documented below. + """ +elif False: + VmwareAdminClusterAddonNodeArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterAddonNodeArgs: + def __init__(__self__, *, + auto_resize_config: Optional[pulumi.Input['VmwareAdminClusterAddonNodeAutoResizeConfigArgs']] = None): + """ + :param pulumi.Input['VmwareAdminClusterAddonNodeAutoResizeConfigArgs'] auto_resize_config: Specifies auto resize config. + Structure is documented below. + """ + if auto_resize_config is not None: + pulumi.set(__self__, "auto_resize_config", auto_resize_config) + + @property + @pulumi.getter(name="autoResizeConfig") + def auto_resize_config(self) -> Optional[pulumi.Input['VmwareAdminClusterAddonNodeAutoResizeConfigArgs']]: + """ + Specifies auto resize config. + Structure is documented below. + """ + return pulumi.get(self, "auto_resize_config") + + @auto_resize_config.setter + def auto_resize_config(self, value: Optional[pulumi.Input['VmwareAdminClusterAddonNodeAutoResizeConfigArgs']]): + pulumi.set(self, "auto_resize_config", value) + + +if not MYPY: + class VmwareAdminClusterAddonNodeAutoResizeConfigArgsDict(TypedDict): + enabled: pulumi.Input[bool] + """ + Whether to enable controle plane node auto resizing. + """ +elif False: + VmwareAdminClusterAddonNodeAutoResizeConfigArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterAddonNodeAutoResizeConfigArgs: + def __init__(__self__, *, + enabled: pulumi.Input[bool]): + """ + :param pulumi.Input[bool] enabled: Whether to enable controle plane node auto resizing. + """ + pulumi.set(__self__, "enabled", enabled) + + @property + @pulumi.getter + def enabled(self) -> pulumi.Input[bool]: + """ + Whether to enable controle plane node auto resizing. + """ + return pulumi.get(self, "enabled") + + @enabled.setter + def enabled(self, value: pulumi.Input[bool]): + pulumi.set(self, "enabled", value) + + +if not MYPY: + class VmwareAdminClusterAntiAffinityGroupsArgsDict(TypedDict): + aag_config_disabled: pulumi.Input[bool] + """ + Spread nodes across at least three physical hosts (requires at least three + hosts). + Enabled by default. + """ +elif False: + VmwareAdminClusterAntiAffinityGroupsArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterAntiAffinityGroupsArgs: + def __init__(__self__, *, + aag_config_disabled: pulumi.Input[bool]): + """ + :param pulumi.Input[bool] aag_config_disabled: Spread nodes across at least three physical hosts (requires at least three + hosts). + Enabled by default. + """ + pulumi.set(__self__, "aag_config_disabled", aag_config_disabled) + + @property + @pulumi.getter(name="aagConfigDisabled") + def aag_config_disabled(self) -> pulumi.Input[bool]: + """ + Spread nodes across at least three physical hosts (requires at least three + hosts). + Enabled by default. + """ + return pulumi.get(self, "aag_config_disabled") + + @aag_config_disabled.setter + def aag_config_disabled(self, value: pulumi.Input[bool]): + pulumi.set(self, "aag_config_disabled", value) + + +if not MYPY: + class VmwareAdminClusterAuthorizationArgsDict(TypedDict): + viewer_users: NotRequired[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterAuthorizationViewerUserArgsDict']]]] + """ + Users that will be granted the cluster-admin role on the cluster, providing + full access to the cluster. + Structure is documented below. + """ +elif False: + VmwareAdminClusterAuthorizationArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterAuthorizationArgs: + def __init__(__self__, *, + viewer_users: Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterAuthorizationViewerUserArgs']]]] = None): + """ + :param pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterAuthorizationViewerUserArgs']]] viewer_users: Users that will be granted the cluster-admin role on the cluster, providing + full access to the cluster. + Structure is documented below. + """ + if viewer_users is not None: + pulumi.set(__self__, "viewer_users", viewer_users) + + @property + @pulumi.getter(name="viewerUsers") + def viewer_users(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterAuthorizationViewerUserArgs']]]]: + """ + Users that will be granted the cluster-admin role on the cluster, providing + full access to the cluster. + Structure is documented below. + """ + return pulumi.get(self, "viewer_users") + + @viewer_users.setter + def viewer_users(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterAuthorizationViewerUserArgs']]]]): + pulumi.set(self, "viewer_users", value) + + +if not MYPY: + class VmwareAdminClusterAuthorizationViewerUserArgsDict(TypedDict): + username: pulumi.Input[str] + """ + The name of the user, e.g. `my-gcp-id@gmail.com`. + """ +elif False: + VmwareAdminClusterAuthorizationViewerUserArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterAuthorizationViewerUserArgs: + def __init__(__self__, *, + username: pulumi.Input[str]): + """ + :param pulumi.Input[str] username: The name of the user, e.g. `my-gcp-id@gmail.com`. + """ + pulumi.set(__self__, "username", username) + + @property + @pulumi.getter + def username(self) -> pulumi.Input[str]: + """ + The name of the user, e.g. `my-gcp-id@gmail.com`. + """ + return pulumi.get(self, "username") + + @username.setter + def username(self, value: pulumi.Input[str]): + pulumi.set(self, "username", value) + + +if not MYPY: + class VmwareAdminClusterAutoRepairConfigArgsDict(TypedDict): + enabled: pulumi.Input[bool] + """ + Whether auto repair is enabled. + """ +elif False: + VmwareAdminClusterAutoRepairConfigArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterAutoRepairConfigArgs: + def __init__(__self__, *, + enabled: pulumi.Input[bool]): + """ + :param pulumi.Input[bool] enabled: Whether auto repair is enabled. + """ + pulumi.set(__self__, "enabled", enabled) + + @property + @pulumi.getter + def enabled(self) -> pulumi.Input[bool]: + """ + Whether auto repair is enabled. + """ + return pulumi.get(self, "enabled") + + @enabled.setter + def enabled(self, value: pulumi.Input[bool]): + pulumi.set(self, "enabled", value) + + +if not MYPY: + class VmwareAdminClusterControlPlaneNodeArgsDict(TypedDict): + cpus: NotRequired[pulumi.Input[int]] + """ + The number of vCPUs for the control-plane node of the admin cluster. + """ + memory: NotRequired[pulumi.Input[int]] + """ + The number of mebibytes of memory for the control-plane node of the admin cluster. + """ + replicas: NotRequired[pulumi.Input[int]] + """ + The number of control plane nodes for this VMware admin cluster. + """ +elif False: + VmwareAdminClusterControlPlaneNodeArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterControlPlaneNodeArgs: + def __init__(__self__, *, + cpus: Optional[pulumi.Input[int]] = None, + memory: Optional[pulumi.Input[int]] = None, + replicas: Optional[pulumi.Input[int]] = None): + """ + :param pulumi.Input[int] cpus: The number of vCPUs for the control-plane node of the admin cluster. + :param pulumi.Input[int] memory: The number of mebibytes of memory for the control-plane node of the admin cluster. + :param pulumi.Input[int] replicas: The number of control plane nodes for this VMware admin cluster. + """ + if cpus is not None: + pulumi.set(__self__, "cpus", cpus) + if memory is not None: + pulumi.set(__self__, "memory", memory) + if replicas is not None: + pulumi.set(__self__, "replicas", replicas) + + @property + @pulumi.getter + def cpus(self) -> Optional[pulumi.Input[int]]: + """ + The number of vCPUs for the control-plane node of the admin cluster. + """ + return pulumi.get(self, "cpus") + + @cpus.setter + def cpus(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "cpus", value) + + @property + @pulumi.getter + def memory(self) -> Optional[pulumi.Input[int]]: + """ + The number of mebibytes of memory for the control-plane node of the admin cluster. + """ + return pulumi.get(self, "memory") + + @memory.setter + def memory(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "memory", value) + + @property + @pulumi.getter + def replicas(self) -> Optional[pulumi.Input[int]]: + """ + The number of control plane nodes for this VMware admin cluster. + """ + return pulumi.get(self, "replicas") + + @replicas.setter + def replicas(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "replicas", value) + + +if not MYPY: + class VmwareAdminClusterFleetArgsDict(TypedDict): + membership: NotRequired[pulumi.Input[str]] + """ + (Output) + The name of the managed Fleet Membership resource associated to this cluster. + Membership names are formatted as + `projects//locations//memberships/`. + """ +elif False: + VmwareAdminClusterFleetArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterFleetArgs: + def __init__(__self__, *, + membership: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] membership: (Output) + The name of the managed Fleet Membership resource associated to this cluster. + Membership names are formatted as + `projects//locations//memberships/`. + """ + if membership is not None: + pulumi.set(__self__, "membership", membership) + + @property + @pulumi.getter + def membership(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + The name of the managed Fleet Membership resource associated to this cluster. + Membership names are formatted as + `projects//locations//memberships/`. + """ + return pulumi.get(self, "membership") + + @membership.setter + def membership(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "membership", value) + + +if not MYPY: + class VmwareAdminClusterLoadBalancerArgsDict(TypedDict): + vip_config: pulumi.Input['VmwareAdminClusterLoadBalancerVipConfigArgsDict'] + """ + Specified the VMware Load Balancer Config + Structure is documented below. + """ + f5_config: NotRequired[pulumi.Input['VmwareAdminClusterLoadBalancerF5ConfigArgsDict']] + """ + Configuration for F5 Big IP typed load balancers. + Structure is documented below. + """ + manual_lb_config: NotRequired[pulumi.Input['VmwareAdminClusterLoadBalancerManualLbConfigArgsDict']] + """ + Manually configured load balancers. + Structure is documented below. + """ + metal_lb_config: NotRequired[pulumi.Input['VmwareAdminClusterLoadBalancerMetalLbConfigArgsDict']] + """ + Metal LB load balancers. + Structure is documented below. + """ +elif False: + VmwareAdminClusterLoadBalancerArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterLoadBalancerArgs: + def __init__(__self__, *, + vip_config: pulumi.Input['VmwareAdminClusterLoadBalancerVipConfigArgs'], + f5_config: Optional[pulumi.Input['VmwareAdminClusterLoadBalancerF5ConfigArgs']] = None, + manual_lb_config: Optional[pulumi.Input['VmwareAdminClusterLoadBalancerManualLbConfigArgs']] = None, + metal_lb_config: Optional[pulumi.Input['VmwareAdminClusterLoadBalancerMetalLbConfigArgs']] = None): + """ + :param pulumi.Input['VmwareAdminClusterLoadBalancerVipConfigArgs'] vip_config: Specified the VMware Load Balancer Config + Structure is documented below. + :param pulumi.Input['VmwareAdminClusterLoadBalancerF5ConfigArgs'] f5_config: Configuration for F5 Big IP typed load balancers. + Structure is documented below. + :param pulumi.Input['VmwareAdminClusterLoadBalancerManualLbConfigArgs'] manual_lb_config: Manually configured load balancers. + Structure is documented below. + :param pulumi.Input['VmwareAdminClusterLoadBalancerMetalLbConfigArgs'] metal_lb_config: Metal LB load balancers. + Structure is documented below. + """ + pulumi.set(__self__, "vip_config", vip_config) + if f5_config is not None: + pulumi.set(__self__, "f5_config", f5_config) + if manual_lb_config is not None: + pulumi.set(__self__, "manual_lb_config", manual_lb_config) + if metal_lb_config is not None: + pulumi.set(__self__, "metal_lb_config", metal_lb_config) + + @property + @pulumi.getter(name="vipConfig") + def vip_config(self) -> pulumi.Input['VmwareAdminClusterLoadBalancerVipConfigArgs']: + """ + Specified the VMware Load Balancer Config + Structure is documented below. + """ + return pulumi.get(self, "vip_config") + + @vip_config.setter + def vip_config(self, value: pulumi.Input['VmwareAdminClusterLoadBalancerVipConfigArgs']): + pulumi.set(self, "vip_config", value) + + @property + @pulumi.getter(name="f5Config") + def f5_config(self) -> Optional[pulumi.Input['VmwareAdminClusterLoadBalancerF5ConfigArgs']]: + """ + Configuration for F5 Big IP typed load balancers. + Structure is documented below. + """ + return pulumi.get(self, "f5_config") + + @f5_config.setter + def f5_config(self, value: Optional[pulumi.Input['VmwareAdminClusterLoadBalancerF5ConfigArgs']]): + pulumi.set(self, "f5_config", value) + + @property + @pulumi.getter(name="manualLbConfig") + def manual_lb_config(self) -> Optional[pulumi.Input['VmwareAdminClusterLoadBalancerManualLbConfigArgs']]: + """ + Manually configured load balancers. + Structure is documented below. + """ + return pulumi.get(self, "manual_lb_config") + + @manual_lb_config.setter + def manual_lb_config(self, value: Optional[pulumi.Input['VmwareAdminClusterLoadBalancerManualLbConfigArgs']]): + pulumi.set(self, "manual_lb_config", value) + + @property + @pulumi.getter(name="metalLbConfig") + def metal_lb_config(self) -> Optional[pulumi.Input['VmwareAdminClusterLoadBalancerMetalLbConfigArgs']]: + """ + Metal LB load balancers. + Structure is documented below. + """ + return pulumi.get(self, "metal_lb_config") + + @metal_lb_config.setter + def metal_lb_config(self, value: Optional[pulumi.Input['VmwareAdminClusterLoadBalancerMetalLbConfigArgs']]): + pulumi.set(self, "metal_lb_config", value) + + +if not MYPY: + class VmwareAdminClusterLoadBalancerF5ConfigArgsDict(TypedDict): + address: NotRequired[pulumi.Input[str]] + """ + The load balancer's IP address. + """ + partition: NotRequired[pulumi.Input[str]] + """ + 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'. + """ + snat_pool: NotRequired[pulumi.Input[str]] + """ + The pool name. Only necessary, if using SNAT. + """ +elif False: + VmwareAdminClusterLoadBalancerF5ConfigArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterLoadBalancerF5ConfigArgs: + def __init__(__self__, *, + address: Optional[pulumi.Input[str]] = None, + partition: Optional[pulumi.Input[str]] = None, + snat_pool: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] address: The load balancer's IP address. + :param pulumi.Input[str] partition: 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'. + :param pulumi.Input[str] snat_pool: The pool name. Only necessary, if using SNAT. + """ + if address is not None: + pulumi.set(__self__, "address", address) + if partition is not None: + pulumi.set(__self__, "partition", partition) + if snat_pool is not None: + pulumi.set(__self__, "snat_pool", snat_pool) + + @property + @pulumi.getter + def address(self) -> Optional[pulumi.Input[str]]: + """ + The load balancer's IP address. + """ + return pulumi.get(self, "address") + + @address.setter + def address(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "address", value) + + @property + @pulumi.getter + def partition(self) -> Optional[pulumi.Input[str]]: + """ + 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'. + """ + return pulumi.get(self, "partition") + + @partition.setter + def partition(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "partition", value) + + @property + @pulumi.getter(name="snatPool") + def snat_pool(self) -> Optional[pulumi.Input[str]]: + """ + The pool name. Only necessary, if using SNAT. + """ + return pulumi.get(self, "snat_pool") + + @snat_pool.setter + def snat_pool(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "snat_pool", value) + + +if not MYPY: + class VmwareAdminClusterLoadBalancerManualLbConfigArgsDict(TypedDict): + addons_node_port: NotRequired[pulumi.Input[int]] + """ + NodePort for add-ons server in the admin cluster. + """ + control_plane_node_port: NotRequired[pulumi.Input[int]] + """ + NodePort for control plane service. The Kubernetes API server in the admin + cluster is implemented as a Service of type NodePort (ex. 30968). + """ + ingress_http_node_port: NotRequired[pulumi.Input[int]] + """ + NodePort for ingress service's http. The ingress service in the admin + cluster is implemented as a Service of type NodePort (ex. 32527). + """ + ingress_https_node_port: NotRequired[pulumi.Input[int]] + """ + NodePort for ingress service's https. The ingress service in the admin + cluster is implemented as a Service of type NodePort (ex. 30139). + """ + konnectivity_server_node_port: NotRequired[pulumi.Input[int]] + """ + NodePort for konnectivity server service running as a sidecar in each + kube-apiserver pod (ex. 30564). + """ +elif False: + VmwareAdminClusterLoadBalancerManualLbConfigArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterLoadBalancerManualLbConfigArgs: + def __init__(__self__, *, + addons_node_port: Optional[pulumi.Input[int]] = None, + control_plane_node_port: Optional[pulumi.Input[int]] = None, + ingress_http_node_port: Optional[pulumi.Input[int]] = None, + ingress_https_node_port: Optional[pulumi.Input[int]] = None, + konnectivity_server_node_port: Optional[pulumi.Input[int]] = None): + """ + :param pulumi.Input[int] addons_node_port: NodePort for add-ons server in the admin cluster. + :param pulumi.Input[int] control_plane_node_port: NodePort for control plane service. The Kubernetes API server in the admin + cluster is implemented as a Service of type NodePort (ex. 30968). + :param pulumi.Input[int] ingress_http_node_port: NodePort for ingress service's http. The ingress service in the admin + cluster is implemented as a Service of type NodePort (ex. 32527). + :param pulumi.Input[int] ingress_https_node_port: NodePort for ingress service's https. The ingress service in the admin + cluster is implemented as a Service of type NodePort (ex. 30139). + :param pulumi.Input[int] konnectivity_server_node_port: NodePort for konnectivity server service running as a sidecar in each + kube-apiserver pod (ex. 30564). + """ + if addons_node_port is not None: + pulumi.set(__self__, "addons_node_port", addons_node_port) + if control_plane_node_port is not None: + pulumi.set(__self__, "control_plane_node_port", control_plane_node_port) + if ingress_http_node_port is not None: + pulumi.set(__self__, "ingress_http_node_port", ingress_http_node_port) + if ingress_https_node_port is not None: + pulumi.set(__self__, "ingress_https_node_port", ingress_https_node_port) + if konnectivity_server_node_port is not None: + pulumi.set(__self__, "konnectivity_server_node_port", konnectivity_server_node_port) + + @property + @pulumi.getter(name="addonsNodePort") + def addons_node_port(self) -> Optional[pulumi.Input[int]]: + """ + NodePort for add-ons server in the admin cluster. + """ + return pulumi.get(self, "addons_node_port") + + @addons_node_port.setter + def addons_node_port(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "addons_node_port", value) + + @property + @pulumi.getter(name="controlPlaneNodePort") + def control_plane_node_port(self) -> Optional[pulumi.Input[int]]: + """ + NodePort for control plane service. The Kubernetes API server in the admin + cluster is implemented as a Service of type NodePort (ex. 30968). + """ + return pulumi.get(self, "control_plane_node_port") + + @control_plane_node_port.setter + def control_plane_node_port(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "control_plane_node_port", value) + + @property + @pulumi.getter(name="ingressHttpNodePort") + def ingress_http_node_port(self) -> Optional[pulumi.Input[int]]: + """ + NodePort for ingress service's http. The ingress service in the admin + cluster is implemented as a Service of type NodePort (ex. 32527). + """ + return pulumi.get(self, "ingress_http_node_port") + + @ingress_http_node_port.setter + def ingress_http_node_port(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "ingress_http_node_port", value) + + @property + @pulumi.getter(name="ingressHttpsNodePort") + def ingress_https_node_port(self) -> Optional[pulumi.Input[int]]: + """ + NodePort for ingress service's https. The ingress service in the admin + cluster is implemented as a Service of type NodePort (ex. 30139). + """ + return pulumi.get(self, "ingress_https_node_port") + + @ingress_https_node_port.setter + def ingress_https_node_port(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "ingress_https_node_port", value) + + @property + @pulumi.getter(name="konnectivityServerNodePort") + def konnectivity_server_node_port(self) -> Optional[pulumi.Input[int]]: + """ + NodePort for konnectivity server service running as a sidecar in each + kube-apiserver pod (ex. 30564). + """ + return pulumi.get(self, "konnectivity_server_node_port") + + @konnectivity_server_node_port.setter + def konnectivity_server_node_port(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "konnectivity_server_node_port", value) + + +if not MYPY: + class VmwareAdminClusterLoadBalancerMetalLbConfigArgsDict(TypedDict): + enabled: NotRequired[pulumi.Input[bool]] + """ + Metal LB is enabled. + """ +elif False: + VmwareAdminClusterLoadBalancerMetalLbConfigArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterLoadBalancerMetalLbConfigArgs: + def __init__(__self__, *, + enabled: Optional[pulumi.Input[bool]] = None): + """ + :param pulumi.Input[bool] enabled: Metal LB is enabled. + """ + if enabled is not None: + pulumi.set(__self__, "enabled", enabled) + + @property + @pulumi.getter + def enabled(self) -> Optional[pulumi.Input[bool]]: + """ + Metal LB is enabled. + """ + return pulumi.get(self, "enabled") + + @enabled.setter + def enabled(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "enabled", value) + + +if not MYPY: + class VmwareAdminClusterLoadBalancerVipConfigArgsDict(TypedDict): + control_plane_vip: pulumi.Input[str] + """ + The VIP which you previously set aside for the Kubernetes + API of this VMware Admin Cluster. + """ + addons_vip: NotRequired[pulumi.Input[str]] + """ + The VIP to configure the load balancer for add-ons. + + The `f5_config` block supports: + """ +elif False: + VmwareAdminClusterLoadBalancerVipConfigArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterLoadBalancerVipConfigArgs: + def __init__(__self__, *, + control_plane_vip: pulumi.Input[str], + addons_vip: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] control_plane_vip: The VIP which you previously set aside for the Kubernetes + API of this VMware Admin Cluster. + :param pulumi.Input[str] addons_vip: The VIP to configure the load balancer for add-ons. + + The `f5_config` block supports: + """ + pulumi.set(__self__, "control_plane_vip", control_plane_vip) + if addons_vip is not None: + pulumi.set(__self__, "addons_vip", addons_vip) + + @property + @pulumi.getter(name="controlPlaneVip") + def control_plane_vip(self) -> pulumi.Input[str]: + """ + The VIP which you previously set aside for the Kubernetes + API of this VMware Admin Cluster. + """ + return pulumi.get(self, "control_plane_vip") + + @control_plane_vip.setter + def control_plane_vip(self, value: pulumi.Input[str]): + pulumi.set(self, "control_plane_vip", value) + + @property + @pulumi.getter(name="addonsVip") + def addons_vip(self) -> Optional[pulumi.Input[str]]: + """ + The VIP to configure the load balancer for add-ons. + + The `f5_config` block supports: + """ + return pulumi.get(self, "addons_vip") + + @addons_vip.setter + def addons_vip(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "addons_vip", value) + + +if not MYPY: + class VmwareAdminClusterNetworkConfigArgsDict(TypedDict): + pod_address_cidr_blocks: pulumi.Input[Sequence[pulumi.Input[str]]] + """ + 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. + """ + service_address_cidr_blocks: pulumi.Input[Sequence[pulumi.Input[str]]] + """ + 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. + """ + dhcp_ip_config: NotRequired[pulumi.Input['VmwareAdminClusterNetworkConfigDhcpIpConfigArgsDict']] + """ + Configuration settings for a DHCP IP configuration. + Structure is documented below. + """ + ha_control_plane_config: NotRequired[pulumi.Input['VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgsDict']] + """ + Configuration for HA admin cluster control plane. + Structure is documented below. + """ + host_config: NotRequired[pulumi.Input['VmwareAdminClusterNetworkConfigHostConfigArgsDict']] + """ + Represents common network settings irrespective of the host's IP address. + Structure is documented below. + """ + static_ip_config: NotRequired[pulumi.Input['VmwareAdminClusterNetworkConfigStaticIpConfigArgsDict']] + """ + Configuration settings for a static IP configuration. + Structure is documented below. + """ + vcenter_network: NotRequired[pulumi.Input[str]] + """ + vcenter_network specifies vCenter network name. + """ +elif False: + VmwareAdminClusterNetworkConfigArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterNetworkConfigArgs: + def __init__(__self__, *, + pod_address_cidr_blocks: pulumi.Input[Sequence[pulumi.Input[str]]], + service_address_cidr_blocks: pulumi.Input[Sequence[pulumi.Input[str]]], + dhcp_ip_config: Optional[pulumi.Input['VmwareAdminClusterNetworkConfigDhcpIpConfigArgs']] = None, + ha_control_plane_config: Optional[pulumi.Input['VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs']] = None, + host_config: Optional[pulumi.Input['VmwareAdminClusterNetworkConfigHostConfigArgs']] = None, + static_ip_config: Optional[pulumi.Input['VmwareAdminClusterNetworkConfigStaticIpConfigArgs']] = None, + vcenter_network: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[Sequence[pulumi.Input[str]]] pod_address_cidr_blocks: 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. + :param pulumi.Input[Sequence[pulumi.Input[str]]] service_address_cidr_blocks: 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. + :param pulumi.Input['VmwareAdminClusterNetworkConfigDhcpIpConfigArgs'] dhcp_ip_config: Configuration settings for a DHCP IP configuration. + Structure is documented below. + :param pulumi.Input['VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs'] ha_control_plane_config: Configuration for HA admin cluster control plane. + Structure is documented below. + :param pulumi.Input['VmwareAdminClusterNetworkConfigHostConfigArgs'] host_config: Represents common network settings irrespective of the host's IP address. + Structure is documented below. + :param pulumi.Input['VmwareAdminClusterNetworkConfigStaticIpConfigArgs'] static_ip_config: Configuration settings for a static IP configuration. + Structure is documented below. + :param pulumi.Input[str] vcenter_network: vcenter_network specifies vCenter network name. + """ + pulumi.set(__self__, "pod_address_cidr_blocks", pod_address_cidr_blocks) + pulumi.set(__self__, "service_address_cidr_blocks", service_address_cidr_blocks) + if dhcp_ip_config is not None: + pulumi.set(__self__, "dhcp_ip_config", dhcp_ip_config) + if ha_control_plane_config is not None: + pulumi.set(__self__, "ha_control_plane_config", ha_control_plane_config) + if host_config is not None: + pulumi.set(__self__, "host_config", host_config) + if static_ip_config is not None: + pulumi.set(__self__, "static_ip_config", static_ip_config) + if vcenter_network is not None: + pulumi.set(__self__, "vcenter_network", vcenter_network) + + @property + @pulumi.getter(name="podAddressCidrBlocks") + def pod_address_cidr_blocks(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]: + """ + 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. + """ + return pulumi.get(self, "pod_address_cidr_blocks") + + @pod_address_cidr_blocks.setter + def pod_address_cidr_blocks(self, value: pulumi.Input[Sequence[pulumi.Input[str]]]): + pulumi.set(self, "pod_address_cidr_blocks", value) + + @property + @pulumi.getter(name="serviceAddressCidrBlocks") + def service_address_cidr_blocks(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]: + """ + 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. + """ + return pulumi.get(self, "service_address_cidr_blocks") + + @service_address_cidr_blocks.setter + def service_address_cidr_blocks(self, value: pulumi.Input[Sequence[pulumi.Input[str]]]): + pulumi.set(self, "service_address_cidr_blocks", value) + + @property + @pulumi.getter(name="dhcpIpConfig") + def dhcp_ip_config(self) -> Optional[pulumi.Input['VmwareAdminClusterNetworkConfigDhcpIpConfigArgs']]: + """ + Configuration settings for a DHCP IP configuration. + Structure is documented below. + """ + return pulumi.get(self, "dhcp_ip_config") + + @dhcp_ip_config.setter + def dhcp_ip_config(self, value: Optional[pulumi.Input['VmwareAdminClusterNetworkConfigDhcpIpConfigArgs']]): + pulumi.set(self, "dhcp_ip_config", value) + + @property + @pulumi.getter(name="haControlPlaneConfig") + def ha_control_plane_config(self) -> Optional[pulumi.Input['VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs']]: + """ + Configuration for HA admin cluster control plane. + Structure is documented below. + """ + return pulumi.get(self, "ha_control_plane_config") + + @ha_control_plane_config.setter + def ha_control_plane_config(self, value: Optional[pulumi.Input['VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs']]): + pulumi.set(self, "ha_control_plane_config", value) + + @property + @pulumi.getter(name="hostConfig") + def host_config(self) -> Optional[pulumi.Input['VmwareAdminClusterNetworkConfigHostConfigArgs']]: + """ + Represents common network settings irrespective of the host's IP address. + Structure is documented below. + """ + return pulumi.get(self, "host_config") + + @host_config.setter + def host_config(self, value: Optional[pulumi.Input['VmwareAdminClusterNetworkConfigHostConfigArgs']]): + pulumi.set(self, "host_config", value) + + @property + @pulumi.getter(name="staticIpConfig") + def static_ip_config(self) -> Optional[pulumi.Input['VmwareAdminClusterNetworkConfigStaticIpConfigArgs']]: + """ + Configuration settings for a static IP configuration. + Structure is documented below. + """ + return pulumi.get(self, "static_ip_config") + + @static_ip_config.setter + def static_ip_config(self, value: Optional[pulumi.Input['VmwareAdminClusterNetworkConfigStaticIpConfigArgs']]): + pulumi.set(self, "static_ip_config", value) + + @property + @pulumi.getter(name="vcenterNetwork") + def vcenter_network(self) -> Optional[pulumi.Input[str]]: + """ + vcenter_network specifies vCenter network name. + """ + return pulumi.get(self, "vcenter_network") + + @vcenter_network.setter + def vcenter_network(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "vcenter_network", value) + + +if not MYPY: + class VmwareAdminClusterNetworkConfigDhcpIpConfigArgsDict(TypedDict): + enabled: pulumi.Input[bool] + """ + enabled is a flag to mark if DHCP IP allocation is + used for VMware admin clusters. + """ +elif False: + VmwareAdminClusterNetworkConfigDhcpIpConfigArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterNetworkConfigDhcpIpConfigArgs: + def __init__(__self__, *, + enabled: pulumi.Input[bool]): + """ + :param pulumi.Input[bool] enabled: enabled is a flag to mark if DHCP IP allocation is + used for VMware admin clusters. + """ + pulumi.set(__self__, "enabled", enabled) + + @property + @pulumi.getter + def enabled(self) -> pulumi.Input[bool]: + """ + enabled is a flag to mark if DHCP IP allocation is + used for VMware admin clusters. + """ + return pulumi.get(self, "enabled") + + @enabled.setter + def enabled(self, value: pulumi.Input[bool]): + pulumi.set(self, "enabled", value) + + +if not MYPY: + class VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgsDict(TypedDict): + control_plane_ip_block: NotRequired[pulumi.Input['VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgsDict']] + """ + Static IP addresses for the control plane nodes. + Structure is documented below. + """ +elif False: + VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs: + def __init__(__self__, *, + control_plane_ip_block: Optional[pulumi.Input['VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs']] = None): + """ + :param pulumi.Input['VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs'] control_plane_ip_block: Static IP addresses for the control plane nodes. + Structure is documented below. + """ + if control_plane_ip_block is not None: + pulumi.set(__self__, "control_plane_ip_block", control_plane_ip_block) + + @property + @pulumi.getter(name="controlPlaneIpBlock") + def control_plane_ip_block(self) -> Optional[pulumi.Input['VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs']]: + """ + Static IP addresses for the control plane nodes. + Structure is documented below. + """ + return pulumi.get(self, "control_plane_ip_block") + + @control_plane_ip_block.setter + def control_plane_ip_block(self, value: Optional[pulumi.Input['VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs']]): + pulumi.set(self, "control_plane_ip_block", value) + + +if not MYPY: + class VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgsDict(TypedDict): + gateway: pulumi.Input[str] + """ + The network gateway used by the VMware Admin Cluster. + """ + ips: pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgsDict']]] + """ + The node's network configurations used by the VMware Admin Cluster. + Structure is documented below. + """ + netmask: pulumi.Input[str] + """ + The netmask used by the VMware Admin Cluster. + """ +elif False: + VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs: + def __init__(__self__, *, + gateway: pulumi.Input[str], + ips: pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs']]], + netmask: pulumi.Input[str]): + """ + :param pulumi.Input[str] gateway: The network gateway used by the VMware Admin Cluster. + :param pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs']]] ips: The node's network configurations used by the VMware Admin Cluster. + Structure is documented below. + :param pulumi.Input[str] netmask: The netmask used by the VMware Admin Cluster. + """ + pulumi.set(__self__, "gateway", gateway) + pulumi.set(__self__, "ips", ips) + pulumi.set(__self__, "netmask", netmask) + + @property + @pulumi.getter + def gateway(self) -> pulumi.Input[str]: + """ + The network gateway used by the VMware Admin Cluster. + """ + return pulumi.get(self, "gateway") + + @gateway.setter + def gateway(self, value: pulumi.Input[str]): + pulumi.set(self, "gateway", value) + + @property + @pulumi.getter + def ips(self) -> pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs']]]: + """ + The node's network configurations used by the VMware Admin Cluster. + Structure is documented below. + """ + return pulumi.get(self, "ips") + + @ips.setter + def ips(self, value: pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs']]]): + pulumi.set(self, "ips", value) + + @property + @pulumi.getter + def netmask(self) -> pulumi.Input[str]: + """ + The netmask used by the VMware Admin Cluster. + """ + return pulumi.get(self, "netmask") + + @netmask.setter + def netmask(self, value: pulumi.Input[str]): + pulumi.set(self, "netmask", value) + + +if not MYPY: + class VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgsDict(TypedDict): + ip: pulumi.Input[str] + """ + IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + """ + hostname: NotRequired[pulumi.Input[str]] + """ + Hostname of the machine. VM's name will be used if this field is empty. + + - - - + """ +elif False: + VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs: + def __init__(__self__, *, + ip: pulumi.Input[str], + hostname: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] ip: IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + :param pulumi.Input[str] hostname: Hostname of the machine. VM's name will be used if this field is empty. + + - - - + """ + pulumi.set(__self__, "ip", ip) + if hostname is not None: + pulumi.set(__self__, "hostname", hostname) + + @property + @pulumi.getter + def ip(self) -> pulumi.Input[str]: + """ + IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + """ + return pulumi.get(self, "ip") + + @ip.setter + def ip(self, value: pulumi.Input[str]): + pulumi.set(self, "ip", value) + + @property + @pulumi.getter + def hostname(self) -> Optional[pulumi.Input[str]]: + """ + Hostname of the machine. VM's name will be used if this field is empty. + + - - - + """ + return pulumi.get(self, "hostname") + + @hostname.setter + def hostname(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "hostname", value) + + +if not MYPY: + class VmwareAdminClusterNetworkConfigHostConfigArgsDict(TypedDict): + dns_search_domains: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]] + """ + DNS search domains. + """ + dns_servers: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]] + """ + DNS servers. + """ + ntp_servers: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]] + """ + NTP servers. + """ +elif False: + VmwareAdminClusterNetworkConfigHostConfigArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterNetworkConfigHostConfigArgs: + def __init__(__self__, *, + dns_search_domains: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + dns_servers: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + ntp_servers: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None): + """ + :param pulumi.Input[Sequence[pulumi.Input[str]]] dns_search_domains: DNS search domains. + :param pulumi.Input[Sequence[pulumi.Input[str]]] dns_servers: DNS servers. + :param pulumi.Input[Sequence[pulumi.Input[str]]] ntp_servers: NTP servers. + """ + if dns_search_domains is not None: + pulumi.set(__self__, "dns_search_domains", dns_search_domains) + if dns_servers is not None: + pulumi.set(__self__, "dns_servers", dns_servers) + if ntp_servers is not None: + pulumi.set(__self__, "ntp_servers", ntp_servers) + + @property + @pulumi.getter(name="dnsSearchDomains") + def dns_search_domains(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + DNS search domains. + """ + return pulumi.get(self, "dns_search_domains") + + @dns_search_domains.setter + def dns_search_domains(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "dns_search_domains", value) + + @property + @pulumi.getter(name="dnsServers") + def dns_servers(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + DNS servers. + """ + return pulumi.get(self, "dns_servers") + + @dns_servers.setter + def dns_servers(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "dns_servers", value) + + @property + @pulumi.getter(name="ntpServers") + def ntp_servers(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + NTP servers. + """ + return pulumi.get(self, "ntp_servers") + + @ntp_servers.setter + def ntp_servers(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "ntp_servers", value) + + +if not MYPY: + class VmwareAdminClusterNetworkConfigStaticIpConfigArgsDict(TypedDict): + ip_blocks: NotRequired[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgsDict']]]] + """ + Represents the configuration values for static IP allocation to nodes. + Structure is documented below. + """ +elif False: + VmwareAdminClusterNetworkConfigStaticIpConfigArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterNetworkConfigStaticIpConfigArgs: + def __init__(__self__, *, + ip_blocks: Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs']]]] = None): + """ + :param pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs']]] ip_blocks: Represents the configuration values for static IP allocation to nodes. + Structure is documented below. + """ + if ip_blocks is not None: + pulumi.set(__self__, "ip_blocks", ip_blocks) + + @property + @pulumi.getter(name="ipBlocks") + def ip_blocks(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs']]]]: + """ + Represents the configuration values for static IP allocation to nodes. + Structure is documented below. + """ + return pulumi.get(self, "ip_blocks") + + @ip_blocks.setter + def ip_blocks(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs']]]]): + pulumi.set(self, "ip_blocks", value) + + +if not MYPY: + class VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgsDict(TypedDict): + gateway: pulumi.Input[str] + """ + The network gateway used by the VMware Admin Cluster. + """ + ips: pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgsDict']]] + """ + The node's network configurations used by the VMware Admin Cluster. + Structure is documented below. + """ + netmask: pulumi.Input[str] + """ + The netmask used by the VMware Admin Cluster. + """ +elif False: + VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs: + def __init__(__self__, *, + gateway: pulumi.Input[str], + ips: pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs']]], + netmask: pulumi.Input[str]): + """ + :param pulumi.Input[str] gateway: The network gateway used by the VMware Admin Cluster. + :param pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs']]] ips: The node's network configurations used by the VMware Admin Cluster. + Structure is documented below. + :param pulumi.Input[str] netmask: The netmask used by the VMware Admin Cluster. + """ + pulumi.set(__self__, "gateway", gateway) + pulumi.set(__self__, "ips", ips) + pulumi.set(__self__, "netmask", netmask) + + @property + @pulumi.getter + def gateway(self) -> pulumi.Input[str]: + """ + The network gateway used by the VMware Admin Cluster. + """ + return pulumi.get(self, "gateway") + + @gateway.setter + def gateway(self, value: pulumi.Input[str]): + pulumi.set(self, "gateway", value) + + @property + @pulumi.getter + def ips(self) -> pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs']]]: + """ + The node's network configurations used by the VMware Admin Cluster. + Structure is documented below. + """ + return pulumi.get(self, "ips") + + @ips.setter + def ips(self, value: pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs']]]): + pulumi.set(self, "ips", value) + + @property + @pulumi.getter + def netmask(self) -> pulumi.Input[str]: + """ + The netmask used by the VMware Admin Cluster. + """ + return pulumi.get(self, "netmask") + + @netmask.setter + def netmask(self, value: pulumi.Input[str]): + pulumi.set(self, "netmask", value) + + +if not MYPY: + class VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgsDict(TypedDict): + ip: pulumi.Input[str] + """ + IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + """ + hostname: NotRequired[pulumi.Input[str]] + """ + Hostname of the machine. VM's name will be used if this field is empty. + + - - - + """ +elif False: + VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs: + def __init__(__self__, *, + ip: pulumi.Input[str], + hostname: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] ip: IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + :param pulumi.Input[str] hostname: Hostname of the machine. VM's name will be used if this field is empty. + + - - - + """ + pulumi.set(__self__, "ip", ip) + if hostname is not None: + pulumi.set(__self__, "hostname", hostname) + + @property + @pulumi.getter + def ip(self) -> pulumi.Input[str]: + """ + IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + """ + return pulumi.get(self, "ip") + + @ip.setter + def ip(self, value: pulumi.Input[str]): + pulumi.set(self, "ip", value) + + @property + @pulumi.getter + def hostname(self) -> Optional[pulumi.Input[str]]: + """ + Hostname of the machine. VM's name will be used if this field is empty. + + - - - + """ + return pulumi.get(self, "hostname") + + @hostname.setter + def hostname(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "hostname", value) + + +if not MYPY: + class VmwareAdminClusterPlatformConfigArgsDict(TypedDict): + bundles: NotRequired[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterPlatformConfigBundleArgsDict']]]] + """ + (Output) + The list of bundles installed in the admin cluster. + Structure is documented below. + """ + platform_version: NotRequired[pulumi.Input[str]] + """ + (Output) + The platform version e.g. 1.13.2. + """ + required_platform_version: NotRequired[pulumi.Input[str]] + """ + The required platform version e.g. 1.13.1. + If the current platform version is lower than the target version, + the platform version will be updated to the target version. + If the target version is not installed in the platform + (bundle versions), download the target version bundle. + """ + statuses: NotRequired[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterPlatformConfigStatusArgsDict']]]] + """ + (Output) + ResourceStatus representing detailed cluster state. + Structure is documented below. + + + The `status` block contains: + """ +elif False: + VmwareAdminClusterPlatformConfigArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterPlatformConfigArgs: + def __init__(__self__, *, + bundles: Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterPlatformConfigBundleArgs']]]] = None, + platform_version: Optional[pulumi.Input[str]] = None, + required_platform_version: Optional[pulumi.Input[str]] = None, + statuses: Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterPlatformConfigStatusArgs']]]] = None): + """ + :param pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterPlatformConfigBundleArgs']]] bundles: (Output) + The list of bundles installed in the admin cluster. + Structure is documented below. + :param pulumi.Input[str] platform_version: (Output) + The platform version e.g. 1.13.2. + :param pulumi.Input[str] required_platform_version: The required platform version e.g. 1.13.1. + If the current platform version is lower than the target version, + the platform version will be updated to the target version. + If the target version is not installed in the platform + (bundle versions), download the target version bundle. + :param pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterPlatformConfigStatusArgs']]] statuses: (Output) + ResourceStatus representing detailed cluster state. + Structure is documented below. + + + The `status` block contains: + """ + if bundles is not None: + pulumi.set(__self__, "bundles", bundles) + if platform_version is not None: + pulumi.set(__self__, "platform_version", platform_version) + if required_platform_version is not None: + pulumi.set(__self__, "required_platform_version", required_platform_version) + if statuses is not None: + pulumi.set(__self__, "statuses", statuses) + + @property + @pulumi.getter + def bundles(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterPlatformConfigBundleArgs']]]]: + """ + (Output) + The list of bundles installed in the admin cluster. + Structure is documented below. + """ + return pulumi.get(self, "bundles") + + @bundles.setter + def bundles(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterPlatformConfigBundleArgs']]]]): + pulumi.set(self, "bundles", value) + + @property + @pulumi.getter(name="platformVersion") + def platform_version(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + The platform version e.g. 1.13.2. + """ + return pulumi.get(self, "platform_version") + + @platform_version.setter + def platform_version(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "platform_version", value) + + @property + @pulumi.getter(name="requiredPlatformVersion") + def required_platform_version(self) -> Optional[pulumi.Input[str]]: + """ + The required platform version e.g. 1.13.1. + If the current platform version is lower than the target version, + the platform version will be updated to the target version. + If the target version is not installed in the platform + (bundle versions), download the target version bundle. + """ + return pulumi.get(self, "required_platform_version") + + @required_platform_version.setter + def required_platform_version(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "required_platform_version", value) + + @property + @pulumi.getter + def statuses(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterPlatformConfigStatusArgs']]]]: + """ + (Output) + ResourceStatus representing detailed cluster state. + Structure is documented below. + + + The `status` block contains: + """ + return pulumi.get(self, "statuses") + + @statuses.setter + def statuses(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterPlatformConfigStatusArgs']]]]): + pulumi.set(self, "statuses", value) + + +if not MYPY: + class VmwareAdminClusterPlatformConfigBundleArgsDict(TypedDict): + statuses: NotRequired[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterPlatformConfigBundleStatusArgsDict']]]] + """ + ResourceStatus representing detailed cluster state. + Structure is documented below. + """ + version: NotRequired[pulumi.Input[str]] + """ + The version of the bundle. + """ +elif False: + VmwareAdminClusterPlatformConfigBundleArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterPlatformConfigBundleArgs: + def __init__(__self__, *, + statuses: Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterPlatformConfigBundleStatusArgs']]]] = None, + version: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterPlatformConfigBundleStatusArgs']]] statuses: ResourceStatus representing detailed cluster state. + Structure is documented below. + :param pulumi.Input[str] version: The version of the bundle. + """ + if statuses is not None: + pulumi.set(__self__, "statuses", statuses) + if version is not None: + pulumi.set(__self__, "version", version) + + @property + @pulumi.getter + def statuses(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterPlatformConfigBundleStatusArgs']]]]: + """ + ResourceStatus representing detailed cluster state. + Structure is documented below. + """ + return pulumi.get(self, "statuses") + + @statuses.setter + def statuses(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterPlatformConfigBundleStatusArgs']]]]): + pulumi.set(self, "statuses", value) + + @property + @pulumi.getter + def version(self) -> Optional[pulumi.Input[str]]: + """ + The version of the bundle. + """ + return pulumi.get(self, "version") + + @version.setter + def version(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "version", value) + + +if not MYPY: + class VmwareAdminClusterPlatformConfigBundleStatusArgsDict(TypedDict): + conditions: NotRequired[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterPlatformConfigBundleStatusConditionArgsDict']]]] + """ + (Output) + ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + Structure is documented below. + """ + error_message: NotRequired[pulumi.Input[str]] + """ + (Output) + Human-friendly representation of the error message from the admin cluster + controller. The error message can be temporary as the admin cluster + controller creates a cluster or node pool. If the error message persists + for a longer period of time, it can be used to surface error message to + indicate real problems requiring user intervention. + """ +elif False: + VmwareAdminClusterPlatformConfigBundleStatusArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterPlatformConfigBundleStatusArgs: + def __init__(__self__, *, + conditions: Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterPlatformConfigBundleStatusConditionArgs']]]] = None, + error_message: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterPlatformConfigBundleStatusConditionArgs']]] conditions: (Output) + ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + Structure is documented below. + :param pulumi.Input[str] error_message: (Output) + Human-friendly representation of the error message from the admin cluster + controller. The error message can be temporary as the admin cluster + controller creates a cluster or node pool. If the error message persists + for a longer period of time, it can be used to surface error message to + indicate real problems requiring user intervention. + """ + if conditions is not None: + pulumi.set(__self__, "conditions", conditions) + if error_message is not None: + pulumi.set(__self__, "error_message", error_message) + + @property + @pulumi.getter + def conditions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterPlatformConfigBundleStatusConditionArgs']]]]: + """ + (Output) + ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + Structure is documented below. + """ + return pulumi.get(self, "conditions") + + @conditions.setter + def conditions(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterPlatformConfigBundleStatusConditionArgs']]]]): + pulumi.set(self, "conditions", value) + + @property + @pulumi.getter(name="errorMessage") + def error_message(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + Human-friendly representation of the error message from the admin cluster + controller. The error message can be temporary as the admin cluster + controller creates a cluster or node pool. If the error message persists + for a longer period of time, it can be used to surface error message to + indicate real problems requiring user intervention. + """ + return pulumi.get(self, "error_message") + + @error_message.setter + def error_message(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "error_message", value) + + +if not MYPY: + class VmwareAdminClusterPlatformConfigBundleStatusConditionArgsDict(TypedDict): + last_transition_time: NotRequired[pulumi.Input[str]] + """ + (Output) + Last time the condition transit from one status to another. + """ + message: NotRequired[pulumi.Input[str]] + """ + (Output) + Human-readable message indicating details about last transition. + """ + reason: NotRequired[pulumi.Input[str]] + """ + (Output) + Machine-readable message indicating details about last transition. + """ + state: NotRequired[pulumi.Input[str]] + """ + (Output) + The lifecycle state of the condition. + """ + type: NotRequired[pulumi.Input[str]] + """ + (Output) + Type of the condition. + (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + """ +elif False: + VmwareAdminClusterPlatformConfigBundleStatusConditionArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterPlatformConfigBundleStatusConditionArgs: + def __init__(__self__, *, + last_transition_time: Optional[pulumi.Input[str]] = None, + message: Optional[pulumi.Input[str]] = None, + reason: Optional[pulumi.Input[str]] = None, + state: Optional[pulumi.Input[str]] = None, + type: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] last_transition_time: (Output) + Last time the condition transit from one status to another. + :param pulumi.Input[str] message: (Output) + Human-readable message indicating details about last transition. + :param pulumi.Input[str] reason: (Output) + Machine-readable message indicating details about last transition. + :param pulumi.Input[str] state: (Output) + The lifecycle state of the condition. + :param pulumi.Input[str] type: (Output) + Type of the condition. + (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + """ + if last_transition_time is not None: + pulumi.set(__self__, "last_transition_time", last_transition_time) + if message is not None: + pulumi.set(__self__, "message", message) + if reason is not None: + pulumi.set(__self__, "reason", reason) + if state is not None: + pulumi.set(__self__, "state", state) + if type is not None: + pulumi.set(__self__, "type", type) + + @property + @pulumi.getter(name="lastTransitionTime") + def last_transition_time(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + Last time the condition transit from one status to another. + """ + return pulumi.get(self, "last_transition_time") + + @last_transition_time.setter + def last_transition_time(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "last_transition_time", value) + + @property + @pulumi.getter + def message(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + Human-readable message indicating details about last transition. + """ + return pulumi.get(self, "message") + + @message.setter + def message(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "message", value) + + @property + @pulumi.getter + def reason(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + Machine-readable message indicating details about last transition. + """ + return pulumi.get(self, "reason") + + @reason.setter + def reason(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "reason", value) + + @property + @pulumi.getter + def state(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + The lifecycle state of the condition. + """ + return pulumi.get(self, "state") + + @state.setter + def state(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "state", value) + + @property + @pulumi.getter + def type(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + Type of the condition. + (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + """ + return pulumi.get(self, "type") + + @type.setter + def type(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "type", value) + + +if not MYPY: + class VmwareAdminClusterPlatformConfigStatusArgsDict(TypedDict): + conditions: NotRequired[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterPlatformConfigStatusConditionArgsDict']]]] + """ + (Output) + ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + Structure is documented below. + """ + error_message: NotRequired[pulumi.Input[str]] + """ + (Output) + Human-friendly representation of the error message from the admin cluster + controller. The error message can be temporary as the admin cluster + controller creates a cluster or node pool. If the error message persists + for a longer period of time, it can be used to surface error message to + indicate real problems requiring user intervention. + """ +elif False: + VmwareAdminClusterPlatformConfigStatusArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterPlatformConfigStatusArgs: + def __init__(__self__, *, + conditions: Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterPlatformConfigStatusConditionArgs']]]] = None, + error_message: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterPlatformConfigStatusConditionArgs']]] conditions: (Output) + ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + Structure is documented below. + :param pulumi.Input[str] error_message: (Output) + Human-friendly representation of the error message from the admin cluster + controller. The error message can be temporary as the admin cluster + controller creates a cluster or node pool. If the error message persists + for a longer period of time, it can be used to surface error message to + indicate real problems requiring user intervention. + """ + if conditions is not None: + pulumi.set(__self__, "conditions", conditions) + if error_message is not None: + pulumi.set(__self__, "error_message", error_message) + + @property + @pulumi.getter + def conditions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterPlatformConfigStatusConditionArgs']]]]: + """ + (Output) + ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + Structure is documented below. + """ + return pulumi.get(self, "conditions") + + @conditions.setter + def conditions(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterPlatformConfigStatusConditionArgs']]]]): + pulumi.set(self, "conditions", value) + + @property + @pulumi.getter(name="errorMessage") + def error_message(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + Human-friendly representation of the error message from the admin cluster + controller. The error message can be temporary as the admin cluster + controller creates a cluster or node pool. If the error message persists + for a longer period of time, it can be used to surface error message to + indicate real problems requiring user intervention. + """ + return pulumi.get(self, "error_message") + + @error_message.setter + def error_message(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "error_message", value) + + +if not MYPY: + class VmwareAdminClusterPlatformConfigStatusConditionArgsDict(TypedDict): + last_transition_time: NotRequired[pulumi.Input[str]] + """ + (Output) + Last time the condition transit from one status to another. + """ + message: NotRequired[pulumi.Input[str]] + """ + (Output) + Human-readable message indicating details about last transition. + """ + reason: NotRequired[pulumi.Input[str]] + """ + (Output) + Machine-readable message indicating details about last transition. + """ + state: NotRequired[pulumi.Input[str]] + """ + (Output) + The lifecycle state of the condition. + """ + type: NotRequired[pulumi.Input[str]] + """ + (Output) + Type of the condition. + (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + """ +elif False: + VmwareAdminClusterPlatformConfigStatusConditionArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterPlatformConfigStatusConditionArgs: + def __init__(__self__, *, + last_transition_time: Optional[pulumi.Input[str]] = None, + message: Optional[pulumi.Input[str]] = None, + reason: Optional[pulumi.Input[str]] = None, + state: Optional[pulumi.Input[str]] = None, + type: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] last_transition_time: (Output) + Last time the condition transit from one status to another. + :param pulumi.Input[str] message: (Output) + Human-readable message indicating details about last transition. + :param pulumi.Input[str] reason: (Output) + Machine-readable message indicating details about last transition. + :param pulumi.Input[str] state: (Output) + The lifecycle state of the condition. + :param pulumi.Input[str] type: (Output) + Type of the condition. + (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + """ + if last_transition_time is not None: + pulumi.set(__self__, "last_transition_time", last_transition_time) + if message is not None: + pulumi.set(__self__, "message", message) + if reason is not None: + pulumi.set(__self__, "reason", reason) + if state is not None: + pulumi.set(__self__, "state", state) + if type is not None: + pulumi.set(__self__, "type", type) + + @property + @pulumi.getter(name="lastTransitionTime") + def last_transition_time(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + Last time the condition transit from one status to another. + """ + return pulumi.get(self, "last_transition_time") + + @last_transition_time.setter + def last_transition_time(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "last_transition_time", value) + + @property + @pulumi.getter + def message(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + Human-readable message indicating details about last transition. + """ + return pulumi.get(self, "message") + + @message.setter + def message(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "message", value) + + @property + @pulumi.getter + def reason(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + Machine-readable message indicating details about last transition. + """ + return pulumi.get(self, "reason") + + @reason.setter + def reason(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "reason", value) + + @property + @pulumi.getter + def state(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + The lifecycle state of the condition. + """ + return pulumi.get(self, "state") + + @state.setter + def state(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "state", value) + + @property + @pulumi.getter + def type(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + Type of the condition. + (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + """ + return pulumi.get(self, "type") + + @type.setter + def type(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "type", value) + + +if not MYPY: + class VmwareAdminClusterStatusArgsDict(TypedDict): + conditions: NotRequired[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterStatusConditionArgsDict']]]] + """ + (Output) + ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + Structure is documented below. + """ + error_message: NotRequired[pulumi.Input[str]] + """ + (Output) + Human-friendly representation of the error message from the admin cluster + controller. The error message can be temporary as the admin cluster + controller creates a cluster or node pool. If the error message persists + for a longer period of time, it can be used to surface error message to + indicate real problems requiring user intervention. + """ +elif False: + VmwareAdminClusterStatusArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterStatusArgs: + def __init__(__self__, *, + conditions: Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterStatusConditionArgs']]]] = None, + error_message: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterStatusConditionArgs']]] conditions: (Output) + ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + Structure is documented below. + :param pulumi.Input[str] error_message: (Output) + Human-friendly representation of the error message from the admin cluster + controller. The error message can be temporary as the admin cluster + controller creates a cluster or node pool. If the error message persists + for a longer period of time, it can be used to surface error message to + indicate real problems requiring user intervention. + """ + if conditions is not None: + pulumi.set(__self__, "conditions", conditions) + if error_message is not None: + pulumi.set(__self__, "error_message", error_message) + + @property + @pulumi.getter + def conditions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterStatusConditionArgs']]]]: + """ + (Output) + ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + Structure is documented below. + """ + return pulumi.get(self, "conditions") + + @conditions.setter + def conditions(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterStatusConditionArgs']]]]): + pulumi.set(self, "conditions", value) + + @property + @pulumi.getter(name="errorMessage") + def error_message(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + Human-friendly representation of the error message from the admin cluster + controller. The error message can be temporary as the admin cluster + controller creates a cluster or node pool. If the error message persists + for a longer period of time, it can be used to surface error message to + indicate real problems requiring user intervention. + """ + return pulumi.get(self, "error_message") + + @error_message.setter + def error_message(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "error_message", value) + + +if not MYPY: + class VmwareAdminClusterStatusConditionArgsDict(TypedDict): + last_transition_time: NotRequired[pulumi.Input[str]] + """ + (Output) + Last time the condition transit from one status to another. + """ + message: NotRequired[pulumi.Input[str]] + """ + (Output) + Human-readable message indicating details about last transition. + """ + reason: NotRequired[pulumi.Input[str]] + """ + (Output) + Machine-readable message indicating details about last transition. + """ + state: NotRequired[pulumi.Input[str]] + """ + (Output) + The lifecycle state of the condition. + """ + type: NotRequired[pulumi.Input[str]] + """ + (Output) + Type of the condition. + (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + """ +elif False: + VmwareAdminClusterStatusConditionArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterStatusConditionArgs: + def __init__(__self__, *, + last_transition_time: Optional[pulumi.Input[str]] = None, + message: Optional[pulumi.Input[str]] = None, + reason: Optional[pulumi.Input[str]] = None, + state: Optional[pulumi.Input[str]] = None, + type: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] last_transition_time: (Output) + Last time the condition transit from one status to another. + :param pulumi.Input[str] message: (Output) + Human-readable message indicating details about last transition. + :param pulumi.Input[str] reason: (Output) + Machine-readable message indicating details about last transition. + :param pulumi.Input[str] state: (Output) + The lifecycle state of the condition. + :param pulumi.Input[str] type: (Output) + Type of the condition. + (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + """ + if last_transition_time is not None: + pulumi.set(__self__, "last_transition_time", last_transition_time) + if message is not None: + pulumi.set(__self__, "message", message) + if reason is not None: + pulumi.set(__self__, "reason", reason) + if state is not None: + pulumi.set(__self__, "state", state) + if type is not None: + pulumi.set(__self__, "type", type) + + @property + @pulumi.getter(name="lastTransitionTime") + def last_transition_time(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + Last time the condition transit from one status to another. + """ + return pulumi.get(self, "last_transition_time") + + @last_transition_time.setter + def last_transition_time(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "last_transition_time", value) + + @property + @pulumi.getter + def message(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + Human-readable message indicating details about last transition. + """ + return pulumi.get(self, "message") + + @message.setter + def message(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "message", value) + + @property + @pulumi.getter + def reason(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + Machine-readable message indicating details about last transition. + """ + return pulumi.get(self, "reason") + + @reason.setter + def reason(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "reason", value) + + @property + @pulumi.getter + def state(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + The lifecycle state of the condition. + """ + return pulumi.get(self, "state") + + @state.setter + def state(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "state", value) + + @property + @pulumi.getter + def type(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + Type of the condition. + (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + """ + return pulumi.get(self, "type") + + @type.setter + def type(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "type", value) + + +if not MYPY: + class VmwareAdminClusterVcenterArgsDict(TypedDict): + address: NotRequired[pulumi.Input[str]] + """ + The vCenter IP address. + """ + ca_cert_data: NotRequired[pulumi.Input[str]] + """ + Contains the vCenter CA certificate public key for SSL verification. + """ + cluster: NotRequired[pulumi.Input[str]] + """ + The name of the vCenter cluster for the admin cluster. + """ + data_disk: NotRequired[pulumi.Input[str]] + """ + The name of the virtual machine disk (VMDK) for the admin cluster. + """ + datacenter: NotRequired[pulumi.Input[str]] + """ + The name of the vCenter datacenter for the admin cluster. + """ + datastore: NotRequired[pulumi.Input[str]] + """ + The name of the vCenter datastore for the admin cluster. + """ + folder: NotRequired[pulumi.Input[str]] + """ + The name of the vCenter folder for the admin cluster. + """ + resource_pool: NotRequired[pulumi.Input[str]] + """ + The name of the vCenter resource pool for the admin cluster. + """ + storage_policy_name: NotRequired[pulumi.Input[str]] + """ + The name of the vCenter storage policy for the user cluster. + """ +elif False: + VmwareAdminClusterVcenterArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class VmwareAdminClusterVcenterArgs: + def __init__(__self__, *, + address: Optional[pulumi.Input[str]] = None, + ca_cert_data: Optional[pulumi.Input[str]] = None, + cluster: Optional[pulumi.Input[str]] = None, + data_disk: Optional[pulumi.Input[str]] = None, + datacenter: Optional[pulumi.Input[str]] = None, + datastore: Optional[pulumi.Input[str]] = None, + folder: Optional[pulumi.Input[str]] = None, + resource_pool: Optional[pulumi.Input[str]] = None, + storage_policy_name: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] address: The vCenter IP address. + :param pulumi.Input[str] ca_cert_data: Contains the vCenter CA certificate public key for SSL verification. + :param pulumi.Input[str] cluster: The name of the vCenter cluster for the admin cluster. + :param pulumi.Input[str] data_disk: The name of the virtual machine disk (VMDK) for the admin cluster. + :param pulumi.Input[str] datacenter: The name of the vCenter datacenter for the admin cluster. + :param pulumi.Input[str] datastore: The name of the vCenter datastore for the admin cluster. + :param pulumi.Input[str] folder: The name of the vCenter folder for the admin cluster. + :param pulumi.Input[str] resource_pool: The name of the vCenter resource pool for the admin cluster. + :param pulumi.Input[str] storage_policy_name: The name of the vCenter storage policy for the user cluster. + """ + if address is not None: + pulumi.set(__self__, "address", address) + if ca_cert_data is not None: + pulumi.set(__self__, "ca_cert_data", ca_cert_data) + if cluster is not None: + pulumi.set(__self__, "cluster", cluster) + if data_disk is not None: + pulumi.set(__self__, "data_disk", data_disk) + if datacenter is not None: + pulumi.set(__self__, "datacenter", datacenter) + if datastore is not None: + pulumi.set(__self__, "datastore", datastore) + if folder is not None: + pulumi.set(__self__, "folder", folder) + if resource_pool is not None: + pulumi.set(__self__, "resource_pool", resource_pool) + if storage_policy_name is not None: + pulumi.set(__self__, "storage_policy_name", storage_policy_name) + + @property + @pulumi.getter + def address(self) -> Optional[pulumi.Input[str]]: + """ + The vCenter IP address. + """ + return pulumi.get(self, "address") + + @address.setter + def address(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "address", value) + + @property + @pulumi.getter(name="caCertData") + def ca_cert_data(self) -> Optional[pulumi.Input[str]]: + """ + Contains the vCenter CA certificate public key for SSL verification. + """ + return pulumi.get(self, "ca_cert_data") + + @ca_cert_data.setter + def ca_cert_data(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "ca_cert_data", value) + + @property + @pulumi.getter + def cluster(self) -> Optional[pulumi.Input[str]]: + """ + The name of the vCenter cluster for the admin cluster. + """ + return pulumi.get(self, "cluster") + + @cluster.setter + def cluster(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "cluster", value) + + @property + @pulumi.getter(name="dataDisk") + def data_disk(self) -> Optional[pulumi.Input[str]]: + """ + The name of the virtual machine disk (VMDK) for the admin cluster. + """ + return pulumi.get(self, "data_disk") + + @data_disk.setter + def data_disk(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "data_disk", value) + + @property + @pulumi.getter + def datacenter(self) -> Optional[pulumi.Input[str]]: + """ + The name of the vCenter datacenter for the admin cluster. + """ + return pulumi.get(self, "datacenter") + + @datacenter.setter + def datacenter(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "datacenter", value) + + @property + @pulumi.getter + def datastore(self) -> Optional[pulumi.Input[str]]: + """ + The name of the vCenter datastore for the admin cluster. + """ + return pulumi.get(self, "datastore") + + @datastore.setter + def datastore(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "datastore", value) + + @property + @pulumi.getter + def folder(self) -> Optional[pulumi.Input[str]]: + """ + The name of the vCenter folder for the admin cluster. + """ + return pulumi.get(self, "folder") + + @folder.setter + def folder(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "folder", value) + + @property + @pulumi.getter(name="resourcePool") + def resource_pool(self) -> Optional[pulumi.Input[str]]: + """ + The name of the vCenter resource pool for the admin cluster. + """ + return pulumi.get(self, "resource_pool") + + @resource_pool.setter + def resource_pool(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "resource_pool", value) + + @property + @pulumi.getter(name="storagePolicyName") + def storage_policy_name(self) -> Optional[pulumi.Input[str]]: + """ + The name of the vCenter storage policy for the user cluster. + """ + return pulumi.get(self, "storage_policy_name") + + @storage_policy_name.setter + def storage_policy_name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "storage_policy_name", value) + + diff --git a/sdk/python/pulumi_gcp/gkeonprem/outputs.py b/sdk/python/pulumi_gcp/gkeonprem/outputs.py index 718eae130a..3c2444a804 100644 --- a/sdk/python/pulumi_gcp/gkeonprem/outputs.py +++ b/sdk/python/pulumi_gcp/gkeonprem/outputs.py @@ -139,6 +139,37 @@ 'VMwareNodePoolNodePoolAutoscaling', 'VMwareNodePoolStatus', 'VMwareNodePoolStatusCondition', + 'VmwareAdminClusterAddonNode', + 'VmwareAdminClusterAddonNodeAutoResizeConfig', + 'VmwareAdminClusterAntiAffinityGroups', + 'VmwareAdminClusterAuthorization', + 'VmwareAdminClusterAuthorizationViewerUser', + 'VmwareAdminClusterAutoRepairConfig', + 'VmwareAdminClusterControlPlaneNode', + 'VmwareAdminClusterFleet', + 'VmwareAdminClusterLoadBalancer', + 'VmwareAdminClusterLoadBalancerF5Config', + 'VmwareAdminClusterLoadBalancerManualLbConfig', + 'VmwareAdminClusterLoadBalancerMetalLbConfig', + 'VmwareAdminClusterLoadBalancerVipConfig', + 'VmwareAdminClusterNetworkConfig', + 'VmwareAdminClusterNetworkConfigDhcpIpConfig', + 'VmwareAdminClusterNetworkConfigHaControlPlaneConfig', + 'VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock', + 'VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp', + 'VmwareAdminClusterNetworkConfigHostConfig', + 'VmwareAdminClusterNetworkConfigStaticIpConfig', + 'VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock', + 'VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp', + 'VmwareAdminClusterPlatformConfig', + 'VmwareAdminClusterPlatformConfigBundle', + 'VmwareAdminClusterPlatformConfigBundleStatus', + 'VmwareAdminClusterPlatformConfigBundleStatusCondition', + 'VmwareAdminClusterPlatformConfigStatus', + 'VmwareAdminClusterPlatformConfigStatusCondition', + 'VmwareAdminClusterStatus', + 'VmwareAdminClusterStatusCondition', + 'VmwareAdminClusterVcenter', ] @pulumi.output_type @@ -6769,3 +6800,1752 @@ def type(self) -> Optional[str]: return pulumi.get(self, "type") +@pulumi.output_type +class VmwareAdminClusterAddonNode(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "autoResizeConfig": + suggest = "auto_resize_config" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in VmwareAdminClusterAddonNode. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + VmwareAdminClusterAddonNode.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + VmwareAdminClusterAddonNode.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + auto_resize_config: Optional['outputs.VmwareAdminClusterAddonNodeAutoResizeConfig'] = None): + """ + :param 'VmwareAdminClusterAddonNodeAutoResizeConfigArgs' auto_resize_config: Specifies auto resize config. + Structure is documented below. + """ + if auto_resize_config is not None: + pulumi.set(__self__, "auto_resize_config", auto_resize_config) + + @property + @pulumi.getter(name="autoResizeConfig") + def auto_resize_config(self) -> Optional['outputs.VmwareAdminClusterAddonNodeAutoResizeConfig']: + """ + Specifies auto resize config. + Structure is documented below. + """ + return pulumi.get(self, "auto_resize_config") + + +@pulumi.output_type +class VmwareAdminClusterAddonNodeAutoResizeConfig(dict): + def __init__(__self__, *, + enabled: bool): + """ + :param bool enabled: Whether to enable controle plane node auto resizing. + """ + pulumi.set(__self__, "enabled", enabled) + + @property + @pulumi.getter + def enabled(self) -> bool: + """ + Whether to enable controle plane node auto resizing. + """ + return pulumi.get(self, "enabled") + + +@pulumi.output_type +class VmwareAdminClusterAntiAffinityGroups(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "aagConfigDisabled": + suggest = "aag_config_disabled" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in VmwareAdminClusterAntiAffinityGroups. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + VmwareAdminClusterAntiAffinityGroups.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + VmwareAdminClusterAntiAffinityGroups.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + aag_config_disabled: bool): + """ + :param bool aag_config_disabled: Spread nodes across at least three physical hosts (requires at least three + hosts). + Enabled by default. + """ + pulumi.set(__self__, "aag_config_disabled", aag_config_disabled) + + @property + @pulumi.getter(name="aagConfigDisabled") + def aag_config_disabled(self) -> bool: + """ + Spread nodes across at least three physical hosts (requires at least three + hosts). + Enabled by default. + """ + return pulumi.get(self, "aag_config_disabled") + + +@pulumi.output_type +class VmwareAdminClusterAuthorization(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "viewerUsers": + suggest = "viewer_users" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in VmwareAdminClusterAuthorization. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + VmwareAdminClusterAuthorization.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + VmwareAdminClusterAuthorization.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + viewer_users: Optional[Sequence['outputs.VmwareAdminClusterAuthorizationViewerUser']] = None): + """ + :param Sequence['VmwareAdminClusterAuthorizationViewerUserArgs'] viewer_users: Users that will be granted the cluster-admin role on the cluster, providing + full access to the cluster. + Structure is documented below. + """ + if viewer_users is not None: + pulumi.set(__self__, "viewer_users", viewer_users) + + @property + @pulumi.getter(name="viewerUsers") + def viewer_users(self) -> Optional[Sequence['outputs.VmwareAdminClusterAuthorizationViewerUser']]: + """ + Users that will be granted the cluster-admin role on the cluster, providing + full access to the cluster. + Structure is documented below. + """ + return pulumi.get(self, "viewer_users") + + +@pulumi.output_type +class VmwareAdminClusterAuthorizationViewerUser(dict): + def __init__(__self__, *, + username: str): + """ + :param str username: The name of the user, e.g. `my-gcp-id@gmail.com`. + """ + pulumi.set(__self__, "username", username) + + @property + @pulumi.getter + def username(self) -> str: + """ + The name of the user, e.g. `my-gcp-id@gmail.com`. + """ + return pulumi.get(self, "username") + + +@pulumi.output_type +class VmwareAdminClusterAutoRepairConfig(dict): + def __init__(__self__, *, + enabled: bool): + """ + :param bool enabled: Whether auto repair is enabled. + """ + pulumi.set(__self__, "enabled", enabled) + + @property + @pulumi.getter + def enabled(self) -> bool: + """ + Whether auto repair is enabled. + """ + return pulumi.get(self, "enabled") + + +@pulumi.output_type +class VmwareAdminClusterControlPlaneNode(dict): + def __init__(__self__, *, + cpus: Optional[int] = None, + memory: Optional[int] = None, + replicas: Optional[int] = None): + """ + :param int cpus: The number of vCPUs for the control-plane node of the admin cluster. + :param int memory: The number of mebibytes of memory for the control-plane node of the admin cluster. + :param int replicas: The number of control plane nodes for this VMware admin cluster. + """ + if cpus is not None: + pulumi.set(__self__, "cpus", cpus) + if memory is not None: + pulumi.set(__self__, "memory", memory) + if replicas is not None: + pulumi.set(__self__, "replicas", replicas) + + @property + @pulumi.getter + def cpus(self) -> Optional[int]: + """ + The number of vCPUs for the control-plane node of the admin cluster. + """ + return pulumi.get(self, "cpus") + + @property + @pulumi.getter + def memory(self) -> Optional[int]: + """ + The number of mebibytes of memory for the control-plane node of the admin cluster. + """ + return pulumi.get(self, "memory") + + @property + @pulumi.getter + def replicas(self) -> Optional[int]: + """ + The number of control plane nodes for this VMware admin cluster. + """ + return pulumi.get(self, "replicas") + + +@pulumi.output_type +class VmwareAdminClusterFleet(dict): + def __init__(__self__, *, + membership: Optional[str] = None): + """ + :param str membership: (Output) + The name of the managed Fleet Membership resource associated to this cluster. + Membership names are formatted as + `projects//locations//memberships/`. + """ + if membership is not None: + pulumi.set(__self__, "membership", membership) + + @property + @pulumi.getter + def membership(self) -> Optional[str]: + """ + (Output) + The name of the managed Fleet Membership resource associated to this cluster. + Membership names are formatted as + `projects//locations//memberships/`. + """ + return pulumi.get(self, "membership") + + +@pulumi.output_type +class VmwareAdminClusterLoadBalancer(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "vipConfig": + suggest = "vip_config" + elif key == "f5Config": + suggest = "f5_config" + elif key == "manualLbConfig": + suggest = "manual_lb_config" + elif key == "metalLbConfig": + suggest = "metal_lb_config" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in VmwareAdminClusterLoadBalancer. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + VmwareAdminClusterLoadBalancer.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + VmwareAdminClusterLoadBalancer.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + vip_config: 'outputs.VmwareAdminClusterLoadBalancerVipConfig', + f5_config: Optional['outputs.VmwareAdminClusterLoadBalancerF5Config'] = None, + manual_lb_config: Optional['outputs.VmwareAdminClusterLoadBalancerManualLbConfig'] = None, + metal_lb_config: Optional['outputs.VmwareAdminClusterLoadBalancerMetalLbConfig'] = None): + """ + :param 'VmwareAdminClusterLoadBalancerVipConfigArgs' vip_config: Specified the VMware Load Balancer Config + Structure is documented below. + :param 'VmwareAdminClusterLoadBalancerF5ConfigArgs' f5_config: Configuration for F5 Big IP typed load balancers. + Structure is documented below. + :param 'VmwareAdminClusterLoadBalancerManualLbConfigArgs' manual_lb_config: Manually configured load balancers. + Structure is documented below. + :param 'VmwareAdminClusterLoadBalancerMetalLbConfigArgs' metal_lb_config: Metal LB load balancers. + Structure is documented below. + """ + pulumi.set(__self__, "vip_config", vip_config) + if f5_config is not None: + pulumi.set(__self__, "f5_config", f5_config) + if manual_lb_config is not None: + pulumi.set(__self__, "manual_lb_config", manual_lb_config) + if metal_lb_config is not None: + pulumi.set(__self__, "metal_lb_config", metal_lb_config) + + @property + @pulumi.getter(name="vipConfig") + def vip_config(self) -> 'outputs.VmwareAdminClusterLoadBalancerVipConfig': + """ + Specified the VMware Load Balancer Config + Structure is documented below. + """ + return pulumi.get(self, "vip_config") + + @property + @pulumi.getter(name="f5Config") + def f5_config(self) -> Optional['outputs.VmwareAdminClusterLoadBalancerF5Config']: + """ + Configuration for F5 Big IP typed load balancers. + Structure is documented below. + """ + return pulumi.get(self, "f5_config") + + @property + @pulumi.getter(name="manualLbConfig") + def manual_lb_config(self) -> Optional['outputs.VmwareAdminClusterLoadBalancerManualLbConfig']: + """ + Manually configured load balancers. + Structure is documented below. + """ + return pulumi.get(self, "manual_lb_config") + + @property + @pulumi.getter(name="metalLbConfig") + def metal_lb_config(self) -> Optional['outputs.VmwareAdminClusterLoadBalancerMetalLbConfig']: + """ + Metal LB load balancers. + Structure is documented below. + """ + return pulumi.get(self, "metal_lb_config") + + +@pulumi.output_type +class VmwareAdminClusterLoadBalancerF5Config(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "snatPool": + suggest = "snat_pool" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in VmwareAdminClusterLoadBalancerF5Config. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + VmwareAdminClusterLoadBalancerF5Config.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + VmwareAdminClusterLoadBalancerF5Config.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + address: Optional[str] = None, + partition: Optional[str] = None, + snat_pool: Optional[str] = None): + """ + :param str address: The load balancer's IP address. + :param str partition: 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'. + :param str snat_pool: The pool name. Only necessary, if using SNAT. + """ + if address is not None: + pulumi.set(__self__, "address", address) + if partition is not None: + pulumi.set(__self__, "partition", partition) + if snat_pool is not None: + pulumi.set(__self__, "snat_pool", snat_pool) + + @property + @pulumi.getter + def address(self) -> Optional[str]: + """ + The load balancer's IP address. + """ + return pulumi.get(self, "address") + + @property + @pulumi.getter + def partition(self) -> Optional[str]: + """ + 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'. + """ + return pulumi.get(self, "partition") + + @property + @pulumi.getter(name="snatPool") + def snat_pool(self) -> Optional[str]: + """ + The pool name. Only necessary, if using SNAT. + """ + return pulumi.get(self, "snat_pool") + + +@pulumi.output_type +class VmwareAdminClusterLoadBalancerManualLbConfig(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "addonsNodePort": + suggest = "addons_node_port" + elif key == "controlPlaneNodePort": + suggest = "control_plane_node_port" + elif key == "ingressHttpNodePort": + suggest = "ingress_http_node_port" + elif key == "ingressHttpsNodePort": + suggest = "ingress_https_node_port" + elif key == "konnectivityServerNodePort": + suggest = "konnectivity_server_node_port" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in VmwareAdminClusterLoadBalancerManualLbConfig. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + VmwareAdminClusterLoadBalancerManualLbConfig.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + VmwareAdminClusterLoadBalancerManualLbConfig.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + addons_node_port: Optional[int] = None, + control_plane_node_port: Optional[int] = None, + ingress_http_node_port: Optional[int] = None, + ingress_https_node_port: Optional[int] = None, + konnectivity_server_node_port: Optional[int] = None): + """ + :param int addons_node_port: NodePort for add-ons server in the admin cluster. + :param int control_plane_node_port: NodePort for control plane service. The Kubernetes API server in the admin + cluster is implemented as a Service of type NodePort (ex. 30968). + :param int ingress_http_node_port: NodePort for ingress service's http. The ingress service in the admin + cluster is implemented as a Service of type NodePort (ex. 32527). + :param int ingress_https_node_port: NodePort for ingress service's https. The ingress service in the admin + cluster is implemented as a Service of type NodePort (ex. 30139). + :param int konnectivity_server_node_port: NodePort for konnectivity server service running as a sidecar in each + kube-apiserver pod (ex. 30564). + """ + if addons_node_port is not None: + pulumi.set(__self__, "addons_node_port", addons_node_port) + if control_plane_node_port is not None: + pulumi.set(__self__, "control_plane_node_port", control_plane_node_port) + if ingress_http_node_port is not None: + pulumi.set(__self__, "ingress_http_node_port", ingress_http_node_port) + if ingress_https_node_port is not None: + pulumi.set(__self__, "ingress_https_node_port", ingress_https_node_port) + if konnectivity_server_node_port is not None: + pulumi.set(__self__, "konnectivity_server_node_port", konnectivity_server_node_port) + + @property + @pulumi.getter(name="addonsNodePort") + def addons_node_port(self) -> Optional[int]: + """ + NodePort for add-ons server in the admin cluster. + """ + return pulumi.get(self, "addons_node_port") + + @property + @pulumi.getter(name="controlPlaneNodePort") + def control_plane_node_port(self) -> Optional[int]: + """ + NodePort for control plane service. The Kubernetes API server in the admin + cluster is implemented as a Service of type NodePort (ex. 30968). + """ + return pulumi.get(self, "control_plane_node_port") + + @property + @pulumi.getter(name="ingressHttpNodePort") + def ingress_http_node_port(self) -> Optional[int]: + """ + NodePort for ingress service's http. The ingress service in the admin + cluster is implemented as a Service of type NodePort (ex. 32527). + """ + return pulumi.get(self, "ingress_http_node_port") + + @property + @pulumi.getter(name="ingressHttpsNodePort") + def ingress_https_node_port(self) -> Optional[int]: + """ + NodePort for ingress service's https. The ingress service in the admin + cluster is implemented as a Service of type NodePort (ex. 30139). + """ + return pulumi.get(self, "ingress_https_node_port") + + @property + @pulumi.getter(name="konnectivityServerNodePort") + def konnectivity_server_node_port(self) -> Optional[int]: + """ + NodePort for konnectivity server service running as a sidecar in each + kube-apiserver pod (ex. 30564). + """ + return pulumi.get(self, "konnectivity_server_node_port") + + +@pulumi.output_type +class VmwareAdminClusterLoadBalancerMetalLbConfig(dict): + def __init__(__self__, *, + enabled: Optional[bool] = None): + """ + :param bool enabled: Metal LB is enabled. + """ + if enabled is not None: + pulumi.set(__self__, "enabled", enabled) + + @property + @pulumi.getter + def enabled(self) -> Optional[bool]: + """ + Metal LB is enabled. + """ + return pulumi.get(self, "enabled") + + +@pulumi.output_type +class VmwareAdminClusterLoadBalancerVipConfig(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "controlPlaneVip": + suggest = "control_plane_vip" + elif key == "addonsVip": + suggest = "addons_vip" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in VmwareAdminClusterLoadBalancerVipConfig. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + VmwareAdminClusterLoadBalancerVipConfig.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + VmwareAdminClusterLoadBalancerVipConfig.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + control_plane_vip: str, + addons_vip: Optional[str] = None): + """ + :param str control_plane_vip: The VIP which you previously set aside for the Kubernetes + API of this VMware Admin Cluster. + :param str addons_vip: The VIP to configure the load balancer for add-ons. + + The `f5_config` block supports: + """ + pulumi.set(__self__, "control_plane_vip", control_plane_vip) + if addons_vip is not None: + pulumi.set(__self__, "addons_vip", addons_vip) + + @property + @pulumi.getter(name="controlPlaneVip") + def control_plane_vip(self) -> str: + """ + The VIP which you previously set aside for the Kubernetes + API of this VMware Admin Cluster. + """ + return pulumi.get(self, "control_plane_vip") + + @property + @pulumi.getter(name="addonsVip") + def addons_vip(self) -> Optional[str]: + """ + The VIP to configure the load balancer for add-ons. + + The `f5_config` block supports: + """ + return pulumi.get(self, "addons_vip") + + +@pulumi.output_type +class VmwareAdminClusterNetworkConfig(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "podAddressCidrBlocks": + suggest = "pod_address_cidr_blocks" + elif key == "serviceAddressCidrBlocks": + suggest = "service_address_cidr_blocks" + elif key == "dhcpIpConfig": + suggest = "dhcp_ip_config" + elif key == "haControlPlaneConfig": + suggest = "ha_control_plane_config" + elif key == "hostConfig": + suggest = "host_config" + elif key == "staticIpConfig": + suggest = "static_ip_config" + elif key == "vcenterNetwork": + suggest = "vcenter_network" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in VmwareAdminClusterNetworkConfig. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + VmwareAdminClusterNetworkConfig.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + VmwareAdminClusterNetworkConfig.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + pod_address_cidr_blocks: Sequence[str], + service_address_cidr_blocks: Sequence[str], + dhcp_ip_config: Optional['outputs.VmwareAdminClusterNetworkConfigDhcpIpConfig'] = None, + ha_control_plane_config: Optional['outputs.VmwareAdminClusterNetworkConfigHaControlPlaneConfig'] = None, + host_config: Optional['outputs.VmwareAdminClusterNetworkConfigHostConfig'] = None, + static_ip_config: Optional['outputs.VmwareAdminClusterNetworkConfigStaticIpConfig'] = None, + vcenter_network: Optional[str] = None): + """ + :param Sequence[str] pod_address_cidr_blocks: 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. + :param Sequence[str] service_address_cidr_blocks: 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. + :param 'VmwareAdminClusterNetworkConfigDhcpIpConfigArgs' dhcp_ip_config: Configuration settings for a DHCP IP configuration. + Structure is documented below. + :param 'VmwareAdminClusterNetworkConfigHaControlPlaneConfigArgs' ha_control_plane_config: Configuration for HA admin cluster control plane. + Structure is documented below. + :param 'VmwareAdminClusterNetworkConfigHostConfigArgs' host_config: Represents common network settings irrespective of the host's IP address. + Structure is documented below. + :param 'VmwareAdminClusterNetworkConfigStaticIpConfigArgs' static_ip_config: Configuration settings for a static IP configuration. + Structure is documented below. + :param str vcenter_network: vcenter_network specifies vCenter network name. + """ + pulumi.set(__self__, "pod_address_cidr_blocks", pod_address_cidr_blocks) + pulumi.set(__self__, "service_address_cidr_blocks", service_address_cidr_blocks) + if dhcp_ip_config is not None: + pulumi.set(__self__, "dhcp_ip_config", dhcp_ip_config) + if ha_control_plane_config is not None: + pulumi.set(__self__, "ha_control_plane_config", ha_control_plane_config) + if host_config is not None: + pulumi.set(__self__, "host_config", host_config) + if static_ip_config is not None: + pulumi.set(__self__, "static_ip_config", static_ip_config) + if vcenter_network is not None: + pulumi.set(__self__, "vcenter_network", vcenter_network) + + @property + @pulumi.getter(name="podAddressCidrBlocks") + def pod_address_cidr_blocks(self) -> Sequence[str]: + """ + 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. + """ + return pulumi.get(self, "pod_address_cidr_blocks") + + @property + @pulumi.getter(name="serviceAddressCidrBlocks") + def service_address_cidr_blocks(self) -> Sequence[str]: + """ + 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. + """ + return pulumi.get(self, "service_address_cidr_blocks") + + @property + @pulumi.getter(name="dhcpIpConfig") + def dhcp_ip_config(self) -> Optional['outputs.VmwareAdminClusterNetworkConfigDhcpIpConfig']: + """ + Configuration settings for a DHCP IP configuration. + Structure is documented below. + """ + return pulumi.get(self, "dhcp_ip_config") + + @property + @pulumi.getter(name="haControlPlaneConfig") + def ha_control_plane_config(self) -> Optional['outputs.VmwareAdminClusterNetworkConfigHaControlPlaneConfig']: + """ + Configuration for HA admin cluster control plane. + Structure is documented below. + """ + return pulumi.get(self, "ha_control_plane_config") + + @property + @pulumi.getter(name="hostConfig") + def host_config(self) -> Optional['outputs.VmwareAdminClusterNetworkConfigHostConfig']: + """ + Represents common network settings irrespective of the host's IP address. + Structure is documented below. + """ + return pulumi.get(self, "host_config") + + @property + @pulumi.getter(name="staticIpConfig") + def static_ip_config(self) -> Optional['outputs.VmwareAdminClusterNetworkConfigStaticIpConfig']: + """ + Configuration settings for a static IP configuration. + Structure is documented below. + """ + return pulumi.get(self, "static_ip_config") + + @property + @pulumi.getter(name="vcenterNetwork") + def vcenter_network(self) -> Optional[str]: + """ + vcenter_network specifies vCenter network name. + """ + return pulumi.get(self, "vcenter_network") + + +@pulumi.output_type +class VmwareAdminClusterNetworkConfigDhcpIpConfig(dict): + def __init__(__self__, *, + enabled: bool): + """ + :param bool enabled: enabled is a flag to mark if DHCP IP allocation is + used for VMware admin clusters. + """ + pulumi.set(__self__, "enabled", enabled) + + @property + @pulumi.getter + def enabled(self) -> bool: + """ + enabled is a flag to mark if DHCP IP allocation is + used for VMware admin clusters. + """ + return pulumi.get(self, "enabled") + + +@pulumi.output_type +class VmwareAdminClusterNetworkConfigHaControlPlaneConfig(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "controlPlaneIpBlock": + suggest = "control_plane_ip_block" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in VmwareAdminClusterNetworkConfigHaControlPlaneConfig. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + VmwareAdminClusterNetworkConfigHaControlPlaneConfig.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + VmwareAdminClusterNetworkConfigHaControlPlaneConfig.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + control_plane_ip_block: Optional['outputs.VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock'] = None): + """ + :param 'VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockArgs' control_plane_ip_block: Static IP addresses for the control plane nodes. + Structure is documented below. + """ + if control_plane_ip_block is not None: + pulumi.set(__self__, "control_plane_ip_block", control_plane_ip_block) + + @property + @pulumi.getter(name="controlPlaneIpBlock") + def control_plane_ip_block(self) -> Optional['outputs.VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock']: + """ + Static IP addresses for the control plane nodes. + Structure is documented below. + """ + return pulumi.get(self, "control_plane_ip_block") + + +@pulumi.output_type +class VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlock(dict): + def __init__(__self__, *, + gateway: str, + ips: Sequence['outputs.VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp'], + netmask: str): + """ + :param str gateway: The network gateway used by the VMware Admin Cluster. + :param Sequence['VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIpArgs'] ips: The node's network configurations used by the VMware Admin Cluster. + Structure is documented below. + :param str netmask: The netmask used by the VMware Admin Cluster. + """ + pulumi.set(__self__, "gateway", gateway) + pulumi.set(__self__, "ips", ips) + pulumi.set(__self__, "netmask", netmask) + + @property + @pulumi.getter + def gateway(self) -> str: + """ + The network gateway used by the VMware Admin Cluster. + """ + return pulumi.get(self, "gateway") + + @property + @pulumi.getter + def ips(self) -> Sequence['outputs.VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp']: + """ + The node's network configurations used by the VMware Admin Cluster. + Structure is documented below. + """ + return pulumi.get(self, "ips") + + @property + @pulumi.getter + def netmask(self) -> str: + """ + The netmask used by the VMware Admin Cluster. + """ + return pulumi.get(self, "netmask") + + +@pulumi.output_type +class VmwareAdminClusterNetworkConfigHaControlPlaneConfigControlPlaneIpBlockIp(dict): + def __init__(__self__, *, + ip: str, + hostname: Optional[str] = None): + """ + :param str ip: IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + :param str hostname: Hostname of the machine. VM's name will be used if this field is empty. + + - - - + """ + pulumi.set(__self__, "ip", ip) + if hostname is not None: + pulumi.set(__self__, "hostname", hostname) + + @property + @pulumi.getter + def ip(self) -> str: + """ + IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + """ + return pulumi.get(self, "ip") + + @property + @pulumi.getter + def hostname(self) -> Optional[str]: + """ + Hostname of the machine. VM's name will be used if this field is empty. + + - - - + """ + return pulumi.get(self, "hostname") + + +@pulumi.output_type +class VmwareAdminClusterNetworkConfigHostConfig(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "dnsSearchDomains": + suggest = "dns_search_domains" + elif key == "dnsServers": + suggest = "dns_servers" + elif key == "ntpServers": + suggest = "ntp_servers" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in VmwareAdminClusterNetworkConfigHostConfig. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + VmwareAdminClusterNetworkConfigHostConfig.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + VmwareAdminClusterNetworkConfigHostConfig.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + dns_search_domains: Optional[Sequence[str]] = None, + dns_servers: Optional[Sequence[str]] = None, + ntp_servers: Optional[Sequence[str]] = None): + """ + :param Sequence[str] dns_search_domains: DNS search domains. + :param Sequence[str] dns_servers: DNS servers. + :param Sequence[str] ntp_servers: NTP servers. + """ + if dns_search_domains is not None: + pulumi.set(__self__, "dns_search_domains", dns_search_domains) + if dns_servers is not None: + pulumi.set(__self__, "dns_servers", dns_servers) + if ntp_servers is not None: + pulumi.set(__self__, "ntp_servers", ntp_servers) + + @property + @pulumi.getter(name="dnsSearchDomains") + def dns_search_domains(self) -> Optional[Sequence[str]]: + """ + DNS search domains. + """ + return pulumi.get(self, "dns_search_domains") + + @property + @pulumi.getter(name="dnsServers") + def dns_servers(self) -> Optional[Sequence[str]]: + """ + DNS servers. + """ + return pulumi.get(self, "dns_servers") + + @property + @pulumi.getter(name="ntpServers") + def ntp_servers(self) -> Optional[Sequence[str]]: + """ + NTP servers. + """ + return pulumi.get(self, "ntp_servers") + + +@pulumi.output_type +class VmwareAdminClusterNetworkConfigStaticIpConfig(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "ipBlocks": + suggest = "ip_blocks" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in VmwareAdminClusterNetworkConfigStaticIpConfig. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + VmwareAdminClusterNetworkConfigStaticIpConfig.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + VmwareAdminClusterNetworkConfigStaticIpConfig.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + ip_blocks: Optional[Sequence['outputs.VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock']] = None): + """ + :param Sequence['VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockArgs'] ip_blocks: Represents the configuration values for static IP allocation to nodes. + Structure is documented below. + """ + if ip_blocks is not None: + pulumi.set(__self__, "ip_blocks", ip_blocks) + + @property + @pulumi.getter(name="ipBlocks") + def ip_blocks(self) -> Optional[Sequence['outputs.VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock']]: + """ + Represents the configuration values for static IP allocation to nodes. + Structure is documented below. + """ + return pulumi.get(self, "ip_blocks") + + +@pulumi.output_type +class VmwareAdminClusterNetworkConfigStaticIpConfigIpBlock(dict): + def __init__(__self__, *, + gateway: str, + ips: Sequence['outputs.VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp'], + netmask: str): + """ + :param str gateway: The network gateway used by the VMware Admin Cluster. + :param Sequence['VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIpArgs'] ips: The node's network configurations used by the VMware Admin Cluster. + Structure is documented below. + :param str netmask: The netmask used by the VMware Admin Cluster. + """ + pulumi.set(__self__, "gateway", gateway) + pulumi.set(__self__, "ips", ips) + pulumi.set(__self__, "netmask", netmask) + + @property + @pulumi.getter + def gateway(self) -> str: + """ + The network gateway used by the VMware Admin Cluster. + """ + return pulumi.get(self, "gateway") + + @property + @pulumi.getter + def ips(self) -> Sequence['outputs.VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp']: + """ + The node's network configurations used by the VMware Admin Cluster. + Structure is documented below. + """ + return pulumi.get(self, "ips") + + @property + @pulumi.getter + def netmask(self) -> str: + """ + The netmask used by the VMware Admin Cluster. + """ + return pulumi.get(self, "netmask") + + +@pulumi.output_type +class VmwareAdminClusterNetworkConfigStaticIpConfigIpBlockIp(dict): + def __init__(__self__, *, + ip: str, + hostname: Optional[str] = None): + """ + :param str ip: IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + :param str hostname: Hostname of the machine. VM's name will be used if this field is empty. + + - - - + """ + pulumi.set(__self__, "ip", ip) + if hostname is not None: + pulumi.set(__self__, "hostname", hostname) + + @property + @pulumi.getter + def ip(self) -> str: + """ + IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). + """ + return pulumi.get(self, "ip") + + @property + @pulumi.getter + def hostname(self) -> Optional[str]: + """ + Hostname of the machine. VM's name will be used if this field is empty. + + - - - + """ + return pulumi.get(self, "hostname") + + +@pulumi.output_type +class VmwareAdminClusterPlatformConfig(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "platformVersion": + suggest = "platform_version" + elif key == "requiredPlatformVersion": + suggest = "required_platform_version" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in VmwareAdminClusterPlatformConfig. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + VmwareAdminClusterPlatformConfig.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + VmwareAdminClusterPlatformConfig.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + bundles: Optional[Sequence['outputs.VmwareAdminClusterPlatformConfigBundle']] = None, + platform_version: Optional[str] = None, + required_platform_version: Optional[str] = None, + statuses: Optional[Sequence['outputs.VmwareAdminClusterPlatformConfigStatus']] = None): + """ + :param Sequence['VmwareAdminClusterPlatformConfigBundleArgs'] bundles: (Output) + The list of bundles installed in the admin cluster. + Structure is documented below. + :param str platform_version: (Output) + The platform version e.g. 1.13.2. + :param str required_platform_version: The required platform version e.g. 1.13.1. + If the current platform version is lower than the target version, + the platform version will be updated to the target version. + If the target version is not installed in the platform + (bundle versions), download the target version bundle. + :param Sequence['VmwareAdminClusterPlatformConfigStatusArgs'] statuses: (Output) + ResourceStatus representing detailed cluster state. + Structure is documented below. + + + The `status` block contains: + """ + if bundles is not None: + pulumi.set(__self__, "bundles", bundles) + if platform_version is not None: + pulumi.set(__self__, "platform_version", platform_version) + if required_platform_version is not None: + pulumi.set(__self__, "required_platform_version", required_platform_version) + if statuses is not None: + pulumi.set(__self__, "statuses", statuses) + + @property + @pulumi.getter + def bundles(self) -> Optional[Sequence['outputs.VmwareAdminClusterPlatformConfigBundle']]: + """ + (Output) + The list of bundles installed in the admin cluster. + Structure is documented below. + """ + return pulumi.get(self, "bundles") + + @property + @pulumi.getter(name="platformVersion") + def platform_version(self) -> Optional[str]: + """ + (Output) + The platform version e.g. 1.13.2. + """ + return pulumi.get(self, "platform_version") + + @property + @pulumi.getter(name="requiredPlatformVersion") + def required_platform_version(self) -> Optional[str]: + """ + The required platform version e.g. 1.13.1. + If the current platform version is lower than the target version, + the platform version will be updated to the target version. + If the target version is not installed in the platform + (bundle versions), download the target version bundle. + """ + return pulumi.get(self, "required_platform_version") + + @property + @pulumi.getter + def statuses(self) -> Optional[Sequence['outputs.VmwareAdminClusterPlatformConfigStatus']]: + """ + (Output) + ResourceStatus representing detailed cluster state. + Structure is documented below. + + + The `status` block contains: + """ + return pulumi.get(self, "statuses") + + +@pulumi.output_type +class VmwareAdminClusterPlatformConfigBundle(dict): + def __init__(__self__, *, + statuses: Optional[Sequence['outputs.VmwareAdminClusterPlatformConfigBundleStatus']] = None, + version: Optional[str] = None): + """ + :param Sequence['VmwareAdminClusterPlatformConfigBundleStatusArgs'] statuses: ResourceStatus representing detailed cluster state. + Structure is documented below. + :param str version: The version of the bundle. + """ + if statuses is not None: + pulumi.set(__self__, "statuses", statuses) + if version is not None: + pulumi.set(__self__, "version", version) + + @property + @pulumi.getter + def statuses(self) -> Optional[Sequence['outputs.VmwareAdminClusterPlatformConfigBundleStatus']]: + """ + ResourceStatus representing detailed cluster state. + Structure is documented below. + """ + return pulumi.get(self, "statuses") + + @property + @pulumi.getter + def version(self) -> Optional[str]: + """ + The version of the bundle. + """ + return pulumi.get(self, "version") + + +@pulumi.output_type +class VmwareAdminClusterPlatformConfigBundleStatus(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "errorMessage": + suggest = "error_message" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in VmwareAdminClusterPlatformConfigBundleStatus. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + VmwareAdminClusterPlatformConfigBundleStatus.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + VmwareAdminClusterPlatformConfigBundleStatus.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + conditions: Optional[Sequence['outputs.VmwareAdminClusterPlatformConfigBundleStatusCondition']] = None, + error_message: Optional[str] = None): + """ + :param Sequence['VmwareAdminClusterPlatformConfigBundleStatusConditionArgs'] conditions: (Output) + ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + Structure is documented below. + :param str error_message: (Output) + Human-friendly representation of the error message from the admin cluster + controller. The error message can be temporary as the admin cluster + controller creates a cluster or node pool. If the error message persists + for a longer period of time, it can be used to surface error message to + indicate real problems requiring user intervention. + """ + if conditions is not None: + pulumi.set(__self__, "conditions", conditions) + if error_message is not None: + pulumi.set(__self__, "error_message", error_message) + + @property + @pulumi.getter + def conditions(self) -> Optional[Sequence['outputs.VmwareAdminClusterPlatformConfigBundleStatusCondition']]: + """ + (Output) + ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + Structure is documented below. + """ + return pulumi.get(self, "conditions") + + @property + @pulumi.getter(name="errorMessage") + def error_message(self) -> Optional[str]: + """ + (Output) + Human-friendly representation of the error message from the admin cluster + controller. The error message can be temporary as the admin cluster + controller creates a cluster or node pool. If the error message persists + for a longer period of time, it can be used to surface error message to + indicate real problems requiring user intervention. + """ + return pulumi.get(self, "error_message") + + +@pulumi.output_type +class VmwareAdminClusterPlatformConfigBundleStatusCondition(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "lastTransitionTime": + suggest = "last_transition_time" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in VmwareAdminClusterPlatformConfigBundleStatusCondition. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + VmwareAdminClusterPlatformConfigBundleStatusCondition.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + VmwareAdminClusterPlatformConfigBundleStatusCondition.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + last_transition_time: Optional[str] = None, + message: Optional[str] = None, + reason: Optional[str] = None, + state: Optional[str] = None, + type: Optional[str] = None): + """ + :param str last_transition_time: (Output) + Last time the condition transit from one status to another. + :param str message: (Output) + Human-readable message indicating details about last transition. + :param str reason: (Output) + Machine-readable message indicating details about last transition. + :param str state: (Output) + The lifecycle state of the condition. + :param str type: (Output) + Type of the condition. + (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + """ + if last_transition_time is not None: + pulumi.set(__self__, "last_transition_time", last_transition_time) + if message is not None: + pulumi.set(__self__, "message", message) + if reason is not None: + pulumi.set(__self__, "reason", reason) + if state is not None: + pulumi.set(__self__, "state", state) + if type is not None: + pulumi.set(__self__, "type", type) + + @property + @pulumi.getter(name="lastTransitionTime") + def last_transition_time(self) -> Optional[str]: + """ + (Output) + Last time the condition transit from one status to another. + """ + return pulumi.get(self, "last_transition_time") + + @property + @pulumi.getter + def message(self) -> Optional[str]: + """ + (Output) + Human-readable message indicating details about last transition. + """ + return pulumi.get(self, "message") + + @property + @pulumi.getter + def reason(self) -> Optional[str]: + """ + (Output) + Machine-readable message indicating details about last transition. + """ + return pulumi.get(self, "reason") + + @property + @pulumi.getter + def state(self) -> Optional[str]: + """ + (Output) + The lifecycle state of the condition. + """ + return pulumi.get(self, "state") + + @property + @pulumi.getter + def type(self) -> Optional[str]: + """ + (Output) + Type of the condition. + (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + """ + return pulumi.get(self, "type") + + +@pulumi.output_type +class VmwareAdminClusterPlatformConfigStatus(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "errorMessage": + suggest = "error_message" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in VmwareAdminClusterPlatformConfigStatus. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + VmwareAdminClusterPlatformConfigStatus.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + VmwareAdminClusterPlatformConfigStatus.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + conditions: Optional[Sequence['outputs.VmwareAdminClusterPlatformConfigStatusCondition']] = None, + error_message: Optional[str] = None): + """ + :param Sequence['VmwareAdminClusterPlatformConfigStatusConditionArgs'] conditions: (Output) + ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + Structure is documented below. + :param str error_message: (Output) + Human-friendly representation of the error message from the admin cluster + controller. The error message can be temporary as the admin cluster + controller creates a cluster or node pool. If the error message persists + for a longer period of time, it can be used to surface error message to + indicate real problems requiring user intervention. + """ + if conditions is not None: + pulumi.set(__self__, "conditions", conditions) + if error_message is not None: + pulumi.set(__self__, "error_message", error_message) + + @property + @pulumi.getter + def conditions(self) -> Optional[Sequence['outputs.VmwareAdminClusterPlatformConfigStatusCondition']]: + """ + (Output) + ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + Structure is documented below. + """ + return pulumi.get(self, "conditions") + + @property + @pulumi.getter(name="errorMessage") + def error_message(self) -> Optional[str]: + """ + (Output) + Human-friendly representation of the error message from the admin cluster + controller. The error message can be temporary as the admin cluster + controller creates a cluster or node pool. If the error message persists + for a longer period of time, it can be used to surface error message to + indicate real problems requiring user intervention. + """ + return pulumi.get(self, "error_message") + + +@pulumi.output_type +class VmwareAdminClusterPlatformConfigStatusCondition(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "lastTransitionTime": + suggest = "last_transition_time" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in VmwareAdminClusterPlatformConfigStatusCondition. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + VmwareAdminClusterPlatformConfigStatusCondition.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + VmwareAdminClusterPlatformConfigStatusCondition.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + last_transition_time: Optional[str] = None, + message: Optional[str] = None, + reason: Optional[str] = None, + state: Optional[str] = None, + type: Optional[str] = None): + """ + :param str last_transition_time: (Output) + Last time the condition transit from one status to another. + :param str message: (Output) + Human-readable message indicating details about last transition. + :param str reason: (Output) + Machine-readable message indicating details about last transition. + :param str state: (Output) + The lifecycle state of the condition. + :param str type: (Output) + Type of the condition. + (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + """ + if last_transition_time is not None: + pulumi.set(__self__, "last_transition_time", last_transition_time) + if message is not None: + pulumi.set(__self__, "message", message) + if reason is not None: + pulumi.set(__self__, "reason", reason) + if state is not None: + pulumi.set(__self__, "state", state) + if type is not None: + pulumi.set(__self__, "type", type) + + @property + @pulumi.getter(name="lastTransitionTime") + def last_transition_time(self) -> Optional[str]: + """ + (Output) + Last time the condition transit from one status to another. + """ + return pulumi.get(self, "last_transition_time") + + @property + @pulumi.getter + def message(self) -> Optional[str]: + """ + (Output) + Human-readable message indicating details about last transition. + """ + return pulumi.get(self, "message") + + @property + @pulumi.getter + def reason(self) -> Optional[str]: + """ + (Output) + Machine-readable message indicating details about last transition. + """ + return pulumi.get(self, "reason") + + @property + @pulumi.getter + def state(self) -> Optional[str]: + """ + (Output) + The lifecycle state of the condition. + """ + return pulumi.get(self, "state") + + @property + @pulumi.getter + def type(self) -> Optional[str]: + """ + (Output) + Type of the condition. + (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + """ + return pulumi.get(self, "type") + + +@pulumi.output_type +class VmwareAdminClusterStatus(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "errorMessage": + suggest = "error_message" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in VmwareAdminClusterStatus. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + VmwareAdminClusterStatus.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + VmwareAdminClusterStatus.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + conditions: Optional[Sequence['outputs.VmwareAdminClusterStatusCondition']] = None, + error_message: Optional[str] = None): + """ + :param Sequence['VmwareAdminClusterStatusConditionArgs'] conditions: (Output) + ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + Structure is documented below. + :param str error_message: (Output) + Human-friendly representation of the error message from the admin cluster + controller. The error message can be temporary as the admin cluster + controller creates a cluster or node pool. If the error message persists + for a longer period of time, it can be used to surface error message to + indicate real problems requiring user intervention. + """ + if conditions is not None: + pulumi.set(__self__, "conditions", conditions) + if error_message is not None: + pulumi.set(__self__, "error_message", error_message) + + @property + @pulumi.getter + def conditions(self) -> Optional[Sequence['outputs.VmwareAdminClusterStatusCondition']]: + """ + (Output) + ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + Structure is documented below. + """ + return pulumi.get(self, "conditions") + + @property + @pulumi.getter(name="errorMessage") + def error_message(self) -> Optional[str]: + """ + (Output) + Human-friendly representation of the error message from the admin cluster + controller. The error message can be temporary as the admin cluster + controller creates a cluster or node pool. If the error message persists + for a longer period of time, it can be used to surface error message to + indicate real problems requiring user intervention. + """ + return pulumi.get(self, "error_message") + + +@pulumi.output_type +class VmwareAdminClusterStatusCondition(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "lastTransitionTime": + suggest = "last_transition_time" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in VmwareAdminClusterStatusCondition. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + VmwareAdminClusterStatusCondition.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + VmwareAdminClusterStatusCondition.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + last_transition_time: Optional[str] = None, + message: Optional[str] = None, + reason: Optional[str] = None, + state: Optional[str] = None, + type: Optional[str] = None): + """ + :param str last_transition_time: (Output) + Last time the condition transit from one status to another. + :param str message: (Output) + Human-readable message indicating details about last transition. + :param str reason: (Output) + Machine-readable message indicating details about last transition. + :param str state: (Output) + The lifecycle state of the condition. + :param str type: (Output) + Type of the condition. + (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + """ + if last_transition_time is not None: + pulumi.set(__self__, "last_transition_time", last_transition_time) + if message is not None: + pulumi.set(__self__, "message", message) + if reason is not None: + pulumi.set(__self__, "reason", reason) + if state is not None: + pulumi.set(__self__, "state", state) + if type is not None: + pulumi.set(__self__, "type", type) + + @property + @pulumi.getter(name="lastTransitionTime") + def last_transition_time(self) -> Optional[str]: + """ + (Output) + Last time the condition transit from one status to another. + """ + return pulumi.get(self, "last_transition_time") + + @property + @pulumi.getter + def message(self) -> Optional[str]: + """ + (Output) + Human-readable message indicating details about last transition. + """ + return pulumi.get(self, "message") + + @property + @pulumi.getter + def reason(self) -> Optional[str]: + """ + (Output) + Machine-readable message indicating details about last transition. + """ + return pulumi.get(self, "reason") + + @property + @pulumi.getter + def state(self) -> Optional[str]: + """ + (Output) + The lifecycle state of the condition. + """ + return pulumi.get(self, "state") + + @property + @pulumi.getter + def type(self) -> Optional[str]: + """ + (Output) + Type of the condition. + (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + """ + return pulumi.get(self, "type") + + +@pulumi.output_type +class VmwareAdminClusterVcenter(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "caCertData": + suggest = "ca_cert_data" + elif key == "dataDisk": + suggest = "data_disk" + elif key == "resourcePool": + suggest = "resource_pool" + elif key == "storagePolicyName": + suggest = "storage_policy_name" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in VmwareAdminClusterVcenter. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + VmwareAdminClusterVcenter.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + VmwareAdminClusterVcenter.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + address: Optional[str] = None, + ca_cert_data: Optional[str] = None, + cluster: Optional[str] = None, + data_disk: Optional[str] = None, + datacenter: Optional[str] = None, + datastore: Optional[str] = None, + folder: Optional[str] = None, + resource_pool: Optional[str] = None, + storage_policy_name: Optional[str] = None): + """ + :param str address: The vCenter IP address. + :param str ca_cert_data: Contains the vCenter CA certificate public key for SSL verification. + :param str cluster: The name of the vCenter cluster for the admin cluster. + :param str data_disk: The name of the virtual machine disk (VMDK) for the admin cluster. + :param str datacenter: The name of the vCenter datacenter for the admin cluster. + :param str datastore: The name of the vCenter datastore for the admin cluster. + :param str folder: The name of the vCenter folder for the admin cluster. + :param str resource_pool: The name of the vCenter resource pool for the admin cluster. + :param str storage_policy_name: The name of the vCenter storage policy for the user cluster. + """ + if address is not None: + pulumi.set(__self__, "address", address) + if ca_cert_data is not None: + pulumi.set(__self__, "ca_cert_data", ca_cert_data) + if cluster is not None: + pulumi.set(__self__, "cluster", cluster) + if data_disk is not None: + pulumi.set(__self__, "data_disk", data_disk) + if datacenter is not None: + pulumi.set(__self__, "datacenter", datacenter) + if datastore is not None: + pulumi.set(__self__, "datastore", datastore) + if folder is not None: + pulumi.set(__self__, "folder", folder) + if resource_pool is not None: + pulumi.set(__self__, "resource_pool", resource_pool) + if storage_policy_name is not None: + pulumi.set(__self__, "storage_policy_name", storage_policy_name) + + @property + @pulumi.getter + def address(self) -> Optional[str]: + """ + The vCenter IP address. + """ + return pulumi.get(self, "address") + + @property + @pulumi.getter(name="caCertData") + def ca_cert_data(self) -> Optional[str]: + """ + Contains the vCenter CA certificate public key for SSL verification. + """ + return pulumi.get(self, "ca_cert_data") + + @property + @pulumi.getter + def cluster(self) -> Optional[str]: + """ + The name of the vCenter cluster for the admin cluster. + """ + return pulumi.get(self, "cluster") + + @property + @pulumi.getter(name="dataDisk") + def data_disk(self) -> Optional[str]: + """ + The name of the virtual machine disk (VMDK) for the admin cluster. + """ + return pulumi.get(self, "data_disk") + + @property + @pulumi.getter + def datacenter(self) -> Optional[str]: + """ + The name of the vCenter datacenter for the admin cluster. + """ + return pulumi.get(self, "datacenter") + + @property + @pulumi.getter + def datastore(self) -> Optional[str]: + """ + The name of the vCenter datastore for the admin cluster. + """ + return pulumi.get(self, "datastore") + + @property + @pulumi.getter + def folder(self) -> Optional[str]: + """ + The name of the vCenter folder for the admin cluster. + """ + return pulumi.get(self, "folder") + + @property + @pulumi.getter(name="resourcePool") + def resource_pool(self) -> Optional[str]: + """ + The name of the vCenter resource pool for the admin cluster. + """ + return pulumi.get(self, "resource_pool") + + @property + @pulumi.getter(name="storagePolicyName") + def storage_policy_name(self) -> Optional[str]: + """ + The name of the vCenter storage policy for the user cluster. + """ + return pulumi.get(self, "storage_policy_name") + + diff --git a/sdk/python/pulumi_gcp/gkeonprem/vmware_admin_cluster.py b/sdk/python/pulumi_gcp/gkeonprem/vmware_admin_cluster.py new file mode 100644 index 0000000000..6465097855 --- /dev/null +++ b/sdk/python/pulumi_gcp/gkeonprem/vmware_admin_cluster.py @@ -0,0 +1,1715 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import sys +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +if sys.version_info >= (3, 11): + from typing import NotRequired, TypedDict, TypeAlias +else: + from typing_extensions import NotRequired, TypedDict, TypeAlias +from .. import _utilities +from . import outputs +from ._inputs import * + +__all__ = ['VmwareAdminClusterArgs', 'VmwareAdminCluster'] + +@pulumi.input_type +class VmwareAdminClusterArgs: + def __init__(__self__, *, + location: pulumi.Input[str], + network_config: pulumi.Input['VmwareAdminClusterNetworkConfigArgs'], + addon_node: Optional[pulumi.Input['VmwareAdminClusterAddonNodeArgs']] = None, + annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + anti_affinity_groups: Optional[pulumi.Input['VmwareAdminClusterAntiAffinityGroupsArgs']] = None, + authorization: Optional[pulumi.Input['VmwareAdminClusterAuthorizationArgs']] = None, + auto_repair_config: Optional[pulumi.Input['VmwareAdminClusterAutoRepairConfigArgs']] = None, + bootstrap_cluster_membership: Optional[pulumi.Input[str]] = None, + control_plane_node: Optional[pulumi.Input['VmwareAdminClusterControlPlaneNodeArgs']] = None, + description: Optional[pulumi.Input[str]] = None, + image_type: Optional[pulumi.Input[str]] = None, + load_balancer: Optional[pulumi.Input['VmwareAdminClusterLoadBalancerArgs']] = None, + name: Optional[pulumi.Input[str]] = None, + on_prem_version: Optional[pulumi.Input[str]] = None, + platform_config: Optional[pulumi.Input['VmwareAdminClusterPlatformConfigArgs']] = None, + project: Optional[pulumi.Input[str]] = None, + vcenter: Optional[pulumi.Input['VmwareAdminClusterVcenterArgs']] = None): + """ + The set of arguments for constructing a VmwareAdminCluster resource. + :param pulumi.Input[str] location: The location of the resource. + :param pulumi.Input['VmwareAdminClusterNetworkConfigArgs'] network_config: The VMware admin cluster network configuration. + Structure is documented below. + :param pulumi.Input['VmwareAdminClusterAddonNodeArgs'] addon_node: The VMware admin cluster addon node configuration. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] annotations: Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size + of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), + separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with + alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is + non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field + 'effective_annotations' for all of the annotations present on the resource. + :param pulumi.Input['VmwareAdminClusterAntiAffinityGroupsArgs'] anti_affinity_groups: AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter. + :param pulumi.Input['VmwareAdminClusterAuthorizationArgs'] authorization: The VMware admin cluster authorization configuration. + :param pulumi.Input['VmwareAdminClusterAutoRepairConfigArgs'] auto_repair_config: Configuration for auto repairing. + :param pulumi.Input[str] bootstrap_cluster_membership: The bootstrap cluster this VMware admin cluster belongs to. + :param pulumi.Input['VmwareAdminClusterControlPlaneNodeArgs'] control_plane_node: The VMware admin cluster control plane node configuration. + :param pulumi.Input[str] description: A human readable description of this VMware admin cluster. + :param pulumi.Input[str] image_type: The OS image type for the VMware admin cluster. + :param pulumi.Input['VmwareAdminClusterLoadBalancerArgs'] load_balancer: Specifies the load balancer configuration for VMware admin cluster. + :param pulumi.Input[str] name: The VMware admin cluster resource name. + :param pulumi.Input[str] on_prem_version: The Anthos clusters on the VMware version for the admin cluster. + :param pulumi.Input['VmwareAdminClusterPlatformConfigArgs'] platform_config: The VMware platform configuration. + :param pulumi.Input['VmwareAdminClusterVcenterArgs'] vcenter: Specifies vCenter config for the admin cluster. + """ + pulumi.set(__self__, "location", location) + pulumi.set(__self__, "network_config", network_config) + if addon_node is not None: + pulumi.set(__self__, "addon_node", addon_node) + if annotations is not None: + pulumi.set(__self__, "annotations", annotations) + if anti_affinity_groups is not None: + pulumi.set(__self__, "anti_affinity_groups", anti_affinity_groups) + if authorization is not None: + pulumi.set(__self__, "authorization", authorization) + if auto_repair_config is not None: + pulumi.set(__self__, "auto_repair_config", auto_repair_config) + if bootstrap_cluster_membership is not None: + pulumi.set(__self__, "bootstrap_cluster_membership", bootstrap_cluster_membership) + if control_plane_node is not None: + pulumi.set(__self__, "control_plane_node", control_plane_node) + if description is not None: + pulumi.set(__self__, "description", description) + if image_type is not None: + pulumi.set(__self__, "image_type", image_type) + if load_balancer is not None: + pulumi.set(__self__, "load_balancer", load_balancer) + if name is not None: + pulumi.set(__self__, "name", name) + if on_prem_version is not None: + pulumi.set(__self__, "on_prem_version", on_prem_version) + if platform_config is not None: + pulumi.set(__self__, "platform_config", platform_config) + if project is not None: + pulumi.set(__self__, "project", project) + if vcenter is not None: + pulumi.set(__self__, "vcenter", vcenter) + + @property + @pulumi.getter + def location(self) -> pulumi.Input[str]: + """ + The location of the resource. + """ + return pulumi.get(self, "location") + + @location.setter + def location(self, value: pulumi.Input[str]): + pulumi.set(self, "location", value) + + @property + @pulumi.getter(name="networkConfig") + def network_config(self) -> pulumi.Input['VmwareAdminClusterNetworkConfigArgs']: + """ + The VMware admin cluster network configuration. + Structure is documented below. + """ + return pulumi.get(self, "network_config") + + @network_config.setter + def network_config(self, value: pulumi.Input['VmwareAdminClusterNetworkConfigArgs']): + pulumi.set(self, "network_config", value) + + @property + @pulumi.getter(name="addonNode") + def addon_node(self) -> Optional[pulumi.Input['VmwareAdminClusterAddonNodeArgs']]: + """ + The VMware admin cluster addon node configuration. + """ + return pulumi.get(self, "addon_node") + + @addon_node.setter + def addon_node(self, value: Optional[pulumi.Input['VmwareAdminClusterAddonNodeArgs']]): + pulumi.set(self, "addon_node", value) + + @property + @pulumi.getter + def annotations(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size + of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), + separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with + alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is + non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field + 'effective_annotations' for all of the annotations present on the resource. + """ + return pulumi.get(self, "annotations") + + @annotations.setter + def annotations(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "annotations", value) + + @property + @pulumi.getter(name="antiAffinityGroups") + def anti_affinity_groups(self) -> Optional[pulumi.Input['VmwareAdminClusterAntiAffinityGroupsArgs']]: + """ + AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter. + """ + return pulumi.get(self, "anti_affinity_groups") + + @anti_affinity_groups.setter + def anti_affinity_groups(self, value: Optional[pulumi.Input['VmwareAdminClusterAntiAffinityGroupsArgs']]): + pulumi.set(self, "anti_affinity_groups", value) + + @property + @pulumi.getter + def authorization(self) -> Optional[pulumi.Input['VmwareAdminClusterAuthorizationArgs']]: + """ + The VMware admin cluster authorization configuration. + """ + return pulumi.get(self, "authorization") + + @authorization.setter + def authorization(self, value: Optional[pulumi.Input['VmwareAdminClusterAuthorizationArgs']]): + pulumi.set(self, "authorization", value) + + @property + @pulumi.getter(name="autoRepairConfig") + def auto_repair_config(self) -> Optional[pulumi.Input['VmwareAdminClusterAutoRepairConfigArgs']]: + """ + Configuration for auto repairing. + """ + return pulumi.get(self, "auto_repair_config") + + @auto_repair_config.setter + def auto_repair_config(self, value: Optional[pulumi.Input['VmwareAdminClusterAutoRepairConfigArgs']]): + pulumi.set(self, "auto_repair_config", value) + + @property + @pulumi.getter(name="bootstrapClusterMembership") + def bootstrap_cluster_membership(self) -> Optional[pulumi.Input[str]]: + """ + The bootstrap cluster this VMware admin cluster belongs to. + """ + return pulumi.get(self, "bootstrap_cluster_membership") + + @bootstrap_cluster_membership.setter + def bootstrap_cluster_membership(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "bootstrap_cluster_membership", value) + + @property + @pulumi.getter(name="controlPlaneNode") + def control_plane_node(self) -> Optional[pulumi.Input['VmwareAdminClusterControlPlaneNodeArgs']]: + """ + The VMware admin cluster control plane node configuration. + """ + return pulumi.get(self, "control_plane_node") + + @control_plane_node.setter + def control_plane_node(self, value: Optional[pulumi.Input['VmwareAdminClusterControlPlaneNodeArgs']]): + pulumi.set(self, "control_plane_node", value) + + @property + @pulumi.getter + def description(self) -> Optional[pulumi.Input[str]]: + """ + A human readable description of this VMware admin cluster. + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "description", value) + + @property + @pulumi.getter(name="imageType") + def image_type(self) -> Optional[pulumi.Input[str]]: + """ + The OS image type for the VMware admin cluster. + """ + return pulumi.get(self, "image_type") + + @image_type.setter + def image_type(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "image_type", value) + + @property + @pulumi.getter(name="loadBalancer") + def load_balancer(self) -> Optional[pulumi.Input['VmwareAdminClusterLoadBalancerArgs']]: + """ + Specifies the load balancer configuration for VMware admin cluster. + """ + return pulumi.get(self, "load_balancer") + + @load_balancer.setter + def load_balancer(self, value: Optional[pulumi.Input['VmwareAdminClusterLoadBalancerArgs']]): + pulumi.set(self, "load_balancer", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The VMware admin cluster resource name. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter(name="onPremVersion") + def on_prem_version(self) -> Optional[pulumi.Input[str]]: + """ + The Anthos clusters on the VMware version for the admin cluster. + """ + return pulumi.get(self, "on_prem_version") + + @on_prem_version.setter + def on_prem_version(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "on_prem_version", value) + + @property + @pulumi.getter(name="platformConfig") + def platform_config(self) -> Optional[pulumi.Input['VmwareAdminClusterPlatformConfigArgs']]: + """ + The VMware platform configuration. + """ + return pulumi.get(self, "platform_config") + + @platform_config.setter + def platform_config(self, value: Optional[pulumi.Input['VmwareAdminClusterPlatformConfigArgs']]): + pulumi.set(self, "platform_config", value) + + @property + @pulumi.getter + def project(self) -> Optional[pulumi.Input[str]]: + return pulumi.get(self, "project") + + @project.setter + def project(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "project", value) + + @property + @pulumi.getter + def vcenter(self) -> Optional[pulumi.Input['VmwareAdminClusterVcenterArgs']]: + """ + Specifies vCenter config for the admin cluster. + """ + return pulumi.get(self, "vcenter") + + @vcenter.setter + def vcenter(self, value: Optional[pulumi.Input['VmwareAdminClusterVcenterArgs']]): + pulumi.set(self, "vcenter", value) + + +@pulumi.input_type +class _VmwareAdminClusterState: + def __init__(__self__, *, + addon_node: Optional[pulumi.Input['VmwareAdminClusterAddonNodeArgs']] = None, + annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + anti_affinity_groups: Optional[pulumi.Input['VmwareAdminClusterAntiAffinityGroupsArgs']] = None, + authorization: Optional[pulumi.Input['VmwareAdminClusterAuthorizationArgs']] = None, + auto_repair_config: Optional[pulumi.Input['VmwareAdminClusterAutoRepairConfigArgs']] = None, + bootstrap_cluster_membership: Optional[pulumi.Input[str]] = None, + control_plane_node: Optional[pulumi.Input['VmwareAdminClusterControlPlaneNodeArgs']] = None, + create_time: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + effective_annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + endpoint: Optional[pulumi.Input[str]] = None, + etag: Optional[pulumi.Input[str]] = None, + fleets: Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterFleetArgs']]]] = None, + image_type: Optional[pulumi.Input[str]] = None, + load_balancer: Optional[pulumi.Input['VmwareAdminClusterLoadBalancerArgs']] = None, + local_name: Optional[pulumi.Input[str]] = None, + location: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + network_config: Optional[pulumi.Input['VmwareAdminClusterNetworkConfigArgs']] = None, + on_prem_version: Optional[pulumi.Input[str]] = None, + platform_config: Optional[pulumi.Input['VmwareAdminClusterPlatformConfigArgs']] = None, + project: Optional[pulumi.Input[str]] = None, + reconciling: Optional[pulumi.Input[bool]] = None, + state: Optional[pulumi.Input[str]] = None, + statuses: Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterStatusArgs']]]] = None, + uid: Optional[pulumi.Input[str]] = None, + update_time: Optional[pulumi.Input[str]] = None, + vcenter: Optional[pulumi.Input['VmwareAdminClusterVcenterArgs']] = None): + """ + Input properties used for looking up and filtering VmwareAdminCluster resources. + :param pulumi.Input['VmwareAdminClusterAddonNodeArgs'] addon_node: The VMware admin cluster addon node configuration. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] annotations: Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size + of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), + separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with + alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is + non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field + 'effective_annotations' for all of the annotations present on the resource. + :param pulumi.Input['VmwareAdminClusterAntiAffinityGroupsArgs'] anti_affinity_groups: AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter. + :param pulumi.Input['VmwareAdminClusterAuthorizationArgs'] authorization: The VMware admin cluster authorization configuration. + :param pulumi.Input['VmwareAdminClusterAutoRepairConfigArgs'] auto_repair_config: Configuration for auto repairing. + :param pulumi.Input[str] bootstrap_cluster_membership: The bootstrap cluster this VMware admin cluster belongs to. + :param pulumi.Input['VmwareAdminClusterControlPlaneNodeArgs'] control_plane_node: The VMware admin cluster control plane node configuration. + :param pulumi.Input[str] create_time: The time the cluster was created, in RFC3339 text format. + :param pulumi.Input[str] description: A human readable description of this VMware admin cluster. + :param pulumi.Input[str] endpoint: The DNS name of VMware admin cluster's API server. + :param pulumi.Input[str] etag: This checksum is computed by the server based on the value of other + fields, and may be sent on update and delete requests to ensure the + client has an up-to-date value before proceeding. + Allows clients to perform consistent read-modify-writes + through optimistic concurrency control. + :param pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterFleetArgs']]] fleets: Fleet configuration for the cluster. + Structure is documented below. + :param pulumi.Input[str] image_type: The OS image type for the VMware admin cluster. + :param pulumi.Input['VmwareAdminClusterLoadBalancerArgs'] load_balancer: Specifies the load balancer configuration for VMware admin cluster. + :param pulumi.Input[str] local_name: The object name of the VMwareAdminCluster custom resource on the + associated admin cluster. This field is used to support conflicting + names when enrolling existing clusters to the API. When used as a part of + cluster enrollment, this field will differ from the ID in the resource + name. For new clusters, this field will match the user provided cluster ID + and be visible in the last component of the resource name. It is not + modifiable. + All users should use this name to access their cluster using gkectl or + kubectl and should expect to see the local name when viewing admin + cluster controller logs. + :param pulumi.Input[str] location: The location of the resource. + :param pulumi.Input[str] name: The VMware admin cluster resource name. + :param pulumi.Input['VmwareAdminClusterNetworkConfigArgs'] network_config: The VMware admin cluster network configuration. + Structure is documented below. + :param pulumi.Input[str] on_prem_version: The Anthos clusters on the VMware version for the admin cluster. + :param pulumi.Input['VmwareAdminClusterPlatformConfigArgs'] platform_config: The VMware platform configuration. + :param pulumi.Input[bool] reconciling: If set, there are currently changes in flight to the VMware admin cluster. + :param pulumi.Input[str] state: (Output) + The lifecycle state of the condition. + :param pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterStatusArgs']]] statuses: ResourceStatus representing detailed cluster state. + Structure is documented below. + :param pulumi.Input[str] uid: The unique identifier of the VMware Admin Cluster. + :param pulumi.Input[str] update_time: The time the cluster was last updated, in RFC3339 text format. + :param pulumi.Input['VmwareAdminClusterVcenterArgs'] vcenter: Specifies vCenter config for the admin cluster. + """ + if addon_node is not None: + pulumi.set(__self__, "addon_node", addon_node) + if annotations is not None: + pulumi.set(__self__, "annotations", annotations) + if anti_affinity_groups is not None: + pulumi.set(__self__, "anti_affinity_groups", anti_affinity_groups) + if authorization is not None: + pulumi.set(__self__, "authorization", authorization) + if auto_repair_config is not None: + pulumi.set(__self__, "auto_repair_config", auto_repair_config) + if bootstrap_cluster_membership is not None: + pulumi.set(__self__, "bootstrap_cluster_membership", bootstrap_cluster_membership) + if control_plane_node is not None: + pulumi.set(__self__, "control_plane_node", control_plane_node) + if create_time is not None: + pulumi.set(__self__, "create_time", create_time) + if description is not None: + pulumi.set(__self__, "description", description) + if effective_annotations is not None: + pulumi.set(__self__, "effective_annotations", effective_annotations) + if endpoint is not None: + pulumi.set(__self__, "endpoint", endpoint) + if etag is not None: + pulumi.set(__self__, "etag", etag) + if fleets is not None: + pulumi.set(__self__, "fleets", fleets) + if image_type is not None: + pulumi.set(__self__, "image_type", image_type) + if load_balancer is not None: + pulumi.set(__self__, "load_balancer", load_balancer) + if local_name is not None: + pulumi.set(__self__, "local_name", local_name) + if location is not None: + pulumi.set(__self__, "location", location) + if name is not None: + pulumi.set(__self__, "name", name) + if network_config is not None: + pulumi.set(__self__, "network_config", network_config) + if on_prem_version is not None: + pulumi.set(__self__, "on_prem_version", on_prem_version) + if platform_config is not None: + pulumi.set(__self__, "platform_config", platform_config) + if project is not None: + pulumi.set(__self__, "project", project) + if reconciling is not None: + pulumi.set(__self__, "reconciling", reconciling) + if state is not None: + pulumi.set(__self__, "state", state) + if statuses is not None: + pulumi.set(__self__, "statuses", statuses) + if uid is not None: + pulumi.set(__self__, "uid", uid) + if update_time is not None: + pulumi.set(__self__, "update_time", update_time) + if vcenter is not None: + pulumi.set(__self__, "vcenter", vcenter) + + @property + @pulumi.getter(name="addonNode") + def addon_node(self) -> Optional[pulumi.Input['VmwareAdminClusterAddonNodeArgs']]: + """ + The VMware admin cluster addon node configuration. + """ + return pulumi.get(self, "addon_node") + + @addon_node.setter + def addon_node(self, value: Optional[pulumi.Input['VmwareAdminClusterAddonNodeArgs']]): + pulumi.set(self, "addon_node", value) + + @property + @pulumi.getter + def annotations(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size + of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), + separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with + alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is + non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field + 'effective_annotations' for all of the annotations present on the resource. + """ + return pulumi.get(self, "annotations") + + @annotations.setter + def annotations(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "annotations", value) + + @property + @pulumi.getter(name="antiAffinityGroups") + def anti_affinity_groups(self) -> Optional[pulumi.Input['VmwareAdminClusterAntiAffinityGroupsArgs']]: + """ + AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter. + """ + return pulumi.get(self, "anti_affinity_groups") + + @anti_affinity_groups.setter + def anti_affinity_groups(self, value: Optional[pulumi.Input['VmwareAdminClusterAntiAffinityGroupsArgs']]): + pulumi.set(self, "anti_affinity_groups", value) + + @property + @pulumi.getter + def authorization(self) -> Optional[pulumi.Input['VmwareAdminClusterAuthorizationArgs']]: + """ + The VMware admin cluster authorization configuration. + """ + return pulumi.get(self, "authorization") + + @authorization.setter + def authorization(self, value: Optional[pulumi.Input['VmwareAdminClusterAuthorizationArgs']]): + pulumi.set(self, "authorization", value) + + @property + @pulumi.getter(name="autoRepairConfig") + def auto_repair_config(self) -> Optional[pulumi.Input['VmwareAdminClusterAutoRepairConfigArgs']]: + """ + Configuration for auto repairing. + """ + return pulumi.get(self, "auto_repair_config") + + @auto_repair_config.setter + def auto_repair_config(self, value: Optional[pulumi.Input['VmwareAdminClusterAutoRepairConfigArgs']]): + pulumi.set(self, "auto_repair_config", value) + + @property + @pulumi.getter(name="bootstrapClusterMembership") + def bootstrap_cluster_membership(self) -> Optional[pulumi.Input[str]]: + """ + The bootstrap cluster this VMware admin cluster belongs to. + """ + return pulumi.get(self, "bootstrap_cluster_membership") + + @bootstrap_cluster_membership.setter + def bootstrap_cluster_membership(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "bootstrap_cluster_membership", value) + + @property + @pulumi.getter(name="controlPlaneNode") + def control_plane_node(self) -> Optional[pulumi.Input['VmwareAdminClusterControlPlaneNodeArgs']]: + """ + The VMware admin cluster control plane node configuration. + """ + return pulumi.get(self, "control_plane_node") + + @control_plane_node.setter + def control_plane_node(self, value: Optional[pulumi.Input['VmwareAdminClusterControlPlaneNodeArgs']]): + pulumi.set(self, "control_plane_node", value) + + @property + @pulumi.getter(name="createTime") + def create_time(self) -> Optional[pulumi.Input[str]]: + """ + The time the cluster was created, in RFC3339 text format. + """ + return pulumi.get(self, "create_time") + + @create_time.setter + def create_time(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "create_time", value) + + @property + @pulumi.getter + def description(self) -> Optional[pulumi.Input[str]]: + """ + A human readable description of this VMware admin cluster. + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "description", value) + + @property + @pulumi.getter(name="effectiveAnnotations") + def effective_annotations(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + return pulumi.get(self, "effective_annotations") + + @effective_annotations.setter + def effective_annotations(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "effective_annotations", value) + + @property + @pulumi.getter + def endpoint(self) -> Optional[pulumi.Input[str]]: + """ + The DNS name of VMware admin cluster's API server. + """ + return pulumi.get(self, "endpoint") + + @endpoint.setter + def endpoint(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "endpoint", value) + + @property + @pulumi.getter + def etag(self) -> Optional[pulumi.Input[str]]: + """ + This checksum is computed by the server based on the value of other + fields, and may be sent on update and delete requests to ensure the + client has an up-to-date value before proceeding. + Allows clients to perform consistent read-modify-writes + through optimistic concurrency control. + """ + return pulumi.get(self, "etag") + + @etag.setter + def etag(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "etag", value) + + @property + @pulumi.getter + def fleets(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterFleetArgs']]]]: + """ + Fleet configuration for the cluster. + Structure is documented below. + """ + return pulumi.get(self, "fleets") + + @fleets.setter + def fleets(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterFleetArgs']]]]): + pulumi.set(self, "fleets", value) + + @property + @pulumi.getter(name="imageType") + def image_type(self) -> Optional[pulumi.Input[str]]: + """ + The OS image type for the VMware admin cluster. + """ + return pulumi.get(self, "image_type") + + @image_type.setter + def image_type(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "image_type", value) + + @property + @pulumi.getter(name="loadBalancer") + def load_balancer(self) -> Optional[pulumi.Input['VmwareAdminClusterLoadBalancerArgs']]: + """ + Specifies the load balancer configuration for VMware admin cluster. + """ + return pulumi.get(self, "load_balancer") + + @load_balancer.setter + def load_balancer(self, value: Optional[pulumi.Input['VmwareAdminClusterLoadBalancerArgs']]): + pulumi.set(self, "load_balancer", value) + + @property + @pulumi.getter(name="localName") + def local_name(self) -> Optional[pulumi.Input[str]]: + """ + The object name of the VMwareAdminCluster custom resource on the + associated admin cluster. This field is used to support conflicting + names when enrolling existing clusters to the API. When used as a part of + cluster enrollment, this field will differ from the ID in the resource + name. For new clusters, this field will match the user provided cluster ID + and be visible in the last component of the resource name. It is not + modifiable. + All users should use this name to access their cluster using gkectl or + kubectl and should expect to see the local name when viewing admin + cluster controller logs. + """ + return pulumi.get(self, "local_name") + + @local_name.setter + def local_name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "local_name", value) + + @property + @pulumi.getter + def location(self) -> Optional[pulumi.Input[str]]: + """ + The location of the resource. + """ + return pulumi.get(self, "location") + + @location.setter + def location(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "location", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The VMware admin cluster resource name. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter(name="networkConfig") + def network_config(self) -> Optional[pulumi.Input['VmwareAdminClusterNetworkConfigArgs']]: + """ + The VMware admin cluster network configuration. + Structure is documented below. + """ + return pulumi.get(self, "network_config") + + @network_config.setter + def network_config(self, value: Optional[pulumi.Input['VmwareAdminClusterNetworkConfigArgs']]): + pulumi.set(self, "network_config", value) + + @property + @pulumi.getter(name="onPremVersion") + def on_prem_version(self) -> Optional[pulumi.Input[str]]: + """ + The Anthos clusters on the VMware version for the admin cluster. + """ + return pulumi.get(self, "on_prem_version") + + @on_prem_version.setter + def on_prem_version(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "on_prem_version", value) + + @property + @pulumi.getter(name="platformConfig") + def platform_config(self) -> Optional[pulumi.Input['VmwareAdminClusterPlatformConfigArgs']]: + """ + The VMware platform configuration. + """ + return pulumi.get(self, "platform_config") + + @platform_config.setter + def platform_config(self, value: Optional[pulumi.Input['VmwareAdminClusterPlatformConfigArgs']]): + pulumi.set(self, "platform_config", value) + + @property + @pulumi.getter + def project(self) -> Optional[pulumi.Input[str]]: + return pulumi.get(self, "project") + + @project.setter + def project(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "project", value) + + @property + @pulumi.getter + def reconciling(self) -> Optional[pulumi.Input[bool]]: + """ + If set, there are currently changes in flight to the VMware admin cluster. + """ + return pulumi.get(self, "reconciling") + + @reconciling.setter + def reconciling(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "reconciling", value) + + @property + @pulumi.getter + def state(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + The lifecycle state of the condition. + """ + return pulumi.get(self, "state") + + @state.setter + def state(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "state", value) + + @property + @pulumi.getter + def statuses(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterStatusArgs']]]]: + """ + ResourceStatus representing detailed cluster state. + Structure is documented below. + """ + return pulumi.get(self, "statuses") + + @statuses.setter + def statuses(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminClusterStatusArgs']]]]): + pulumi.set(self, "statuses", value) + + @property + @pulumi.getter + def uid(self) -> Optional[pulumi.Input[str]]: + """ + The unique identifier of the VMware Admin Cluster. + """ + return pulumi.get(self, "uid") + + @uid.setter + def uid(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "uid", value) + + @property + @pulumi.getter(name="updateTime") + def update_time(self) -> Optional[pulumi.Input[str]]: + """ + The time the cluster was last updated, in RFC3339 text format. + """ + return pulumi.get(self, "update_time") + + @update_time.setter + def update_time(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "update_time", value) + + @property + @pulumi.getter + def vcenter(self) -> Optional[pulumi.Input['VmwareAdminClusterVcenterArgs']]: + """ + Specifies vCenter config for the admin cluster. + """ + return pulumi.get(self, "vcenter") + + @vcenter.setter + def vcenter(self, value: Optional[pulumi.Input['VmwareAdminClusterVcenterArgs']]): + pulumi.set(self, "vcenter", value) + + +class VmwareAdminCluster(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + addon_node: Optional[pulumi.Input[Union['VmwareAdminClusterAddonNodeArgs', 'VmwareAdminClusterAddonNodeArgsDict']]] = None, + annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + anti_affinity_groups: Optional[pulumi.Input[Union['VmwareAdminClusterAntiAffinityGroupsArgs', 'VmwareAdminClusterAntiAffinityGroupsArgsDict']]] = None, + authorization: Optional[pulumi.Input[Union['VmwareAdminClusterAuthorizationArgs', 'VmwareAdminClusterAuthorizationArgsDict']]] = None, + auto_repair_config: Optional[pulumi.Input[Union['VmwareAdminClusterAutoRepairConfigArgs', 'VmwareAdminClusterAutoRepairConfigArgsDict']]] = None, + bootstrap_cluster_membership: Optional[pulumi.Input[str]] = None, + control_plane_node: Optional[pulumi.Input[Union['VmwareAdminClusterControlPlaneNodeArgs', 'VmwareAdminClusterControlPlaneNodeArgsDict']]] = None, + description: Optional[pulumi.Input[str]] = None, + image_type: Optional[pulumi.Input[str]] = None, + load_balancer: Optional[pulumi.Input[Union['VmwareAdminClusterLoadBalancerArgs', 'VmwareAdminClusterLoadBalancerArgsDict']]] = None, + location: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + network_config: Optional[pulumi.Input[Union['VmwareAdminClusterNetworkConfigArgs', 'VmwareAdminClusterNetworkConfigArgsDict']]] = None, + on_prem_version: Optional[pulumi.Input[str]] = None, + platform_config: Optional[pulumi.Input[Union['VmwareAdminClusterPlatformConfigArgs', 'VmwareAdminClusterPlatformConfigArgsDict']]] = None, + project: Optional[pulumi.Input[str]] = None, + vcenter: Optional[pulumi.Input[Union['VmwareAdminClusterVcenterArgs', 'VmwareAdminClusterVcenterArgsDict']]] = None, + __props__=None): + """ + ## Example Usage + + ### Gkeonprem Vmware Admin Cluster Basic + + ```python + import pulumi + import pulumi_gcp as gcp + + admin_cluster_basic = gcp.gkeonprem.VmwareAdminCluster("admin-cluster-basic", + name="basic", + location="us-west1", + description="test admin cluster", + bootstrap_cluster_membership="projects/870316890899/locations/global/memberships/gkeonprem-terraform-test", + on_prem_version="1.31.0-gke.35", + image_type="ubuntu_containerd", + vcenter={ + "resource_pool": "test resource pool", + "datastore": "test data store", + "datacenter": "test data center", + "cluster": "test cluster", + "folder": "test folder", + "ca_cert_data": "test ca cert data", + "address": "10.0.0.1", + "data_disk": "test data disk", + }, + network_config={ + "service_address_cidr_blocks": ["10.96.0.0/12"], + "pod_address_cidr_blocks": ["192.168.0.0/16"], + "dhcp_ip_config": { + "enabled": True, + }, + }, + control_plane_node={ + "cpus": 4, + "memory": 8192, + }, + load_balancer={ + "vip_config": { + "control_plane_vip": "10.251.133.5", + "addons_vip": "10.251.135.19", + }, + "f5_config": { + "address": "10.251.135.22", + "partition": "test-parition", + "snat_pool": "test-snat-pool", + }, + }) + ``` + ### Gkeonprem Vmware Admin Cluster Full + + ```python + import pulumi + import pulumi_gcp as gcp + + admin_cluster_full = gcp.gkeonprem.VmwareAdminCluster("admin-cluster-full", + name="full", + location="us-west1", + description="test admin cluster", + bootstrap_cluster_membership="projects/870316890899/locations/global/memberships/gkeonprem-terraform-test", + on_prem_version="1.31.0-gke.35", + image_type="ubuntu_containerd", + annotations={}, + vcenter={ + "resource_pool": "test resource pool", + "datastore": "test data store", + "datacenter": "test data center", + "cluster": "test cluster", + "folder": "test folder", + "ca_cert_data": "test ca cert data", + "address": "10.0.0.1", + "data_disk": "test data disk", + "storage_policy_name": "storage_policy_name", + }, + network_config={ + "service_address_cidr_blocks": ["10.96.0.0/12"], + "pod_address_cidr_blocks": ["192.168.0.0/16"], + "ha_control_plane_config": { + "control_plane_ip_block": { + "gateway": "10.0.0.3", + "ips": [{ + "hostname": "hostname", + "ip": "10.0.0.4", + }], + "netmask": "10.0.0.3/32", + }, + }, + "host_config": { + "dns_servers": ["10.254.41.1"], + "ntp_servers": ["216.239.35.8"], + "dns_search_domains": ["test-domain"], + }, + "static_ip_config": { + "ip_blocks": [{ + "gateway": "10.0.0.1", + "ips": [{ + "hostname": "hostname", + "ip": "10.0.0.2", + }], + "netmask": "10.0.0.3/32", + }], + }, + "vcenter_network": "test-vcenter-network", + }, + control_plane_node={ + "cpus": 4, + "memory": 8192, + "replicas": 3, + }, + load_balancer={ + "vip_config": { + "control_plane_vip": "10.251.133.5", + "addons_vip": "10.251.135.19", + }, + "manual_lb_config": { + "addons_node_port": 30005, + "control_plane_node_port": 30006, + "ingress_http_node_port": 30007, + "ingress_https_node_port": 30008, + "konnectivity_server_node_port": 30009, + }, + }, + addon_node={ + "auto_resize_config": { + "enabled": True, + }, + }, + anti_affinity_groups={ + "aag_config_disabled": True, + }, + authorization={ + "viewer_users": [{ + "username": "user1@gmail.com", + }], + }, + auto_repair_config={ + "enabled": True, + }, + platform_config={ + "required_platform_version": "1.31.0", + }) + ``` + ### Gkeonprem Vmware Admin Cluster Metallb + + ```python + import pulumi + import pulumi_gcp as gcp + + admin_cluster_metallb = gcp.gkeonprem.VmwareAdminCluster("admin-cluster-metallb", + name="metallb", + location="us-west1", + description="test admin cluster", + bootstrap_cluster_membership="projects/870316890899/locations/global/memberships/gkeonprem-terraform-test", + on_prem_version="1.31.0-gke.35", + image_type="ubuntu_containerd", + vcenter={ + "resource_pool": "test resource pool", + "datastore": "test data store", + "datacenter": "test data center", + "cluster": "test cluster", + "folder": "test folder", + "ca_cert_data": "test ca cert data", + "address": "10.0.0.1", + "data_disk": "test data disk", + }, + network_config={ + "service_address_cidr_blocks": ["10.96.0.0/12"], + "pod_address_cidr_blocks": ["192.168.0.0/16"], + "dhcp_ip_config": { + "enabled": True, + }, + }, + control_plane_node={ + "cpus": 4, + "memory": 8192, + }, + load_balancer={ + "vip_config": { + "control_plane_vip": "10.251.133.5", + "addons_vip": "10.251.135.19", + }, + "metal_lb_config": { + "enabled": True, + }, + }) + ``` + + ## Import + + VmwareAdminCluster can be imported using any of these accepted formats: + + * `projects/{{project}}/locations/{{location}}/vmwareAdminClusters/{{name}}` + + * `{{project}}/{{location}}/{{name}}` + + * `{{location}}/{{name}}` + + When using the `pulumi import` command, VmwareAdminCluster can be imported using one of the formats above. For example: + + ```sh + $ pulumi import gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster default projects/{{project}}/locations/{{location}}/vmwareAdminClusters/{{name}} + ``` + + ```sh + $ pulumi import gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster default {{project}}/{{location}}/{{name}} + ``` + + ```sh + $ pulumi import gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster default {{location}}/{{name}} + ``` + + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[Union['VmwareAdminClusterAddonNodeArgs', 'VmwareAdminClusterAddonNodeArgsDict']] addon_node: The VMware admin cluster addon node configuration. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] annotations: Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size + of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), + separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with + alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is + non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field + 'effective_annotations' for all of the annotations present on the resource. + :param pulumi.Input[Union['VmwareAdminClusterAntiAffinityGroupsArgs', 'VmwareAdminClusterAntiAffinityGroupsArgsDict']] anti_affinity_groups: AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter. + :param pulumi.Input[Union['VmwareAdminClusterAuthorizationArgs', 'VmwareAdminClusterAuthorizationArgsDict']] authorization: The VMware admin cluster authorization configuration. + :param pulumi.Input[Union['VmwareAdminClusterAutoRepairConfigArgs', 'VmwareAdminClusterAutoRepairConfigArgsDict']] auto_repair_config: Configuration for auto repairing. + :param pulumi.Input[str] bootstrap_cluster_membership: The bootstrap cluster this VMware admin cluster belongs to. + :param pulumi.Input[Union['VmwareAdminClusterControlPlaneNodeArgs', 'VmwareAdminClusterControlPlaneNodeArgsDict']] control_plane_node: The VMware admin cluster control plane node configuration. + :param pulumi.Input[str] description: A human readable description of this VMware admin cluster. + :param pulumi.Input[str] image_type: The OS image type for the VMware admin cluster. + :param pulumi.Input[Union['VmwareAdminClusterLoadBalancerArgs', 'VmwareAdminClusterLoadBalancerArgsDict']] load_balancer: Specifies the load balancer configuration for VMware admin cluster. + :param pulumi.Input[str] location: The location of the resource. + :param pulumi.Input[str] name: The VMware admin cluster resource name. + :param pulumi.Input[Union['VmwareAdminClusterNetworkConfigArgs', 'VmwareAdminClusterNetworkConfigArgsDict']] network_config: The VMware admin cluster network configuration. + Structure is documented below. + :param pulumi.Input[str] on_prem_version: The Anthos clusters on the VMware version for the admin cluster. + :param pulumi.Input[Union['VmwareAdminClusterPlatformConfigArgs', 'VmwareAdminClusterPlatformConfigArgsDict']] platform_config: The VMware platform configuration. + :param pulumi.Input[Union['VmwareAdminClusterVcenterArgs', 'VmwareAdminClusterVcenterArgsDict']] vcenter: Specifies vCenter config for the admin cluster. + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: VmwareAdminClusterArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + ## Example Usage + + ### Gkeonprem Vmware Admin Cluster Basic + + ```python + import pulumi + import pulumi_gcp as gcp + + admin_cluster_basic = gcp.gkeonprem.VmwareAdminCluster("admin-cluster-basic", + name="basic", + location="us-west1", + description="test admin cluster", + bootstrap_cluster_membership="projects/870316890899/locations/global/memberships/gkeonprem-terraform-test", + on_prem_version="1.31.0-gke.35", + image_type="ubuntu_containerd", + vcenter={ + "resource_pool": "test resource pool", + "datastore": "test data store", + "datacenter": "test data center", + "cluster": "test cluster", + "folder": "test folder", + "ca_cert_data": "test ca cert data", + "address": "10.0.0.1", + "data_disk": "test data disk", + }, + network_config={ + "service_address_cidr_blocks": ["10.96.0.0/12"], + "pod_address_cidr_blocks": ["192.168.0.0/16"], + "dhcp_ip_config": { + "enabled": True, + }, + }, + control_plane_node={ + "cpus": 4, + "memory": 8192, + }, + load_balancer={ + "vip_config": { + "control_plane_vip": "10.251.133.5", + "addons_vip": "10.251.135.19", + }, + "f5_config": { + "address": "10.251.135.22", + "partition": "test-parition", + "snat_pool": "test-snat-pool", + }, + }) + ``` + ### Gkeonprem Vmware Admin Cluster Full + + ```python + import pulumi + import pulumi_gcp as gcp + + admin_cluster_full = gcp.gkeonprem.VmwareAdminCluster("admin-cluster-full", + name="full", + location="us-west1", + description="test admin cluster", + bootstrap_cluster_membership="projects/870316890899/locations/global/memberships/gkeonprem-terraform-test", + on_prem_version="1.31.0-gke.35", + image_type="ubuntu_containerd", + annotations={}, + vcenter={ + "resource_pool": "test resource pool", + "datastore": "test data store", + "datacenter": "test data center", + "cluster": "test cluster", + "folder": "test folder", + "ca_cert_data": "test ca cert data", + "address": "10.0.0.1", + "data_disk": "test data disk", + "storage_policy_name": "storage_policy_name", + }, + network_config={ + "service_address_cidr_blocks": ["10.96.0.0/12"], + "pod_address_cidr_blocks": ["192.168.0.0/16"], + "ha_control_plane_config": { + "control_plane_ip_block": { + "gateway": "10.0.0.3", + "ips": [{ + "hostname": "hostname", + "ip": "10.0.0.4", + }], + "netmask": "10.0.0.3/32", + }, + }, + "host_config": { + "dns_servers": ["10.254.41.1"], + "ntp_servers": ["216.239.35.8"], + "dns_search_domains": ["test-domain"], + }, + "static_ip_config": { + "ip_blocks": [{ + "gateway": "10.0.0.1", + "ips": [{ + "hostname": "hostname", + "ip": "10.0.0.2", + }], + "netmask": "10.0.0.3/32", + }], + }, + "vcenter_network": "test-vcenter-network", + }, + control_plane_node={ + "cpus": 4, + "memory": 8192, + "replicas": 3, + }, + load_balancer={ + "vip_config": { + "control_plane_vip": "10.251.133.5", + "addons_vip": "10.251.135.19", + }, + "manual_lb_config": { + "addons_node_port": 30005, + "control_plane_node_port": 30006, + "ingress_http_node_port": 30007, + "ingress_https_node_port": 30008, + "konnectivity_server_node_port": 30009, + }, + }, + addon_node={ + "auto_resize_config": { + "enabled": True, + }, + }, + anti_affinity_groups={ + "aag_config_disabled": True, + }, + authorization={ + "viewer_users": [{ + "username": "user1@gmail.com", + }], + }, + auto_repair_config={ + "enabled": True, + }, + platform_config={ + "required_platform_version": "1.31.0", + }) + ``` + ### Gkeonprem Vmware Admin Cluster Metallb + + ```python + import pulumi + import pulumi_gcp as gcp + + admin_cluster_metallb = gcp.gkeonprem.VmwareAdminCluster("admin-cluster-metallb", + name="metallb", + location="us-west1", + description="test admin cluster", + bootstrap_cluster_membership="projects/870316890899/locations/global/memberships/gkeonprem-terraform-test", + on_prem_version="1.31.0-gke.35", + image_type="ubuntu_containerd", + vcenter={ + "resource_pool": "test resource pool", + "datastore": "test data store", + "datacenter": "test data center", + "cluster": "test cluster", + "folder": "test folder", + "ca_cert_data": "test ca cert data", + "address": "10.0.0.1", + "data_disk": "test data disk", + }, + network_config={ + "service_address_cidr_blocks": ["10.96.0.0/12"], + "pod_address_cidr_blocks": ["192.168.0.0/16"], + "dhcp_ip_config": { + "enabled": True, + }, + }, + control_plane_node={ + "cpus": 4, + "memory": 8192, + }, + load_balancer={ + "vip_config": { + "control_plane_vip": "10.251.133.5", + "addons_vip": "10.251.135.19", + }, + "metal_lb_config": { + "enabled": True, + }, + }) + ``` + + ## Import + + VmwareAdminCluster can be imported using any of these accepted formats: + + * `projects/{{project}}/locations/{{location}}/vmwareAdminClusters/{{name}}` + + * `{{project}}/{{location}}/{{name}}` + + * `{{location}}/{{name}}` + + When using the `pulumi import` command, VmwareAdminCluster can be imported using one of the formats above. For example: + + ```sh + $ pulumi import gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster default projects/{{project}}/locations/{{location}}/vmwareAdminClusters/{{name}} + ``` + + ```sh + $ pulumi import gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster default {{project}}/{{location}}/{{name}} + ``` + + ```sh + $ pulumi import gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster default {{location}}/{{name}} + ``` + + :param str resource_name: The name of the resource. + :param VmwareAdminClusterArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(VmwareAdminClusterArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + addon_node: Optional[pulumi.Input[Union['VmwareAdminClusterAddonNodeArgs', 'VmwareAdminClusterAddonNodeArgsDict']]] = None, + annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + anti_affinity_groups: Optional[pulumi.Input[Union['VmwareAdminClusterAntiAffinityGroupsArgs', 'VmwareAdminClusterAntiAffinityGroupsArgsDict']]] = None, + authorization: Optional[pulumi.Input[Union['VmwareAdminClusterAuthorizationArgs', 'VmwareAdminClusterAuthorizationArgsDict']]] = None, + auto_repair_config: Optional[pulumi.Input[Union['VmwareAdminClusterAutoRepairConfigArgs', 'VmwareAdminClusterAutoRepairConfigArgsDict']]] = None, + bootstrap_cluster_membership: Optional[pulumi.Input[str]] = None, + control_plane_node: Optional[pulumi.Input[Union['VmwareAdminClusterControlPlaneNodeArgs', 'VmwareAdminClusterControlPlaneNodeArgsDict']]] = None, + description: Optional[pulumi.Input[str]] = None, + image_type: Optional[pulumi.Input[str]] = None, + load_balancer: Optional[pulumi.Input[Union['VmwareAdminClusterLoadBalancerArgs', 'VmwareAdminClusterLoadBalancerArgsDict']]] = None, + location: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + network_config: Optional[pulumi.Input[Union['VmwareAdminClusterNetworkConfigArgs', 'VmwareAdminClusterNetworkConfigArgsDict']]] = None, + on_prem_version: Optional[pulumi.Input[str]] = None, + platform_config: Optional[pulumi.Input[Union['VmwareAdminClusterPlatformConfigArgs', 'VmwareAdminClusterPlatformConfigArgsDict']]] = None, + project: Optional[pulumi.Input[str]] = None, + vcenter: Optional[pulumi.Input[Union['VmwareAdminClusterVcenterArgs', 'VmwareAdminClusterVcenterArgsDict']]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = VmwareAdminClusterArgs.__new__(VmwareAdminClusterArgs) + + __props__.__dict__["addon_node"] = addon_node + __props__.__dict__["annotations"] = annotations + __props__.__dict__["anti_affinity_groups"] = anti_affinity_groups + __props__.__dict__["authorization"] = authorization + __props__.__dict__["auto_repair_config"] = auto_repair_config + __props__.__dict__["bootstrap_cluster_membership"] = bootstrap_cluster_membership + __props__.__dict__["control_plane_node"] = control_plane_node + __props__.__dict__["description"] = description + __props__.__dict__["image_type"] = image_type + __props__.__dict__["load_balancer"] = load_balancer + if location is None and not opts.urn: + raise TypeError("Missing required property 'location'") + __props__.__dict__["location"] = location + __props__.__dict__["name"] = name + if network_config is None and not opts.urn: + raise TypeError("Missing required property 'network_config'") + __props__.__dict__["network_config"] = network_config + __props__.__dict__["on_prem_version"] = on_prem_version + __props__.__dict__["platform_config"] = platform_config + __props__.__dict__["project"] = project + __props__.__dict__["vcenter"] = vcenter + __props__.__dict__["create_time"] = None + __props__.__dict__["effective_annotations"] = None + __props__.__dict__["endpoint"] = None + __props__.__dict__["etag"] = None + __props__.__dict__["fleets"] = None + __props__.__dict__["local_name"] = None + __props__.__dict__["reconciling"] = None + __props__.__dict__["state"] = None + __props__.__dict__["statuses"] = None + __props__.__dict__["uid"] = None + __props__.__dict__["update_time"] = None + super(VmwareAdminCluster, __self__).__init__( + 'gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + addon_node: Optional[pulumi.Input[Union['VmwareAdminClusterAddonNodeArgs', 'VmwareAdminClusterAddonNodeArgsDict']]] = None, + annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + anti_affinity_groups: Optional[pulumi.Input[Union['VmwareAdminClusterAntiAffinityGroupsArgs', 'VmwareAdminClusterAntiAffinityGroupsArgsDict']]] = None, + authorization: Optional[pulumi.Input[Union['VmwareAdminClusterAuthorizationArgs', 'VmwareAdminClusterAuthorizationArgsDict']]] = None, + auto_repair_config: Optional[pulumi.Input[Union['VmwareAdminClusterAutoRepairConfigArgs', 'VmwareAdminClusterAutoRepairConfigArgsDict']]] = None, + bootstrap_cluster_membership: Optional[pulumi.Input[str]] = None, + control_plane_node: Optional[pulumi.Input[Union['VmwareAdminClusterControlPlaneNodeArgs', 'VmwareAdminClusterControlPlaneNodeArgsDict']]] = None, + create_time: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + effective_annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + endpoint: Optional[pulumi.Input[str]] = None, + etag: Optional[pulumi.Input[str]] = None, + fleets: Optional[pulumi.Input[Sequence[pulumi.Input[Union['VmwareAdminClusterFleetArgs', 'VmwareAdminClusterFleetArgsDict']]]]] = None, + image_type: Optional[pulumi.Input[str]] = None, + load_balancer: Optional[pulumi.Input[Union['VmwareAdminClusterLoadBalancerArgs', 'VmwareAdminClusterLoadBalancerArgsDict']]] = None, + local_name: Optional[pulumi.Input[str]] = None, + location: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + network_config: Optional[pulumi.Input[Union['VmwareAdminClusterNetworkConfigArgs', 'VmwareAdminClusterNetworkConfigArgsDict']]] = None, + on_prem_version: Optional[pulumi.Input[str]] = None, + platform_config: Optional[pulumi.Input[Union['VmwareAdminClusterPlatformConfigArgs', 'VmwareAdminClusterPlatformConfigArgsDict']]] = None, + project: Optional[pulumi.Input[str]] = None, + reconciling: Optional[pulumi.Input[bool]] = None, + state: Optional[pulumi.Input[str]] = None, + statuses: Optional[pulumi.Input[Sequence[pulumi.Input[Union['VmwareAdminClusterStatusArgs', 'VmwareAdminClusterStatusArgsDict']]]]] = None, + uid: Optional[pulumi.Input[str]] = None, + update_time: Optional[pulumi.Input[str]] = None, + vcenter: Optional[pulumi.Input[Union['VmwareAdminClusterVcenterArgs', 'VmwareAdminClusterVcenterArgsDict']]] = None) -> 'VmwareAdminCluster': + """ + Get an existing VmwareAdminCluster resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[Union['VmwareAdminClusterAddonNodeArgs', 'VmwareAdminClusterAddonNodeArgsDict']] addon_node: The VMware admin cluster addon node configuration. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] annotations: Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size + of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), + separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with + alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is + non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field + 'effective_annotations' for all of the annotations present on the resource. + :param pulumi.Input[Union['VmwareAdminClusterAntiAffinityGroupsArgs', 'VmwareAdminClusterAntiAffinityGroupsArgsDict']] anti_affinity_groups: AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter. + :param pulumi.Input[Union['VmwareAdminClusterAuthorizationArgs', 'VmwareAdminClusterAuthorizationArgsDict']] authorization: The VMware admin cluster authorization configuration. + :param pulumi.Input[Union['VmwareAdminClusterAutoRepairConfigArgs', 'VmwareAdminClusterAutoRepairConfigArgsDict']] auto_repair_config: Configuration for auto repairing. + :param pulumi.Input[str] bootstrap_cluster_membership: The bootstrap cluster this VMware admin cluster belongs to. + :param pulumi.Input[Union['VmwareAdminClusterControlPlaneNodeArgs', 'VmwareAdminClusterControlPlaneNodeArgsDict']] control_plane_node: The VMware admin cluster control plane node configuration. + :param pulumi.Input[str] create_time: The time the cluster was created, in RFC3339 text format. + :param pulumi.Input[str] description: A human readable description of this VMware admin cluster. + :param pulumi.Input[str] endpoint: The DNS name of VMware admin cluster's API server. + :param pulumi.Input[str] etag: This checksum is computed by the server based on the value of other + fields, and may be sent on update and delete requests to ensure the + client has an up-to-date value before proceeding. + Allows clients to perform consistent read-modify-writes + through optimistic concurrency control. + :param pulumi.Input[Sequence[pulumi.Input[Union['VmwareAdminClusterFleetArgs', 'VmwareAdminClusterFleetArgsDict']]]] fleets: Fleet configuration for the cluster. + Structure is documented below. + :param pulumi.Input[str] image_type: The OS image type for the VMware admin cluster. + :param pulumi.Input[Union['VmwareAdminClusterLoadBalancerArgs', 'VmwareAdminClusterLoadBalancerArgsDict']] load_balancer: Specifies the load balancer configuration for VMware admin cluster. + :param pulumi.Input[str] local_name: The object name of the VMwareAdminCluster custom resource on the + associated admin cluster. This field is used to support conflicting + names when enrolling existing clusters to the API. When used as a part of + cluster enrollment, this field will differ from the ID in the resource + name. For new clusters, this field will match the user provided cluster ID + and be visible in the last component of the resource name. It is not + modifiable. + All users should use this name to access their cluster using gkectl or + kubectl and should expect to see the local name when viewing admin + cluster controller logs. + :param pulumi.Input[str] location: The location of the resource. + :param pulumi.Input[str] name: The VMware admin cluster resource name. + :param pulumi.Input[Union['VmwareAdminClusterNetworkConfigArgs', 'VmwareAdminClusterNetworkConfigArgsDict']] network_config: The VMware admin cluster network configuration. + Structure is documented below. + :param pulumi.Input[str] on_prem_version: The Anthos clusters on the VMware version for the admin cluster. + :param pulumi.Input[Union['VmwareAdminClusterPlatformConfigArgs', 'VmwareAdminClusterPlatformConfigArgsDict']] platform_config: The VMware platform configuration. + :param pulumi.Input[bool] reconciling: If set, there are currently changes in flight to the VMware admin cluster. + :param pulumi.Input[str] state: (Output) + The lifecycle state of the condition. + :param pulumi.Input[Sequence[pulumi.Input[Union['VmwareAdminClusterStatusArgs', 'VmwareAdminClusterStatusArgsDict']]]] statuses: ResourceStatus representing detailed cluster state. + Structure is documented below. + :param pulumi.Input[str] uid: The unique identifier of the VMware Admin Cluster. + :param pulumi.Input[str] update_time: The time the cluster was last updated, in RFC3339 text format. + :param pulumi.Input[Union['VmwareAdminClusterVcenterArgs', 'VmwareAdminClusterVcenterArgsDict']] vcenter: Specifies vCenter config for the admin cluster. + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _VmwareAdminClusterState.__new__(_VmwareAdminClusterState) + + __props__.__dict__["addon_node"] = addon_node + __props__.__dict__["annotations"] = annotations + __props__.__dict__["anti_affinity_groups"] = anti_affinity_groups + __props__.__dict__["authorization"] = authorization + __props__.__dict__["auto_repair_config"] = auto_repair_config + __props__.__dict__["bootstrap_cluster_membership"] = bootstrap_cluster_membership + __props__.__dict__["control_plane_node"] = control_plane_node + __props__.__dict__["create_time"] = create_time + __props__.__dict__["description"] = description + __props__.__dict__["effective_annotations"] = effective_annotations + __props__.__dict__["endpoint"] = endpoint + __props__.__dict__["etag"] = etag + __props__.__dict__["fleets"] = fleets + __props__.__dict__["image_type"] = image_type + __props__.__dict__["load_balancer"] = load_balancer + __props__.__dict__["local_name"] = local_name + __props__.__dict__["location"] = location + __props__.__dict__["name"] = name + __props__.__dict__["network_config"] = network_config + __props__.__dict__["on_prem_version"] = on_prem_version + __props__.__dict__["platform_config"] = platform_config + __props__.__dict__["project"] = project + __props__.__dict__["reconciling"] = reconciling + __props__.__dict__["state"] = state + __props__.__dict__["statuses"] = statuses + __props__.__dict__["uid"] = uid + __props__.__dict__["update_time"] = update_time + __props__.__dict__["vcenter"] = vcenter + return VmwareAdminCluster(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter(name="addonNode") + def addon_node(self) -> pulumi.Output['outputs.VmwareAdminClusterAddonNode']: + """ + The VMware admin cluster addon node configuration. + """ + return pulumi.get(self, "addon_node") + + @property + @pulumi.getter + def annotations(self) -> pulumi.Output[Mapping[str, str]]: + """ + Annotations on the VMware Admin Cluster. This field has the same restrictions as Kubernetes annotations. The total size + of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), + separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with + alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between. **Note**: This field is + non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field + 'effective_annotations' for all of the annotations present on the resource. + """ + return pulumi.get(self, "annotations") + + @property + @pulumi.getter(name="antiAffinityGroups") + def anti_affinity_groups(self) -> pulumi.Output['outputs.VmwareAdminClusterAntiAffinityGroups']: + """ + AAGConfig specifies whether to spread VMware Admin Cluster nodes across at least three physical hosts in the datacenter. + """ + return pulumi.get(self, "anti_affinity_groups") + + @property + @pulumi.getter + def authorization(self) -> pulumi.Output[Optional['outputs.VmwareAdminClusterAuthorization']]: + """ + The VMware admin cluster authorization configuration. + """ + return pulumi.get(self, "authorization") + + @property + @pulumi.getter(name="autoRepairConfig") + def auto_repair_config(self) -> pulumi.Output['outputs.VmwareAdminClusterAutoRepairConfig']: + """ + Configuration for auto repairing. + """ + return pulumi.get(self, "auto_repair_config") + + @property + @pulumi.getter(name="bootstrapClusterMembership") + def bootstrap_cluster_membership(self) -> pulumi.Output[str]: + """ + The bootstrap cluster this VMware admin cluster belongs to. + """ + return pulumi.get(self, "bootstrap_cluster_membership") + + @property + @pulumi.getter(name="controlPlaneNode") + def control_plane_node(self) -> pulumi.Output[Optional['outputs.VmwareAdminClusterControlPlaneNode']]: + """ + The VMware admin cluster control plane node configuration. + """ + return pulumi.get(self, "control_plane_node") + + @property + @pulumi.getter(name="createTime") + def create_time(self) -> pulumi.Output[str]: + """ + The time the cluster was created, in RFC3339 text format. + """ + return pulumi.get(self, "create_time") + + @property + @pulumi.getter + def description(self) -> pulumi.Output[str]: + """ + A human readable description of this VMware admin cluster. + """ + return pulumi.get(self, "description") + + @property + @pulumi.getter(name="effectiveAnnotations") + def effective_annotations(self) -> pulumi.Output[Mapping[str, str]]: + return pulumi.get(self, "effective_annotations") + + @property + @pulumi.getter + def endpoint(self) -> pulumi.Output[str]: + """ + The DNS name of VMware admin cluster's API server. + """ + return pulumi.get(self, "endpoint") + + @property + @pulumi.getter + def etag(self) -> pulumi.Output[str]: + """ + This checksum is computed by the server based on the value of other + fields, and may be sent on update and delete requests to ensure the + client has an up-to-date value before proceeding. + Allows clients to perform consistent read-modify-writes + through optimistic concurrency control. + """ + return pulumi.get(self, "etag") + + @property + @pulumi.getter + def fleets(self) -> pulumi.Output[Sequence['outputs.VmwareAdminClusterFleet']]: + """ + Fleet configuration for the cluster. + Structure is documented below. + """ + return pulumi.get(self, "fleets") + + @property + @pulumi.getter(name="imageType") + def image_type(self) -> pulumi.Output[str]: + """ + The OS image type for the VMware admin cluster. + """ + return pulumi.get(self, "image_type") + + @property + @pulumi.getter(name="loadBalancer") + def load_balancer(self) -> pulumi.Output[Optional['outputs.VmwareAdminClusterLoadBalancer']]: + """ + Specifies the load balancer configuration for VMware admin cluster. + """ + return pulumi.get(self, "load_balancer") + + @property + @pulumi.getter(name="localName") + def local_name(self) -> pulumi.Output[str]: + """ + The object name of the VMwareAdminCluster custom resource on the + associated admin cluster. This field is used to support conflicting + names when enrolling existing clusters to the API. When used as a part of + cluster enrollment, this field will differ from the ID in the resource + name. For new clusters, this field will match the user provided cluster ID + and be visible in the last component of the resource name. It is not + modifiable. + All users should use this name to access their cluster using gkectl or + kubectl and should expect to see the local name when viewing admin + cluster controller logs. + """ + return pulumi.get(self, "local_name") + + @property + @pulumi.getter + def location(self) -> pulumi.Output[str]: + """ + The location of the resource. + """ + return pulumi.get(self, "location") + + @property + @pulumi.getter + def name(self) -> pulumi.Output[str]: + """ + The VMware admin cluster resource name. + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter(name="networkConfig") + def network_config(self) -> pulumi.Output['outputs.VmwareAdminClusterNetworkConfig']: + """ + The VMware admin cluster network configuration. + Structure is documented below. + """ + return pulumi.get(self, "network_config") + + @property + @pulumi.getter(name="onPremVersion") + def on_prem_version(self) -> pulumi.Output[Optional[str]]: + """ + The Anthos clusters on the VMware version for the admin cluster. + """ + return pulumi.get(self, "on_prem_version") + + @property + @pulumi.getter(name="platformConfig") + def platform_config(self) -> pulumi.Output[Optional['outputs.VmwareAdminClusterPlatformConfig']]: + """ + The VMware platform configuration. + """ + return pulumi.get(self, "platform_config") + + @property + @pulumi.getter + def project(self) -> pulumi.Output[str]: + return pulumi.get(self, "project") + + @property + @pulumi.getter + def reconciling(self) -> pulumi.Output[bool]: + """ + If set, there are currently changes in flight to the VMware admin cluster. + """ + return pulumi.get(self, "reconciling") + + @property + @pulumi.getter + def state(self) -> pulumi.Output[str]: + """ + (Output) + The lifecycle state of the condition. + """ + return pulumi.get(self, "state") + + @property + @pulumi.getter + def statuses(self) -> pulumi.Output[Sequence['outputs.VmwareAdminClusterStatus']]: + """ + ResourceStatus representing detailed cluster state. + Structure is documented below. + """ + return pulumi.get(self, "statuses") + + @property + @pulumi.getter + def uid(self) -> pulumi.Output[str]: + """ + The unique identifier of the VMware Admin Cluster. + """ + return pulumi.get(self, "uid") + + @property + @pulumi.getter(name="updateTime") + def update_time(self) -> pulumi.Output[str]: + """ + The time the cluster was last updated, in RFC3339 text format. + """ + return pulumi.get(self, "update_time") + + @property + @pulumi.getter + def vcenter(self) -> pulumi.Output[Optional['outputs.VmwareAdminClusterVcenter']]: + """ + Specifies vCenter config for the admin cluster. + """ + return pulumi.get(self, "vcenter") + diff --git a/sdk/python/pulumi_gcp/integrationconnectors/_inputs.py b/sdk/python/pulumi_gcp/integrationconnectors/_inputs.py index 4bc8e3df99..e72e58c068 100644 --- a/sdk/python/pulumi_gcp/integrationconnectors/_inputs.py +++ b/sdk/python/pulumi_gcp/integrationconnectors/_inputs.py @@ -2519,7 +2519,7 @@ def statuses(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['Connectio class ConnectionEventingRuntimeDataStatusArgsDict(TypedDict): description: NotRequired[pulumi.Input[str]] """ - An arbitrary description for the Conection. + An arbitrary description for the Connection. """ state: NotRequired[pulumi.Input[str]] """ @@ -2535,7 +2535,7 @@ def __init__(__self__, *, description: Optional[pulumi.Input[str]] = None, state: Optional[pulumi.Input[str]] = None): """ - :param pulumi.Input[str] description: An arbitrary description for the Conection. + :param pulumi.Input[str] description: An arbitrary description for the Connection. :param pulumi.Input[str] state: (Output) State of the Eventing """ @@ -2548,7 +2548,7 @@ def __init__(__self__, *, @pulumi.getter def description(self) -> Optional[pulumi.Input[str]]: """ - An arbitrary description for the Conection. + An arbitrary description for the Connection. """ return pulumi.get(self, "description") @@ -3299,7 +3299,7 @@ def secret_version(self, value: pulumi.Input[str]): class ConnectionStatusArgsDict(TypedDict): description: NotRequired[pulumi.Input[str]] """ - An arbitrary description for the Conection. + An arbitrary description for the Connection. """ state: NotRequired[pulumi.Input[str]] """ @@ -3322,7 +3322,7 @@ def __init__(__self__, *, state: Optional[pulumi.Input[str]] = None, status: Optional[pulumi.Input[str]] = None): """ - :param pulumi.Input[str] description: An arbitrary description for the Conection. + :param pulumi.Input[str] description: An arbitrary description for the Connection. :param pulumi.Input[str] state: (Output) State of the Eventing :param pulumi.Input[str] status: (Output) @@ -3340,7 +3340,7 @@ def __init__(__self__, *, @pulumi.getter def description(self) -> Optional[pulumi.Input[str]]: """ - An arbitrary description for the Conection. + An arbitrary description for the Connection. """ return pulumi.get(self, "description") diff --git a/sdk/python/pulumi_gcp/integrationconnectors/connection.py b/sdk/python/pulumi_gcp/integrationconnectors/connection.py index 770b732edc..d380616d3c 100644 --- a/sdk/python/pulumi_gcp/integrationconnectors/connection.py +++ b/sdk/python/pulumi_gcp/integrationconnectors/connection.py @@ -46,7 +46,7 @@ def __init__(__self__, *, Structure is documented below. :param pulumi.Input[Sequence[pulumi.Input['ConnectionConfigVariableArgs']]] config_variables: Config Variables for the connection. Structure is documented below. - :param pulumi.Input[str] description: An arbitrary description for the Conection. + :param pulumi.Input[str] description: An arbitrary description for the Connection. :param pulumi.Input[Sequence[pulumi.Input['ConnectionDestinationConfigArgs']]] destination_configs: Define the Connectors target endpoint. Structure is documented below. :param pulumi.Input['ConnectionEventingConfigArgs'] eventing_config: Eventing Configuration of a connection @@ -161,7 +161,7 @@ def config_variables(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['C @pulumi.getter def description(self) -> Optional[pulumi.Input[str]]: """ - An arbitrary description for the Conection. + An arbitrary description for the Connection. """ return pulumi.get(self, "description") @@ -371,7 +371,7 @@ def __init__(__self__, *, Structure is documented below. :param pulumi.Input[str] connector_version_launch_stage: Flag to mark the version indicating the launch stage. :param pulumi.Input[str] create_time: Time the Namespace was created in UTC. - :param pulumi.Input[str] description: An arbitrary description for the Conection. + :param pulumi.Input[str] description: An arbitrary description for the Connection. :param pulumi.Input[Sequence[pulumi.Input['ConnectionDestinationConfigArgs']]] destination_configs: Define the Connectors target endpoint. Structure is documented below. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] effective_labels: All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. @@ -560,7 +560,7 @@ def create_time(self, value: Optional[pulumi.Input[str]]): @pulumi.getter def description(self) -> Optional[pulumi.Input[str]]: """ - An arbitrary description for the Conection. + An arbitrary description for the Connection. """ return pulumi.get(self, "description") @@ -1151,7 +1151,7 @@ def __init__(__self__, :param pulumi.Input[Sequence[pulumi.Input[Union['ConnectionConfigVariableArgs', 'ConnectionConfigVariableArgsDict']]]] config_variables: Config Variables for the connection. Structure is documented below. :param pulumi.Input[str] connector_version: connectorVersion of the Connector. - :param pulumi.Input[str] description: An arbitrary description for the Conection. + :param pulumi.Input[str] description: An arbitrary description for the Connection. :param pulumi.Input[Sequence[pulumi.Input[Union['ConnectionDestinationConfigArgs', 'ConnectionDestinationConfigArgsDict']]]] destination_configs: Define the Connectors target endpoint. Structure is documented below. :param pulumi.Input[Union['ConnectionEventingConfigArgs', 'ConnectionEventingConfigArgsDict']] eventing_config: Eventing Configuration of a connection @@ -1609,7 +1609,7 @@ def get(resource_name: str, Structure is documented below. :param pulumi.Input[str] connector_version_launch_stage: Flag to mark the version indicating the launch stage. :param pulumi.Input[str] create_time: Time the Namespace was created in UTC. - :param pulumi.Input[str] description: An arbitrary description for the Conection. + :param pulumi.Input[str] description: An arbitrary description for the Connection. :param pulumi.Input[Sequence[pulumi.Input[Union['ConnectionDestinationConfigArgs', 'ConnectionDestinationConfigArgsDict']]]] destination_configs: Define the Connectors target endpoint. Structure is documented below. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] effective_labels: All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. @@ -1747,7 +1747,7 @@ def create_time(self) -> pulumi.Output[str]: @pulumi.getter def description(self) -> pulumi.Output[Optional[str]]: """ - An arbitrary description for the Conection. + An arbitrary description for the Connection. """ return pulumi.get(self, "description") diff --git a/sdk/python/pulumi_gcp/integrationconnectors/outputs.py b/sdk/python/pulumi_gcp/integrationconnectors/outputs.py index 7e101abab0..707547b58b 100644 --- a/sdk/python/pulumi_gcp/integrationconnectors/outputs.py +++ b/sdk/python/pulumi_gcp/integrationconnectors/outputs.py @@ -2088,7 +2088,7 @@ def __init__(__self__, *, description: Optional[str] = None, state: Optional[str] = None): """ - :param str description: An arbitrary description for the Conection. + :param str description: An arbitrary description for the Connection. :param str state: (Output) State of the Eventing """ @@ -2101,7 +2101,7 @@ def __init__(__self__, *, @pulumi.getter def description(self) -> Optional[str]: """ - An arbitrary description for the Conection. + An arbitrary description for the Connection. """ return pulumi.get(self, "description") @@ -2733,7 +2733,7 @@ def __init__(__self__, *, state: Optional[str] = None, status: Optional[str] = None): """ - :param str description: An arbitrary description for the Conection. + :param str description: An arbitrary description for the Connection. :param str state: (Output) State of the Eventing :param str status: (Output) @@ -2751,7 +2751,7 @@ def __init__(__self__, *, @pulumi.getter def description(self) -> Optional[str]: """ - An arbitrary description for the Conection. + An arbitrary description for the Connection. """ return pulumi.get(self, "description") diff --git a/sdk/python/pulumi_gcp/kms/__init__.py b/sdk/python/pulumi_gcp/kms/__init__.py index 469e349191..9f77fedfa1 100644 --- a/sdk/python/pulumi_gcp/kms/__init__.py +++ b/sdk/python/pulumi_gcp/kms/__init__.py @@ -15,11 +15,13 @@ from .ekm_connection_iam_binding import * from .ekm_connection_iam_member import * from .ekm_connection_iam_policy import * +from .get_autokey_config import * from .get_crypto_key_iam_policy import * from .get_crypto_key_latest_version import * from .get_crypto_key_versions import * from .get_crypto_keys import * from .get_ekm_connection_iam_policy import * +from .get_key_handle import * from .get_key_ring_iam_policy import * from .get_key_rings import * from .get_kms_crypto_key import * diff --git a/sdk/python/pulumi_gcp/kms/get_autokey_config.py b/sdk/python/pulumi_gcp/kms/get_autokey_config.py new file mode 100644 index 0000000000..66612a97d4 --- /dev/null +++ b/sdk/python/pulumi_gcp/kms/get_autokey_config.py @@ -0,0 +1,121 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import sys +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +if sys.version_info >= (3, 11): + from typing import NotRequired, TypedDict, TypeAlias +else: + from typing_extensions import NotRequired, TypedDict, TypeAlias +from .. import _utilities + +__all__ = [ + 'GetAutokeyConfigResult', + 'AwaitableGetAutokeyConfigResult', + 'get_autokey_config', + 'get_autokey_config_output', +] + +@pulumi.output_type +class GetAutokeyConfigResult: + """ + A collection of values returned by getAutokeyConfig. + """ + def __init__(__self__, folder=None, id=None, key_project=None): + if folder and not isinstance(folder, str): + raise TypeError("Expected argument 'folder' to be a str") + pulumi.set(__self__, "folder", folder) + if id and not isinstance(id, str): + raise TypeError("Expected argument 'id' to be a str") + pulumi.set(__self__, "id", id) + if key_project and not isinstance(key_project, str): + raise TypeError("Expected argument 'key_project' to be a str") + pulumi.set(__self__, "key_project", key_project) + + @property + @pulumi.getter + def folder(self) -> str: + return pulumi.get(self, "folder") + + @property + @pulumi.getter + def id(self) -> str: + """ + The provider-assigned unique ID for this managed resource. + """ + return pulumi.get(self, "id") + + @property + @pulumi.getter(name="keyProject") + def key_project(self) -> str: + """ + The identifier of the project hosting KMS KeyRings and Keys generated by Autokey. Its format is `projects/{projectId}`. + """ + return pulumi.get(self, "key_project") + + +class AwaitableGetAutokeyConfigResult(GetAutokeyConfigResult): + # pylint: disable=using-constant-test + def __await__(self): + if False: + yield self + return GetAutokeyConfigResult( + folder=self.folder, + id=self.id, + key_project=self.key_project) + + +def get_autokey_config(folder: Optional[str] = None, + opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetAutokeyConfigResult: + """ + ## Example Usage + + ```python + import pulumi + import pulumi_gcp as gcp + + my_autokey_config = gcp.kms.get_autokey_config(folder="folders/123") + ``` + + + :param str folder: The folder in which the AutokeyConfig is configured. If it + is not provided, the provider folder is used. + """ + __args__ = dict() + __args__['folder'] = folder + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke('gcp:kms/getAutokeyConfig:getAutokeyConfig', __args__, opts=opts, typ=GetAutokeyConfigResult).value + + return AwaitableGetAutokeyConfigResult( + folder=pulumi.get(__ret__, 'folder'), + id=pulumi.get(__ret__, 'id'), + key_project=pulumi.get(__ret__, 'key_project')) +def get_autokey_config_output(folder: Optional[pulumi.Input[str]] = None, + opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetAutokeyConfigResult]: + """ + ## Example Usage + + ```python + import pulumi + import pulumi_gcp as gcp + + my_autokey_config = gcp.kms.get_autokey_config(folder="folders/123") + ``` + + + :param str folder: The folder in which the AutokeyConfig is configured. If it + is not provided, the provider folder is used. + """ + __args__ = dict() + __args__['folder'] = folder + opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:kms/getAutokeyConfig:getAutokeyConfig', __args__, opts=opts, typ=GetAutokeyConfigResult) + return __ret__.apply(lambda __response__: GetAutokeyConfigResult( + folder=pulumi.get(__response__, 'folder'), + id=pulumi.get(__response__, 'id'), + key_project=pulumi.get(__response__, 'key_project'))) diff --git a/sdk/python/pulumi_gcp/kms/get_key_handle.py b/sdk/python/pulumi_gcp/kms/get_key_handle.py new file mode 100644 index 0000000000..20d75e254a --- /dev/null +++ b/sdk/python/pulumi_gcp/kms/get_key_handle.py @@ -0,0 +1,185 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import sys +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +if sys.version_info >= (3, 11): + from typing import NotRequired, TypedDict, TypeAlias +else: + from typing_extensions import NotRequired, TypedDict, TypeAlias +from .. import _utilities + +__all__ = [ + 'GetKeyHandleResult', + 'AwaitableGetKeyHandleResult', + 'get_key_handle', + 'get_key_handle_output', +] + +@pulumi.output_type +class GetKeyHandleResult: + """ + A collection of values returned by getKeyHandle. + """ + def __init__(__self__, id=None, kms_key=None, location=None, name=None, project=None, resource_type_selector=None): + if id and not isinstance(id, str): + raise TypeError("Expected argument 'id' to be a str") + pulumi.set(__self__, "id", id) + if kms_key and not isinstance(kms_key, str): + raise TypeError("Expected argument 'kms_key' to be a str") + pulumi.set(__self__, "kms_key", kms_key) + if location and not isinstance(location, str): + raise TypeError("Expected argument 'location' to be a str") + pulumi.set(__self__, "location", location) + if name and not isinstance(name, str): + raise TypeError("Expected argument 'name' to be a str") + pulumi.set(__self__, "name", name) + if project and not isinstance(project, str): + raise TypeError("Expected argument 'project' to be a str") + pulumi.set(__self__, "project", project) + if resource_type_selector and not isinstance(resource_type_selector, str): + raise TypeError("Expected argument 'resource_type_selector' to be a str") + pulumi.set(__self__, "resource_type_selector", resource_type_selector) + + @property + @pulumi.getter + def id(self) -> str: + """ + The provider-assigned unique ID for this managed resource. + """ + return pulumi.get(self, "id") + + @property + @pulumi.getter(name="kmsKey") + def kms_key(self) -> str: + """ + The identifier of the KMS Key created for the KeyHandle. Its format is `projects/{projectId}/locations/{location}/keyRings/{keyRingName}/cryptoKeys/{cryptoKeyName}`. + """ + return pulumi.get(self, "kms_key") + + @property + @pulumi.getter + def location(self) -> str: + """ + The location of the KMS Key and KeyHandle. + """ + return pulumi.get(self, "location") + + @property + @pulumi.getter + def name(self) -> str: + return pulumi.get(self, "name") + + @property + @pulumi.getter + def project(self) -> Optional[str]: + """ + The identifier of the project where KMS KeyHandle is created. + """ + return pulumi.get(self, "project") + + @property + @pulumi.getter(name="resourceTypeSelector") + def resource_type_selector(self) -> str: + """ + Indicates the resource type that the resulting CryptoKey is meant to protect, e.g. {SERVICE}.googleapis.com/{TYPE}. See documentation for supported resource types. + """ + return pulumi.get(self, "resource_type_selector") + + +class AwaitableGetKeyHandleResult(GetKeyHandleResult): + # pylint: disable=using-constant-test + def __await__(self): + if False: + yield self + return GetKeyHandleResult( + id=self.id, + kms_key=self.kms_key, + location=self.location, + name=self.name, + project=self.project, + resource_type_selector=self.resource_type_selector) + + +def get_key_handle(location: Optional[str] = None, + name: Optional[str] = None, + project: Optional[str] = None, + opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetKeyHandleResult: + """ + ## Example Usage + + ```python + import pulumi + import pulumi_gcp as gcp + + my_key_handle = gcp.kms.get_key_handle(name="eed58b7b-20ad-4da8-ad85-ba78a0d5ab87", + location="us-central1") + ``` + + + :param str location: The Google Cloud Platform location for the KeyHandle. + A full list of valid locations can be found by running `gcloud kms locations list`. + + - - - + :param str name: The KeyHandle's name. + A KeyHandle name must exist within the provided location and must be valid UUID. + :param str project: The project in which the resource belongs. If it + is not provided, the provider project is used. + """ + __args__ = dict() + __args__['location'] = location + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke('gcp:kms/getKeyHandle:getKeyHandle', __args__, opts=opts, typ=GetKeyHandleResult).value + + return AwaitableGetKeyHandleResult( + id=pulumi.get(__ret__, 'id'), + kms_key=pulumi.get(__ret__, 'kms_key'), + location=pulumi.get(__ret__, 'location'), + name=pulumi.get(__ret__, 'name'), + project=pulumi.get(__ret__, 'project'), + resource_type_selector=pulumi.get(__ret__, 'resource_type_selector')) +def get_key_handle_output(location: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[Optional[str]]] = None, + opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetKeyHandleResult]: + """ + ## Example Usage + + ```python + import pulumi + import pulumi_gcp as gcp + + my_key_handle = gcp.kms.get_key_handle(name="eed58b7b-20ad-4da8-ad85-ba78a0d5ab87", + location="us-central1") + ``` + + + :param str location: The Google Cloud Platform location for the KeyHandle. + A full list of valid locations can be found by running `gcloud kms locations list`. + + - - - + :param str name: The KeyHandle's name. + A KeyHandle name must exist within the provided location and must be valid UUID. + :param str project: The project in which the resource belongs. If it + is not provided, the provider project is used. + """ + __args__ = dict() + __args__['location'] = location + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:kms/getKeyHandle:getKeyHandle', __args__, opts=opts, typ=GetKeyHandleResult) + return __ret__.apply(lambda __response__: GetKeyHandleResult( + id=pulumi.get(__response__, 'id'), + kms_key=pulumi.get(__response__, 'kms_key'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + resource_type_selector=pulumi.get(__response__, 'resource_type_selector'))) diff --git a/sdk/python/pulumi_gcp/netapp/kmsconfig.py b/sdk/python/pulumi_gcp/netapp/kmsconfig.py index 2693e45ed7..a29c65f4d6 100644 --- a/sdk/python/pulumi_gcp/netapp/kmsconfig.py +++ b/sdk/python/pulumi_gcp/netapp/kmsconfig.py @@ -349,16 +349,10 @@ def __init__(__self__, import pulumi import pulumi_gcp as gcp - keyring = gcp.kms.KeyRing("keyring", - name="key-ring", - location="us-central1") - crypto_key = gcp.kms.CryptoKey("crypto_key", - name="crypto-name", - key_ring=keyring.id) kms_config = gcp.netapp.Kmsconfig("kmsConfig", name="kms-test", description="this is a test description", - crypto_key_name=crypto_key.id, + crypto_key_name="crypto-name", location="us-central1") ``` @@ -427,16 +421,10 @@ def __init__(__self__, import pulumi import pulumi_gcp as gcp - keyring = gcp.kms.KeyRing("keyring", - name="key-ring", - location="us-central1") - crypto_key = gcp.kms.CryptoKey("crypto_key", - name="crypto-name", - key_ring=keyring.id) kms_config = gcp.netapp.Kmsconfig("kmsConfig", name="kms-test", description="this is a test description", - crypto_key_name=crypto_key.id, + crypto_key_name="crypto-name", location="us-central1") ``` diff --git a/sdk/python/pulumi_gcp/networkconnectivity/hub.py b/sdk/python/pulumi_gcp/networkconnectivity/hub.py index 06971677fd..df631e2660 100644 --- a/sdk/python/pulumi_gcp/networkconnectivity/hub.py +++ b/sdk/python/pulumi_gcp/networkconnectivity/hub.py @@ -25,6 +25,7 @@ def __init__(__self__, *, export_psc: Optional[pulumi.Input[bool]] = None, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, name: Optional[pulumi.Input[str]] = None, + preset_topology: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None): """ The set of arguments for constructing a Hub resource. @@ -37,6 +38,8 @@ def __init__(__self__, *, - - - + :param pulumi.Input[str] preset_topology: 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. + Possible values are: `MESH`, `STAR`. :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. """ @@ -48,6 +51,8 @@ def __init__(__self__, *, pulumi.set(__self__, "labels", labels) if name is not None: pulumi.set(__self__, "name", name) + if preset_topology is not None: + pulumi.set(__self__, "preset_topology", preset_topology) if project is not None: pulumi.set(__self__, "project", project) @@ -104,6 +109,19 @@ def name(self) -> Optional[pulumi.Input[str]]: def name(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "name", value) + @property + @pulumi.getter(name="presetTopology") + def preset_topology(self) -> Optional[pulumi.Input[str]]: + """ + 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. + Possible values are: `MESH`, `STAR`. + """ + return pulumi.get(self, "preset_topology") + + @preset_topology.setter + def preset_topology(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "preset_topology", value) + @property @pulumi.getter def project(self) -> Optional[pulumi.Input[str]]: @@ -127,6 +145,7 @@ def __init__(__self__, *, export_psc: Optional[pulumi.Input[bool]] = None, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, name: Optional[pulumi.Input[str]] = None, + preset_topology: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, routing_vpcs: Optional[pulumi.Input[Sequence[pulumi.Input['HubRoutingVpcArgs']]]] = None, @@ -146,6 +165,8 @@ def __init__(__self__, *, - - - + :param pulumi.Input[str] preset_topology: 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. + Possible values are: `MESH`, `STAR`. :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] pulumi_labels: The combination of labels configured directly on the resource @@ -168,6 +189,8 @@ def __init__(__self__, *, pulumi.set(__self__, "labels", labels) if name is not None: pulumi.set(__self__, "name", name) + if preset_topology is not None: + pulumi.set(__self__, "preset_topology", preset_topology) if project is not None: pulumi.set(__self__, "project", project) if pulumi_labels is not None: @@ -258,6 +281,19 @@ def name(self) -> Optional[pulumi.Input[str]]: def name(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "name", value) + @property + @pulumi.getter(name="presetTopology") + def preset_topology(self) -> Optional[pulumi.Input[str]]: + """ + 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. + Possible values are: `MESH`, `STAR`. + """ + return pulumi.get(self, "preset_topology") + + @preset_topology.setter + def preset_topology(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "preset_topology", value) + @property @pulumi.getter def project(self) -> Optional[pulumi.Input[str]]: @@ -343,6 +379,7 @@ def __init__(__self__, export_psc: Optional[pulumi.Input[bool]] = None, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, name: Optional[pulumi.Input[str]] = None, + preset_topology: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, __props__=None): """ @@ -380,6 +417,33 @@ def __init__(__self__, description="A sample hub with Private Service Connect transitivity is enabled", export_psc=True) ``` + ### Network Connectivity Hub Mesh Topology + + ```python + import pulumi + import pulumi_gcp as gcp + + primary = gcp.networkconnectivity.Hub("primary", + name="mesh", + description="A sample mesh hub", + labels={ + "label-one": "value-one", + }) + ``` + ### Network Connectivity Hub Star Topology + + ```python + import pulumi + import pulumi_gcp as gcp + + primary = gcp.networkconnectivity.Hub("primary", + name="star", + description="A sample star hub", + labels={ + "label-one": "value-one", + }, + preset_topology="STAR") + ``` ## Import @@ -416,6 +480,8 @@ def __init__(__self__, - - - + :param pulumi.Input[str] preset_topology: 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. + Possible values are: `MESH`, `STAR`. :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. """ @@ -460,6 +526,33 @@ def __init__(__self__, description="A sample hub with Private Service Connect transitivity is enabled", export_psc=True) ``` + ### Network Connectivity Hub Mesh Topology + + ```python + import pulumi + import pulumi_gcp as gcp + + primary = gcp.networkconnectivity.Hub("primary", + name="mesh", + description="A sample mesh hub", + labels={ + "label-one": "value-one", + }) + ``` + ### Network Connectivity Hub Star Topology + + ```python + import pulumi + import pulumi_gcp as gcp + + primary = gcp.networkconnectivity.Hub("primary", + name="star", + description="A sample star hub", + labels={ + "label-one": "value-one", + }, + preset_topology="STAR") + ``` ## Import @@ -504,6 +597,7 @@ def _internal_init(__self__, export_psc: Optional[pulumi.Input[bool]] = None, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, name: Optional[pulumi.Input[str]] = None, + preset_topology: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) @@ -518,6 +612,7 @@ def _internal_init(__self__, __props__.__dict__["export_psc"] = export_psc __props__.__dict__["labels"] = labels __props__.__dict__["name"] = name + __props__.__dict__["preset_topology"] = preset_topology __props__.__dict__["project"] = project __props__.__dict__["create_time"] = None __props__.__dict__["effective_labels"] = None @@ -544,6 +639,7 @@ def get(resource_name: str, export_psc: Optional[pulumi.Input[bool]] = None, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, name: Optional[pulumi.Input[str]] = None, + preset_topology: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, routing_vpcs: Optional[pulumi.Input[Sequence[pulumi.Input[Union['HubRoutingVpcArgs', 'HubRoutingVpcArgsDict']]]]] = None, @@ -568,6 +664,8 @@ def get(resource_name: str, - - - + :param pulumi.Input[str] preset_topology: 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. + Possible values are: `MESH`, `STAR`. :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] pulumi_labels: The combination of labels configured directly on the resource @@ -588,6 +686,7 @@ def get(resource_name: str, __props__.__dict__["export_psc"] = export_psc __props__.__dict__["labels"] = labels __props__.__dict__["name"] = name + __props__.__dict__["preset_topology"] = preset_topology __props__.__dict__["project"] = project __props__.__dict__["pulumi_labels"] = pulumi_labels __props__.__dict__["routing_vpcs"] = routing_vpcs @@ -649,6 +748,15 @@ def name(self) -> pulumi.Output[str]: """ return pulumi.get(self, "name") + @property + @pulumi.getter(name="presetTopology") + def preset_topology(self) -> pulumi.Output[str]: + """ + 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. + Possible values are: `MESH`, `STAR`. + """ + return pulumi.get(self, "preset_topology") + @property @pulumi.getter def project(self) -> pulumi.Output[str]: diff --git a/sdk/python/pulumi_gcp/networkconnectivity/spoke.py b/sdk/python/pulumi_gcp/networkconnectivity/spoke.py index 59cd3914e9..9be0b4be0b 100644 --- a/sdk/python/pulumi_gcp/networkconnectivity/spoke.py +++ b/sdk/python/pulumi_gcp/networkconnectivity/spoke.py @@ -24,6 +24,7 @@ def __init__(__self__, *, hub: pulumi.Input[str], location: pulumi.Input[str], description: Optional[pulumi.Input[str]] = None, + group: Optional[pulumi.Input[str]] = None, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, linked_interconnect_attachments: Optional[pulumi.Input['SpokeLinkedInterconnectAttachmentsArgs']] = None, linked_producer_vpc_network: Optional[pulumi.Input['SpokeLinkedProducerVpcNetworkArgs']] = None, @@ -40,6 +41,7 @@ def __init__(__self__, *, - - - :param pulumi.Input[str] description: An optional description of the spoke. + :param pulumi.Input[str] group: The name of the group that this spoke is associated with. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Optional labels in key:value format. For more information about labels, see [Requirements for labels](https://cloud.google.com/resource-manager/docs/creating-managing-labels#requirements). **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field `effective_labels` for all of the labels present on the resource. @@ -61,6 +63,8 @@ def __init__(__self__, *, pulumi.set(__self__, "location", location) if description is not None: pulumi.set(__self__, "description", description) + if group is not None: + pulumi.set(__self__, "group", group) if labels is not None: pulumi.set(__self__, "labels", labels) if linked_interconnect_attachments is not None: @@ -117,6 +121,18 @@ def description(self) -> Optional[pulumi.Input[str]]: def description(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "description", value) + @property + @pulumi.getter + def group(self) -> Optional[pulumi.Input[str]]: + """ + The name of the group that this spoke is associated with. + """ + return pulumi.get(self, "group") + + @group.setter + def group(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "group", value) + @property @pulumi.getter def labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: @@ -228,6 +244,7 @@ def __init__(__self__, *, create_time: Optional[pulumi.Input[str]] = None, description: Optional[pulumi.Input[str]] = None, effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + group: Optional[pulumi.Input[str]] = None, hub: Optional[pulumi.Input[str]] = None, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, linked_interconnect_attachments: Optional[pulumi.Input['SpokeLinkedInterconnectAttachmentsArgs']] = None, @@ -247,6 +264,7 @@ def __init__(__self__, *, :param pulumi.Input[str] create_time: Output only. The time the spoke was created. :param pulumi.Input[str] description: An optional description of the spoke. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] effective_labels: All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + :param pulumi.Input[str] group: The name of the group that this spoke is associated with. :param pulumi.Input[str] hub: Immutable. The URI of the hub that this spoke is attached to. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Optional labels in key:value format. For more information about labels, see [Requirements for labels](https://cloud.google.com/resource-manager/docs/creating-managing-labels#requirements). **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. @@ -280,6 +298,8 @@ def __init__(__self__, *, pulumi.set(__self__, "description", description) if effective_labels is not None: pulumi.set(__self__, "effective_labels", effective_labels) + if group is not None: + pulumi.set(__self__, "group", group) if hub is not None: pulumi.set(__self__, "hub", hub) if labels is not None: @@ -345,6 +365,18 @@ def effective_labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[st def effective_labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): pulumi.set(self, "effective_labels", value) + @property + @pulumi.getter + def group(self) -> Optional[pulumi.Input[str]]: + """ + The name of the group that this spoke is associated with. + """ + return pulumi.get(self, "group") + + @group.setter + def group(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "group", value) + @property @pulumi.getter def hub(self) -> Optional[pulumi.Input[str]]: @@ -532,6 +564,7 @@ def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, description: Optional[pulumi.Input[str]] = None, + group: Optional[pulumi.Input[str]] = None, hub: Optional[pulumi.Input[str]] = None, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, linked_interconnect_attachments: Optional[pulumi.Input[Union['SpokeLinkedInterconnectAttachmentsArgs', 'SpokeLinkedInterconnectAttachmentsArgsDict']]] = None, @@ -589,6 +622,46 @@ def __init__(__self__, "uri": network.self_link, }) ``` + ### Network Connectivity Spoke Linked Vpc Network Group + + ```python + import pulumi + import pulumi_gcp as gcp + + network = gcp.compute.Network("network", + name="net-spoke", + auto_create_subnetworks=False) + basic_hub = gcp.networkconnectivity.Hub("basic_hub", + name="hub1-spoke", + description="A sample hub", + labels={ + "label-two": "value-one", + }) + default_group = gcp.networkconnectivity.Group("default_group", + hub=basic_hub.id, + name="default", + description="A sample hub group") + primary = gcp.networkconnectivity.Spoke("primary", + name="group-spoke1", + location="global", + description="A sample spoke with a linked VPC", + labels={ + "label-one": "value-one", + }, + hub=basic_hub.id, + linked_vpc_network={ + "exclude_export_ranges": [ + "198.51.100.0/24", + "10.10.0.0/16", + ], + "include_export_ranges": [ + "198.51.100.0/23", + "10.0.0.0/8", + ], + "uri": network.self_link, + }, + group=default_group.id) + ``` ### Network Connectivity Spoke Router Appliance Basic ```python @@ -842,6 +915,40 @@ def __init__(__self__, }, opts = pulumi.ResourceOptions(depends_on=[linked_vpc_spoke])) ``` + ### Network Connectivity Spoke Center Group + + ```python + import pulumi + import pulumi_gcp as gcp + + network = gcp.compute.Network("network", + name="tf-net", + auto_create_subnetworks=False) + star_hub = gcp.networkconnectivity.Hub("star_hub", + name="hub-basic", + preset_topology="STAR") + center_group = gcp.networkconnectivity.Group("center_group", + name="center", + hub=star_hub.id, + auto_accept={ + "auto_accept_projects": [ + "foo_13293", + "bar_40289", + ], + }) + primary = gcp.networkconnectivity.Spoke("primary", + name="vpc-spoke", + location="global", + description="A sample spoke", + labels={ + "label-one": "value-one", + }, + hub=star_hub.id, + group=center_group.id, + linked_vpc_network={ + "uri": network.self_link, + }) + ``` ## Import @@ -870,6 +977,7 @@ def __init__(__self__, :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] description: An optional description of the spoke. + :param pulumi.Input[str] group: The name of the group that this spoke is associated with. :param pulumi.Input[str] hub: Immutable. The URI of the hub that this spoke is attached to. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Optional labels in key:value format. For more information about labels, see [Requirements for labels](https://cloud.google.com/resource-manager/docs/creating-managing-labels#requirements). **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. @@ -944,6 +1052,46 @@ def __init__(__self__, "uri": network.self_link, }) ``` + ### Network Connectivity Spoke Linked Vpc Network Group + + ```python + import pulumi + import pulumi_gcp as gcp + + network = gcp.compute.Network("network", + name="net-spoke", + auto_create_subnetworks=False) + basic_hub = gcp.networkconnectivity.Hub("basic_hub", + name="hub1-spoke", + description="A sample hub", + labels={ + "label-two": "value-one", + }) + default_group = gcp.networkconnectivity.Group("default_group", + hub=basic_hub.id, + name="default", + description="A sample hub group") + primary = gcp.networkconnectivity.Spoke("primary", + name="group-spoke1", + location="global", + description="A sample spoke with a linked VPC", + labels={ + "label-one": "value-one", + }, + hub=basic_hub.id, + linked_vpc_network={ + "exclude_export_ranges": [ + "198.51.100.0/24", + "10.10.0.0/16", + ], + "include_export_ranges": [ + "198.51.100.0/23", + "10.0.0.0/8", + ], + "uri": network.self_link, + }, + group=default_group.id) + ``` ### Network Connectivity Spoke Router Appliance Basic ```python @@ -1197,6 +1345,40 @@ def __init__(__self__, }, opts = pulumi.ResourceOptions(depends_on=[linked_vpc_spoke])) ``` + ### Network Connectivity Spoke Center Group + + ```python + import pulumi + import pulumi_gcp as gcp + + network = gcp.compute.Network("network", + name="tf-net", + auto_create_subnetworks=False) + star_hub = gcp.networkconnectivity.Hub("star_hub", + name="hub-basic", + preset_topology="STAR") + center_group = gcp.networkconnectivity.Group("center_group", + name="center", + hub=star_hub.id, + auto_accept={ + "auto_accept_projects": [ + "foo_13293", + "bar_40289", + ], + }) + primary = gcp.networkconnectivity.Spoke("primary", + name="vpc-spoke", + location="global", + description="A sample spoke", + labels={ + "label-one": "value-one", + }, + hub=star_hub.id, + group=center_group.id, + linked_vpc_network={ + "uri": network.self_link, + }) + ``` ## Import @@ -1238,6 +1420,7 @@ def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, description: Optional[pulumi.Input[str]] = None, + group: Optional[pulumi.Input[str]] = None, hub: Optional[pulumi.Input[str]] = None, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, linked_interconnect_attachments: Optional[pulumi.Input[Union['SpokeLinkedInterconnectAttachmentsArgs', 'SpokeLinkedInterconnectAttachmentsArgsDict']]] = None, @@ -1258,6 +1441,7 @@ def _internal_init(__self__, __props__ = SpokeArgs.__new__(SpokeArgs) __props__.__dict__["description"] = description + __props__.__dict__["group"] = group if hub is None and not opts.urn: raise TypeError("Missing required property 'hub'") __props__.__dict__["hub"] = hub @@ -1293,6 +1477,7 @@ def get(resource_name: str, create_time: Optional[pulumi.Input[str]] = None, description: Optional[pulumi.Input[str]] = None, effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + group: Optional[pulumi.Input[str]] = None, hub: Optional[pulumi.Input[str]] = None, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, linked_interconnect_attachments: Optional[pulumi.Input[Union['SpokeLinkedInterconnectAttachmentsArgs', 'SpokeLinkedInterconnectAttachmentsArgsDict']]] = None, @@ -1317,6 +1502,7 @@ def get(resource_name: str, :param pulumi.Input[str] create_time: Output only. The time the spoke was created. :param pulumi.Input[str] description: An optional description of the spoke. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] effective_labels: All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + :param pulumi.Input[str] group: The name of the group that this spoke is associated with. :param pulumi.Input[str] hub: Immutable. The URI of the hub that this spoke is attached to. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Optional labels in key:value format. For more information about labels, see [Requirements for labels](https://cloud.google.com/resource-manager/docs/creating-managing-labels#requirements). **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. @@ -1351,6 +1537,7 @@ def get(resource_name: str, __props__.__dict__["create_time"] = create_time __props__.__dict__["description"] = description __props__.__dict__["effective_labels"] = effective_labels + __props__.__dict__["group"] = group __props__.__dict__["hub"] = hub __props__.__dict__["labels"] = labels __props__.__dict__["linked_interconnect_attachments"] = linked_interconnect_attachments @@ -1391,6 +1578,14 @@ def effective_labels(self) -> pulumi.Output[Mapping[str, str]]: """ return pulumi.get(self, "effective_labels") + @property + @pulumi.getter + def group(self) -> pulumi.Output[str]: + """ + The name of the group that this spoke is associated with. + """ + return pulumi.get(self, "group") + @property @pulumi.getter def hub(self) -> pulumi.Output[str]: diff --git a/sdk/python/pulumi_gcp/networkmanagement/vpc_flow_logs_config.py b/sdk/python/pulumi_gcp/networkmanagement/vpc_flow_logs_config.py index ce728a460e..d40974419c 100644 --- a/sdk/python/pulumi_gcp/networkmanagement/vpc_flow_logs_config.py +++ b/sdk/python/pulumi_gcp/networkmanagement/vpc_flow_logs_config.py @@ -620,6 +620,8 @@ def __init__(__self__, vpn_tunnel: Optional[pulumi.Input[str]] = None, __props__=None): """ + VPC Flow Logs Config is a resource that lets you configure Flow Logs for VPC, Interconnect attachments or VPN Tunnels. + ## Example Usage ### Network Management Vpc Flow Logs Config Interconnect Full @@ -848,6 +850,8 @@ def __init__(__self__, args: VpcFlowLogsConfigArgs, opts: Optional[pulumi.ResourceOptions] = None): """ + VPC Flow Logs Config is a resource that lets you configure Flow Logs for VPC, Interconnect attachments or VPN Tunnels. + ## Example Usage ### Network Management Vpc Flow Logs Config Interconnect Full diff --git a/sdk/python/pulumi_gcp/networksecurity/__init__.py b/sdk/python/pulumi_gcp/networksecurity/__init__.py index 44cdc98867..7e4a671fda 100644 --- a/sdk/python/pulumi_gcp/networksecurity/__init__.py +++ b/sdk/python/pulumi_gcp/networksecurity/__init__.py @@ -19,6 +19,8 @@ from .get_address_group_iam_policy import * from .intercept_deployment import * from .intercept_deployment_group import * +from .intercept_endpoint_group import * +from .intercept_endpoint_group_association import * from .mirroring_deployment import * from .mirroring_deployment_group import * from .mirroring_endpoint_group import * diff --git a/sdk/python/pulumi_gcp/networksecurity/_inputs.py b/sdk/python/pulumi_gcp/networksecurity/_inputs.py index 76784853b3..5677f29e3e 100644 --- a/sdk/python/pulumi_gcp/networksecurity/_inputs.py +++ b/sdk/python/pulumi_gcp/networksecurity/_inputs.py @@ -87,6 +87,8 @@ 'ClientTlsPolicyServerValidationCaGrpcEndpointArgsDict', 'InterceptDeploymentGroupConnectedEndpointGroupArgs', 'InterceptDeploymentGroupConnectedEndpointGroupArgsDict', + 'InterceptEndpointGroupAssociationLocationsDetailArgs', + 'InterceptEndpointGroupAssociationLocationsDetailArgsDict', 'MirroringDeploymentGroupConnectedEndpointGroupArgs', 'MirroringDeploymentGroupConnectedEndpointGroupArgsDict', 'MirroringEndpointGroupAssociationLocationsDetailArgs', @@ -2571,6 +2573,82 @@ def name(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "name", value) +if not MYPY: + class InterceptEndpointGroupAssociationLocationsDetailArgsDict(TypedDict): + location: NotRequired[pulumi.Input[str]] + """ + The location of the Intercept Endpoint Group Association, currently restricted to `global`. + + + - - - + """ + state: NotRequired[pulumi.Input[str]] + """ + (Output) + The association state in this location. + Possible values: + STATE_UNSPECIFIED + ACTIVE + OUT_OF_SYNC + """ +elif False: + InterceptEndpointGroupAssociationLocationsDetailArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class InterceptEndpointGroupAssociationLocationsDetailArgs: + def __init__(__self__, *, + location: Optional[pulumi.Input[str]] = None, + state: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] location: The location of the Intercept Endpoint Group Association, currently restricted to `global`. + + + - - - + :param pulumi.Input[str] state: (Output) + The association state in this location. + Possible values: + STATE_UNSPECIFIED + ACTIVE + OUT_OF_SYNC + """ + if location is not None: + pulumi.set(__self__, "location", location) + if state is not None: + pulumi.set(__self__, "state", state) + + @property + @pulumi.getter + def location(self) -> Optional[pulumi.Input[str]]: + """ + The location of the Intercept Endpoint Group Association, currently restricted to `global`. + + + - - - + """ + return pulumi.get(self, "location") + + @location.setter + def location(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "location", value) + + @property + @pulumi.getter + def state(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + The association state in this location. + Possible values: + STATE_UNSPECIFIED + ACTIVE + OUT_OF_SYNC + """ + return pulumi.get(self, "state") + + @state.setter + def state(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "state", value) + + if not MYPY: class MirroringDeploymentGroupConnectedEndpointGroupArgsDict(TypedDict): name: NotRequired[pulumi.Input[str]] diff --git a/sdk/python/pulumi_gcp/networksecurity/intercept_endpoint_group.py b/sdk/python/pulumi_gcp/networksecurity/intercept_endpoint_group.py new file mode 100644 index 0000000000..7f4e4ddaec --- /dev/null +++ b/sdk/python/pulumi_gcp/networksecurity/intercept_endpoint_group.py @@ -0,0 +1,723 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import sys +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +if sys.version_info >= (3, 11): + from typing import NotRequired, TypedDict, TypeAlias +else: + from typing_extensions import NotRequired, TypedDict, TypeAlias +from .. import _utilities + +__all__ = ['InterceptEndpointGroupArgs', 'InterceptEndpointGroup'] + +@pulumi.input_type +class InterceptEndpointGroupArgs: + def __init__(__self__, *, + intercept_deployment_group: pulumi.Input[str], + intercept_endpoint_group_id: pulumi.Input[str], + location: pulumi.Input[str], + labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + project: Optional[pulumi.Input[str]] = None): + """ + The set of arguments for constructing a InterceptEndpointGroup resource. + :param pulumi.Input[str] intercept_deployment_group: Immutable. The Intercept Deployment Group that this resource is connected to. Format + is: + `projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}` + :param pulumi.Input[str] intercept_endpoint_group_id: ID of the Intercept Endpoint Group. + + + - - - + :param pulumi.Input[str] location: The location of the Intercept Endpoint Group, currently restricted to `global`. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Optional. Labels as key value pairs + **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + Please refer to the field `effective_labels` for all of the labels present on the resource. + :param pulumi.Input[str] project: The ID of the project in which the resource belongs. + If it is not provided, the provider project is used. + """ + pulumi.set(__self__, "intercept_deployment_group", intercept_deployment_group) + pulumi.set(__self__, "intercept_endpoint_group_id", intercept_endpoint_group_id) + pulumi.set(__self__, "location", location) + if labels is not None: + pulumi.set(__self__, "labels", labels) + if project is not None: + pulumi.set(__self__, "project", project) + + @property + @pulumi.getter(name="interceptDeploymentGroup") + def intercept_deployment_group(self) -> pulumi.Input[str]: + """ + Immutable. The Intercept Deployment Group that this resource is connected to. Format + is: + `projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}` + """ + return pulumi.get(self, "intercept_deployment_group") + + @intercept_deployment_group.setter + def intercept_deployment_group(self, value: pulumi.Input[str]): + pulumi.set(self, "intercept_deployment_group", value) + + @property + @pulumi.getter(name="interceptEndpointGroupId") + def intercept_endpoint_group_id(self) -> pulumi.Input[str]: + """ + ID of the Intercept Endpoint Group. + + + - - - + """ + return pulumi.get(self, "intercept_endpoint_group_id") + + @intercept_endpoint_group_id.setter + def intercept_endpoint_group_id(self, value: pulumi.Input[str]): + pulumi.set(self, "intercept_endpoint_group_id", value) + + @property + @pulumi.getter + def location(self) -> pulumi.Input[str]: + """ + The location of the Intercept Endpoint Group, currently restricted to `global`. + """ + return pulumi.get(self, "location") + + @location.setter + def location(self, value: pulumi.Input[str]): + pulumi.set(self, "location", value) + + @property + @pulumi.getter + def labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + Optional. Labels as key value pairs + **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + Please refer to the field `effective_labels` for all of the labels present on the resource. + """ + return pulumi.get(self, "labels") + + @labels.setter + def labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "labels", value) + + @property + @pulumi.getter + def project(self) -> Optional[pulumi.Input[str]]: + """ + The ID of the project in which the resource belongs. + If it is not provided, the provider project is used. + """ + return pulumi.get(self, "project") + + @project.setter + def project(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "project", value) + + +@pulumi.input_type +class _InterceptEndpointGroupState: + def __init__(__self__, *, + create_time: Optional[pulumi.Input[str]] = None, + effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + intercept_deployment_group: Optional[pulumi.Input[str]] = None, + intercept_endpoint_group_id: Optional[pulumi.Input[str]] = None, + labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + location: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None, + pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + reconciling: Optional[pulumi.Input[bool]] = None, + state: Optional[pulumi.Input[str]] = None, + update_time: Optional[pulumi.Input[str]] = None): + """ + Input properties used for looking up and filtering InterceptEndpointGroup resources. + :param pulumi.Input[str] create_time: Create time stamp. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] effective_labels: All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + :param pulumi.Input[str] intercept_deployment_group: Immutable. The Intercept Deployment Group that this resource is connected to. Format + is: + `projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}` + :param pulumi.Input[str] intercept_endpoint_group_id: ID of the Intercept Endpoint Group. + + + - - - + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Optional. Labels as key value pairs + **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + Please refer to the field `effective_labels` for all of the labels present on the resource. + :param pulumi.Input[str] location: The location of the Intercept Endpoint Group, currently restricted to `global`. + :param pulumi.Input[str] name: Identifier. The name of the Intercept Endpoint Group. + :param pulumi.Input[str] project: The ID of the project in which the resource belongs. + If it is not provided, the provider project is used. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] pulumi_labels: The combination of labels configured directly on the resource + and default labels configured on the provider. + :param pulumi.Input[bool] reconciling: Whether reconciling is in progress, recommended per + https://google.aip.dev/128. + :param pulumi.Input[str] state: Current state of the endpoint group. + Possible values: + STATE_UNSPECIFIED + ACTIVE + CLOSED + CREATING + DELETING + OUT_OF_SYNC + :param pulumi.Input[str] update_time: Update time stamp. + """ + if create_time is not None: + pulumi.set(__self__, "create_time", create_time) + if effective_labels is not None: + pulumi.set(__self__, "effective_labels", effective_labels) + if intercept_deployment_group is not None: + pulumi.set(__self__, "intercept_deployment_group", intercept_deployment_group) + if intercept_endpoint_group_id is not None: + pulumi.set(__self__, "intercept_endpoint_group_id", intercept_endpoint_group_id) + if labels is not None: + pulumi.set(__self__, "labels", labels) + if location is not None: + pulumi.set(__self__, "location", location) + if name is not None: + pulumi.set(__self__, "name", name) + if project is not None: + pulumi.set(__self__, "project", project) + if pulumi_labels is not None: + pulumi.set(__self__, "pulumi_labels", pulumi_labels) + if reconciling is not None: + pulumi.set(__self__, "reconciling", reconciling) + if state is not None: + pulumi.set(__self__, "state", state) + if update_time is not None: + pulumi.set(__self__, "update_time", update_time) + + @property + @pulumi.getter(name="createTime") + def create_time(self) -> Optional[pulumi.Input[str]]: + """ + Create time stamp. + """ + return pulumi.get(self, "create_time") + + @create_time.setter + def create_time(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "create_time", value) + + @property + @pulumi.getter(name="effectiveLabels") + def effective_labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + """ + return pulumi.get(self, "effective_labels") + + @effective_labels.setter + def effective_labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "effective_labels", value) + + @property + @pulumi.getter(name="interceptDeploymentGroup") + def intercept_deployment_group(self) -> Optional[pulumi.Input[str]]: + """ + Immutable. The Intercept Deployment Group that this resource is connected to. Format + is: + `projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}` + """ + return pulumi.get(self, "intercept_deployment_group") + + @intercept_deployment_group.setter + def intercept_deployment_group(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "intercept_deployment_group", value) + + @property + @pulumi.getter(name="interceptEndpointGroupId") + def intercept_endpoint_group_id(self) -> Optional[pulumi.Input[str]]: + """ + ID of the Intercept Endpoint Group. + + + - - - + """ + return pulumi.get(self, "intercept_endpoint_group_id") + + @intercept_endpoint_group_id.setter + def intercept_endpoint_group_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "intercept_endpoint_group_id", value) + + @property + @pulumi.getter + def labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + Optional. Labels as key value pairs + **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + Please refer to the field `effective_labels` for all of the labels present on the resource. + """ + return pulumi.get(self, "labels") + + @labels.setter + def labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "labels", value) + + @property + @pulumi.getter + def location(self) -> Optional[pulumi.Input[str]]: + """ + The location of the Intercept Endpoint Group, currently restricted to `global`. + """ + return pulumi.get(self, "location") + + @location.setter + def location(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "location", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + Identifier. The name of the Intercept Endpoint Group. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter + def project(self) -> Optional[pulumi.Input[str]]: + """ + The ID of the project in which the resource belongs. + If it is not provided, the provider project is used. + """ + return pulumi.get(self, "project") + + @project.setter + def project(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "project", value) + + @property + @pulumi.getter(name="pulumiLabels") + def pulumi_labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + The combination of labels configured directly on the resource + and default labels configured on the provider. + """ + return pulumi.get(self, "pulumi_labels") + + @pulumi_labels.setter + def pulumi_labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "pulumi_labels", value) + + @property + @pulumi.getter + def reconciling(self) -> Optional[pulumi.Input[bool]]: + """ + Whether reconciling is in progress, recommended per + https://google.aip.dev/128. + """ + return pulumi.get(self, "reconciling") + + @reconciling.setter + def reconciling(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "reconciling", value) + + @property + @pulumi.getter + def state(self) -> Optional[pulumi.Input[str]]: + """ + Current state of the endpoint group. + Possible values: + STATE_UNSPECIFIED + ACTIVE + CLOSED + CREATING + DELETING + OUT_OF_SYNC + """ + return pulumi.get(self, "state") + + @state.setter + def state(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "state", value) + + @property + @pulumi.getter(name="updateTime") + def update_time(self) -> Optional[pulumi.Input[str]]: + """ + Update time stamp. + """ + return pulumi.get(self, "update_time") + + @update_time.setter + def update_time(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "update_time", value) + + +class InterceptEndpointGroup(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + intercept_deployment_group: Optional[pulumi.Input[str]] = None, + intercept_endpoint_group_id: Optional[pulumi.Input[str]] = None, + labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + location: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None, + __props__=None): + """ + ## Example Usage + + ### Network Security Intercept Endpoint Group Basic + + ```python + import pulumi + import pulumi_gcp as gcp + + network = gcp.compute.Network("network", + name="example-network", + auto_create_subnetworks=False) + deployment_group = gcp.networksecurity.InterceptDeploymentGroup("deployment_group", + intercept_deployment_group_id="example-dg", + location="global", + network=network.id) + default = gcp.networksecurity.InterceptEndpointGroup("default", + intercept_endpoint_group_id="example-eg", + location="global", + intercept_deployment_group=deployment_group.id, + labels={ + "foo": "bar", + }) + ``` + + ## Import + + InterceptEndpointGroup can be imported using any of these accepted formats: + + * `projects/{{project}}/locations/{{location}}/interceptEndpointGroups/{{intercept_endpoint_group_id}}` + + * `{{project}}/{{location}}/{{intercept_endpoint_group_id}}` + + * `{{location}}/{{intercept_endpoint_group_id}}` + + When using the `pulumi import` command, InterceptEndpointGroup can be imported using one of the formats above. For example: + + ```sh + $ pulumi import gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup default projects/{{project}}/locations/{{location}}/interceptEndpointGroups/{{intercept_endpoint_group_id}} + ``` + + ```sh + $ pulumi import gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup default {{project}}/{{location}}/{{intercept_endpoint_group_id}} + ``` + + ```sh + $ pulumi import gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup default {{location}}/{{intercept_endpoint_group_id}} + ``` + + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] intercept_deployment_group: Immutable. The Intercept Deployment Group that this resource is connected to. Format + is: + `projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}` + :param pulumi.Input[str] intercept_endpoint_group_id: ID of the Intercept Endpoint Group. + + + - - - + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Optional. Labels as key value pairs + **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + Please refer to the field `effective_labels` for all of the labels present on the resource. + :param pulumi.Input[str] location: The location of the Intercept Endpoint Group, currently restricted to `global`. + :param pulumi.Input[str] project: The ID of the project in which the resource belongs. + If it is not provided, the provider project is used. + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: InterceptEndpointGroupArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + ## Example Usage + + ### Network Security Intercept Endpoint Group Basic + + ```python + import pulumi + import pulumi_gcp as gcp + + network = gcp.compute.Network("network", + name="example-network", + auto_create_subnetworks=False) + deployment_group = gcp.networksecurity.InterceptDeploymentGroup("deployment_group", + intercept_deployment_group_id="example-dg", + location="global", + network=network.id) + default = gcp.networksecurity.InterceptEndpointGroup("default", + intercept_endpoint_group_id="example-eg", + location="global", + intercept_deployment_group=deployment_group.id, + labels={ + "foo": "bar", + }) + ``` + + ## Import + + InterceptEndpointGroup can be imported using any of these accepted formats: + + * `projects/{{project}}/locations/{{location}}/interceptEndpointGroups/{{intercept_endpoint_group_id}}` + + * `{{project}}/{{location}}/{{intercept_endpoint_group_id}}` + + * `{{location}}/{{intercept_endpoint_group_id}}` + + When using the `pulumi import` command, InterceptEndpointGroup can be imported using one of the formats above. For example: + + ```sh + $ pulumi import gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup default projects/{{project}}/locations/{{location}}/interceptEndpointGroups/{{intercept_endpoint_group_id}} + ``` + + ```sh + $ pulumi import gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup default {{project}}/{{location}}/{{intercept_endpoint_group_id}} + ``` + + ```sh + $ pulumi import gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup default {{location}}/{{intercept_endpoint_group_id}} + ``` + + :param str resource_name: The name of the resource. + :param InterceptEndpointGroupArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(InterceptEndpointGroupArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + intercept_deployment_group: Optional[pulumi.Input[str]] = None, + intercept_endpoint_group_id: Optional[pulumi.Input[str]] = None, + labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + location: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = InterceptEndpointGroupArgs.__new__(InterceptEndpointGroupArgs) + + if intercept_deployment_group is None and not opts.urn: + raise TypeError("Missing required property 'intercept_deployment_group'") + __props__.__dict__["intercept_deployment_group"] = intercept_deployment_group + if intercept_endpoint_group_id is None and not opts.urn: + raise TypeError("Missing required property 'intercept_endpoint_group_id'") + __props__.__dict__["intercept_endpoint_group_id"] = intercept_endpoint_group_id + __props__.__dict__["labels"] = labels + if location is None and not opts.urn: + raise TypeError("Missing required property 'location'") + __props__.__dict__["location"] = location + __props__.__dict__["project"] = project + __props__.__dict__["create_time"] = None + __props__.__dict__["effective_labels"] = None + __props__.__dict__["name"] = None + __props__.__dict__["pulumi_labels"] = None + __props__.__dict__["reconciling"] = None + __props__.__dict__["state"] = None + __props__.__dict__["update_time"] = None + secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["effectiveLabels", "pulumiLabels"]) + opts = pulumi.ResourceOptions.merge(opts, secret_opts) + super(InterceptEndpointGroup, __self__).__init__( + 'gcp:networksecurity/interceptEndpointGroup:InterceptEndpointGroup', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + create_time: Optional[pulumi.Input[str]] = None, + effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + intercept_deployment_group: Optional[pulumi.Input[str]] = None, + intercept_endpoint_group_id: Optional[pulumi.Input[str]] = None, + labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + location: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None, + pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + reconciling: Optional[pulumi.Input[bool]] = None, + state: Optional[pulumi.Input[str]] = None, + update_time: Optional[pulumi.Input[str]] = None) -> 'InterceptEndpointGroup': + """ + Get an existing InterceptEndpointGroup resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] create_time: Create time stamp. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] effective_labels: All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + :param pulumi.Input[str] intercept_deployment_group: Immutable. The Intercept Deployment Group that this resource is connected to. Format + is: + `projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}` + :param pulumi.Input[str] intercept_endpoint_group_id: ID of the Intercept Endpoint Group. + + + - - - + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Optional. Labels as key value pairs + **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + Please refer to the field `effective_labels` for all of the labels present on the resource. + :param pulumi.Input[str] location: The location of the Intercept Endpoint Group, currently restricted to `global`. + :param pulumi.Input[str] name: Identifier. The name of the Intercept Endpoint Group. + :param pulumi.Input[str] project: The ID of the project in which the resource belongs. + If it is not provided, the provider project is used. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] pulumi_labels: The combination of labels configured directly on the resource + and default labels configured on the provider. + :param pulumi.Input[bool] reconciling: Whether reconciling is in progress, recommended per + https://google.aip.dev/128. + :param pulumi.Input[str] state: Current state of the endpoint group. + Possible values: + STATE_UNSPECIFIED + ACTIVE + CLOSED + CREATING + DELETING + OUT_OF_SYNC + :param pulumi.Input[str] update_time: Update time stamp. + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _InterceptEndpointGroupState.__new__(_InterceptEndpointGroupState) + + __props__.__dict__["create_time"] = create_time + __props__.__dict__["effective_labels"] = effective_labels + __props__.__dict__["intercept_deployment_group"] = intercept_deployment_group + __props__.__dict__["intercept_endpoint_group_id"] = intercept_endpoint_group_id + __props__.__dict__["labels"] = labels + __props__.__dict__["location"] = location + __props__.__dict__["name"] = name + __props__.__dict__["project"] = project + __props__.__dict__["pulumi_labels"] = pulumi_labels + __props__.__dict__["reconciling"] = reconciling + __props__.__dict__["state"] = state + __props__.__dict__["update_time"] = update_time + return InterceptEndpointGroup(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter(name="createTime") + def create_time(self) -> pulumi.Output[str]: + """ + Create time stamp. + """ + return pulumi.get(self, "create_time") + + @property + @pulumi.getter(name="effectiveLabels") + def effective_labels(self) -> pulumi.Output[Mapping[str, str]]: + """ + All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + """ + return pulumi.get(self, "effective_labels") + + @property + @pulumi.getter(name="interceptDeploymentGroup") + def intercept_deployment_group(self) -> pulumi.Output[str]: + """ + Immutable. The Intercept Deployment Group that this resource is connected to. Format + is: + `projects/{project}/locations/global/interceptDeploymentGroups/{interceptDeploymentGroup}` + """ + return pulumi.get(self, "intercept_deployment_group") + + @property + @pulumi.getter(name="interceptEndpointGroupId") + def intercept_endpoint_group_id(self) -> pulumi.Output[str]: + """ + ID of the Intercept Endpoint Group. + + + - - - + """ + return pulumi.get(self, "intercept_endpoint_group_id") + + @property + @pulumi.getter + def labels(self) -> pulumi.Output[Optional[Mapping[str, str]]]: + """ + Optional. Labels as key value pairs + **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + Please refer to the field `effective_labels` for all of the labels present on the resource. + """ + return pulumi.get(self, "labels") + + @property + @pulumi.getter + def location(self) -> pulumi.Output[str]: + """ + The location of the Intercept Endpoint Group, currently restricted to `global`. + """ + return pulumi.get(self, "location") + + @property + @pulumi.getter + def name(self) -> pulumi.Output[str]: + """ + Identifier. The name of the Intercept Endpoint Group. + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter + def project(self) -> pulumi.Output[str]: + """ + The ID of the project in which the resource belongs. + If it is not provided, the provider project is used. + """ + return pulumi.get(self, "project") + + @property + @pulumi.getter(name="pulumiLabels") + def pulumi_labels(self) -> pulumi.Output[Mapping[str, str]]: + """ + The combination of labels configured directly on the resource + and default labels configured on the provider. + """ + return pulumi.get(self, "pulumi_labels") + + @property + @pulumi.getter + def reconciling(self) -> pulumi.Output[bool]: + """ + Whether reconciling is in progress, recommended per + https://google.aip.dev/128. + """ + return pulumi.get(self, "reconciling") + + @property + @pulumi.getter + def state(self) -> pulumi.Output[str]: + """ + Current state of the endpoint group. + Possible values: + STATE_UNSPECIFIED + ACTIVE + CLOSED + CREATING + DELETING + OUT_OF_SYNC + """ + return pulumi.get(self, "state") + + @property + @pulumi.getter(name="updateTime") + def update_time(self) -> pulumi.Output[str]: + """ + Update time stamp. + """ + return pulumi.get(self, "update_time") + diff --git a/sdk/python/pulumi_gcp/networksecurity/intercept_endpoint_group_association.py b/sdk/python/pulumi_gcp/networksecurity/intercept_endpoint_group_association.py new file mode 100644 index 0000000000..3ac10c3b4d --- /dev/null +++ b/sdk/python/pulumi_gcp/networksecurity/intercept_endpoint_group_association.py @@ -0,0 +1,815 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import sys +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +if sys.version_info >= (3, 11): + from typing import NotRequired, TypedDict, TypeAlias +else: + from typing_extensions import NotRequired, TypedDict, TypeAlias +from .. import _utilities +from . import outputs +from ._inputs import * + +__all__ = ['InterceptEndpointGroupAssociationArgs', 'InterceptEndpointGroupAssociation'] + +@pulumi.input_type +class InterceptEndpointGroupAssociationArgs: + def __init__(__self__, *, + intercept_endpoint_group: pulumi.Input[str], + location: pulumi.Input[str], + network: pulumi.Input[str], + intercept_endpoint_group_association_id: Optional[pulumi.Input[str]] = None, + labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + project: Optional[pulumi.Input[str]] = None): + """ + The set of arguments for constructing a InterceptEndpointGroupAssociation resource. + :param pulumi.Input[str] intercept_endpoint_group: Immutable. The Intercept Endpoint Group that this resource is connected to. Format + is: + `projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`. + :param pulumi.Input[str] location: The location of the Intercept Endpoint Group Association, currently restricted to `global`. + + + - - - + :param pulumi.Input[str] network: Immutable. The VPC network associated. Format: + `projects/{project}/global/networks/{network}`. + :param pulumi.Input[str] intercept_endpoint_group_association_id: ID of the Intercept Endpoint Group Association. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Optional. Labels as key value pairs. + **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + Please refer to the field `effective_labels` for all of the labels present on the resource. + :param pulumi.Input[str] project: The ID of the project in which the resource belongs. + If it is not provided, the provider project is used. + """ + pulumi.set(__self__, "intercept_endpoint_group", intercept_endpoint_group) + pulumi.set(__self__, "location", location) + pulumi.set(__self__, "network", network) + if intercept_endpoint_group_association_id is not None: + pulumi.set(__self__, "intercept_endpoint_group_association_id", intercept_endpoint_group_association_id) + if labels is not None: + pulumi.set(__self__, "labels", labels) + if project is not None: + pulumi.set(__self__, "project", project) + + @property + @pulumi.getter(name="interceptEndpointGroup") + def intercept_endpoint_group(self) -> pulumi.Input[str]: + """ + Immutable. The Intercept Endpoint Group that this resource is connected to. Format + is: + `projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`. + """ + return pulumi.get(self, "intercept_endpoint_group") + + @intercept_endpoint_group.setter + def intercept_endpoint_group(self, value: pulumi.Input[str]): + pulumi.set(self, "intercept_endpoint_group", value) + + @property + @pulumi.getter + def location(self) -> pulumi.Input[str]: + """ + The location of the Intercept Endpoint Group Association, currently restricted to `global`. + + + - - - + """ + return pulumi.get(self, "location") + + @location.setter + def location(self, value: pulumi.Input[str]): + pulumi.set(self, "location", value) + + @property + @pulumi.getter + def network(self) -> pulumi.Input[str]: + """ + Immutable. The VPC network associated. Format: + `projects/{project}/global/networks/{network}`. + """ + return pulumi.get(self, "network") + + @network.setter + def network(self, value: pulumi.Input[str]): + pulumi.set(self, "network", value) + + @property + @pulumi.getter(name="interceptEndpointGroupAssociationId") + def intercept_endpoint_group_association_id(self) -> Optional[pulumi.Input[str]]: + """ + ID of the Intercept Endpoint Group Association. + """ + return pulumi.get(self, "intercept_endpoint_group_association_id") + + @intercept_endpoint_group_association_id.setter + def intercept_endpoint_group_association_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "intercept_endpoint_group_association_id", value) + + @property + @pulumi.getter + def labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + Optional. Labels as key value pairs. + **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + Please refer to the field `effective_labels` for all of the labels present on the resource. + """ + return pulumi.get(self, "labels") + + @labels.setter + def labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "labels", value) + + @property + @pulumi.getter + def project(self) -> Optional[pulumi.Input[str]]: + """ + The ID of the project in which the resource belongs. + If it is not provided, the provider project is used. + """ + return pulumi.get(self, "project") + + @project.setter + def project(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "project", value) + + +@pulumi.input_type +class _InterceptEndpointGroupAssociationState: + def __init__(__self__, *, + create_time: Optional[pulumi.Input[str]] = None, + effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + intercept_endpoint_group: Optional[pulumi.Input[str]] = None, + intercept_endpoint_group_association_id: Optional[pulumi.Input[str]] = None, + labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + location: Optional[pulumi.Input[str]] = None, + locations_details: Optional[pulumi.Input[Sequence[pulumi.Input['InterceptEndpointGroupAssociationLocationsDetailArgs']]]] = None, + name: Optional[pulumi.Input[str]] = None, + network: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None, + pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + reconciling: Optional[pulumi.Input[bool]] = None, + state: Optional[pulumi.Input[str]] = None, + update_time: Optional[pulumi.Input[str]] = None): + """ + Input properties used for looking up and filtering InterceptEndpointGroupAssociation resources. + :param pulumi.Input[str] create_time: Create time stamp. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] effective_labels: All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + :param pulumi.Input[str] intercept_endpoint_group: Immutable. The Intercept Endpoint Group that this resource is connected to. Format + is: + `projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`. + :param pulumi.Input[str] intercept_endpoint_group_association_id: ID of the Intercept Endpoint Group Association. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Optional. Labels as key value pairs. + **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + Please refer to the field `effective_labels` for all of the labels present on the resource. + :param pulumi.Input[str] location: The location of the Intercept Endpoint Group Association, currently restricted to `global`. + + + - - - + :param pulumi.Input[Sequence[pulumi.Input['InterceptEndpointGroupAssociationLocationsDetailArgs']]] locations_details: The list of locations that are currently supported by the associated Intercept Deployment Group and their state. + Structure is documented below. + :param pulumi.Input[str] name: Identifier. The name of the Intercept Endpoint Group Association. + :param pulumi.Input[str] network: Immutable. The VPC network associated. Format: + `projects/{project}/global/networks/{network}`. + :param pulumi.Input[str] project: The ID of the project in which the resource belongs. + If it is not provided, the provider project is used. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] pulumi_labels: The combination of labels configured directly on the resource + and default labels configured on the provider. + :param pulumi.Input[bool] reconciling: Whether reconciling is in progress. + :param pulumi.Input[str] state: (Output) + The association state in this location. + Possible values: + STATE_UNSPECIFIED + ACTIVE + OUT_OF_SYNC + :param pulumi.Input[str] update_time: Update time stamp. + """ + if create_time is not None: + pulumi.set(__self__, "create_time", create_time) + if effective_labels is not None: + pulumi.set(__self__, "effective_labels", effective_labels) + if intercept_endpoint_group is not None: + pulumi.set(__self__, "intercept_endpoint_group", intercept_endpoint_group) + if intercept_endpoint_group_association_id is not None: + pulumi.set(__self__, "intercept_endpoint_group_association_id", intercept_endpoint_group_association_id) + if labels is not None: + pulumi.set(__self__, "labels", labels) + if location is not None: + pulumi.set(__self__, "location", location) + if locations_details is not None: + pulumi.set(__self__, "locations_details", locations_details) + if name is not None: + pulumi.set(__self__, "name", name) + if network is not None: + pulumi.set(__self__, "network", network) + if project is not None: + pulumi.set(__self__, "project", project) + if pulumi_labels is not None: + pulumi.set(__self__, "pulumi_labels", pulumi_labels) + if reconciling is not None: + pulumi.set(__self__, "reconciling", reconciling) + if state is not None: + pulumi.set(__self__, "state", state) + if update_time is not None: + pulumi.set(__self__, "update_time", update_time) + + @property + @pulumi.getter(name="createTime") + def create_time(self) -> Optional[pulumi.Input[str]]: + """ + Create time stamp. + """ + return pulumi.get(self, "create_time") + + @create_time.setter + def create_time(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "create_time", value) + + @property + @pulumi.getter(name="effectiveLabels") + def effective_labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + """ + return pulumi.get(self, "effective_labels") + + @effective_labels.setter + def effective_labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "effective_labels", value) + + @property + @pulumi.getter(name="interceptEndpointGroup") + def intercept_endpoint_group(self) -> Optional[pulumi.Input[str]]: + """ + Immutable. The Intercept Endpoint Group that this resource is connected to. Format + is: + `projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`. + """ + return pulumi.get(self, "intercept_endpoint_group") + + @intercept_endpoint_group.setter + def intercept_endpoint_group(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "intercept_endpoint_group", value) + + @property + @pulumi.getter(name="interceptEndpointGroupAssociationId") + def intercept_endpoint_group_association_id(self) -> Optional[pulumi.Input[str]]: + """ + ID of the Intercept Endpoint Group Association. + """ + return pulumi.get(self, "intercept_endpoint_group_association_id") + + @intercept_endpoint_group_association_id.setter + def intercept_endpoint_group_association_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "intercept_endpoint_group_association_id", value) + + @property + @pulumi.getter + def labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + Optional. Labels as key value pairs. + **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + Please refer to the field `effective_labels` for all of the labels present on the resource. + """ + return pulumi.get(self, "labels") + + @labels.setter + def labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "labels", value) + + @property + @pulumi.getter + def location(self) -> Optional[pulumi.Input[str]]: + """ + The location of the Intercept Endpoint Group Association, currently restricted to `global`. + + + - - - + """ + return pulumi.get(self, "location") + + @location.setter + def location(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "location", value) + + @property + @pulumi.getter(name="locationsDetails") + def locations_details(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['InterceptEndpointGroupAssociationLocationsDetailArgs']]]]: + """ + The list of locations that are currently supported by the associated Intercept Deployment Group and their state. + Structure is documented below. + """ + return pulumi.get(self, "locations_details") + + @locations_details.setter + def locations_details(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['InterceptEndpointGroupAssociationLocationsDetailArgs']]]]): + pulumi.set(self, "locations_details", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + Identifier. The name of the Intercept Endpoint Group Association. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter + def network(self) -> Optional[pulumi.Input[str]]: + """ + Immutable. The VPC network associated. Format: + `projects/{project}/global/networks/{network}`. + """ + return pulumi.get(self, "network") + + @network.setter + def network(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "network", value) + + @property + @pulumi.getter + def project(self) -> Optional[pulumi.Input[str]]: + """ + The ID of the project in which the resource belongs. + If it is not provided, the provider project is used. + """ + return pulumi.get(self, "project") + + @project.setter + def project(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "project", value) + + @property + @pulumi.getter(name="pulumiLabels") + def pulumi_labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + The combination of labels configured directly on the resource + and default labels configured on the provider. + """ + return pulumi.get(self, "pulumi_labels") + + @pulumi_labels.setter + def pulumi_labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "pulumi_labels", value) + + @property + @pulumi.getter + def reconciling(self) -> Optional[pulumi.Input[bool]]: + """ + Whether reconciling is in progress. + """ + return pulumi.get(self, "reconciling") + + @reconciling.setter + def reconciling(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "reconciling", value) + + @property + @pulumi.getter + def state(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + The association state in this location. + Possible values: + STATE_UNSPECIFIED + ACTIVE + OUT_OF_SYNC + """ + return pulumi.get(self, "state") + + @state.setter + def state(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "state", value) + + @property + @pulumi.getter(name="updateTime") + def update_time(self) -> Optional[pulumi.Input[str]]: + """ + Update time stamp. + """ + return pulumi.get(self, "update_time") + + @update_time.setter + def update_time(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "update_time", value) + + +class InterceptEndpointGroupAssociation(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + intercept_endpoint_group: Optional[pulumi.Input[str]] = None, + intercept_endpoint_group_association_id: Optional[pulumi.Input[str]] = None, + labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + location: Optional[pulumi.Input[str]] = None, + network: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None, + __props__=None): + """ + ## Example Usage + + ### Network Security Intercept Endpoint Group Association Basic + + ```python + import pulumi + import pulumi_gcp as gcp + + producer_network = gcp.compute.Network("producer_network", + name="example-prod-network", + auto_create_subnetworks=False) + consumer_network = gcp.compute.Network("consumer_network", + name="example-cons-network", + auto_create_subnetworks=False) + deployment_group = gcp.networksecurity.InterceptDeploymentGroup("deployment_group", + intercept_deployment_group_id="example-dg", + location="global", + network=producer_network.id) + endpoint_group = gcp.networksecurity.InterceptEndpointGroup("endpoint_group", + intercept_endpoint_group_id="example-eg", + location="global", + intercept_deployment_group=deployment_group.id) + default = gcp.networksecurity.InterceptEndpointGroupAssociation("default", + intercept_endpoint_group_association_id="example-ega", + location="global", + network=consumer_network.id, + intercept_endpoint_group=endpoint_group.id, + labels={ + "foo": "bar", + }) + ``` + + ## Import + + InterceptEndpointGroupAssociation can be imported using any of these accepted formats: + + * `projects/{{project}}/locations/{{location}}/interceptEndpointGroupAssociations/{{intercept_endpoint_group_association_id}}` + + * `{{project}}/{{location}}/{{intercept_endpoint_group_association_id}}` + + * `{{location}}/{{intercept_endpoint_group_association_id}}` + + When using the `pulumi import` command, InterceptEndpointGroupAssociation can be imported using one of the formats above. For example: + + ```sh + $ pulumi import gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation default projects/{{project}}/locations/{{location}}/interceptEndpointGroupAssociations/{{intercept_endpoint_group_association_id}} + ``` + + ```sh + $ pulumi import gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation default {{project}}/{{location}}/{{intercept_endpoint_group_association_id}} + ``` + + ```sh + $ pulumi import gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation default {{location}}/{{intercept_endpoint_group_association_id}} + ``` + + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] intercept_endpoint_group: Immutable. The Intercept Endpoint Group that this resource is connected to. Format + is: + `projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`. + :param pulumi.Input[str] intercept_endpoint_group_association_id: ID of the Intercept Endpoint Group Association. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Optional. Labels as key value pairs. + **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + Please refer to the field `effective_labels` for all of the labels present on the resource. + :param pulumi.Input[str] location: The location of the Intercept Endpoint Group Association, currently restricted to `global`. + + + - - - + :param pulumi.Input[str] network: Immutable. The VPC network associated. Format: + `projects/{project}/global/networks/{network}`. + :param pulumi.Input[str] project: The ID of the project in which the resource belongs. + If it is not provided, the provider project is used. + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: InterceptEndpointGroupAssociationArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + ## Example Usage + + ### Network Security Intercept Endpoint Group Association Basic + + ```python + import pulumi + import pulumi_gcp as gcp + + producer_network = gcp.compute.Network("producer_network", + name="example-prod-network", + auto_create_subnetworks=False) + consumer_network = gcp.compute.Network("consumer_network", + name="example-cons-network", + auto_create_subnetworks=False) + deployment_group = gcp.networksecurity.InterceptDeploymentGroup("deployment_group", + intercept_deployment_group_id="example-dg", + location="global", + network=producer_network.id) + endpoint_group = gcp.networksecurity.InterceptEndpointGroup("endpoint_group", + intercept_endpoint_group_id="example-eg", + location="global", + intercept_deployment_group=deployment_group.id) + default = gcp.networksecurity.InterceptEndpointGroupAssociation("default", + intercept_endpoint_group_association_id="example-ega", + location="global", + network=consumer_network.id, + intercept_endpoint_group=endpoint_group.id, + labels={ + "foo": "bar", + }) + ``` + + ## Import + + InterceptEndpointGroupAssociation can be imported using any of these accepted formats: + + * `projects/{{project}}/locations/{{location}}/interceptEndpointGroupAssociations/{{intercept_endpoint_group_association_id}}` + + * `{{project}}/{{location}}/{{intercept_endpoint_group_association_id}}` + + * `{{location}}/{{intercept_endpoint_group_association_id}}` + + When using the `pulumi import` command, InterceptEndpointGroupAssociation can be imported using one of the formats above. For example: + + ```sh + $ pulumi import gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation default projects/{{project}}/locations/{{location}}/interceptEndpointGroupAssociations/{{intercept_endpoint_group_association_id}} + ``` + + ```sh + $ pulumi import gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation default {{project}}/{{location}}/{{intercept_endpoint_group_association_id}} + ``` + + ```sh + $ pulumi import gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation default {{location}}/{{intercept_endpoint_group_association_id}} + ``` + + :param str resource_name: The name of the resource. + :param InterceptEndpointGroupAssociationArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(InterceptEndpointGroupAssociationArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + intercept_endpoint_group: Optional[pulumi.Input[str]] = None, + intercept_endpoint_group_association_id: Optional[pulumi.Input[str]] = None, + labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + location: Optional[pulumi.Input[str]] = None, + network: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = InterceptEndpointGroupAssociationArgs.__new__(InterceptEndpointGroupAssociationArgs) + + if intercept_endpoint_group is None and not opts.urn: + raise TypeError("Missing required property 'intercept_endpoint_group'") + __props__.__dict__["intercept_endpoint_group"] = intercept_endpoint_group + __props__.__dict__["intercept_endpoint_group_association_id"] = intercept_endpoint_group_association_id + __props__.__dict__["labels"] = labels + if location is None and not opts.urn: + raise TypeError("Missing required property 'location'") + __props__.__dict__["location"] = location + if network is None and not opts.urn: + raise TypeError("Missing required property 'network'") + __props__.__dict__["network"] = network + __props__.__dict__["project"] = project + __props__.__dict__["create_time"] = None + __props__.__dict__["effective_labels"] = None + __props__.__dict__["locations_details"] = None + __props__.__dict__["name"] = None + __props__.__dict__["pulumi_labels"] = None + __props__.__dict__["reconciling"] = None + __props__.__dict__["state"] = None + __props__.__dict__["update_time"] = None + secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["effectiveLabels", "pulumiLabels"]) + opts = pulumi.ResourceOptions.merge(opts, secret_opts) + super(InterceptEndpointGroupAssociation, __self__).__init__( + 'gcp:networksecurity/interceptEndpointGroupAssociation:InterceptEndpointGroupAssociation', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + create_time: Optional[pulumi.Input[str]] = None, + effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + intercept_endpoint_group: Optional[pulumi.Input[str]] = None, + intercept_endpoint_group_association_id: Optional[pulumi.Input[str]] = None, + labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + location: Optional[pulumi.Input[str]] = None, + locations_details: Optional[pulumi.Input[Sequence[pulumi.Input[Union['InterceptEndpointGroupAssociationLocationsDetailArgs', 'InterceptEndpointGroupAssociationLocationsDetailArgsDict']]]]] = None, + name: Optional[pulumi.Input[str]] = None, + network: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None, + pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + reconciling: Optional[pulumi.Input[bool]] = None, + state: Optional[pulumi.Input[str]] = None, + update_time: Optional[pulumi.Input[str]] = None) -> 'InterceptEndpointGroupAssociation': + """ + Get an existing InterceptEndpointGroupAssociation resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] create_time: Create time stamp. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] effective_labels: All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + :param pulumi.Input[str] intercept_endpoint_group: Immutable. The Intercept Endpoint Group that this resource is connected to. Format + is: + `projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`. + :param pulumi.Input[str] intercept_endpoint_group_association_id: ID of the Intercept Endpoint Group Association. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Optional. Labels as key value pairs. + **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + Please refer to the field `effective_labels` for all of the labels present on the resource. + :param pulumi.Input[str] location: The location of the Intercept Endpoint Group Association, currently restricted to `global`. + + + - - - + :param pulumi.Input[Sequence[pulumi.Input[Union['InterceptEndpointGroupAssociationLocationsDetailArgs', 'InterceptEndpointGroupAssociationLocationsDetailArgsDict']]]] locations_details: The list of locations that are currently supported by the associated Intercept Deployment Group and their state. + Structure is documented below. + :param pulumi.Input[str] name: Identifier. The name of the Intercept Endpoint Group Association. + :param pulumi.Input[str] network: Immutable. The VPC network associated. Format: + `projects/{project}/global/networks/{network}`. + :param pulumi.Input[str] project: The ID of the project in which the resource belongs. + If it is not provided, the provider project is used. + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] pulumi_labels: The combination of labels configured directly on the resource + and default labels configured on the provider. + :param pulumi.Input[bool] reconciling: Whether reconciling is in progress. + :param pulumi.Input[str] state: (Output) + The association state in this location. + Possible values: + STATE_UNSPECIFIED + ACTIVE + OUT_OF_SYNC + :param pulumi.Input[str] update_time: Update time stamp. + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _InterceptEndpointGroupAssociationState.__new__(_InterceptEndpointGroupAssociationState) + + __props__.__dict__["create_time"] = create_time + __props__.__dict__["effective_labels"] = effective_labels + __props__.__dict__["intercept_endpoint_group"] = intercept_endpoint_group + __props__.__dict__["intercept_endpoint_group_association_id"] = intercept_endpoint_group_association_id + __props__.__dict__["labels"] = labels + __props__.__dict__["location"] = location + __props__.__dict__["locations_details"] = locations_details + __props__.__dict__["name"] = name + __props__.__dict__["network"] = network + __props__.__dict__["project"] = project + __props__.__dict__["pulumi_labels"] = pulumi_labels + __props__.__dict__["reconciling"] = reconciling + __props__.__dict__["state"] = state + __props__.__dict__["update_time"] = update_time + return InterceptEndpointGroupAssociation(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter(name="createTime") + def create_time(self) -> pulumi.Output[str]: + """ + Create time stamp. + """ + return pulumi.get(self, "create_time") + + @property + @pulumi.getter(name="effectiveLabels") + def effective_labels(self) -> pulumi.Output[Mapping[str, str]]: + """ + All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. + """ + return pulumi.get(self, "effective_labels") + + @property + @pulumi.getter(name="interceptEndpointGroup") + def intercept_endpoint_group(self) -> pulumi.Output[str]: + """ + Immutable. The Intercept Endpoint Group that this resource is connected to. Format + is: + `projects/{project}/locations/global/interceptEndpointGroups/{interceptEndpointGroup}`. + """ + return pulumi.get(self, "intercept_endpoint_group") + + @property + @pulumi.getter(name="interceptEndpointGroupAssociationId") + def intercept_endpoint_group_association_id(self) -> pulumi.Output[Optional[str]]: + """ + ID of the Intercept Endpoint Group Association. + """ + return pulumi.get(self, "intercept_endpoint_group_association_id") + + @property + @pulumi.getter + def labels(self) -> pulumi.Output[Optional[Mapping[str, str]]]: + """ + Optional. Labels as key value pairs. + **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. + Please refer to the field `effective_labels` for all of the labels present on the resource. + """ + return pulumi.get(self, "labels") + + @property + @pulumi.getter + def location(self) -> pulumi.Output[str]: + """ + The location of the Intercept Endpoint Group Association, currently restricted to `global`. + + + - - - + """ + return pulumi.get(self, "location") + + @property + @pulumi.getter(name="locationsDetails") + def locations_details(self) -> pulumi.Output[Sequence['outputs.InterceptEndpointGroupAssociationLocationsDetail']]: + """ + The list of locations that are currently supported by the associated Intercept Deployment Group and their state. + Structure is documented below. + """ + return pulumi.get(self, "locations_details") + + @property + @pulumi.getter + def name(self) -> pulumi.Output[str]: + """ + Identifier. The name of the Intercept Endpoint Group Association. + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter + def network(self) -> pulumi.Output[str]: + """ + Immutable. The VPC network associated. Format: + `projects/{project}/global/networks/{network}`. + """ + return pulumi.get(self, "network") + + @property + @pulumi.getter + def project(self) -> pulumi.Output[str]: + """ + The ID of the project in which the resource belongs. + If it is not provided, the provider project is used. + """ + return pulumi.get(self, "project") + + @property + @pulumi.getter(name="pulumiLabels") + def pulumi_labels(self) -> pulumi.Output[Mapping[str, str]]: + """ + The combination of labels configured directly on the resource + and default labels configured on the provider. + """ + return pulumi.get(self, "pulumi_labels") + + @property + @pulumi.getter + def reconciling(self) -> pulumi.Output[bool]: + """ + Whether reconciling is in progress. + """ + return pulumi.get(self, "reconciling") + + @property + @pulumi.getter + def state(self) -> pulumi.Output[str]: + """ + (Output) + The association state in this location. + Possible values: + STATE_UNSPECIFIED + ACTIVE + OUT_OF_SYNC + """ + return pulumi.get(self, "state") + + @property + @pulumi.getter(name="updateTime") + def update_time(self) -> pulumi.Output[str]: + """ + Update time stamp. + """ + return pulumi.get(self, "update_time") + diff --git a/sdk/python/pulumi_gcp/networksecurity/outputs.py b/sdk/python/pulumi_gcp/networksecurity/outputs.py index 08b9a2af53..10e54d4251 100644 --- a/sdk/python/pulumi_gcp/networksecurity/outputs.py +++ b/sdk/python/pulumi_gcp/networksecurity/outputs.py @@ -52,6 +52,7 @@ 'ClientTlsPolicyServerValidationCaCertificateProviderInstance', 'ClientTlsPolicyServerValidationCaGrpcEndpoint', 'InterceptDeploymentGroupConnectedEndpointGroup', + 'InterceptEndpointGroupAssociationLocationsDetail', 'MirroringDeploymentGroupConnectedEndpointGroup', 'MirroringEndpointGroupAssociationLocationsDetail', 'SecurityProfileThreatPreventionProfile', @@ -1949,6 +1950,53 @@ def name(self) -> Optional[str]: return pulumi.get(self, "name") +@pulumi.output_type +class InterceptEndpointGroupAssociationLocationsDetail(dict): + def __init__(__self__, *, + location: Optional[str] = None, + state: Optional[str] = None): + """ + :param str location: The location of the Intercept Endpoint Group Association, currently restricted to `global`. + + + - - - + :param str state: (Output) + The association state in this location. + Possible values: + STATE_UNSPECIFIED + ACTIVE + OUT_OF_SYNC + """ + if location is not None: + pulumi.set(__self__, "location", location) + if state is not None: + pulumi.set(__self__, "state", state) + + @property + @pulumi.getter + def location(self) -> Optional[str]: + """ + The location of the Intercept Endpoint Group Association, currently restricted to `global`. + + + - - - + """ + return pulumi.get(self, "location") + + @property + @pulumi.getter + def state(self) -> Optional[str]: + """ + (Output) + The association state in this location. + Possible values: + STATE_UNSPECIFIED + ACTIVE + OUT_OF_SYNC + """ + return pulumi.get(self, "state") + + @pulumi.output_type class MirroringDeploymentGroupConnectedEndpointGroup(dict): def __init__(__self__, *, diff --git a/sdk/python/pulumi_gcp/oracledatabase/autonomous_database.py b/sdk/python/pulumi_gcp/oracledatabase/autonomous_database.py index 5d85c8b152..4a92344f80 100644 --- a/sdk/python/pulumi_gcp/oracledatabase/autonomous_database.py +++ b/sdk/python/pulumi_gcp/oracledatabase/autonomous_database.py @@ -578,7 +578,7 @@ def __init__(__self__, "email": "xyz@example.com", }], "private_endpoint_ip": "10.5.0.11", - "private_endpoint_label": "testhost", + "private_endpoint_label": "myendpoint", }, deletion_protection=True) ``` @@ -709,7 +709,7 @@ def __init__(__self__, "email": "xyz@example.com", }], "private_endpoint_ip": "10.5.0.11", - "private_endpoint_label": "testhost", + "private_endpoint_label": "myendpoint", }, deletion_protection=True) ``` diff --git a/sdk/python/pulumi_gcp/orgpolicy/policy.py b/sdk/python/pulumi_gcp/orgpolicy/policy.py index 7371ef2def..11bff767e2 100644 --- a/sdk/python/pulumi_gcp/orgpolicy/policy.py +++ b/sdk/python/pulumi_gcp/orgpolicy/policy.py @@ -313,7 +313,7 @@ def __init__(__self__, import pulumi_gcp as gcp constraint = gcp.orgpolicy.CustomConstraint("constraint", - name="custom.disableGkeAutoUpgrade_40289", + name="custom.disableGkeAutoUpgrade_76044", parent="organizations/123456789", display_name="Disable GKE auto upgrade", description="Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.", @@ -502,7 +502,7 @@ def __init__(__self__, import pulumi_gcp as gcp constraint = gcp.orgpolicy.CustomConstraint("constraint", - name="custom.disableGkeAutoUpgrade_40289", + name="custom.disableGkeAutoUpgrade_76044", parent="organizations/123456789", display_name="Disable GKE auto upgrade", description="Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.", diff --git a/sdk/python/pulumi_gcp/parallelstore/instance.py b/sdk/python/pulumi_gcp/parallelstore/instance.py index 2233857651..b22bc85eca 100644 --- a/sdk/python/pulumi_gcp/parallelstore/instance.py +++ b/sdk/python/pulumi_gcp/parallelstore/instance.py @@ -22,6 +22,7 @@ def __init__(__self__, *, capacity_gib: pulumi.Input[str], instance_id: pulumi.Input[str], location: pulumi.Input[str], + deployment_type: Optional[pulumi.Input[str]] = None, description: Optional[pulumi.Input[str]] = None, directory_stripe_level: Optional[pulumi.Input[str]] = None, file_stripe_level: Optional[pulumi.Input[str]] = None, @@ -42,6 +43,11 @@ def __init__(__self__, *, - - - :param pulumi.Input[str] location: Part of `parent`. See documentation of `projectsId`. + :param pulumi.Input[str] deployment_type: Parallelstore Instance deployment type. + Possible values: + DEPLOYMENT_TYPE_UNSPECIFIED + SCRATCH + PERSISTENT :param pulumi.Input[str] description: The description of the instance. 2048 characters or less. :param pulumi.Input[str] directory_stripe_level: Stripe level for directories. MIN when directory has a small number of files. @@ -92,6 +98,8 @@ def __init__(__self__, *, pulumi.set(__self__, "capacity_gib", capacity_gib) pulumi.set(__self__, "instance_id", instance_id) pulumi.set(__self__, "location", location) + if deployment_type is not None: + pulumi.set(__self__, "deployment_type", deployment_type) if description is not None: pulumi.set(__self__, "description", description) if directory_stripe_level is not None: @@ -151,6 +159,22 @@ def location(self) -> pulumi.Input[str]: def location(self, value: pulumi.Input[str]): pulumi.set(self, "location", value) + @property + @pulumi.getter(name="deploymentType") + def deployment_type(self) -> Optional[pulumi.Input[str]]: + """ + Parallelstore Instance deployment type. + Possible values: + DEPLOYMENT_TYPE_UNSPECIFIED + SCRATCH + PERSISTENT + """ + return pulumi.get(self, "deployment_type") + + @deployment_type.setter + def deployment_type(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "deployment_type", value) + @property @pulumi.getter def description(self) -> Optional[pulumi.Input[str]]: @@ -282,6 +306,7 @@ def __init__(__self__, *, capacity_gib: Optional[pulumi.Input[str]] = None, create_time: Optional[pulumi.Input[str]] = None, daos_version: Optional[pulumi.Input[str]] = None, + deployment_type: Optional[pulumi.Input[str]] = None, description: Optional[pulumi.Input[str]] = None, directory_stripe_level: Optional[pulumi.Input[str]] = None, effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, @@ -304,6 +329,11 @@ def __init__(__self__, *, :param pulumi.Input[str] capacity_gib: Required. Immutable. Storage capacity of Parallelstore instance in Gibibytes (GiB). :param pulumi.Input[str] create_time: The time when the instance was created. :param pulumi.Input[str] daos_version: The version of DAOS software running in the instance. + :param pulumi.Input[str] deployment_type: Parallelstore Instance deployment type. + Possible values: + DEPLOYMENT_TYPE_UNSPECIFIED + SCRATCH + PERSISTENT :param pulumi.Input[str] description: The description of the instance. 2048 characters or less. :param pulumi.Input[str] directory_stripe_level: Stripe level for directories. MIN when directory has a small number of files. @@ -387,6 +417,8 @@ def __init__(__self__, *, pulumi.set(__self__, "create_time", create_time) if daos_version is not None: pulumi.set(__self__, "daos_version", daos_version) + if deployment_type is not None: + pulumi.set(__self__, "deployment_type", deployment_type) if description is not None: pulumi.set(__self__, "description", description) if directory_stripe_level is not None: @@ -467,6 +499,22 @@ def daos_version(self) -> Optional[pulumi.Input[str]]: def daos_version(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "daos_version", value) + @property + @pulumi.getter(name="deploymentType") + def deployment_type(self) -> Optional[pulumi.Input[str]]: + """ + Parallelstore Instance deployment type. + Possible values: + DEPLOYMENT_TYPE_UNSPECIFIED + SCRATCH + PERSISTENT + """ + return pulumi.get(self, "deployment_type") + + @deployment_type.setter + def deployment_type(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "deployment_type", value) + @property @pulumi.getter def description(self) -> Optional[pulumi.Input[str]]: @@ -713,6 +761,7 @@ def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, capacity_gib: Optional[pulumi.Input[str]] = None, + deployment_type: Optional[pulumi.Input[str]] = None, description: Optional[pulumi.Input[str]] = None, directory_stripe_level: Optional[pulumi.Input[str]] = None, file_stripe_level: Optional[pulumi.Input[str]] = None, @@ -728,6 +777,42 @@ def __init__(__self__, ## Example Usage + ### Parallelstore Instance Basic Beta + + ```python + import pulumi + import pulumi_gcp as gcp + + network = gcp.compute.Network("network", + name="network", + auto_create_subnetworks=True, + mtu=8896) + # Create an IP address + private_ip_alloc = gcp.compute.GlobalAddress("private_ip_alloc", + name="address", + purpose="VPC_PEERING", + address_type="INTERNAL", + prefix_length=24, + network=network.id) + # Create a private connection + default = gcp.servicenetworking.Connection("default", + network=network.id, + service="servicenetworking.googleapis.com", + reserved_peering_ranges=[private_ip_alloc.name]) + instance = gcp.parallelstore.Instance("instance", + instance_id="instance", + location="us-central1-a", + description="test instance", + capacity_gib="12000", + network=network.name, + file_stripe_level="FILE_STRIPE_LEVEL_MIN", + directory_stripe_level="DIRECTORY_STRIPE_LEVEL_MIN", + deployment_type="SCRATCH", + labels={ + "test": "value", + }, + opts = pulumi.ResourceOptions(depends_on=[default])) + ``` ### Parallelstore Instance Basic ```python @@ -758,6 +843,7 @@ def __init__(__self__, network=network.name, file_stripe_level="FILE_STRIPE_LEVEL_MIN", directory_stripe_level="DIRECTORY_STRIPE_LEVEL_MIN", + deployment_type="SCRATCH", labels={ "test": "value", }, @@ -791,6 +877,11 @@ def __init__(__self__, :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] capacity_gib: Required. Immutable. Storage capacity of Parallelstore instance in Gibibytes (GiB). + :param pulumi.Input[str] deployment_type: Parallelstore Instance deployment type. + Possible values: + DEPLOYMENT_TYPE_UNSPECIFIED + SCRATCH + PERSISTENT :param pulumi.Input[str] description: The description of the instance. 2048 characters or less. :param pulumi.Input[str] directory_stripe_level: Stripe level for directories. MIN when directory has a small number of files. @@ -859,6 +950,42 @@ def __init__(__self__, ## Example Usage + ### Parallelstore Instance Basic Beta + + ```python + import pulumi + import pulumi_gcp as gcp + + network = gcp.compute.Network("network", + name="network", + auto_create_subnetworks=True, + mtu=8896) + # Create an IP address + private_ip_alloc = gcp.compute.GlobalAddress("private_ip_alloc", + name="address", + purpose="VPC_PEERING", + address_type="INTERNAL", + prefix_length=24, + network=network.id) + # Create a private connection + default = gcp.servicenetworking.Connection("default", + network=network.id, + service="servicenetworking.googleapis.com", + reserved_peering_ranges=[private_ip_alloc.name]) + instance = gcp.parallelstore.Instance("instance", + instance_id="instance", + location="us-central1-a", + description="test instance", + capacity_gib="12000", + network=network.name, + file_stripe_level="FILE_STRIPE_LEVEL_MIN", + directory_stripe_level="DIRECTORY_STRIPE_LEVEL_MIN", + deployment_type="SCRATCH", + labels={ + "test": "value", + }, + opts = pulumi.ResourceOptions(depends_on=[default])) + ``` ### Parallelstore Instance Basic ```python @@ -889,6 +1016,7 @@ def __init__(__self__, network=network.name, file_stripe_level="FILE_STRIPE_LEVEL_MIN", directory_stripe_level="DIRECTORY_STRIPE_LEVEL_MIN", + deployment_type="SCRATCH", labels={ "test": "value", }, @@ -935,6 +1063,7 @@ def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, capacity_gib: Optional[pulumi.Input[str]] = None, + deployment_type: Optional[pulumi.Input[str]] = None, description: Optional[pulumi.Input[str]] = None, directory_stripe_level: Optional[pulumi.Input[str]] = None, file_stripe_level: Optional[pulumi.Input[str]] = None, @@ -956,6 +1085,7 @@ def _internal_init(__self__, if capacity_gib is None and not opts.urn: raise TypeError("Missing required property 'capacity_gib'") __props__.__dict__["capacity_gib"] = capacity_gib + __props__.__dict__["deployment_type"] = deployment_type __props__.__dict__["description"] = description __props__.__dict__["directory_stripe_level"] = directory_stripe_level __props__.__dict__["file_stripe_level"] = file_stripe_level @@ -994,6 +1124,7 @@ def get(resource_name: str, capacity_gib: Optional[pulumi.Input[str]] = None, create_time: Optional[pulumi.Input[str]] = None, daos_version: Optional[pulumi.Input[str]] = None, + deployment_type: Optional[pulumi.Input[str]] = None, description: Optional[pulumi.Input[str]] = None, directory_stripe_level: Optional[pulumi.Input[str]] = None, effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, @@ -1021,6 +1152,11 @@ def get(resource_name: str, :param pulumi.Input[str] capacity_gib: Required. Immutable. Storage capacity of Parallelstore instance in Gibibytes (GiB). :param pulumi.Input[str] create_time: The time when the instance was created. :param pulumi.Input[str] daos_version: The version of DAOS software running in the instance. + :param pulumi.Input[str] deployment_type: Parallelstore Instance deployment type. + Possible values: + DEPLOYMENT_TYPE_UNSPECIFIED + SCRATCH + PERSISTENT :param pulumi.Input[str] description: The description of the instance. 2048 characters or less. :param pulumi.Input[str] directory_stripe_level: Stripe level for directories. MIN when directory has a small number of files. @@ -1104,6 +1240,7 @@ def get(resource_name: str, __props__.__dict__["capacity_gib"] = capacity_gib __props__.__dict__["create_time"] = create_time __props__.__dict__["daos_version"] = daos_version + __props__.__dict__["deployment_type"] = deployment_type __props__.__dict__["description"] = description __props__.__dict__["directory_stripe_level"] = directory_stripe_level __props__.__dict__["effective_labels"] = effective_labels @@ -1154,6 +1291,18 @@ def daos_version(self) -> pulumi.Output[str]: """ return pulumi.get(self, "daos_version") + @property + @pulumi.getter(name="deploymentType") + def deployment_type(self) -> pulumi.Output[Optional[str]]: + """ + Parallelstore Instance deployment type. + Possible values: + DEPLOYMENT_TYPE_UNSPECIFIED + SCRATCH + PERSISTENT + """ + return pulumi.get(self, "deployment_type") + @property @pulumi.getter def description(self) -> pulumi.Output[Optional[str]]: diff --git a/sdk/python/pulumi_gcp/projects/usage_export_bucket.py b/sdk/python/pulumi_gcp/projects/usage_export_bucket.py index 9802788b03..b1c8767804 100644 --- a/sdk/python/pulumi_gcp/projects/usage_export_bucket.py +++ b/sdk/python/pulumi_gcp/projects/usage_export_bucket.py @@ -25,6 +25,8 @@ def __init__(__self__, *, """ The set of arguments for constructing a UsageExportBucket resource. :param pulumi.Input[str] bucket_name: The bucket to store reports in. + + - - - :param pulumi.Input[str] prefix: A prefix for the reports, for instance, the project name. :param pulumi.Input[str] project: The project to set the export bucket on. If it is not provided, the provider project is used. """ @@ -39,6 +41,8 @@ def __init__(__self__, *, def bucket_name(self) -> pulumi.Input[str]: """ The bucket to store reports in. + + - - - """ return pulumi.get(self, "bucket_name") @@ -80,6 +84,8 @@ def __init__(__self__, *, """ Input properties used for looking up and filtering UsageExportBucket resources. :param pulumi.Input[str] bucket_name: The bucket to store reports in. + + - - - :param pulumi.Input[str] prefix: A prefix for the reports, for instance, the project name. :param pulumi.Input[str] project: The project to set the export bucket on. If it is not provided, the provider project is used. """ @@ -95,6 +101,8 @@ def __init__(__self__, *, def bucket_name(self) -> Optional[pulumi.Input[str]]: """ The bucket to store reports in. + + - - - """ return pulumi.get(self, "bucket_name") @@ -137,27 +145,17 @@ def __init__(__self__, project: Optional[pulumi.Input[str]] = None, __props__=None): """ - Allows creation and management of a Google Cloud Platform project. - - Projects created with this resource must be associated with an Organization. - See the [Organization documentation](https://cloud.google.com/resource-manager/docs/quickstarts) for more details. - - The user or service account that is running this provider when creating a `organizations.Project` - resource must have `roles/resourcemanager.projectCreator` on the specified organization. See the - [Access Control for Organizations Using IAM](https://cloud.google.com/resource-manager/docs/access-control-org) - doc for more information. - - > This resource reads the specified billing account on every pulumi up and plan operation so you must have permissions on the specified billing account. - - > 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. + Sets up a usage export bucket for a particular project. A usage export bucket + is a pre-configured GCS bucket which is set up to receive daily and monthly + reports of the GCE resources used. - > It may take a while for the attached tag bindings to be deleted after the project is scheduled to be deleted. + For more information see the [Docs](https://cloud.google.com/compute/docs/usage-export) + and for further details, the + [API Documentation](https://cloud.google.com/compute/docs/reference/rest/beta/projects/setUsageExportBucket). - To get more information about projects, see: - - * [API documentation](https://cloud.google.com/resource-manager/reference/rest/v1/projects) - * How-to Guides - * [Creating and managing projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects) + > **Note:** You should specify only one of these per project. If there are two or more + they will fight over which bucket the reports should be stored in. It is + safe to have multiple resources with the same backing bucket. ## Example Usage @@ -165,49 +163,18 @@ def __init__(__self__, import pulumi import pulumi_gcp as gcp - my_project = gcp.organizations.Project("my_project", - name="My Project", - project_id="your-project-id", - org_id="1234567") - ``` - - To create a project under a specific folder - - ```python - import pulumi - import pulumi_gcp as gcp - - department1 = gcp.organizations.Folder("department1", - display_name="Department 1", - parent="organizations/1234567") - my_project_in_a_folder = gcp.organizations.Project("my_project-in-a-folder", - name="My Project", - project_id="your-project-id", - folder_id=department1.name) - ``` - - To create a project with a tag - - ```python - import pulumi - import pulumi_gcp as gcp - - my_project = gcp.organizations.Project("my_project", - name="My Project", - project_id="your-project-id", - org_id="1234567", - tags={ - "1234567/env": "staging", - }) + usage_export = gcp.projects.UsageExportBucket("usage_export", + project="development-project", + bucket_name="usage-tracking-bucket") ``` ## Import - Projects can be imported using the `project_id`, e.g. + A project's Usage Export Bucket can be imported using this format: * `{{project_id}}` - When using the `pulumi import` command, Projects can be imported using one of the formats above. For example: + When using the `pulumi import` command, NAME_HERE can be imported using one of the formats above. For example: ```sh $ pulumi import gcp:projects/usageExportBucket:UsageExportBucket default {{project_id}} @@ -216,6 +183,8 @@ def __init__(__self__, :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] bucket_name: The bucket to store reports in. + + - - - :param pulumi.Input[str] prefix: A prefix for the reports, for instance, the project name. :param pulumi.Input[str] project: The project to set the export bucket on. If it is not provided, the provider project is used. """ @@ -226,27 +195,17 @@ def __init__(__self__, args: UsageExportBucketArgs, opts: Optional[pulumi.ResourceOptions] = None): """ - Allows creation and management of a Google Cloud Platform project. + Sets up a usage export bucket for a particular project. A usage export bucket + is a pre-configured GCS bucket which is set up to receive daily and monthly + reports of the GCE resources used. - Projects created with this resource must be associated with an Organization. - See the [Organization documentation](https://cloud.google.com/resource-manager/docs/quickstarts) for more details. + For more information see the [Docs](https://cloud.google.com/compute/docs/usage-export) + and for further details, the + [API Documentation](https://cloud.google.com/compute/docs/reference/rest/beta/projects/setUsageExportBucket). - The user or service account that is running this provider when creating a `organizations.Project` - resource must have `roles/resourcemanager.projectCreator` on the specified organization. See the - [Access Control for Organizations Using IAM](https://cloud.google.com/resource-manager/docs/access-control-org) - doc for more information. - - > This resource reads the specified billing account on every pulumi up and plan operation so you must have permissions on the specified billing account. - - > 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. - - > It may take a while for the attached tag bindings to be deleted after the project is scheduled to be deleted. - - To get more information about projects, see: - - * [API documentation](https://cloud.google.com/resource-manager/reference/rest/v1/projects) - * How-to Guides - * [Creating and managing projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects) + > **Note:** You should specify only one of these per project. If there are two or more + they will fight over which bucket the reports should be stored in. It is + safe to have multiple resources with the same backing bucket. ## Example Usage @@ -254,49 +213,18 @@ def __init__(__self__, import pulumi import pulumi_gcp as gcp - my_project = gcp.organizations.Project("my_project", - name="My Project", - project_id="your-project-id", - org_id="1234567") - ``` - - To create a project under a specific folder - - ```python - import pulumi - import pulumi_gcp as gcp - - department1 = gcp.organizations.Folder("department1", - display_name="Department 1", - parent="organizations/1234567") - my_project_in_a_folder = gcp.organizations.Project("my_project-in-a-folder", - name="My Project", - project_id="your-project-id", - folder_id=department1.name) - ``` - - To create a project with a tag - - ```python - import pulumi - import pulumi_gcp as gcp - - my_project = gcp.organizations.Project("my_project", - name="My Project", - project_id="your-project-id", - org_id="1234567", - tags={ - "1234567/env": "staging", - }) + usage_export = gcp.projects.UsageExportBucket("usage_export", + project="development-project", + bucket_name="usage-tracking-bucket") ``` ## Import - Projects can be imported using the `project_id`, e.g. + A project's Usage Export Bucket can be imported using this format: * `{{project_id}}` - When using the `pulumi import` command, Projects can be imported using one of the formats above. For example: + When using the `pulumi import` command, NAME_HERE can be imported using one of the formats above. For example: ```sh $ pulumi import gcp:projects/usageExportBucket:UsageExportBucket default {{project_id}} @@ -355,6 +283,8 @@ def get(resource_name: str, :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] bucket_name: The bucket to store reports in. + + - - - :param pulumi.Input[str] prefix: A prefix for the reports, for instance, the project name. :param pulumi.Input[str] project: The project to set the export bucket on. If it is not provided, the provider project is used. """ @@ -372,6 +302,8 @@ def get(resource_name: str, def bucket_name(self) -> pulumi.Output[str]: """ The bucket to store reports in. + + - - - """ return pulumi.get(self, "bucket_name") diff --git a/sdk/python/pulumi_gcp/provider.py b/sdk/python/pulumi_gcp/provider.py index 522fcf3306..81c1be74eb 100644 --- a/sdk/python/pulumi_gcp/provider.py +++ b/sdk/python/pulumi_gcp/provider.py @@ -49,6 +49,7 @@ def __init__(__self__, *, binary_authorization_custom_endpoint: Optional[pulumi.Input[str]] = None, blockchain_node_engine_custom_endpoint: Optional[pulumi.Input[str]] = None, certificate_manager_custom_endpoint: Optional[pulumi.Input[str]] = None, + chronicle_custom_endpoint: Optional[pulumi.Input[str]] = None, cloud_asset_custom_endpoint: Optional[pulumi.Input[str]] = None, cloud_billing_custom_endpoint: Optional[pulumi.Input[str]] = None, cloud_build_custom_endpoint: Optional[pulumi.Input[str]] = None, @@ -261,6 +262,8 @@ def __init__(__self__, *, pulumi.set(__self__, "blockchain_node_engine_custom_endpoint", blockchain_node_engine_custom_endpoint) if certificate_manager_custom_endpoint is not None: pulumi.set(__self__, "certificate_manager_custom_endpoint", certificate_manager_custom_endpoint) + if chronicle_custom_endpoint is not None: + pulumi.set(__self__, "chronicle_custom_endpoint", chronicle_custom_endpoint) if cloud_asset_custom_endpoint is not None: pulumi.set(__self__, "cloud_asset_custom_endpoint", cloud_asset_custom_endpoint) if cloud_billing_custom_endpoint is not None: @@ -831,6 +834,15 @@ def certificate_manager_custom_endpoint(self) -> Optional[pulumi.Input[str]]: def certificate_manager_custom_endpoint(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "certificate_manager_custom_endpoint", value) + @property + @pulumi.getter(name="chronicleCustomEndpoint") + def chronicle_custom_endpoint(self) -> Optional[pulumi.Input[str]]: + return pulumi.get(self, "chronicle_custom_endpoint") + + @chronicle_custom_endpoint.setter + def chronicle_custom_endpoint(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "chronicle_custom_endpoint", value) + @property @pulumi.getter(name="cloudAssetCustomEndpoint") def cloud_asset_custom_endpoint(self) -> Optional[pulumi.Input[str]]: @@ -2225,6 +2237,7 @@ def __init__(__self__, binary_authorization_custom_endpoint: Optional[pulumi.Input[str]] = None, blockchain_node_engine_custom_endpoint: Optional[pulumi.Input[str]] = None, certificate_manager_custom_endpoint: Optional[pulumi.Input[str]] = None, + chronicle_custom_endpoint: Optional[pulumi.Input[str]] = None, cloud_asset_custom_endpoint: Optional[pulumi.Input[str]] = None, cloud_billing_custom_endpoint: Optional[pulumi.Input[str]] = None, cloud_build_custom_endpoint: Optional[pulumi.Input[str]] = None, @@ -2442,6 +2455,7 @@ def _internal_init(__self__, binary_authorization_custom_endpoint: Optional[pulumi.Input[str]] = None, blockchain_node_engine_custom_endpoint: Optional[pulumi.Input[str]] = None, certificate_manager_custom_endpoint: Optional[pulumi.Input[str]] = None, + chronicle_custom_endpoint: Optional[pulumi.Input[str]] = None, cloud_asset_custom_endpoint: Optional[pulumi.Input[str]] = None, cloud_billing_custom_endpoint: Optional[pulumi.Input[str]] = None, cloud_build_custom_endpoint: Optional[pulumi.Input[str]] = None, @@ -2631,6 +2645,7 @@ def _internal_init(__self__, __props__.__dict__["binary_authorization_custom_endpoint"] = binary_authorization_custom_endpoint __props__.__dict__["blockchain_node_engine_custom_endpoint"] = blockchain_node_engine_custom_endpoint __props__.__dict__["certificate_manager_custom_endpoint"] = certificate_manager_custom_endpoint + __props__.__dict__["chronicle_custom_endpoint"] = chronicle_custom_endpoint __props__.__dict__["cloud_asset_custom_endpoint"] = cloud_asset_custom_endpoint __props__.__dict__["cloud_billing_custom_endpoint"] = cloud_billing_custom_endpoint __props__.__dict__["cloud_build_custom_endpoint"] = cloud_build_custom_endpoint @@ -2931,6 +2946,11 @@ def blockchain_node_engine_custom_endpoint(self) -> pulumi.Output[Optional[str]] def certificate_manager_custom_endpoint(self) -> pulumi.Output[Optional[str]]: return pulumi.get(self, "certificate_manager_custom_endpoint") + @property + @pulumi.getter(name="chronicleCustomEndpoint") + def chronicle_custom_endpoint(self) -> pulumi.Output[Optional[str]]: + return pulumi.get(self, "chronicle_custom_endpoint") + @property @pulumi.getter(name="cloudAssetCustomEndpoint") def cloud_asset_custom_endpoint(self) -> pulumi.Output[Optional[str]]: diff --git a/sdk/python/pulumi_gcp/pubsub/subscription.py b/sdk/python/pulumi_gcp/pubsub/subscription.py index b3d5405602..a3ef7bac53 100644 --- a/sdk/python/pulumi_gcp/pubsub/subscription.py +++ b/sdk/python/pulumi_gcp/pubsub/subscription.py @@ -1113,7 +1113,7 @@ def __init__(__self__, cloud_storage_config={ "bucket": example.name, "filename_prefix": "pre-", - "filename_suffix": "-_33395", + "filename_suffix": "-_69391", "filename_datetime_format": "YYYY-MM-DD/hh_mm_ssZ", "max_bytes": 1000, "max_duration": "300s", @@ -1146,7 +1146,7 @@ def __init__(__self__, cloud_storage_config={ "bucket": example.name, "filename_prefix": "pre-", - "filename_suffix": "-_76044", + "filename_suffix": "-_8270", "filename_datetime_format": "YYYY-MM-DD/hh_mm_ssZ", "max_bytes": 1000, "max_duration": "300s", @@ -1185,7 +1185,7 @@ def __init__(__self__, cloud_storage_config={ "bucket": example.name, "filename_prefix": "pre-", - "filename_suffix": "-_69391", + "filename_suffix": "-_41150", "filename_datetime_format": "YYYY-MM-DD/hh_mm_ssZ", "max_bytes": 1000, "max_duration": "300s", @@ -1553,7 +1553,7 @@ def __init__(__self__, cloud_storage_config={ "bucket": example.name, "filename_prefix": "pre-", - "filename_suffix": "-_33395", + "filename_suffix": "-_69391", "filename_datetime_format": "YYYY-MM-DD/hh_mm_ssZ", "max_bytes": 1000, "max_duration": "300s", @@ -1586,7 +1586,7 @@ def __init__(__self__, cloud_storage_config={ "bucket": example.name, "filename_prefix": "pre-", - "filename_suffix": "-_76044", + "filename_suffix": "-_8270", "filename_datetime_format": "YYYY-MM-DD/hh_mm_ssZ", "max_bytes": 1000, "max_duration": "300s", @@ -1625,7 +1625,7 @@ def __init__(__self__, cloud_storage_config={ "bucket": example.name, "filename_prefix": "pre-", - "filename_suffix": "-_69391", + "filename_suffix": "-_41150", "filename_datetime_format": "YYYY-MM-DD/hh_mm_ssZ", "max_bytes": 1000, "max_duration": "300s", diff --git a/sdk/python/pulumi_gcp/securesourcemanager/instance.py b/sdk/python/pulumi_gcp/securesourcemanager/instance.py index 2cc0d7c89e..88d7f03bcf 100644 --- a/sdk/python/pulumi_gcp/securesourcemanager/instance.py +++ b/sdk/python/pulumi_gcp/securesourcemanager/instance.py @@ -471,21 +471,15 @@ def __init__(__self__, import pulumi import pulumi_gcp as gcp - key_ring = gcp.kms.KeyRing("key_ring", - name="my-keyring", - location="us-central1") - crypto_key = gcp.kms.CryptoKey("crypto_key", - name="my-key", - key_ring=key_ring.id) project = gcp.organizations.get_project() crypto_key_binding = gcp.kms.CryptoKeyIAMMember("crypto_key_binding", - crypto_key_id=crypto_key.id, + crypto_key_id="my-key", role="roles/cloudkms.cryptoKeyEncrypterDecrypter", member=f"serviceAccount:service-{project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com") default = gcp.securesourcemanager.Instance("default", location="us-central1", instance_id="my-instance", - kms_key=crypto_key.id, + kms_key="my-key", opts = pulumi.ResourceOptions(depends_on=[crypto_key_binding])) ``` ### Secure Source Manager Instance Private @@ -917,21 +911,15 @@ def __init__(__self__, import pulumi import pulumi_gcp as gcp - key_ring = gcp.kms.KeyRing("key_ring", - name="my-keyring", - location="us-central1") - crypto_key = gcp.kms.CryptoKey("crypto_key", - name="my-key", - key_ring=key_ring.id) project = gcp.organizations.get_project() crypto_key_binding = gcp.kms.CryptoKeyIAMMember("crypto_key_binding", - crypto_key_id=crypto_key.id, + crypto_key_id="my-key", role="roles/cloudkms.cryptoKeyEncrypterDecrypter", member=f"serviceAccount:service-{project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com") default = gcp.securesourcemanager.Instance("default", location="us-central1", instance_id="my-instance", - kms_key=crypto_key.id, + kms_key="my-key", opts = pulumi.ResourceOptions(depends_on=[crypto_key_binding])) ``` ### Secure Source Manager Instance Private diff --git a/sdk/python/pulumi_gcp/spanner/instance_iam_binding.py b/sdk/python/pulumi_gcp/spanner/instance_iam_binding.py index 2fb55caef9..bef8a1b1e2 100644 --- a/sdk/python/pulumi_gcp/spanner/instance_iam_binding.py +++ b/sdk/python/pulumi_gcp/spanner/instance_iam_binding.py @@ -35,6 +35,8 @@ def __init__(__self__, *, * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * **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 + * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. * **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. :param pulumi.Input[str] role: The role that should be applied. Only one @@ -73,6 +75,8 @@ def members(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]: * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * **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 + * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. * **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. """ @@ -138,6 +142,8 @@ def __init__(__self__, *, * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * **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 + * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. * **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. :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it @@ -202,6 +208,8 @@ def members(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * **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 + * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. * **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. """ @@ -362,6 +370,8 @@ def __init__(__self__, * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * **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 + * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. * **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. :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it @@ -551,6 +561,8 @@ def get(resource_name: str, * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * **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 + * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. * **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. :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it @@ -602,6 +614,8 @@ def members(self) -> pulumi.Output[Sequence[str]]: * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * **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 + * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. * **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. """ diff --git a/sdk/python/pulumi_gcp/spanner/instance_iam_member.py b/sdk/python/pulumi_gcp/spanner/instance_iam_member.py index eefdb2e249..962ef7f43c 100644 --- a/sdk/python/pulumi_gcp/spanner/instance_iam_member.py +++ b/sdk/python/pulumi_gcp/spanner/instance_iam_member.py @@ -35,6 +35,8 @@ def __init__(__self__, *, * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * **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 + * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. * **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. :param pulumi.Input[str] role: The role that should be applied. Only one @@ -73,6 +75,8 @@ def member(self) -> pulumi.Input[str]: * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * **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 + * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. * **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. """ @@ -138,6 +142,8 @@ def __init__(__self__, *, * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * **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 + * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. * **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. :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it @@ -202,6 +208,8 @@ def member(self) -> Optional[pulumi.Input[str]]: * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * **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 + * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. * **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. """ @@ -362,6 +370,8 @@ def __init__(__self__, * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * **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 + * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. * **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. :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it @@ -551,6 +561,8 @@ def get(resource_name: str, * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * **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 + * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. * **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. :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it @@ -602,6 +614,8 @@ def member(self) -> pulumi.Output[str]: * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account. * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. + * **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 + * **principalSet:{principalSet}**: Federated identity group. For example, principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com. * **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. """ diff --git a/sdk/python/pulumi_gcp/sql/database_instance.py b/sdk/python/pulumi_gcp/sql/database_instance.py index 8cea60cdf4..07ef68c2cd 100644 --- a/sdk/python/pulumi_gcp/sql/database_instance.py +++ b/sdk/python/pulumi_gcp/sql/database_instance.py @@ -40,7 +40,7 @@ def __init__(__self__, *, The set of arguments for constructing a DatabaseInstance resource. :param pulumi.Input[str] database_version: The MySQL, PostgreSQL or SQL Server version to use. Supported values include `MYSQL_5_6`, - `MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, + `MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, `POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`, `SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`. `SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`, @@ -122,7 +122,7 @@ def database_version(self) -> pulumi.Input[str]: """ The MySQL, PostgreSQL or SQL Server version to use. Supported values include `MYSQL_5_6`, - `MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, + `MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, `POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`, `SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`. `SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`, @@ -368,7 +368,7 @@ def __init__(__self__, *, connection strings. For example, when connecting with [Cloud SQL Proxy](https://cloud.google.com/sql/docs/mysql/connect-admin-proxy). :param pulumi.Input[str] database_version: The MySQL, PostgreSQL or SQL Server version to use. Supported values include `MYSQL_5_6`, - `MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, + `MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, `POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`, `SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`. `SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`, @@ -517,7 +517,7 @@ def database_version(self) -> Optional[pulumi.Input[str]]: """ The MySQL, PostgreSQL or SQL Server version to use. Supported values include `MYSQL_5_6`, - `MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, + `MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, `POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`, `SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`. `SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`, @@ -1043,7 +1043,7 @@ def __init__(__self__, configuration is detailed below. :param pulumi.Input[str] database_version: The MySQL, PostgreSQL or SQL Server version to use. Supported values include `MYSQL_5_6`, - `MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, + `MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, `POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`, `SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`. `SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`, @@ -1414,7 +1414,7 @@ def get(resource_name: str, connection strings. For example, when connecting with [Cloud SQL Proxy](https://cloud.google.com/sql/docs/mysql/connect-admin-proxy). :param pulumi.Input[str] database_version: The MySQL, PostgreSQL or SQL Server version to use. Supported values include `MYSQL_5_6`, - `MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, + `MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, `POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`, `SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`. `SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`, @@ -1530,7 +1530,7 @@ def database_version(self) -> pulumi.Output[str]: """ The MySQL, PostgreSQL or SQL Server version to use. Supported values include `MYSQL_5_6`, - `MYSQL_5_7`, `MYSQL_8_0`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, + `MYSQL_5_7`, `MYSQL_8_0`, `MYSQL_8_4`, `POSTGRES_9_6`,`POSTGRES_10`, `POSTGRES_11`, `POSTGRES_12`, `POSTGRES_13`, `POSTGRES_14`, `POSTGRES_15`, `POSTGRES_16`, `POSTGRES_17`, `SQLSERVER_2017_STANDARD`, `SQLSERVER_2017_ENTERPRISE`, `SQLSERVER_2017_EXPRESS`, `SQLSERVER_2017_WEB`. `SQLSERVER_2019_STANDARD`, `SQLSERVER_2019_ENTERPRISE`, `SQLSERVER_2019_EXPRESS`, diff --git a/sdk/python/pulumi_gcp/storage/__init__.py b/sdk/python/pulumi_gcp/storage/__init__.py index 455445134d..a67dcf8c23 100644 --- a/sdk/python/pulumi_gcp/storage/__init__.py +++ b/sdk/python/pulumi_gcp/storage/__init__.py @@ -14,6 +14,7 @@ from .bucket_object import * from .default_object_access_control import * from .default_object_acl import * +from .folder import * from .get_bucket import * from .get_bucket_iam_policy import * from .get_bucket_object import * diff --git a/sdk/python/pulumi_gcp/storage/_inputs.py b/sdk/python/pulumi_gcp/storage/_inputs.py index 1bd2c3d76e..6409701fd7 100644 --- a/sdk/python/pulumi_gcp/storage/_inputs.py +++ b/sdk/python/pulumi_gcp/storage/_inputs.py @@ -77,6 +77,16 @@ 'TransferJobEventStreamArgsDict', 'TransferJobNotificationConfigArgs', 'TransferJobNotificationConfigArgsDict', + 'TransferJobReplicationSpecArgs', + 'TransferJobReplicationSpecArgsDict', + 'TransferJobReplicationSpecGcsDataSinkArgs', + 'TransferJobReplicationSpecGcsDataSinkArgsDict', + 'TransferJobReplicationSpecGcsDataSourceArgs', + 'TransferJobReplicationSpecGcsDataSourceArgsDict', + 'TransferJobReplicationSpecObjectConditionsArgs', + 'TransferJobReplicationSpecObjectConditionsArgsDict', + 'TransferJobReplicationSpecTransferOptionsArgs', + 'TransferJobReplicationSpecTransferOptionsArgsDict', 'TransferJobScheduleArgs', 'TransferJobScheduleArgsDict', 'TransferJobScheduleScheduleEndDateArgs', @@ -2184,6 +2194,427 @@ def event_types(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] pulumi.set(self, "event_types", value) +if not MYPY: + class TransferJobReplicationSpecArgsDict(TypedDict): + gcs_data_sink: NotRequired[pulumi.Input['TransferJobReplicationSpecGcsDataSinkArgsDict']] + """ + A Google Cloud Storage data sink. Structure documented below. + """ + gcs_data_source: NotRequired[pulumi.Input['TransferJobReplicationSpecGcsDataSourceArgsDict']] + """ + A Google Cloud Storage data source. Structure documented below. + """ + object_conditions: NotRequired[pulumi.Input['TransferJobReplicationSpecObjectConditionsArgsDict']] + """ + 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. + """ + transfer_options: NotRequired[pulumi.Input['TransferJobReplicationSpecTransferOptionsArgsDict']] + """ + 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. + """ +elif False: + TransferJobReplicationSpecArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class TransferJobReplicationSpecArgs: + def __init__(__self__, *, + gcs_data_sink: Optional[pulumi.Input['TransferJobReplicationSpecGcsDataSinkArgs']] = None, + gcs_data_source: Optional[pulumi.Input['TransferJobReplicationSpecGcsDataSourceArgs']] = None, + object_conditions: Optional[pulumi.Input['TransferJobReplicationSpecObjectConditionsArgs']] = None, + transfer_options: Optional[pulumi.Input['TransferJobReplicationSpecTransferOptionsArgs']] = None): + """ + :param pulumi.Input['TransferJobReplicationSpecGcsDataSinkArgs'] gcs_data_sink: A Google Cloud Storage data sink. Structure documented below. + :param pulumi.Input['TransferJobReplicationSpecGcsDataSourceArgs'] gcs_data_source: A Google Cloud Storage data source. Structure documented below. + :param pulumi.Input['TransferJobReplicationSpecObjectConditionsArgs'] object_conditions: 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. + :param pulumi.Input['TransferJobReplicationSpecTransferOptionsArgs'] transfer_options: 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. + """ + if gcs_data_sink is not None: + pulumi.set(__self__, "gcs_data_sink", gcs_data_sink) + if gcs_data_source is not None: + pulumi.set(__self__, "gcs_data_source", gcs_data_source) + if object_conditions is not None: + pulumi.set(__self__, "object_conditions", object_conditions) + if transfer_options is not None: + pulumi.set(__self__, "transfer_options", transfer_options) + + @property + @pulumi.getter(name="gcsDataSink") + def gcs_data_sink(self) -> Optional[pulumi.Input['TransferJobReplicationSpecGcsDataSinkArgs']]: + """ + A Google Cloud Storage data sink. Structure documented below. + """ + return pulumi.get(self, "gcs_data_sink") + + @gcs_data_sink.setter + def gcs_data_sink(self, value: Optional[pulumi.Input['TransferJobReplicationSpecGcsDataSinkArgs']]): + pulumi.set(self, "gcs_data_sink", value) + + @property + @pulumi.getter(name="gcsDataSource") + def gcs_data_source(self) -> Optional[pulumi.Input['TransferJobReplicationSpecGcsDataSourceArgs']]: + """ + A Google Cloud Storage data source. Structure documented below. + """ + return pulumi.get(self, "gcs_data_source") + + @gcs_data_source.setter + def gcs_data_source(self, value: Optional[pulumi.Input['TransferJobReplicationSpecGcsDataSourceArgs']]): + pulumi.set(self, "gcs_data_source", value) + + @property + @pulumi.getter(name="objectConditions") + def object_conditions(self) -> Optional[pulumi.Input['TransferJobReplicationSpecObjectConditionsArgs']]: + """ + 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. + """ + return pulumi.get(self, "object_conditions") + + @object_conditions.setter + def object_conditions(self, value: Optional[pulumi.Input['TransferJobReplicationSpecObjectConditionsArgs']]): + pulumi.set(self, "object_conditions", value) + + @property + @pulumi.getter(name="transferOptions") + def transfer_options(self) -> Optional[pulumi.Input['TransferJobReplicationSpecTransferOptionsArgs']]: + """ + 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. + """ + return pulumi.get(self, "transfer_options") + + @transfer_options.setter + def transfer_options(self, value: Optional[pulumi.Input['TransferJobReplicationSpecTransferOptionsArgs']]): + pulumi.set(self, "transfer_options", value) + + +if not MYPY: + class TransferJobReplicationSpecGcsDataSinkArgsDict(TypedDict): + bucket_name: pulumi.Input[str] + """ + Google Cloud Storage bucket name. + """ + path: NotRequired[pulumi.Input[str]] + """ + 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 '/'. + """ +elif False: + TransferJobReplicationSpecGcsDataSinkArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class TransferJobReplicationSpecGcsDataSinkArgs: + def __init__(__self__, *, + bucket_name: pulumi.Input[str], + path: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] bucket_name: Google Cloud Storage bucket name. + :param pulumi.Input[str] path: 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 '/'. + """ + pulumi.set(__self__, "bucket_name", bucket_name) + if path is not None: + pulumi.set(__self__, "path", path) + + @property + @pulumi.getter(name="bucketName") + def bucket_name(self) -> pulumi.Input[str]: + """ + Google Cloud Storage bucket name. + """ + return pulumi.get(self, "bucket_name") + + @bucket_name.setter + def bucket_name(self, value: pulumi.Input[str]): + pulumi.set(self, "bucket_name", value) + + @property + @pulumi.getter + def path(self) -> Optional[pulumi.Input[str]]: + """ + 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 '/'. + """ + return pulumi.get(self, "path") + + @path.setter + def path(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "path", value) + + +if not MYPY: + class TransferJobReplicationSpecGcsDataSourceArgsDict(TypedDict): + bucket_name: pulumi.Input[str] + """ + Google Cloud Storage bucket name. + """ + path: NotRequired[pulumi.Input[str]] + """ + 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 '/'. + """ +elif False: + TransferJobReplicationSpecGcsDataSourceArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class TransferJobReplicationSpecGcsDataSourceArgs: + def __init__(__self__, *, + bucket_name: pulumi.Input[str], + path: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] bucket_name: Google Cloud Storage bucket name. + :param pulumi.Input[str] path: 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 '/'. + """ + pulumi.set(__self__, "bucket_name", bucket_name) + if path is not None: + pulumi.set(__self__, "path", path) + + @property + @pulumi.getter(name="bucketName") + def bucket_name(self) -> pulumi.Input[str]: + """ + Google Cloud Storage bucket name. + """ + return pulumi.get(self, "bucket_name") + + @bucket_name.setter + def bucket_name(self, value: pulumi.Input[str]): + pulumi.set(self, "bucket_name", value) + + @property + @pulumi.getter + def path(self) -> Optional[pulumi.Input[str]]: + """ + 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 '/'. + """ + return pulumi.get(self, "path") + + @path.setter + def path(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "path", value) + + +if not MYPY: + class TransferJobReplicationSpecObjectConditionsArgsDict(TypedDict): + exclude_prefixes: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]] + """ + `exclude_prefixes` must follow the requirements described for `include_prefixes`. See [Requirements](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#ObjectConditions). + """ + include_prefixes: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]] + """ + 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). + """ + last_modified_before: NotRequired[pulumi.Input[str]] + """ + 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". + """ + last_modified_since: NotRequired[pulumi.Input[str]] + """ + 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". + """ + max_time_elapsed_since_last_modification: NotRequired[pulumi.Input[str]] + """ + A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + """ + min_time_elapsed_since_last_modification: NotRequired[pulumi.Input[str]] + """ + A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + """ +elif False: + TransferJobReplicationSpecObjectConditionsArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class TransferJobReplicationSpecObjectConditionsArgs: + def __init__(__self__, *, + exclude_prefixes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + include_prefixes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + last_modified_before: Optional[pulumi.Input[str]] = None, + last_modified_since: Optional[pulumi.Input[str]] = None, + max_time_elapsed_since_last_modification: Optional[pulumi.Input[str]] = None, + min_time_elapsed_since_last_modification: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[Sequence[pulumi.Input[str]]] exclude_prefixes: `exclude_prefixes` must follow the requirements described for `include_prefixes`. See [Requirements](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#ObjectConditions). + :param pulumi.Input[Sequence[pulumi.Input[str]]] include_prefixes: 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). + :param pulumi.Input[str] last_modified_before: 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". + :param pulumi.Input[str] last_modified_since: 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". + :param pulumi.Input[str] max_time_elapsed_since_last_modification: A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + :param pulumi.Input[str] min_time_elapsed_since_last_modification: A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + """ + if exclude_prefixes is not None: + pulumi.set(__self__, "exclude_prefixes", exclude_prefixes) + if include_prefixes is not None: + pulumi.set(__self__, "include_prefixes", include_prefixes) + if last_modified_before is not None: + pulumi.set(__self__, "last_modified_before", last_modified_before) + if last_modified_since is not None: + pulumi.set(__self__, "last_modified_since", last_modified_since) + if max_time_elapsed_since_last_modification is not None: + pulumi.set(__self__, "max_time_elapsed_since_last_modification", max_time_elapsed_since_last_modification) + if min_time_elapsed_since_last_modification is not None: + pulumi.set(__self__, "min_time_elapsed_since_last_modification", min_time_elapsed_since_last_modification) + + @property + @pulumi.getter(name="excludePrefixes") + def exclude_prefixes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + `exclude_prefixes` must follow the requirements described for `include_prefixes`. See [Requirements](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#ObjectConditions). + """ + return pulumi.get(self, "exclude_prefixes") + + @exclude_prefixes.setter + def exclude_prefixes(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "exclude_prefixes", value) + + @property + @pulumi.getter(name="includePrefixes") + def include_prefixes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + 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). + """ + return pulumi.get(self, "include_prefixes") + + @include_prefixes.setter + def include_prefixes(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "include_prefixes", value) + + @property + @pulumi.getter(name="lastModifiedBefore") + def last_modified_before(self) -> Optional[pulumi.Input[str]]: + """ + 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". + """ + return pulumi.get(self, "last_modified_before") + + @last_modified_before.setter + def last_modified_before(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "last_modified_before", value) + + @property + @pulumi.getter(name="lastModifiedSince") + def last_modified_since(self) -> Optional[pulumi.Input[str]]: + """ + 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". + """ + return pulumi.get(self, "last_modified_since") + + @last_modified_since.setter + def last_modified_since(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "last_modified_since", value) + + @property + @pulumi.getter(name="maxTimeElapsedSinceLastModification") + def max_time_elapsed_since_last_modification(self) -> Optional[pulumi.Input[str]]: + """ + A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + """ + return pulumi.get(self, "max_time_elapsed_since_last_modification") + + @max_time_elapsed_since_last_modification.setter + def max_time_elapsed_since_last_modification(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "max_time_elapsed_since_last_modification", value) + + @property + @pulumi.getter(name="minTimeElapsedSinceLastModification") + def min_time_elapsed_since_last_modification(self) -> Optional[pulumi.Input[str]]: + """ + A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + """ + return pulumi.get(self, "min_time_elapsed_since_last_modification") + + @min_time_elapsed_since_last_modification.setter + def min_time_elapsed_since_last_modification(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "min_time_elapsed_since_last_modification", value) + + +if not MYPY: + class TransferJobReplicationSpecTransferOptionsArgsDict(TypedDict): + delete_objects_from_source_after_transfer: NotRequired[pulumi.Input[bool]] + """ + 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. + """ + delete_objects_unique_in_sink: NotRequired[pulumi.Input[bool]] + """ + Whether objects that exist only in the sink should be deleted. Note that this option and + `delete_objects_from_source_after_transfer` are mutually exclusive. + """ + overwrite_objects_already_existing_in_sink: NotRequired[pulumi.Input[bool]] + """ + Whether overwriting objects that already exist in the sink is allowed. + """ + overwrite_when: NotRequired[pulumi.Input[str]] + """ + 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. + """ +elif False: + TransferJobReplicationSpecTransferOptionsArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class TransferJobReplicationSpecTransferOptionsArgs: + def __init__(__self__, *, + delete_objects_from_source_after_transfer: Optional[pulumi.Input[bool]] = None, + delete_objects_unique_in_sink: Optional[pulumi.Input[bool]] = None, + overwrite_objects_already_existing_in_sink: Optional[pulumi.Input[bool]] = None, + overwrite_when: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[bool] delete_objects_from_source_after_transfer: 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. + :param pulumi.Input[bool] delete_objects_unique_in_sink: Whether objects that exist only in the sink should be deleted. Note that this option and + `delete_objects_from_source_after_transfer` are mutually exclusive. + :param pulumi.Input[bool] overwrite_objects_already_existing_in_sink: Whether overwriting objects that already exist in the sink is allowed. + :param pulumi.Input[str] overwrite_when: 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. + """ + if delete_objects_from_source_after_transfer is not None: + pulumi.set(__self__, "delete_objects_from_source_after_transfer", delete_objects_from_source_after_transfer) + if delete_objects_unique_in_sink is not None: + pulumi.set(__self__, "delete_objects_unique_in_sink", delete_objects_unique_in_sink) + if overwrite_objects_already_existing_in_sink is not None: + pulumi.set(__self__, "overwrite_objects_already_existing_in_sink", overwrite_objects_already_existing_in_sink) + if overwrite_when is not None: + pulumi.set(__self__, "overwrite_when", overwrite_when) + + @property + @pulumi.getter(name="deleteObjectsFromSourceAfterTransfer") + def delete_objects_from_source_after_transfer(self) -> Optional[pulumi.Input[bool]]: + """ + 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. + """ + return pulumi.get(self, "delete_objects_from_source_after_transfer") + + @delete_objects_from_source_after_transfer.setter + def delete_objects_from_source_after_transfer(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "delete_objects_from_source_after_transfer", value) + + @property + @pulumi.getter(name="deleteObjectsUniqueInSink") + def delete_objects_unique_in_sink(self) -> Optional[pulumi.Input[bool]]: + """ + Whether objects that exist only in the sink should be deleted. Note that this option and + `delete_objects_from_source_after_transfer` are mutually exclusive. + """ + return pulumi.get(self, "delete_objects_unique_in_sink") + + @delete_objects_unique_in_sink.setter + def delete_objects_unique_in_sink(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "delete_objects_unique_in_sink", value) + + @property + @pulumi.getter(name="overwriteObjectsAlreadyExistingInSink") + def overwrite_objects_already_existing_in_sink(self) -> Optional[pulumi.Input[bool]]: + """ + Whether overwriting objects that already exist in the sink is allowed. + """ + return pulumi.get(self, "overwrite_objects_already_existing_in_sink") + + @overwrite_objects_already_existing_in_sink.setter + def overwrite_objects_already_existing_in_sink(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "overwrite_objects_already_existing_in_sink", value) + + @property + @pulumi.getter(name="overwriteWhen") + def overwrite_when(self) -> Optional[pulumi.Input[str]]: + """ + 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. + """ + return pulumi.get(self, "overwrite_when") + + @overwrite_when.setter + def overwrite_when(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "overwrite_when", value) + + if not MYPY: class TransferJobScheduleArgsDict(TypedDict): schedule_start_date: pulumi.Input['TransferJobScheduleScheduleStartDateArgsDict'] diff --git a/sdk/python/pulumi_gcp/storage/folder.py b/sdk/python/pulumi_gcp/storage/folder.py new file mode 100644 index 0000000000..bf14a8e25f --- /dev/null +++ b/sdk/python/pulumi_gcp/storage/folder.py @@ -0,0 +1,483 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import sys +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +if sys.version_info >= (3, 11): + from typing import NotRequired, TypedDict, TypeAlias +else: + from typing_extensions import NotRequired, TypedDict, TypeAlias +from .. import _utilities + +__all__ = ['FolderArgs', 'Folder'] + +@pulumi.input_type +class FolderArgs: + def __init__(__self__, *, + bucket: pulumi.Input[str], + force_destroy: Optional[pulumi.Input[bool]] = None, + name: Optional[pulumi.Input[str]] = None): + """ + The set of arguments for constructing a Folder resource. + :param pulumi.Input[str] bucket: The name of the bucket that contains the folder. + :param pulumi.Input[bool] force_destroy: If set to true, items within folder if any will be force destroyed. + :param pulumi.Input[str] name: The name of the folder expressed as a path. Must include + trailing '/'. For example, `example_dir/example_dir2/`, `example@#/`, `a-b/d-f/`. + + + - - - + """ + pulumi.set(__self__, "bucket", bucket) + if force_destroy is not None: + pulumi.set(__self__, "force_destroy", force_destroy) + if name is not None: + pulumi.set(__self__, "name", name) + + @property + @pulumi.getter + def bucket(self) -> pulumi.Input[str]: + """ + The name of the bucket that contains the folder. + """ + return pulumi.get(self, "bucket") + + @bucket.setter + def bucket(self, value: pulumi.Input[str]): + pulumi.set(self, "bucket", value) + + @property + @pulumi.getter(name="forceDestroy") + def force_destroy(self) -> Optional[pulumi.Input[bool]]: + """ + If set to true, items within folder if any will be force destroyed. + """ + return pulumi.get(self, "force_destroy") + + @force_destroy.setter + def force_destroy(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "force_destroy", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The name of the folder expressed as a path. Must include + trailing '/'. For example, `example_dir/example_dir2/`, `example@#/`, `a-b/d-f/`. + + + - - - + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + +@pulumi.input_type +class _FolderState: + def __init__(__self__, *, + bucket: Optional[pulumi.Input[str]] = None, + create_time: Optional[pulumi.Input[str]] = None, + force_destroy: Optional[pulumi.Input[bool]] = None, + metageneration: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + self_link: Optional[pulumi.Input[str]] = None, + update_time: Optional[pulumi.Input[str]] = None): + """ + Input properties used for looking up and filtering Folder resources. + :param pulumi.Input[str] bucket: The name of the bucket that contains the folder. + :param pulumi.Input[str] create_time: The timestamp at which this folder was created. + :param pulumi.Input[bool] force_destroy: If set to true, items within folder if any will be force destroyed. + :param pulumi.Input[str] metageneration: The metadata generation of the folder. + :param pulumi.Input[str] name: The name of the folder expressed as a path. Must include + trailing '/'. For example, `example_dir/example_dir2/`, `example@#/`, `a-b/d-f/`. + + + - - - + :param pulumi.Input[str] self_link: The URI of the created resource. + :param pulumi.Input[str] update_time: The timestamp at which this folder was most recently updated. + """ + if bucket is not None: + pulumi.set(__self__, "bucket", bucket) + if create_time is not None: + pulumi.set(__self__, "create_time", create_time) + if force_destroy is not None: + pulumi.set(__self__, "force_destroy", force_destroy) + if metageneration is not None: + pulumi.set(__self__, "metageneration", metageneration) + if name is not None: + pulumi.set(__self__, "name", name) + if self_link is not None: + pulumi.set(__self__, "self_link", self_link) + if update_time is not None: + pulumi.set(__self__, "update_time", update_time) + + @property + @pulumi.getter + def bucket(self) -> Optional[pulumi.Input[str]]: + """ + The name of the bucket that contains the folder. + """ + return pulumi.get(self, "bucket") + + @bucket.setter + def bucket(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "bucket", value) + + @property + @pulumi.getter(name="createTime") + def create_time(self) -> Optional[pulumi.Input[str]]: + """ + The timestamp at which this folder was created. + """ + return pulumi.get(self, "create_time") + + @create_time.setter + def create_time(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "create_time", value) + + @property + @pulumi.getter(name="forceDestroy") + def force_destroy(self) -> Optional[pulumi.Input[bool]]: + """ + If set to true, items within folder if any will be force destroyed. + """ + return pulumi.get(self, "force_destroy") + + @force_destroy.setter + def force_destroy(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "force_destroy", value) + + @property + @pulumi.getter + def metageneration(self) -> Optional[pulumi.Input[str]]: + """ + The metadata generation of the folder. + """ + return pulumi.get(self, "metageneration") + + @metageneration.setter + def metageneration(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "metageneration", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The name of the folder expressed as a path. Must include + trailing '/'. For example, `example_dir/example_dir2/`, `example@#/`, `a-b/d-f/`. + + + - - - + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter(name="selfLink") + def self_link(self) -> Optional[pulumi.Input[str]]: + """ + The URI of the created resource. + """ + return pulumi.get(self, "self_link") + + @self_link.setter + def self_link(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "self_link", value) + + @property + @pulumi.getter(name="updateTime") + def update_time(self) -> Optional[pulumi.Input[str]]: + """ + The timestamp at which this folder was most recently updated. + """ + return pulumi.get(self, "update_time") + + @update_time.setter + def update_time(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "update_time", value) + + +class Folder(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + bucket: Optional[pulumi.Input[str]] = None, + force_destroy: Optional[pulumi.Input[bool]] = None, + name: Optional[pulumi.Input[str]] = None, + __props__=None): + """ + A Google Cloud Storage Folder. + + The Folder resource represents a folder in a Cloud Storage bucket with hierarchical namespace enabled + + To get more information about Folder, see: + + * [API documentation](https://cloud.google.com/storage/docs/json_api/v1/folders) + * How-to Guides + * [Official Documentation](https://cloud.google.com/storage/docs/folders-overview) + + ## Example Usage + + ### Storage Folder Basic + + ```python + import pulumi + import pulumi_gcp as gcp + + bucket = gcp.storage.Bucket("bucket", + name="my-bucket", + location="EU", + uniform_bucket_level_access=True, + hierarchical_namespace={ + "enabled": True, + }) + folder = gcp.storage.Folder("folder", + bucket=bucket.name, + name="parent-folder/") + subfolder = gcp.storage.Folder("subfolder", + bucket=bucket.name, + name=folder.name.apply(lambda name: f"{name}subfolder/")) + ``` + + ## Import + + Folder can be imported using any of these accepted formats: + + * `{{bucket}}/folders/{{name}}` + + * `{{bucket}}/{{name}}` + + When using the `pulumi import` command, Folder can be imported using one of the formats above. For example: + + ```sh + $ pulumi import gcp:storage/folder:Folder default {{bucket}}/folders/{{name}} + ``` + + ```sh + $ pulumi import gcp:storage/folder:Folder default {{bucket}}/{{name}} + ``` + + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] bucket: The name of the bucket that contains the folder. + :param pulumi.Input[bool] force_destroy: If set to true, items within folder if any will be force destroyed. + :param pulumi.Input[str] name: The name of the folder expressed as a path. Must include + trailing '/'. For example, `example_dir/example_dir2/`, `example@#/`, `a-b/d-f/`. + + + - - - + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: FolderArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + A Google Cloud Storage Folder. + + The Folder resource represents a folder in a Cloud Storage bucket with hierarchical namespace enabled + + To get more information about Folder, see: + + * [API documentation](https://cloud.google.com/storage/docs/json_api/v1/folders) + * How-to Guides + * [Official Documentation](https://cloud.google.com/storage/docs/folders-overview) + + ## Example Usage + + ### Storage Folder Basic + + ```python + import pulumi + import pulumi_gcp as gcp + + bucket = gcp.storage.Bucket("bucket", + name="my-bucket", + location="EU", + uniform_bucket_level_access=True, + hierarchical_namespace={ + "enabled": True, + }) + folder = gcp.storage.Folder("folder", + bucket=bucket.name, + name="parent-folder/") + subfolder = gcp.storage.Folder("subfolder", + bucket=bucket.name, + name=folder.name.apply(lambda name: f"{name}subfolder/")) + ``` + + ## Import + + Folder can be imported using any of these accepted formats: + + * `{{bucket}}/folders/{{name}}` + + * `{{bucket}}/{{name}}` + + When using the `pulumi import` command, Folder can be imported using one of the formats above. For example: + + ```sh + $ pulumi import gcp:storage/folder:Folder default {{bucket}}/folders/{{name}} + ``` + + ```sh + $ pulumi import gcp:storage/folder:Folder default {{bucket}}/{{name}} + ``` + + :param str resource_name: The name of the resource. + :param FolderArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(FolderArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + bucket: Optional[pulumi.Input[str]] = None, + force_destroy: Optional[pulumi.Input[bool]] = None, + name: Optional[pulumi.Input[str]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = FolderArgs.__new__(FolderArgs) + + if bucket is None and not opts.urn: + raise TypeError("Missing required property 'bucket'") + __props__.__dict__["bucket"] = bucket + __props__.__dict__["force_destroy"] = force_destroy + __props__.__dict__["name"] = name + __props__.__dict__["create_time"] = None + __props__.__dict__["metageneration"] = None + __props__.__dict__["self_link"] = None + __props__.__dict__["update_time"] = None + super(Folder, __self__).__init__( + 'gcp:storage/folder:Folder', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + bucket: Optional[pulumi.Input[str]] = None, + create_time: Optional[pulumi.Input[str]] = None, + force_destroy: Optional[pulumi.Input[bool]] = None, + metageneration: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + self_link: Optional[pulumi.Input[str]] = None, + update_time: Optional[pulumi.Input[str]] = None) -> 'Folder': + """ + Get an existing Folder resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] bucket: The name of the bucket that contains the folder. + :param pulumi.Input[str] create_time: The timestamp at which this folder was created. + :param pulumi.Input[bool] force_destroy: If set to true, items within folder if any will be force destroyed. + :param pulumi.Input[str] metageneration: The metadata generation of the folder. + :param pulumi.Input[str] name: The name of the folder expressed as a path. Must include + trailing '/'. For example, `example_dir/example_dir2/`, `example@#/`, `a-b/d-f/`. + + + - - - + :param pulumi.Input[str] self_link: The URI of the created resource. + :param pulumi.Input[str] update_time: The timestamp at which this folder was most recently updated. + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _FolderState.__new__(_FolderState) + + __props__.__dict__["bucket"] = bucket + __props__.__dict__["create_time"] = create_time + __props__.__dict__["force_destroy"] = force_destroy + __props__.__dict__["metageneration"] = metageneration + __props__.__dict__["name"] = name + __props__.__dict__["self_link"] = self_link + __props__.__dict__["update_time"] = update_time + return Folder(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter + def bucket(self) -> pulumi.Output[str]: + """ + The name of the bucket that contains the folder. + """ + return pulumi.get(self, "bucket") + + @property + @pulumi.getter(name="createTime") + def create_time(self) -> pulumi.Output[str]: + """ + The timestamp at which this folder was created. + """ + return pulumi.get(self, "create_time") + + @property + @pulumi.getter(name="forceDestroy") + def force_destroy(self) -> pulumi.Output[Optional[bool]]: + """ + If set to true, items within folder if any will be force destroyed. + """ + return pulumi.get(self, "force_destroy") + + @property + @pulumi.getter + def metageneration(self) -> pulumi.Output[str]: + """ + The metadata generation of the folder. + """ + return pulumi.get(self, "metageneration") + + @property + @pulumi.getter + def name(self) -> pulumi.Output[str]: + """ + The name of the folder expressed as a path. Must include + trailing '/'. For example, `example_dir/example_dir2/`, `example@#/`, `a-b/d-f/`. + + + - - - + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter(name="selfLink") + def self_link(self) -> pulumi.Output[str]: + """ + The URI of the created resource. + """ + return pulumi.get(self, "self_link") + + @property + @pulumi.getter(name="updateTime") + def update_time(self) -> pulumi.Output[str]: + """ + The timestamp at which this folder was most recently updated. + """ + return pulumi.get(self, "update_time") + diff --git a/sdk/python/pulumi_gcp/storage/outputs.py b/sdk/python/pulumi_gcp/storage/outputs.py index bb0c93594a..30827ddb31 100644 --- a/sdk/python/pulumi_gcp/storage/outputs.py +++ b/sdk/python/pulumi_gcp/storage/outputs.py @@ -47,6 +47,11 @@ 'TransferAgentPoolBandwidthLimit', 'TransferJobEventStream', 'TransferJobNotificationConfig', + 'TransferJobReplicationSpec', + 'TransferJobReplicationSpecGcsDataSink', + 'TransferJobReplicationSpecGcsDataSource', + 'TransferJobReplicationSpecObjectConditions', + 'TransferJobReplicationSpecTransferOptions', 'TransferJobSchedule', 'TransferJobScheduleScheduleEndDate', 'TransferJobScheduleScheduleStartDate', @@ -1722,6 +1727,364 @@ def event_types(self) -> Optional[Sequence[str]]: return pulumi.get(self, "event_types") +@pulumi.output_type +class TransferJobReplicationSpec(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "gcsDataSink": + suggest = "gcs_data_sink" + elif key == "gcsDataSource": + suggest = "gcs_data_source" + elif key == "objectConditions": + suggest = "object_conditions" + elif key == "transferOptions": + suggest = "transfer_options" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in TransferJobReplicationSpec. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + TransferJobReplicationSpec.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + TransferJobReplicationSpec.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + gcs_data_sink: Optional['outputs.TransferJobReplicationSpecGcsDataSink'] = None, + gcs_data_source: Optional['outputs.TransferJobReplicationSpecGcsDataSource'] = None, + object_conditions: Optional['outputs.TransferJobReplicationSpecObjectConditions'] = None, + transfer_options: Optional['outputs.TransferJobReplicationSpecTransferOptions'] = None): + """ + :param 'TransferJobReplicationSpecGcsDataSinkArgs' gcs_data_sink: A Google Cloud Storage data sink. Structure documented below. + :param 'TransferJobReplicationSpecGcsDataSourceArgs' gcs_data_source: A Google Cloud Storage data source. Structure documented below. + :param 'TransferJobReplicationSpecObjectConditionsArgs' object_conditions: 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. + :param 'TransferJobReplicationSpecTransferOptionsArgs' transfer_options: 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. + """ + if gcs_data_sink is not None: + pulumi.set(__self__, "gcs_data_sink", gcs_data_sink) + if gcs_data_source is not None: + pulumi.set(__self__, "gcs_data_source", gcs_data_source) + if object_conditions is not None: + pulumi.set(__self__, "object_conditions", object_conditions) + if transfer_options is not None: + pulumi.set(__self__, "transfer_options", transfer_options) + + @property + @pulumi.getter(name="gcsDataSink") + def gcs_data_sink(self) -> Optional['outputs.TransferJobReplicationSpecGcsDataSink']: + """ + A Google Cloud Storage data sink. Structure documented below. + """ + return pulumi.get(self, "gcs_data_sink") + + @property + @pulumi.getter(name="gcsDataSource") + def gcs_data_source(self) -> Optional['outputs.TransferJobReplicationSpecGcsDataSource']: + """ + A Google Cloud Storage data source. Structure documented below. + """ + return pulumi.get(self, "gcs_data_source") + + @property + @pulumi.getter(name="objectConditions") + def object_conditions(self) -> Optional['outputs.TransferJobReplicationSpecObjectConditions']: + """ + 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. + """ + return pulumi.get(self, "object_conditions") + + @property + @pulumi.getter(name="transferOptions") + def transfer_options(self) -> Optional['outputs.TransferJobReplicationSpecTransferOptions']: + """ + 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. + """ + return pulumi.get(self, "transfer_options") + + +@pulumi.output_type +class TransferJobReplicationSpecGcsDataSink(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "bucketName": + suggest = "bucket_name" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in TransferJobReplicationSpecGcsDataSink. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + TransferJobReplicationSpecGcsDataSink.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + TransferJobReplicationSpecGcsDataSink.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + bucket_name: str, + path: Optional[str] = None): + """ + :param str bucket_name: Google Cloud Storage bucket name. + :param str path: 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 '/'. + """ + pulumi.set(__self__, "bucket_name", bucket_name) + if path is not None: + pulumi.set(__self__, "path", path) + + @property + @pulumi.getter(name="bucketName") + def bucket_name(self) -> str: + """ + Google Cloud Storage bucket name. + """ + return pulumi.get(self, "bucket_name") + + @property + @pulumi.getter + def path(self) -> Optional[str]: + """ + 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 '/'. + """ + return pulumi.get(self, "path") + + +@pulumi.output_type +class TransferJobReplicationSpecGcsDataSource(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "bucketName": + suggest = "bucket_name" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in TransferJobReplicationSpecGcsDataSource. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + TransferJobReplicationSpecGcsDataSource.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + TransferJobReplicationSpecGcsDataSource.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + bucket_name: str, + path: Optional[str] = None): + """ + :param str bucket_name: Google Cloud Storage bucket name. + :param str path: 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 '/'. + """ + pulumi.set(__self__, "bucket_name", bucket_name) + if path is not None: + pulumi.set(__self__, "path", path) + + @property + @pulumi.getter(name="bucketName") + def bucket_name(self) -> str: + """ + Google Cloud Storage bucket name. + """ + return pulumi.get(self, "bucket_name") + + @property + @pulumi.getter + def path(self) -> Optional[str]: + """ + 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 '/'. + """ + return pulumi.get(self, "path") + + +@pulumi.output_type +class TransferJobReplicationSpecObjectConditions(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "excludePrefixes": + suggest = "exclude_prefixes" + elif key == "includePrefixes": + suggest = "include_prefixes" + elif key == "lastModifiedBefore": + suggest = "last_modified_before" + elif key == "lastModifiedSince": + suggest = "last_modified_since" + elif key == "maxTimeElapsedSinceLastModification": + suggest = "max_time_elapsed_since_last_modification" + elif key == "minTimeElapsedSinceLastModification": + suggest = "min_time_elapsed_since_last_modification" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in TransferJobReplicationSpecObjectConditions. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + TransferJobReplicationSpecObjectConditions.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + TransferJobReplicationSpecObjectConditions.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + exclude_prefixes: Optional[Sequence[str]] = None, + include_prefixes: Optional[Sequence[str]] = None, + last_modified_before: Optional[str] = None, + last_modified_since: Optional[str] = None, + max_time_elapsed_since_last_modification: Optional[str] = None, + min_time_elapsed_since_last_modification: Optional[str] = None): + """ + :param Sequence[str] exclude_prefixes: `exclude_prefixes` must follow the requirements described for `include_prefixes`. See [Requirements](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#ObjectConditions). + :param Sequence[str] include_prefixes: 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). + :param str last_modified_before: 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". + :param str last_modified_since: 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". + :param str max_time_elapsed_since_last_modification: A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + :param str min_time_elapsed_since_last_modification: A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + """ + if exclude_prefixes is not None: + pulumi.set(__self__, "exclude_prefixes", exclude_prefixes) + if include_prefixes is not None: + pulumi.set(__self__, "include_prefixes", include_prefixes) + if last_modified_before is not None: + pulumi.set(__self__, "last_modified_before", last_modified_before) + if last_modified_since is not None: + pulumi.set(__self__, "last_modified_since", last_modified_since) + if max_time_elapsed_since_last_modification is not None: + pulumi.set(__self__, "max_time_elapsed_since_last_modification", max_time_elapsed_since_last_modification) + if min_time_elapsed_since_last_modification is not None: + pulumi.set(__self__, "min_time_elapsed_since_last_modification", min_time_elapsed_since_last_modification) + + @property + @pulumi.getter(name="excludePrefixes") + def exclude_prefixes(self) -> Optional[Sequence[str]]: + """ + `exclude_prefixes` must follow the requirements described for `include_prefixes`. See [Requirements](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#ObjectConditions). + """ + return pulumi.get(self, "exclude_prefixes") + + @property + @pulumi.getter(name="includePrefixes") + def include_prefixes(self) -> Optional[Sequence[str]]: + """ + 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). + """ + return pulumi.get(self, "include_prefixes") + + @property + @pulumi.getter(name="lastModifiedBefore") + def last_modified_before(self) -> Optional[str]: + """ + 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". + """ + return pulumi.get(self, "last_modified_before") + + @property + @pulumi.getter(name="lastModifiedSince") + def last_modified_since(self) -> Optional[str]: + """ + 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". + """ + return pulumi.get(self, "last_modified_since") + + @property + @pulumi.getter(name="maxTimeElapsedSinceLastModification") + def max_time_elapsed_since_last_modification(self) -> Optional[str]: + """ + A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + """ + return pulumi.get(self, "max_time_elapsed_since_last_modification") + + @property + @pulumi.getter(name="minTimeElapsedSinceLastModification") + def min_time_elapsed_since_last_modification(self) -> Optional[str]: + """ + A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + """ + return pulumi.get(self, "min_time_elapsed_since_last_modification") + + +@pulumi.output_type +class TransferJobReplicationSpecTransferOptions(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "deleteObjectsFromSourceAfterTransfer": + suggest = "delete_objects_from_source_after_transfer" + elif key == "deleteObjectsUniqueInSink": + suggest = "delete_objects_unique_in_sink" + elif key == "overwriteObjectsAlreadyExistingInSink": + suggest = "overwrite_objects_already_existing_in_sink" + elif key == "overwriteWhen": + suggest = "overwrite_when" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in TransferJobReplicationSpecTransferOptions. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + TransferJobReplicationSpecTransferOptions.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + TransferJobReplicationSpecTransferOptions.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + delete_objects_from_source_after_transfer: Optional[bool] = None, + delete_objects_unique_in_sink: Optional[bool] = None, + overwrite_objects_already_existing_in_sink: Optional[bool] = None, + overwrite_when: Optional[str] = None): + """ + :param bool delete_objects_from_source_after_transfer: 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. + :param bool delete_objects_unique_in_sink: Whether objects that exist only in the sink should be deleted. Note that this option and + `delete_objects_from_source_after_transfer` are mutually exclusive. + :param bool overwrite_objects_already_existing_in_sink: Whether overwriting objects that already exist in the sink is allowed. + :param str overwrite_when: 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. + """ + if delete_objects_from_source_after_transfer is not None: + pulumi.set(__self__, "delete_objects_from_source_after_transfer", delete_objects_from_source_after_transfer) + if delete_objects_unique_in_sink is not None: + pulumi.set(__self__, "delete_objects_unique_in_sink", delete_objects_unique_in_sink) + if overwrite_objects_already_existing_in_sink is not None: + pulumi.set(__self__, "overwrite_objects_already_existing_in_sink", overwrite_objects_already_existing_in_sink) + if overwrite_when is not None: + pulumi.set(__self__, "overwrite_when", overwrite_when) + + @property + @pulumi.getter(name="deleteObjectsFromSourceAfterTransfer") + def delete_objects_from_source_after_transfer(self) -> Optional[bool]: + """ + 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. + """ + return pulumi.get(self, "delete_objects_from_source_after_transfer") + + @property + @pulumi.getter(name="deleteObjectsUniqueInSink") + def delete_objects_unique_in_sink(self) -> Optional[bool]: + """ + Whether objects that exist only in the sink should be deleted. Note that this option and + `delete_objects_from_source_after_transfer` are mutually exclusive. + """ + return pulumi.get(self, "delete_objects_unique_in_sink") + + @property + @pulumi.getter(name="overwriteObjectsAlreadyExistingInSink") + def overwrite_objects_already_existing_in_sink(self) -> Optional[bool]: + """ + Whether overwriting objects that already exist in the sink is allowed. + """ + return pulumi.get(self, "overwrite_objects_already_existing_in_sink") + + @property + @pulumi.getter(name="overwriteWhen") + def overwrite_when(self) -> Optional[str]: + """ + 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. + """ + return pulumi.get(self, "overwrite_when") + + @pulumi.output_type class TransferJobSchedule(dict): @staticmethod diff --git a/sdk/python/pulumi_gcp/storage/transfer_job.py b/sdk/python/pulumi_gcp/storage/transfer_job.py index 25f3c8e595..25ae0b864f 100644 --- a/sdk/python/pulumi_gcp/storage/transfer_job.py +++ b/sdk/python/pulumi_gcp/storage/transfer_job.py @@ -22,29 +22,30 @@ class TransferJobArgs: def __init__(__self__, *, description: pulumi.Input[str], - transfer_spec: pulumi.Input['TransferJobTransferSpecArgs'], event_stream: Optional[pulumi.Input['TransferJobEventStreamArgs']] = None, name: Optional[pulumi.Input[str]] = None, notification_config: Optional[pulumi.Input['TransferJobNotificationConfigArgs']] = None, project: Optional[pulumi.Input[str]] = None, + replication_spec: Optional[pulumi.Input['TransferJobReplicationSpecArgs']] = None, schedule: Optional[pulumi.Input['TransferJobScheduleArgs']] = None, - status: Optional[pulumi.Input[str]] = None): + status: Optional[pulumi.Input[str]] = None, + transfer_spec: Optional[pulumi.Input['TransferJobTransferSpecArgs']] = None): """ The set of arguments for constructing a TransferJob resource. :param pulumi.Input[str] description: Unique description to identify the Transfer Job. - :param pulumi.Input['TransferJobTransferSpecArgs'] transfer_spec: Transfer specification. Structure documented below. - - - - - :param pulumi.Input['TransferJobEventStreamArgs'] event_stream: Specifies the Event-driven transfer options. Event-driven transfers listen to an event stream to transfer updated files. Structure documented below Either `event_stream` or `schedule` must be set. :param pulumi.Input[str] name: The name of the Transfer Job. This name must start with "transferJobs/" prefix and end with a letter or a number, and should be no more than 128 characters ( `transferJobs/^(?!OPI)[A-Za-z0-9-._~]*[A-Za-z0-9]$` ). For transfers involving PosixFilesystem, this name must start with transferJobs/OPI specifically ( `transferJobs/OPI^[A-Za-z0-9-._~]*[A-Za-z0-9]$` ). For all other transfer types, this name must not start with transferJobs/OPI. Default the provider will assign a random unique name with `transferJobs/{{name}}` format, where `name` is a numeric value. :param pulumi.Input['TransferJobNotificationConfigArgs'] notification_config: Notification configuration. This is not supported for transfers involving PosixFilesystem. Structure documented below. :param pulumi.Input[str] project: The project in which the resource belongs. If it is not provided, the provider project is used. + :param pulumi.Input['TransferJobReplicationSpecArgs'] replication_spec: 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. + + - - - :param pulumi.Input['TransferJobScheduleArgs'] schedule: 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. :param pulumi.Input[str] status: Status of the job. Default: `ENABLED`. **NOTE: The effect of the new job status takes place during a subsequent job run. For example, if you change the job status from ENABLED to DISABLED, and an operation spawned by the transfer is running, the status change would not affect the current operation.** + :param pulumi.Input['TransferJobTransferSpecArgs'] transfer_spec: Transfer specification. Structure documented below. One of `transfer_spec`, or `replication_spec` can be specified. """ pulumi.set(__self__, "description", description) - pulumi.set(__self__, "transfer_spec", transfer_spec) if event_stream is not None: pulumi.set(__self__, "event_stream", event_stream) if name is not None: @@ -53,10 +54,14 @@ def __init__(__self__, *, pulumi.set(__self__, "notification_config", notification_config) if project is not None: pulumi.set(__self__, "project", project) + if replication_spec is not None: + pulumi.set(__self__, "replication_spec", replication_spec) if schedule is not None: pulumi.set(__self__, "schedule", schedule) if status is not None: pulumi.set(__self__, "status", status) + if transfer_spec is not None: + pulumi.set(__self__, "transfer_spec", transfer_spec) @property @pulumi.getter @@ -70,20 +75,6 @@ def description(self) -> pulumi.Input[str]: def description(self, value: pulumi.Input[str]): pulumi.set(self, "description", value) - @property - @pulumi.getter(name="transferSpec") - def transfer_spec(self) -> pulumi.Input['TransferJobTransferSpecArgs']: - """ - Transfer specification. Structure documented below. - - - - - - """ - return pulumi.get(self, "transfer_spec") - - @transfer_spec.setter - def transfer_spec(self, value: pulumi.Input['TransferJobTransferSpecArgs']): - pulumi.set(self, "transfer_spec", value) - @property @pulumi.getter(name="eventStream") def event_stream(self) -> Optional[pulumi.Input['TransferJobEventStreamArgs']]: @@ -133,6 +124,20 @@ def project(self) -> Optional[pulumi.Input[str]]: def project(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "project", value) + @property + @pulumi.getter(name="replicationSpec") + def replication_spec(self) -> Optional[pulumi.Input['TransferJobReplicationSpecArgs']]: + """ + 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. + + - - - + """ + return pulumi.get(self, "replication_spec") + + @replication_spec.setter + def replication_spec(self, value: Optional[pulumi.Input['TransferJobReplicationSpecArgs']]): + pulumi.set(self, "replication_spec", value) + @property @pulumi.getter def schedule(self) -> Optional[pulumi.Input['TransferJobScheduleArgs']]: @@ -157,6 +162,18 @@ def status(self) -> Optional[pulumi.Input[str]]: def status(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "status", value) + @property + @pulumi.getter(name="transferSpec") + def transfer_spec(self) -> Optional[pulumi.Input['TransferJobTransferSpecArgs']]: + """ + Transfer specification. Structure documented below. One of `transfer_spec`, or `replication_spec` can be specified. + """ + return pulumi.get(self, "transfer_spec") + + @transfer_spec.setter + def transfer_spec(self, value: Optional[pulumi.Input['TransferJobTransferSpecArgs']]): + pulumi.set(self, "transfer_spec", value) + @pulumi.input_type class _TransferJobState: @@ -169,6 +186,7 @@ def __init__(__self__, *, name: Optional[pulumi.Input[str]] = None, notification_config: Optional[pulumi.Input['TransferJobNotificationConfigArgs']] = None, project: Optional[pulumi.Input[str]] = None, + replication_spec: Optional[pulumi.Input['TransferJobReplicationSpecArgs']] = None, schedule: Optional[pulumi.Input['TransferJobScheduleArgs']] = None, status: Optional[pulumi.Input[str]] = None, transfer_spec: Optional[pulumi.Input['TransferJobTransferSpecArgs']] = None): @@ -183,11 +201,12 @@ def __init__(__self__, *, :param pulumi.Input['TransferJobNotificationConfigArgs'] notification_config: Notification configuration. This is not supported for transfers involving PosixFilesystem. Structure documented below. :param pulumi.Input[str] project: The project in which the resource belongs. If it is not provided, the provider project is used. - :param pulumi.Input['TransferJobScheduleArgs'] schedule: 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. - :param pulumi.Input[str] status: Status of the job. Default: `ENABLED`. **NOTE: The effect of the new job status takes place during a subsequent job run. For example, if you change the job status from ENABLED to DISABLED, and an operation spawned by the transfer is running, the status change would not affect the current operation.** - :param pulumi.Input['TransferJobTransferSpecArgs'] transfer_spec: Transfer specification. Structure documented below. + :param pulumi.Input['TransferJobReplicationSpecArgs'] replication_spec: 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. - - - + :param pulumi.Input['TransferJobScheduleArgs'] schedule: 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. + :param pulumi.Input[str] status: Status of the job. Default: `ENABLED`. **NOTE: The effect of the new job status takes place during a subsequent job run. For example, if you change the job status from ENABLED to DISABLED, and an operation spawned by the transfer is running, the status change would not affect the current operation.** + :param pulumi.Input['TransferJobTransferSpecArgs'] transfer_spec: Transfer specification. Structure documented below. One of `transfer_spec`, or `replication_spec` can be specified. """ if creation_time is not None: pulumi.set(__self__, "creation_time", creation_time) @@ -205,6 +224,8 @@ def __init__(__self__, *, pulumi.set(__self__, "notification_config", notification_config) if project is not None: pulumi.set(__self__, "project", project) + if replication_spec is not None: + pulumi.set(__self__, "replication_spec", replication_spec) if schedule is not None: pulumi.set(__self__, "schedule", schedule) if status is not None: @@ -309,6 +330,20 @@ def project(self) -> Optional[pulumi.Input[str]]: def project(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "project", value) + @property + @pulumi.getter(name="replicationSpec") + def replication_spec(self) -> Optional[pulumi.Input['TransferJobReplicationSpecArgs']]: + """ + 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. + + - - - + """ + return pulumi.get(self, "replication_spec") + + @replication_spec.setter + def replication_spec(self, value: Optional[pulumi.Input['TransferJobReplicationSpecArgs']]): + pulumi.set(self, "replication_spec", value) + @property @pulumi.getter def schedule(self) -> Optional[pulumi.Input['TransferJobScheduleArgs']]: @@ -337,9 +372,7 @@ def status(self, value: Optional[pulumi.Input[str]]): @pulumi.getter(name="transferSpec") def transfer_spec(self) -> Optional[pulumi.Input['TransferJobTransferSpecArgs']]: """ - Transfer specification. Structure documented below. - - - - - + Transfer specification. Structure documented below. One of `transfer_spec`, or `replication_spec` can be specified. """ return pulumi.get(self, "transfer_spec") @@ -358,6 +391,7 @@ def __init__(__self__, name: Optional[pulumi.Input[str]] = None, notification_config: Optional[pulumi.Input[Union['TransferJobNotificationConfigArgs', 'TransferJobNotificationConfigArgsDict']]] = None, project: Optional[pulumi.Input[str]] = None, + replication_spec: Optional[pulumi.Input[Union['TransferJobReplicationSpecArgs', 'TransferJobReplicationSpecArgsDict']]] = None, schedule: Optional[pulumi.Input[Union['TransferJobScheduleArgs', 'TransferJobScheduleArgsDict']]] = None, status: Optional[pulumi.Input[str]] = None, transfer_spec: Optional[pulumi.Input[Union['TransferJobTransferSpecArgs', 'TransferJobTransferSpecArgsDict']]] = None, @@ -472,11 +506,12 @@ def __init__(__self__, :param pulumi.Input[Union['TransferJobNotificationConfigArgs', 'TransferJobNotificationConfigArgsDict']] notification_config: Notification configuration. This is not supported for transfers involving PosixFilesystem. Structure documented below. :param pulumi.Input[str] project: The project in which the resource belongs. If it is not provided, the provider project is used. - :param pulumi.Input[Union['TransferJobScheduleArgs', 'TransferJobScheduleArgsDict']] schedule: 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. - :param pulumi.Input[str] status: Status of the job. Default: `ENABLED`. **NOTE: The effect of the new job status takes place during a subsequent job run. For example, if you change the job status from ENABLED to DISABLED, and an operation spawned by the transfer is running, the status change would not affect the current operation.** - :param pulumi.Input[Union['TransferJobTransferSpecArgs', 'TransferJobTransferSpecArgsDict']] transfer_spec: Transfer specification. Structure documented below. + :param pulumi.Input[Union['TransferJobReplicationSpecArgs', 'TransferJobReplicationSpecArgsDict']] replication_spec: 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. - - - + :param pulumi.Input[Union['TransferJobScheduleArgs', 'TransferJobScheduleArgsDict']] schedule: 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. + :param pulumi.Input[str] status: Status of the job. Default: `ENABLED`. **NOTE: The effect of the new job status takes place during a subsequent job run. For example, if you change the job status from ENABLED to DISABLED, and an operation spawned by the transfer is running, the status change would not affect the current operation.** + :param pulumi.Input[Union['TransferJobTransferSpecArgs', 'TransferJobTransferSpecArgsDict']] transfer_spec: Transfer specification. Structure documented below. One of `transfer_spec`, or `replication_spec` can be specified. """ ... @overload @@ -606,6 +641,7 @@ def _internal_init(__self__, name: Optional[pulumi.Input[str]] = None, notification_config: Optional[pulumi.Input[Union['TransferJobNotificationConfigArgs', 'TransferJobNotificationConfigArgsDict']]] = None, project: Optional[pulumi.Input[str]] = None, + replication_spec: Optional[pulumi.Input[Union['TransferJobReplicationSpecArgs', 'TransferJobReplicationSpecArgsDict']]] = None, schedule: Optional[pulumi.Input[Union['TransferJobScheduleArgs', 'TransferJobScheduleArgsDict']]] = None, status: Optional[pulumi.Input[str]] = None, transfer_spec: Optional[pulumi.Input[Union['TransferJobTransferSpecArgs', 'TransferJobTransferSpecArgsDict']]] = None, @@ -625,10 +661,9 @@ def _internal_init(__self__, __props__.__dict__["name"] = name __props__.__dict__["notification_config"] = notification_config __props__.__dict__["project"] = project + __props__.__dict__["replication_spec"] = replication_spec __props__.__dict__["schedule"] = schedule __props__.__dict__["status"] = status - if transfer_spec is None and not opts.urn: - raise TypeError("Missing required property 'transfer_spec'") __props__.__dict__["transfer_spec"] = transfer_spec __props__.__dict__["creation_time"] = None __props__.__dict__["deletion_time"] = None @@ -651,6 +686,7 @@ def get(resource_name: str, name: Optional[pulumi.Input[str]] = None, notification_config: Optional[pulumi.Input[Union['TransferJobNotificationConfigArgs', 'TransferJobNotificationConfigArgsDict']]] = None, project: Optional[pulumi.Input[str]] = None, + replication_spec: Optional[pulumi.Input[Union['TransferJobReplicationSpecArgs', 'TransferJobReplicationSpecArgsDict']]] = None, schedule: Optional[pulumi.Input[Union['TransferJobScheduleArgs', 'TransferJobScheduleArgsDict']]] = None, status: Optional[pulumi.Input[str]] = None, transfer_spec: Optional[pulumi.Input[Union['TransferJobTransferSpecArgs', 'TransferJobTransferSpecArgsDict']]] = None) -> 'TransferJob': @@ -670,11 +706,12 @@ def get(resource_name: str, :param pulumi.Input[Union['TransferJobNotificationConfigArgs', 'TransferJobNotificationConfigArgsDict']] notification_config: Notification configuration. This is not supported for transfers involving PosixFilesystem. Structure documented below. :param pulumi.Input[str] project: The project in which the resource belongs. If it is not provided, the provider project is used. - :param pulumi.Input[Union['TransferJobScheduleArgs', 'TransferJobScheduleArgsDict']] schedule: 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. - :param pulumi.Input[str] status: Status of the job. Default: `ENABLED`. **NOTE: The effect of the new job status takes place during a subsequent job run. For example, if you change the job status from ENABLED to DISABLED, and an operation spawned by the transfer is running, the status change would not affect the current operation.** - :param pulumi.Input[Union['TransferJobTransferSpecArgs', 'TransferJobTransferSpecArgsDict']] transfer_spec: Transfer specification. Structure documented below. + :param pulumi.Input[Union['TransferJobReplicationSpecArgs', 'TransferJobReplicationSpecArgsDict']] replication_spec: 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. - - - + :param pulumi.Input[Union['TransferJobScheduleArgs', 'TransferJobScheduleArgsDict']] schedule: 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. + :param pulumi.Input[str] status: Status of the job. Default: `ENABLED`. **NOTE: The effect of the new job status takes place during a subsequent job run. For example, if you change the job status from ENABLED to DISABLED, and an operation spawned by the transfer is running, the status change would not affect the current operation.** + :param pulumi.Input[Union['TransferJobTransferSpecArgs', 'TransferJobTransferSpecArgsDict']] transfer_spec: Transfer specification. Structure documented below. One of `transfer_spec`, or `replication_spec` can be specified. """ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) @@ -688,6 +725,7 @@ def get(resource_name: str, __props__.__dict__["name"] = name __props__.__dict__["notification_config"] = notification_config __props__.__dict__["project"] = project + __props__.__dict__["replication_spec"] = replication_spec __props__.__dict__["schedule"] = schedule __props__.__dict__["status"] = status __props__.__dict__["transfer_spec"] = transfer_spec @@ -758,6 +796,16 @@ def project(self) -> pulumi.Output[str]: """ return pulumi.get(self, "project") + @property + @pulumi.getter(name="replicationSpec") + def replication_spec(self) -> pulumi.Output[Optional['outputs.TransferJobReplicationSpec']]: + """ + 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. + + - - - + """ + return pulumi.get(self, "replication_spec") + @property @pulumi.getter def schedule(self) -> pulumi.Output[Optional['outputs.TransferJobSchedule']]: @@ -776,11 +824,9 @@ def status(self) -> pulumi.Output[Optional[str]]: @property @pulumi.getter(name="transferSpec") - def transfer_spec(self) -> pulumi.Output['outputs.TransferJobTransferSpec']: + def transfer_spec(self) -> pulumi.Output[Optional['outputs.TransferJobTransferSpec']]: """ - Transfer specification. Structure documented below. - - - - - + Transfer specification. Structure documented below. One of `transfer_spec`, or `replication_spec` can be specified. """ return pulumi.get(self, "transfer_spec") diff --git a/sdk/python/pulumi_gcp/vertex/_inputs.py b/sdk/python/pulumi_gcp/vertex/_inputs.py index cf232c5e96..5ea852adcd 100644 --- a/sdk/python/pulumi_gcp/vertex/_inputs.py +++ b/sdk/python/pulumi_gcp/vertex/_inputs.py @@ -3422,7 +3422,12 @@ def vectors_count(self, value: Optional[pulumi.Input[str]]): if not MYPY: class AiIndexMetadataArgsDict(TypedDict): - contents_delta_uri: pulumi.Input[str] + config: NotRequired[pulumi.Input['AiIndexMetadataConfigArgsDict']] + """ + The configuration of the Matching Engine Index. + Structure is documented below. + """ + contents_delta_uri: NotRequired[pulumi.Input[str]] """ Allows inserting, updating or deleting the contents of the Matching Engine Index. The string must be a valid Cloud Storage directory path. If this @@ -3431,11 +3436,6 @@ class AiIndexMetadataArgsDict(TypedDict): The expected structure and format of the files this URI points to is described at https://cloud.google.com/vertex-ai/docs/matching-engine/using-matching-engine#input-data-format """ - config: NotRequired[pulumi.Input['AiIndexMetadataConfigArgsDict']] - """ - The configuration of the Matching Engine Index. - Structure is documented below. - """ is_complete_overwrite: NotRequired[pulumi.Input[bool]] """ If this field is set together with contentsDeltaUri when calling IndexService.UpdateIndex, @@ -3447,30 +3447,44 @@ class AiIndexMetadataArgsDict(TypedDict): @pulumi.input_type class AiIndexMetadataArgs: def __init__(__self__, *, - contents_delta_uri: pulumi.Input[str], config: Optional[pulumi.Input['AiIndexMetadataConfigArgs']] = None, + contents_delta_uri: Optional[pulumi.Input[str]] = None, is_complete_overwrite: Optional[pulumi.Input[bool]] = None): """ + :param pulumi.Input['AiIndexMetadataConfigArgs'] config: The configuration of the Matching Engine Index. + Structure is documented below. :param pulumi.Input[str] contents_delta_uri: Allows inserting, updating or deleting the contents of the Matching Engine Index. The string must be a valid Cloud Storage directory path. If this field is set when calling IndexService.UpdateIndex, then no other Index field can be also updated as part of the same call. The expected structure and format of the files this URI points to is described at https://cloud.google.com/vertex-ai/docs/matching-engine/using-matching-engine#input-data-format - :param pulumi.Input['AiIndexMetadataConfigArgs'] config: The configuration of the Matching Engine Index. - Structure is documented below. :param pulumi.Input[bool] is_complete_overwrite: If this field is set together with contentsDeltaUri when calling IndexService.UpdateIndex, then existing content of the Index will be replaced by the data from the contentsDeltaUri. """ - pulumi.set(__self__, "contents_delta_uri", contents_delta_uri) if config is not None: pulumi.set(__self__, "config", config) + if contents_delta_uri is not None: + pulumi.set(__self__, "contents_delta_uri", contents_delta_uri) if is_complete_overwrite is not None: pulumi.set(__self__, "is_complete_overwrite", is_complete_overwrite) + @property + @pulumi.getter + def config(self) -> Optional[pulumi.Input['AiIndexMetadataConfigArgs']]: + """ + The configuration of the Matching Engine Index. + Structure is documented below. + """ + return pulumi.get(self, "config") + + @config.setter + def config(self, value: Optional[pulumi.Input['AiIndexMetadataConfigArgs']]): + pulumi.set(self, "config", value) + @property @pulumi.getter(name="contentsDeltaUri") - def contents_delta_uri(self) -> pulumi.Input[str]: + def contents_delta_uri(self) -> Optional[pulumi.Input[str]]: """ Allows inserting, updating or deleting the contents of the Matching Engine Index. The string must be a valid Cloud Storage directory path. If this @@ -3482,22 +3496,9 @@ def contents_delta_uri(self) -> pulumi.Input[str]: return pulumi.get(self, "contents_delta_uri") @contents_delta_uri.setter - def contents_delta_uri(self, value: pulumi.Input[str]): + def contents_delta_uri(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "contents_delta_uri", value) - @property - @pulumi.getter - def config(self) -> Optional[pulumi.Input['AiIndexMetadataConfigArgs']]: - """ - The configuration of the Matching Engine Index. - Structure is documented below. - """ - return pulumi.get(self, "config") - - @config.setter - def config(self, value: Optional[pulumi.Input['AiIndexMetadataConfigArgs']]): - pulumi.set(self, "config", value) - @property @pulumi.getter(name="isCompleteOverwrite") def is_complete_overwrite(self) -> Optional[pulumi.Input[bool]]: diff --git a/sdk/python/pulumi_gcp/vertex/ai_endpoint.py b/sdk/python/pulumi_gcp/vertex/ai_endpoint.py index ffaa8da7e2..9f23718a3e 100644 --- a/sdk/python/pulumi_gcp/vertex/ai_endpoint.py +++ b/sdk/python/pulumi_gcp/vertex/ai_endpoint.py @@ -730,7 +730,7 @@ def __init__(__self__, project = gcp.organizations.get_project() endpoint = gcp.vertex.AiEndpoint("endpoint", - name="endpoint-name_8270", + name="endpoint-name_89313", display_name="sample-endpoint", description="A sample vertex endpoint", location="us-central1", @@ -751,7 +751,7 @@ def __init__(__self__, import pulumi_gcp as gcp endpoint = gcp.vertex.AiEndpoint("endpoint", - name="endpoint-name_41150", + name="endpoint-name_60646", display_name="sample-endpoint", description="A sample vertex endpoint", location="us-central1", @@ -896,7 +896,7 @@ def __init__(__self__, project = gcp.organizations.get_project() endpoint = gcp.vertex.AiEndpoint("endpoint", - name="endpoint-name_8270", + name="endpoint-name_89313", display_name="sample-endpoint", description="A sample vertex endpoint", location="us-central1", @@ -917,7 +917,7 @@ def __init__(__self__, import pulumi_gcp as gcp endpoint = gcp.vertex.AiEndpoint("endpoint", - name="endpoint-name_41150", + name="endpoint-name_60646", display_name="sample-endpoint", description="A sample vertex endpoint", location="us-central1", diff --git a/sdk/python/pulumi_gcp/vertex/ai_feature_online_store_featureview.py b/sdk/python/pulumi_gcp/vertex/ai_feature_online_store_featureview.py index eceecbf6f2..ab5b057d5a 100644 --- a/sdk/python/pulumi_gcp/vertex/ai_feature_online_store_featureview.py +++ b/sdk/python/pulumi_gcp/vertex/ai_feature_online_store_featureview.py @@ -618,8 +618,8 @@ def __init__(__self__, test_project = gcp.organizations.get_project() project = gcp.organizations.Project("project", - project_id="tf-test_89313", - name="tf-test_60646", + project_id="tf-test_9394", + name="tf-test_11380", org_id="123456789", billing_account="000000-0000000-0000000-000000", deletion_policy="DELETE") @@ -1063,8 +1063,8 @@ def __init__(__self__, test_project = gcp.organizations.get_project() project = gcp.organizations.Project("project", - project_id="tf-test_89313", - name="tf-test_60646", + project_id="tf-test_9394", + name="tf-test_11380", org_id="123456789", billing_account="000000-0000000-0000000-000000", deletion_policy="DELETE") diff --git a/sdk/python/pulumi_gcp/vertex/outputs.py b/sdk/python/pulumi_gcp/vertex/outputs.py index dfcef6b679..d69eb51784 100644 --- a/sdk/python/pulumi_gcp/vertex/outputs.py +++ b/sdk/python/pulumi_gcp/vertex/outputs.py @@ -2868,30 +2868,40 @@ def get(self, key: str, default = None) -> Any: return super().get(key, default) def __init__(__self__, *, - contents_delta_uri: str, config: Optional['outputs.AiIndexMetadataConfig'] = None, + contents_delta_uri: Optional[str] = None, is_complete_overwrite: Optional[bool] = None): """ + :param 'AiIndexMetadataConfigArgs' config: The configuration of the Matching Engine Index. + Structure is documented below. :param str contents_delta_uri: Allows inserting, updating or deleting the contents of the Matching Engine Index. The string must be a valid Cloud Storage directory path. If this field is set when calling IndexService.UpdateIndex, then no other Index field can be also updated as part of the same call. The expected structure and format of the files this URI points to is described at https://cloud.google.com/vertex-ai/docs/matching-engine/using-matching-engine#input-data-format - :param 'AiIndexMetadataConfigArgs' config: The configuration of the Matching Engine Index. - Structure is documented below. :param bool is_complete_overwrite: If this field is set together with contentsDeltaUri when calling IndexService.UpdateIndex, then existing content of the Index will be replaced by the data from the contentsDeltaUri. """ - pulumi.set(__self__, "contents_delta_uri", contents_delta_uri) if config is not None: pulumi.set(__self__, "config", config) + if contents_delta_uri is not None: + pulumi.set(__self__, "contents_delta_uri", contents_delta_uri) if is_complete_overwrite is not None: pulumi.set(__self__, "is_complete_overwrite", is_complete_overwrite) + @property + @pulumi.getter + def config(self) -> Optional['outputs.AiIndexMetadataConfig']: + """ + The configuration of the Matching Engine Index. + Structure is documented below. + """ + return pulumi.get(self, "config") + @property @pulumi.getter(name="contentsDeltaUri") - def contents_delta_uri(self) -> str: + def contents_delta_uri(self) -> Optional[str]: """ Allows inserting, updating or deleting the contents of the Matching Engine Index. The string must be a valid Cloud Storage directory path. If this @@ -2902,15 +2912,6 @@ def contents_delta_uri(self) -> str: """ return pulumi.get(self, "contents_delta_uri") - @property - @pulumi.getter - def config(self) -> Optional['outputs.AiIndexMetadataConfig']: - """ - The configuration of the Matching Engine Index. - Structure is documented below. - """ - return pulumi.get(self, "config") - @property @pulumi.getter(name="isCompleteOverwrite") def is_complete_overwrite(self) -> Optional[bool]: diff --git a/sdk/python/pulumi_gcp/workstations/workstation.py b/sdk/python/pulumi_gcp/workstations/workstation.py index 7a5da4b540..ac496d1464 100644 --- a/sdk/python/pulumi_gcp/workstations/workstation.py +++ b/sdk/python/pulumi_gcp/workstations/workstation.py @@ -27,7 +27,8 @@ def __init__(__self__, *, display_name: Optional[pulumi.Input[str]] = None, env: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, - project: Optional[pulumi.Input[str]] = None): + project: Optional[pulumi.Input[str]] = None, + source_workstation: Optional[pulumi.Input[str]] = None): """ The set of arguments for constructing a Workstation resource. :param pulumi.Input[str] location: The location where the workstation parent resources reside. @@ -47,6 +48,8 @@ def __init__(__self__, *, Please refer to the field `effective_labels` for all of the labels present on the resource. :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. + :param pulumi.Input[str] source_workstation: Full resource name of the source workstation from which the workstation's persistent + directories will be cloned from during creation. """ pulumi.set(__self__, "location", location) pulumi.set(__self__, "workstation_cluster_id", workstation_cluster_id) @@ -62,6 +65,8 @@ def __init__(__self__, *, pulumi.set(__self__, "labels", labels) if project is not None: pulumi.set(__self__, "project", project) + if source_workstation is not None: + pulumi.set(__self__, "source_workstation", source_workstation) @property @pulumi.getter @@ -179,6 +184,19 @@ def project(self) -> Optional[pulumi.Input[str]]: def project(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "project", value) + @property + @pulumi.getter(name="sourceWorkstation") + def source_workstation(self) -> Optional[pulumi.Input[str]]: + """ + Full resource name of the source workstation from which the workstation's persistent + directories will be cloned from during creation. + """ + return pulumi.get(self, "source_workstation") + + @source_workstation.setter + def source_workstation(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "source_workstation", value) + @pulumi.input_type class _WorkstationState: @@ -195,6 +213,7 @@ def __init__(__self__, *, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + source_workstation: Optional[pulumi.Input[str]] = None, state: Optional[pulumi.Input[str]] = None, uid: Optional[pulumi.Input[str]] = None, workstation_cluster_id: Optional[pulumi.Input[str]] = None, @@ -224,6 +243,8 @@ def __init__(__self__, *, If it is not provided, the provider project is used. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] pulumi_labels: The combination of labels configured directly on the resource and default labels configured on the provider. + :param pulumi.Input[str] source_workstation: Full resource name of the source workstation from which the workstation's persistent + directories will be cloned from during creation. :param pulumi.Input[str] state: Current state of the workstation. :param pulumi.Input[str] uid: A system-assigned unique identified for this resource. :param pulumi.Input[str] workstation_cluster_id: The ID of the parent workstation cluster. @@ -254,6 +275,8 @@ def __init__(__self__, *, pulumi.set(__self__, "project", project) if pulumi_labels is not None: pulumi.set(__self__, "pulumi_labels", pulumi_labels) + if source_workstation is not None: + pulumi.set(__self__, "source_workstation", source_workstation) if state is not None: pulumi.set(__self__, "state", state) if uid is not None: @@ -417,6 +440,19 @@ def pulumi_labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]] def pulumi_labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): pulumi.set(self, "pulumi_labels", value) + @property + @pulumi.getter(name="sourceWorkstation") + def source_workstation(self) -> Optional[pulumi.Input[str]]: + """ + Full resource name of the source workstation from which the workstation's persistent + directories will be cloned from during creation. + """ + return pulumi.get(self, "source_workstation") + + @source_workstation.setter + def source_workstation(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "source_workstation", value) + @property @pulumi.getter def state(self) -> Optional[pulumi.Input[str]]: @@ -489,6 +525,7 @@ def __init__(__self__, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, location: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, + source_workstation: Optional[pulumi.Input[str]] = None, workstation_cluster_id: Optional[pulumi.Input[str]] = None, workstation_config_id: Optional[pulumi.Input[str]] = None, workstation_id: Optional[pulumi.Input[str]] = None, @@ -588,6 +625,8 @@ def __init__(__self__, - - - :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. + :param pulumi.Input[str] source_workstation: Full resource name of the source workstation from which the workstation's persistent + directories will be cloned from during creation. :param pulumi.Input[str] workstation_cluster_id: The ID of the parent workstation cluster. :param pulumi.Input[str] workstation_config_id: The ID of the parent workstation cluster config. :param pulumi.Input[str] workstation_id: ID to use for the workstation. @@ -698,6 +737,7 @@ def _internal_init(__self__, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, location: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, + source_workstation: Optional[pulumi.Input[str]] = None, workstation_cluster_id: Optional[pulumi.Input[str]] = None, workstation_config_id: Optional[pulumi.Input[str]] = None, workstation_id: Optional[pulumi.Input[str]] = None, @@ -718,6 +758,7 @@ def _internal_init(__self__, raise TypeError("Missing required property 'location'") __props__.__dict__["location"] = location __props__.__dict__["project"] = project + __props__.__dict__["source_workstation"] = source_workstation if workstation_cluster_id is None and not opts.urn: raise TypeError("Missing required property 'workstation_cluster_id'") __props__.__dict__["workstation_cluster_id"] = workstation_cluster_id @@ -759,6 +800,7 @@ def get(resource_name: str, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + source_workstation: Optional[pulumi.Input[str]] = None, state: Optional[pulumi.Input[str]] = None, uid: Optional[pulumi.Input[str]] = None, workstation_cluster_id: Optional[pulumi.Input[str]] = None, @@ -793,6 +835,8 @@ def get(resource_name: str, If it is not provided, the provider project is used. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] pulumi_labels: The combination of labels configured directly on the resource and default labels configured on the provider. + :param pulumi.Input[str] source_workstation: Full resource name of the source workstation from which the workstation's persistent + directories will be cloned from during creation. :param pulumi.Input[str] state: Current state of the workstation. :param pulumi.Input[str] uid: A system-assigned unique identified for this resource. :param pulumi.Input[str] workstation_cluster_id: The ID of the parent workstation cluster. @@ -815,6 +859,7 @@ def get(resource_name: str, __props__.__dict__["name"] = name __props__.__dict__["project"] = project __props__.__dict__["pulumi_labels"] = pulumi_labels + __props__.__dict__["source_workstation"] = source_workstation __props__.__dict__["state"] = state __props__.__dict__["uid"] = uid __props__.__dict__["workstation_cluster_id"] = workstation_cluster_id @@ -926,6 +971,15 @@ def pulumi_labels(self) -> pulumi.Output[Mapping[str, str]]: """ return pulumi.get(self, "pulumi_labels") + @property + @pulumi.getter(name="sourceWorkstation") + def source_workstation(self) -> pulumi.Output[Optional[str]]: + """ + Full resource name of the source workstation from which the workstation's persistent + directories will be cloned from during creation. + """ + return pulumi.get(self, "source_workstation") + @property @pulumi.getter def state(self) -> pulumi.Output[str]: diff --git a/upstream b/upstream index d09a516b2e..8e9f825507 160000 --- a/upstream +++ b/upstream @@ -1 +1 @@ -Subproject commit d09a516b2eb065104497dc929ccbdd557594eed9 +Subproject commit 8e9f8255077bc3fd322249cbababb50b56328e8c