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 704212760a..3557155f32 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,10 +5,10 @@ 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 90ed41ee9..68417874b 100644 +index d6fb25a5d..68f0c2fff 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{}) +@@ -2188,6 +2188,10 @@ func resourceSqlDatabaseInstanceImport(d *schema.ResourceData, meta interface{}) } func flattenSettings(settings *sqladmin.Settings, d *schema.ResourceData) []map[string]interface{} { @@ -19,7 +19,7 @@ index 90ed41ee9..68417874b 100644 data := map[string]interface{}{ "version": settings.SettingsVersion, "tier": settings.Tier, -@@ -2280,6 +2284,10 @@ func flattenDataCacheConfig(d *sqladmin.DataCacheConfig) []map[string]interface{ +@@ -2288,6 +2292,10 @@ func flattenDataCacheConfig(d *sqladmin.DataCacheConfig) []map[string]interface{ } func flattenBackupConfiguration(backupConfiguration *sqladmin.BackupConfiguration) []map[string]interface{} { @@ -30,7 +30,7 @@ index 90ed41ee9..68417874b 100644 data := map[string]interface{}{ "binary_log_enabled": backupConfiguration.BinaryLogEnabled, "enabled": backupConfiguration.Enabled, -@@ -2372,6 +2380,10 @@ func flattenDatabaseFlags(databaseFlags []*sqladmin.DatabaseFlags) []map[string] +@@ -2380,6 +2388,10 @@ func flattenDatabaseFlags(databaseFlags []*sqladmin.DatabaseFlags) []map[string] } func flattenIpConfiguration(ipConfiguration *sqladmin.IpConfiguration, d *schema.ResourceData) interface{} { @@ -41,7 +41,7 @@ index 90ed41ee9..68417874b 100644 data := map[string]interface{}{ "ipv4_enabled": ipConfiguration.Ipv4Enabled, "private_network": ipConfiguration.PrivateNetwork, -@@ -2434,6 +2446,10 @@ func flattenAuthorizedNetworks(entries []*sqladmin.AclEntry) interface{} { +@@ -2443,6 +2455,10 @@ func flattenAuthorizedNetworks(entries []*sqladmin.AclEntry) interface{} { } func flattenLocationPreference(locationPreference *sqladmin.LocationPreference) interface{} { @@ -52,7 +52,7 @@ index 90ed41ee9..68417874b 100644 data := map[string]interface{}{ "follow_gae_application": locationPreference.FollowGaeApplication, "zone": locationPreference.Zone, -@@ -2444,6 +2460,10 @@ func flattenLocationPreference(locationPreference *sqladmin.LocationPreference) +@@ -2453,6 +2469,10 @@ func flattenLocationPreference(locationPreference *sqladmin.LocationPreference) } func flattenMaintenanceWindow(maintenanceWindow *sqladmin.MaintenanceWindow) interface{} { @@ -63,7 +63,7 @@ index 90ed41ee9..68417874b 100644 data := map[string]interface{}{ "day": maintenanceWindow.Day, "hour": maintenanceWindow.Hour, -@@ -2519,6 +2539,10 @@ func flattenServerCaCerts(caCerts []*sqladmin.SslCert) []map[string]interface{} +@@ -2528,6 +2548,10 @@ func flattenServerCaCerts(caCerts []*sqladmin.SslCert) []map[string]interface{} } func flattenInsightsConfig(insightsConfig *sqladmin.InsightsConfig) interface{} { diff --git a/patches/0005-docs-patching.patch b/patches/0005-docs-patching.patch index 349d1c70a0..828e3148aa 100644 --- a/patches/0005-docs-patching.patch +++ b/patches/0005-docs-patching.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Venelin -Date: Tue, 12 Nov 2024 15:52:45 +0000 +Date: Wed, 15 Jan 2025 15:45:41 +0200 Subject: [PATCH] docs patching @@ -19,7 +19,7 @@ index e88c1fbc7..a13b0254f 100644 * [API documentation](https://cloud.google.com/api-gateway/docs/reference/rest/v1beta/projects.locations.apis) diff --git a/website/docs/r/api_gateway_api_config.html.markdown b/website/docs/r/api_gateway_api_config.html.markdown -index 13bcdcdb5..f4915524a 100644 +index cbd40ac00..b12c0e6ea 100644 --- a/website/docs/r/api_gateway_api_config.html.markdown +++ b/website/docs/r/api_gateway_api_config.html.markdown @@ -21,9 +21,6 @@ description: |- @@ -117,7 +117,7 @@ index 2dbadf3dd..7e3e047fe 100644 org_id = google_apigee_organization.apigee_org.id disk_encryption_key_name = google_kms_crypto_key.apigee_key.id diff --git a/website/docs/r/apigee_organization.html.markdown b/website/docs/r/apigee_organization.html.markdown -index cb61548ea..34131f252 100644 +index 1cb13c724..24a7f4e4b 100644 --- a/website/docs/r/apigee_organization.html.markdown +++ b/website/docs/r/apigee_organization.html.markdown @@ -126,7 +126,7 @@ resource "google_kms_crypto_key_iam_member" "apigee_sa_keyuser" { @@ -147,7 +147,7 @@ index de386e9ff..0029e996e 100644 ~> **Warning:** All arguments including `iap.oauth2_client_secret` will be stored in the raw state as plain-text. [Read more about sensitive data in state](https://www.terraform.io/language/state/sensitive-data). diff --git a/website/docs/r/app_engine_flexible_app_version.html.markdown b/website/docs/r/app_engine_flexible_app_version.html.markdown -index ab54b615d..2ed6376e4 100644 +index 3437336c6..faf6b651c 100644 --- a/website/docs/r/app_engine_flexible_app_version.html.markdown +++ b/website/docs/r/app_engine_flexible_app_version.html.markdown @@ -312,7 +312,7 @@ The following arguments are supported: @@ -160,7 +160,7 @@ 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 56f90a480..6777bfca7 100644 +index f35325202..d226862a6 100644 --- a/website/docs/r/bigquery_job.html.markdown +++ b/website/docs/r/bigquery_job.html.markdown @@ -711,8 +711,8 @@ The following arguments are supported: @@ -306,7 +306,7 @@ index 7007e82bb..3051111fd 100644 ## Attributes Reference diff --git a/website/docs/r/certificate_manager_certificate.html.markdown b/website/docs/r/certificate_manager_certificate.html.markdown -index 48be459a6..4b2a474e7 100644 +index b69758516..d2097742d 100644 --- a/website/docs/r/certificate_manager_certificate.html.markdown +++ b/website/docs/r/certificate_manager_certificate.html.markdown @@ -156,19 +156,38 @@ resource "google_privateca_certificate_authority" "ca_authority" { @@ -362,7 +362,7 @@ index 48be459a6..4b2a474e7 100644 * `pem_private_key` - (Optional) diff --git a/website/docs/r/cloud_run_domain_mapping.html.markdown b/website/docs/r/cloud_run_domain_mapping.html.markdown -index a68f58813..650247567 100644 +index b963eecc9..7aa5ce965 100644 --- a/website/docs/r/cloud_run_domain_mapping.html.markdown +++ b/website/docs/r/cloud_run_domain_mapping.html.markdown @@ -161,7 +161,7 @@ The following arguments are supported: @@ -375,7 +375,7 @@ index a68f58813..650247567 100644 **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. diff --git a/website/docs/r/cloud_run_service.html.markdown b/website/docs/r/cloud_run_service.html.markdown -index 91c38fdd4..32b13d59c 100644 +index 017c9a4b1..bd462ca22 100644 --- a/website/docs/r/cloud_run_service.html.markdown +++ b/website/docs/r/cloud_run_service.html.markdown @@ -31,8 +31,63 @@ To get more information about Service, see: @@ -468,7 +468,7 @@ index 91c38fdd4..32b13d59c 100644 - Periodic probe of container liveness. Container will be restarted if the probe fails. + Periodic probe of container liveness. Container will be restarted if the probe fails. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - Structure is [documented below](#nested_liveness_probe). + Structure is [documented below](#nested_spec_template_spec_containers_containers_liveness_probe). @@ -1035,7 +1091,7 @@ this field is set to false, the revision name will still autogenerate.) @@ -481,7 +481,7 @@ index 91c38fdd4..32b13d59c 100644 Annotations with `run.googleapis.com/` and `autoscaling.knative.dev` are restricted. Use the following annotation keys to configure features on a Service: diff --git a/website/docs/r/cloud_scheduler_job.html.markdown b/website/docs/r/cloud_scheduler_job.html.markdown -index c3e738686..4ab0fb25d 100644 +index 2e5459c7e..e4d2a69e9 100644 --- a/website/docs/r/cloud_scheduler_job.html.markdown +++ b/website/docs/r/cloud_scheduler_job.html.markdown @@ -278,7 +278,7 @@ The following arguments are supported: @@ -577,7 +577,7 @@ index 0a305240d..845f44993 100644 ## Example Usage - Backend Bucket Signed Url Key diff --git a/website/docs/r/compute_backend_service.html.markdown b/website/docs/r/compute_backend_service.html.markdown -index 7edeae294..f411c61a5 100644 +index 5d7a991c4..4136aa12d 100644 --- a/website/docs/r/compute_backend_service.html.markdown +++ b/website/docs/r/compute_backend_service.html.markdown @@ -36,7 +36,6 @@ To get more information about BackendService, see: @@ -797,10 +797,10 @@ index 5d846e846..8dda2ecb4 100644 instances = [ google_compute_instance.test.id, diff --git a/website/docs/r/compute_instance_group_manager.html.markdown b/website/docs/r/compute_instance_group_manager.html.markdown -index 4492397f2..26ec08096 100644 +index 284e66bb9..2a4b43426 100644 --- a/website/docs/r/compute_instance_group_manager.html.markdown +++ b/website/docs/r/compute_instance_group_manager.html.markdown -@@ -165,7 +165,7 @@ The following arguments are supported: +@@ -164,7 +164,7 @@ The following arguments are supported: not affect existing instances. * `wait_for_instances` - (Optional) Whether to wait for all instances to be created/updated before @@ -940,7 +940,7 @@ index 1b32e0b70..05d184bdf 100644 In addition to the arguments listed above, the following computed attributes are diff --git a/website/docs/r/compute_node_group.html.markdown b/website/docs/r/compute_node_group.html.markdown -index 9ea19105d..a3684ed40 100644 +index 5c8570e4b..d2a2158d0 100644 --- a/website/docs/r/compute_node_group.html.markdown +++ b/website/docs/r/compute_node_group.html.markdown @@ -28,6 +28,11 @@ To get more information about NodeGroup, see: @@ -1041,7 +1041,7 @@ index d4c50e4c0..87e4f250a 100644 policy_id = google_compute_organization_security_policy.policy.id } diff --git a/website/docs/r/compute_organization_security_policy_rule.html.markdown b/website/docs/r/compute_organization_security_policy_rule.html.markdown -index 1df50f38d..5e1ae7158 100644 +index 2712fb571..1e168e23c 100644 --- a/website/docs/r/compute_organization_security_policy_rule.html.markdown +++ b/website/docs/r/compute_organization_security_policy_rule.html.markdown @@ -21,9 +21,6 @@ description: |- @@ -1064,7 +1064,7 @@ index 1df50f38d..5e1ae7158 100644 } diff --git a/website/docs/r/compute_per_instance_config.html.markdown b/website/docs/r/compute_per_instance_config.html.markdown -index 087815a69..58339754b 100644 +index 2c406e0c7..8b2d102b8 100644 --- a/website/docs/r/compute_per_instance_config.html.markdown +++ b/website/docs/r/compute_per_instance_config.html.markdown @@ -60,7 +60,7 @@ resource "google_compute_instance_template" "igm-basic" { @@ -1131,10 +1131,10 @@ index db7f57628..dceb98ac2 100644 ```hcl diff --git a/website/docs/r/compute_region_instance_group_manager.html.markdown b/website/docs/r/compute_region_instance_group_manager.html.markdown -index 9becef0fe..4d17cf1e7 100644 +index c39fbe250..17408b0c4 100644 --- a/website/docs/r/compute_region_instance_group_manager.html.markdown +++ b/website/docs/r/compute_region_instance_group_manager.html.markdown -@@ -166,7 +166,7 @@ The following arguments are supported: +@@ -165,7 +165,7 @@ The following arguments are supported: not affect existing instances. * `wait_for_instances` - (Optional) Whether to wait for all instances to be created/updated before @@ -1160,7 +1160,7 @@ index f240f0708..40f39cf11 100644 * [API documentation](https://cloud.google.com/compute/docs/reference/rest/beta/regionNetworkEndpointGroups) diff --git a/website/docs/r/compute_region_per_instance_config.html.markdown b/website/docs/r/compute_region_per_instance_config.html.markdown -index 5f6a81f91..712ade9ee 100644 +index 5dadd53e4..81850e133 100644 --- a/website/docs/r/compute_region_per_instance_config.html.markdown +++ b/website/docs/r/compute_region_per_instance_config.html.markdown @@ -61,7 +61,7 @@ resource "google_compute_instance_template" "igm-basic" { @@ -2039,7 +2039,7 @@ index 7789b05fe..cd5d853c0 100644 ## Attributes Reference diff --git a/website/docs/r/deployment_manager_deployment.html.markdown b/website/docs/r/deployment_manager_deployment.html.markdown -index f9074531e..2a6673035 100644 +index d8e02342b..c9bdfe086 100644 --- a/website/docs/r/deployment_manager_deployment.html.markdown +++ b/website/docs/r/deployment_manager_deployment.html.markdown @@ -25,15 +25,13 @@ a configuration file @@ -2085,7 +2085,7 @@ index 234941e92..cbecd2912 100644 * `project` - (Optional) The ID of the project in which the resource belongs. If it is not provided, the provider project is used. diff --git a/website/docs/r/dns_managed_zone.html.markdown b/website/docs/r/dns_managed_zone.html.markdown -index 653f2afc5..e650f5a15 100644 +index ec45ead92..dfcbcd66f 100644 --- a/website/docs/r/dns_managed_zone.html.markdown +++ b/website/docs/r/dns_managed_zone.html.markdown @@ -42,16 +42,12 @@ To get more information about ManagedZone, see: @@ -2122,7 +2122,7 @@ index 653f2afc5..e650f5a15 100644 * `dnssec_config` - (Optional) diff --git a/website/docs/r/dns_policy.html.markdown b/website/docs/r/dns_policy.html.markdown -index c4477a93e..8ca08942a 100644 +index 997264bcb..a282538f8 100644 --- a/website/docs/r/dns_policy.html.markdown +++ b/website/docs/r/dns_policy.html.markdown @@ -96,7 +96,7 @@ The following arguments are supported: @@ -3249,7 +3249,7 @@ index 9a3a1f78f..6f8ccd37e 100644 the sensitive_labels block, but cannot be configured in both places. diff --git a/website/docs/r/monitoring_slo.html.markdown b/website/docs/r/monitoring_slo.html.markdown -index 8978b4bdb..f5824a993 100644 +index cf615c626..54f2ba153 100644 --- a/website/docs/r/monitoring_slo.html.markdown +++ b/website/docs/r/monitoring_slo.html.markdown @@ -53,7 +53,7 @@ resource "google_monitoring_slo" "appeng_slo" { @@ -3307,7 +3307,7 @@ index 8978b4bdb..f5824a993 100644 goal = 0.9 rolling_period_days = 20 diff --git a/website/docs/r/monitoring_uptime_check_config.html.markdown b/website/docs/r/monitoring_uptime_check_config.html.markdown -index c4933d88d..2328e5497 100644 +index 921d20a5e..f08d6592d 100644 --- a/website/docs/r/monitoring_uptime_check_config.html.markdown +++ b/website/docs/r/monitoring_uptime_check_config.html.markdown @@ -28,9 +28,8 @@ To get more information about UptimeCheckConfig, see: @@ -3335,7 +3335,7 @@ index bfcca3771..93c9e6ff2 100644 container_image { repository = "gcr.io/deeplearning-platform-release/base-cpu" diff --git a/website/docs/r/os_config_guest_policies.html.markdown b/website/docs/r/os_config_guest_policies.html.markdown -index 3879c6fd2..cf89daff6 100644 +index 72dc69186..a0de4b4de 100644 --- a/website/docs/r/os_config_guest_policies.html.markdown +++ b/website/docs/r/os_config_guest_policies.html.markdown @@ -23,9 +23,6 @@ An OS Config resource representing a guest configuration policy. These policies @@ -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 f4e44aed8..f9ed9e443 100644 +index 9f8539617..e0a540c47 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" { @@ -3401,7 +3401,7 @@ index 663f57a0a..b38168aef 100644
diff --git a/website/docs/r/security_scanner_scan_config.html.markdown b/website/docs/r/security_scanner_scan_config.html.markdown -index acb39f605..35cc434e4 100644 +index cc0ae3356..d0ed428f1 100644 --- a/website/docs/r/security_scanner_scan_config.html.markdown +++ b/website/docs/r/security_scanner_scan_config.html.markdown @@ -21,18 +21,13 @@ description: |- @@ -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 f6193b91d..3be112b5e 100644 +index 6f6e2e668..585819a79 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 @@ -3620,7 +3620,7 @@ index f6193b91d..3be112b5e 100644 configuration is detailed below. The `settings` block supports: -@@ -545,7 +541,7 @@ The optional `clone` block supports: +@@ -547,7 +543,7 @@ The optional `clone` block supports: * `allocated_ip_range` - (Optional) The name of the allocated ip range for the private ip CloudSQL instance. For example: "google-managed-services-default". If set, the cloned instance ip will be created in the allocated range. The range name must comply with [RFC 1035](https://tools.ietf.org/html/rfc1035). Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])?. The optional `restore_backup_context` block supports: @@ -3629,7 +3629,7 @@ index f6193b91d..3be112b5e 100644 block during resource creation/update will trigger the restore action after the resource is created/updated. * `backup_run_id` - (Required) The ID of the backup run to restore from. -@@ -583,21 +579,13 @@ instance. +@@ -585,21 +581,13 @@ instance. * A `PRIVATE` address is an address for an instance which has been configured to use private networking see: [Private IP](https://cloud.google.com/sql/docs/mysql/private-ip). diff --git a/patches/0008-Fix-794-with-an-unconditional-read.patch b/patches/0008-Fix-794-with-an-unconditional-read.patch index f1d8c3995d..e42c33e54b 100644 --- a/patches/0008-Fix-794-with-an-unconditional-read.patch +++ b/patches/0008-Fix-794-with-an-unconditional-read.patch @@ -5,10 +5,10 @@ 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 68417874b..b601cb663 100644 +index 68f0c2fff..686242ff7 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{}) +@@ -2017,10 +2017,11 @@ func resourceSqlDatabaseInstanceUpdate(d *schema.ResourceData, meta interface{}) if err != nil { return err } 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 e15b1c4332..d83ca6e440 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,7 +5,7 @@ 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 742d3fc5e..184515ff6 100644 +index b88e939d5..a98602771 100644 --- a/google-beta/transport/config.go +++ b/google-beta/transport/config.go @@ -671,7 +671,7 @@ var DefaultClientScopes = []string{ diff --git a/provider/cmd/pulumi-resource-gcp/bridge-metadata.json b/provider/cmd/pulumi-resource-gcp/bridge-metadata.json index 636ebbd12e..a0d45c4928 100644 --- a/provider/cmd/pulumi-resource-gcp/bridge-metadata.json +++ b/provider/cmd/pulumi-resource-gcp/bridge-metadata.json @@ -2249,6 +2249,32 @@ } } }, + "google_beyondcorp_security_gateway": { + "current": "gcp:beyondcorp/securityGateway:SecurityGateway", + "majorVersion": 8, + "fields": { + "external_ips": { + "maxItemsOne": false + }, + "hubs": { + "maxItemsOne": false, + "elem": { + "fields": { + "internet_gateway": { + "maxItemsOne": true, + "elem": { + "fields": { + "assigned_ips": { + "maxItemsOne": false + } + } + } + } + } + } + } + } + }, "google_biglake_catalog": { "current": "gcp:biglake/catalog:Catalog", "majorVersion": 8 @@ -3378,6 +3404,36 @@ } } }, + "google_chronicle_data_access_label": { + "current": "gcp:chronicle/dataAccessLabel:DataAccessLabel", + "majorVersion": 8 + }, + "google_chronicle_data_access_scope": { + "current": "gcp:chronicle/dataAccessScope:DataAccessScope", + "majorVersion": 8, + "fields": { + "allowed_data_access_labels": { + "maxItemsOne": false, + "elem": { + "fields": { + "ingestion_label": { + "maxItemsOne": true + } + } + } + }, + "denied_data_access_labels": { + "maxItemsOne": false, + "elem": { + "fields": { + "ingestion_label": { + "maxItemsOne": true + } + } + } + } + } + }, "google_chronicle_watchlist": { "current": "gcp:chronicle/watchlist:Watchlist", "majorVersion": 8, @@ -3518,6 +3574,10 @@ } } }, + "google_cloud_quotas_quota_adjuster_settings": { + "current": "gcp:cloudquota/sQuotaAdjusterSettings:SQuotaAdjusterSettings", + "majorVersion": 8 + }, "google_cloud_quotas_quota_preference": { "current": "gcp:cloudquota/sQuotaPreference:SQuotaPreference", "majorVersion": 8, @@ -16519,6 +16579,9 @@ "current": "gcp:developerconnect/connection:Connection", "majorVersion": 8, "fields": { + "crypto_key_config": { + "maxItemsOne": true + }, "github_config": { "maxItemsOne": true, "elem": { @@ -16529,6 +16592,45 @@ } } }, + "github_enterprise_config": { + "maxItemsOne": true, + "elem": { + "fields": { + "service_directory_config": { + "maxItemsOne": true + } + } + } + }, + "gitlab_config": { + "maxItemsOne": true, + "elem": { + "fields": { + "authorizer_credential": { + "maxItemsOne": true + }, + "read_authorizer_credential": { + "maxItemsOne": true + } + } + } + }, + "gitlab_enterprise_config": { + "maxItemsOne": true, + "elem": { + "fields": { + "authorizer_credential": { + "maxItemsOne": true + }, + "read_authorizer_credential": { + "maxItemsOne": true + }, + "service_directory_config": { + "maxItemsOne": true + } + } + } + }, "installation_state": { "maxItemsOne": false } @@ -17570,6 +17672,9 @@ "maxItemsOne": true, "elem": { "fields": { + "external_endpoints": { + "maxItemsOne": false + }, "internal_load_balancers": { "maxItemsOne": false } @@ -17594,6 +17699,9 @@ "maxItemsOne": true, "elem": { "fields": { + "external_endpoints": { + "maxItemsOne": false + }, "internal_load_balancers": { "maxItemsOne": false } @@ -17610,6 +17718,9 @@ "maxItemsOne": true, "elem": { "fields": { + "external_endpoints": { + "maxItemsOne": false + }, "internal_load_balancers": { "maxItemsOne": false } @@ -17627,6 +17738,9 @@ "maxItemsOne": true, "elem": { "fields": { + "external_endpoints": { + "maxItemsOne": false + }, "internal_load_balancers": { "maxItemsOne": false } @@ -37652,6 +37766,7 @@ "gcp:beyondcorp/appConnection:AppConnection": 0, "gcp:beyondcorp/appConnector:AppConnector": 0, "gcp:beyondcorp/appGateway:AppGateway": 0, + "gcp:beyondcorp/securityGateway:SecurityGateway": 0, "gcp:biglake/catalog:Catalog": 0, "gcp:biglake/database:Database": 0, "gcp:biglake/table:Table": 0, @@ -37726,6 +37841,8 @@ "gcp:certificatemanager/certificateMapEntry:CertificateMapEntry": 0, "gcp:certificatemanager/dnsAuthorization:DnsAuthorization": 0, "gcp:certificatemanager/trustConfig:TrustConfig": 0, + "gcp:chronicle/dataAccessLabel:DataAccessLabel": 0, + "gcp:chronicle/dataAccessScope:DataAccessScope": 0, "gcp:chronicle/watchlist:Watchlist": 0, "gcp:cloudasset/folderFeed:FolderFeed": 0, "gcp:cloudasset/organizationFeed:OrganizationFeed": 0, @@ -37763,6 +37880,7 @@ "gcp:cloudidentity/group:Group": 0, "gcp:cloudidentity/groupMembership:GroupMembership": 0, "gcp:cloudids/endpoint:Endpoint": 0, + "gcp:cloudquota/sQuotaAdjusterSettings:SQuotaAdjusterSettings": 0, "gcp:cloudquota/sQuotaPreference:SQuotaPreference": 0, "gcp:cloudrun/domainMapping:DomainMapping": 0, "gcp:cloudrun/iamBinding:IamBinding": 0, diff --git a/provider/cmd/pulumi-resource-gcp/schema.json b/provider/cmd/pulumi-resource-gcp/schema.json index b865490071..bc74e56c6e 100644 --- a/provider/cmd/pulumi-resource-gcp/schema.json +++ b/provider/cmd/pulumi-resource-gcp/schema.json @@ -6439,7 +6439,7 @@ "properties": { "password": { "type": "string", - "description": "Password to be used.\n\n\u003ca name=\"nested_oauth2_authorization_code\"\u003e\u003c/a\u003eThe `oauth2_authorization_code` block supports:\n" + "description": "Password to be used.\n\n\u003ca name=\"nested_decrypted_credential_oauth2_authorization_code\"\u003e\u003c/a\u003eThe `oauth2_authorization_code` block supports:\n" }, "username": { "type": "string", @@ -8538,6 +8538,41 @@ }, "type": "object" }, + "gcp:beyondcorp/SecurityGatewayHub:SecurityGatewayHub": { + "properties": { + "internetGateway": { + "$ref": "#/types/gcp:beyondcorp/SecurityGatewayHubInternetGateway:SecurityGatewayHubInternetGateway", + "description": "Internet Gateway configuration.\nStructure is documented below.\n" + }, + "region": { + "type": "string", + "description": "The identifier for this object. Format specified above.\n" + } + }, + "type": "object", + "required": [ + "region" + ] + }, + "gcp:beyondcorp/SecurityGatewayHubInternetGateway:SecurityGatewayHubInternetGateway": { + "properties": { + "assignedIps": { + "type": "array", + "items": { + "type": "string" + }, + "description": "(Output)\nOutput only. List of IP addresses assigned to the Cloud NAT.\n" + } + }, + "type": "object", + "language": { + "nodejs": { + "requiredOutputs": [ + "assignedIps" + ] + } + } + }, "gcp:beyondcorp/getAppConnectionApplicationEndpoint:getAppConnectionApplicationEndpoint": { "properties": { "host": { @@ -12365,7 +12400,7 @@ "properties": { "garbageCollectionMode": { "type": "string", - "description": "Blockchain garbage collection modes. Only applicable when NodeType is FULL or ARCHIVE.\nPossible values are: `FULL`, `ARCHIVE`.\n\n\u003ca name=\"nested_additional_endpoints\"\u003e\u003c/a\u003eThe `additional_endpoints` block contains:\n", + "description": "Blockchain garbage collection modes. Only applicable when NodeType is FULL or ARCHIVE.\nPossible values are: `FULL`, `ARCHIVE`.\n\n\u003ca name=\"nested_ethereum_details_additional_endpoints\"\u003e\u003c/a\u003eThe `additional_endpoints` block contains:\n", "willReplaceOnChanges": true } }, @@ -12539,7 +12574,7 @@ "properties": { "keyId": { "type": "string", - "description": "The value of the KeyId in lowercase hexadecimal.\n\n\u003ca name=\"nested_x509_config\"\u003e\u003c/a\u003eThe `x509_config` block supports:\n", + "description": "The value of the KeyId in lowercase hexadecimal.\n\n\u003ca name=\"nested_config_x509_config\"\u003e\u003c/a\u003eThe `x509_config` block supports:\n", "willReplaceOnChanges": true } }, @@ -14139,7 +14174,7 @@ "properties": { "publicKey": { "$ref": "#/types/gcp:certificateauthority/CertificateConfigPublicKey:CertificateConfigPublicKey", - "description": "A PublicKey describes a public key.\nStructure is documented below.\n\n\n\u003ca name=\"nested_x509_config\"\u003e\u003c/a\u003eThe `x509_config` block supports:\n", + "description": "A PublicKey describes a public key.\nStructure is documented below.\n\n\n\u003ca name=\"nested_config_x509_config\"\u003e\u003c/a\u003eThe `x509_config` block supports:\n", "willReplaceOnChanges": true }, "subjectConfig": { @@ -15674,7 +15709,7 @@ "items": { "$ref": "#/types/gcp:certificatemanager/CertificateManagedAuthorizationAttemptInfo:CertificateManagedAuthorizationAttemptInfo" }, - "description": "(Output)\nDetailed state of the latest authorization attempt for each domain\nspecified for this Managed Certificate.\nStructure is documented below.\n\n\n\u003ca name=\"nested_provisioning_issue\"\u003e\u003c/a\u003eThe `provisioning_issue` block contains:\n" + "description": "(Output)\nDetailed state of the latest authorization attempt for each domain\nspecified for this Managed Certificate.\nStructure is documented below.\n\n\n\u003ca name=\"nested_managed_provisioning_issue\"\u003e\u003c/a\u003eThe `provisioning_issue` block contains:\n" }, "dnsAuthorizations": { "type": "array", @@ -16156,6 +16191,102 @@ } } }, + "gcp:chronicle/DataAccessScopeAllowedDataAccessLabel:DataAccessScopeAllowedDataAccessLabel": { + "properties": { + "assetNamespace": { + "type": "string", + "description": "The asset namespace configured in the forwarder\nof the customer's events.\n" + }, + "dataAccessLabel": { + "type": "string", + "description": "The name of the data access label.\n" + }, + "displayName": { + "type": "string", + "description": "(Output)\nOutput only. The display name of the label.\nData access label and log types's name\nwill match the display name of the resource.\nThe asset namespace will match the namespace itself.\nThe ingestion key value pair will match the key of the tuple.\n" + }, + "ingestionLabel": { + "$ref": "#/types/gcp:chronicle/DataAccessScopeAllowedDataAccessLabelIngestionLabel:DataAccessScopeAllowedDataAccessLabelIngestionLabel", + "description": "Representation of an ingestion label type.\nStructure is documented below.\n" + }, + "logType": { + "type": "string", + "description": "The name of the log type.\n" + } + }, + "type": "object", + "language": { + "nodejs": { + "requiredOutputs": [ + "displayName" + ] + } + } + }, + "gcp:chronicle/DataAccessScopeAllowedDataAccessLabelIngestionLabel:DataAccessScopeAllowedDataAccessLabelIngestionLabel": { + "properties": { + "ingestionLabelKey": { + "type": "string", + "description": "Required. The key of the ingestion label. Always required.\n" + }, + "ingestionLabelValue": { + "type": "string", + "description": "Optional. The value of the ingestion label. Optional. An object\nwith no provided value and some key provided would match\nagainst the given key and ANY value.\n" + } + }, + "type": "object", + "required": [ + "ingestionLabelKey" + ] + }, + "gcp:chronicle/DataAccessScopeDeniedDataAccessLabel:DataAccessScopeDeniedDataAccessLabel": { + "properties": { + "assetNamespace": { + "type": "string", + "description": "The asset namespace configured in the forwarder\nof the customer's events.\n" + }, + "dataAccessLabel": { + "type": "string", + "description": "The name of the data access label.\n" + }, + "displayName": { + "type": "string", + "description": "(Output)\nOutput only. The display name of the label.\nData access label and log types's name\nwill match the display name of the resource.\nThe asset namespace will match the namespace itself.\nThe ingestion key value pair will match the key of the tuple.\n" + }, + "ingestionLabel": { + "$ref": "#/types/gcp:chronicle/DataAccessScopeDeniedDataAccessLabelIngestionLabel:DataAccessScopeDeniedDataAccessLabelIngestionLabel", + "description": "Representation of an ingestion label type.\nStructure is documented below.\n" + }, + "logType": { + "type": "string", + "description": "The name of the log type.\n" + } + }, + "type": "object", + "language": { + "nodejs": { + "requiredOutputs": [ + "displayName" + ] + } + } + }, + "gcp:chronicle/DataAccessScopeDeniedDataAccessLabelIngestionLabel:DataAccessScopeDeniedDataAccessLabelIngestionLabel": { + "properties": { + "ingestionLabelKey": { + "type": "string", + "description": "Required. The key of the ingestion label. Always required.\n" + }, + "ingestionLabelValue": { + "type": "string", + "description": "Optional. The value of the ingestion label. Optional. An object\nwith no provided value and some key provided would match\nagainst the given key and ANY value.\n" + } + }, + "type": "object", + "required": [ + "ingestionLabelKey" + ] + }, "gcp:chronicle/WatchlistEntityCount:WatchlistEntityCount": { "properties": { "asset": { @@ -16799,7 +16930,7 @@ "items": { "$ref": "#/types/gcp:cloudbuild/TriggerBuildArtifactsObjectsTiming:TriggerBuildArtifactsObjectsTiming" }, - "description": "(Output)\nOutput only. Stores timing information for pushing all artifact objects.\nStructure is documented below.\n\n\n\u003ca name=\"nested_timing\"\u003e\u003c/a\u003eThe `timing` block contains:\n" + "description": "(Output)\nOutput only. Stores timing information for pushing all artifact objects.\nStructure is documented below.\n\n\n\u003ca name=\"nested_build_artifacts_objects_timing\"\u003e\u003c/a\u003eThe `timing` block contains:\n" } }, "type": "object", @@ -31577,7 +31708,7 @@ "properties": { "awsV4Authentication": { "$ref": "#/types/gcp:compute/BackendServiceSecuritySettingsAwsV4Authentication:BackendServiceSecuritySettingsAwsV4Authentication", - "description": "The configuration needed to generate a signature for access to private storage buckets that support AWS's Signature Version 4 for authentication.\nAllowed only for INTERNET_IP_PORT and INTERNET_FQDN_PORT NEG backends.\nStructure is documented below.\n\n\n\u003ca name=\"nested_aws_v4_authentication\"\u003e\u003c/a\u003eThe `aws_v4_authentication` block supports:\n" + "description": "The configuration needed to generate a signature for access to private storage buckets that support AWS's Signature Version 4 for authentication.\nAllowed only for INTERNET_IP_PORT and INTERNET_FQDN_PORT NEG backends.\nStructure is documented below.\n\n\n\u003ca name=\"nested_security_settings_aws_v4_authentication\"\u003e\u003c/a\u003eThe `aws_v4_authentication` block supports:\n" }, "clientTlsPolicy": { "type": "string", @@ -31988,7 +32119,7 @@ "items": { "type": "string" }, - "description": "Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.\n\n\n\u003ca name=\"nested_layer4_configs\"\u003e\u003c/a\u003eThe `layer4_configs` block supports:\n" + "description": "Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.\n\n\n\u003ca name=\"nested_match_layer4_configs\"\u003e\u003c/a\u003eThe `layer4_configs` block supports:\n" } }, "type": "object", @@ -32137,7 +32268,7 @@ "items": { "$ref": "#/types/gcp:compute/FirewallPolicyWithRulesPredefinedRuleMatchLayer4Config:FirewallPolicyWithRulesPredefinedRuleMatchLayer4Config" }, - "description": "Pairs of IP protocols and ports that the rule should match.\nStructure is documented below.\n\n\n\u003ca name=\"nested_layer4_config\"\u003e\u003c/a\u003eThe `layer4_config` block supports:\n" + "description": "Pairs of IP protocols and ports that the rule should match.\nStructure is documented below.\n\n\n\u003ca name=\"nested_rule_rule_match_layer4_config\"\u003e\u003c/a\u003eThe `layer4_config` block supports:\n" }, "srcAddressGroups": { "type": "array", @@ -32324,7 +32455,7 @@ "items": { "$ref": "#/types/gcp:compute/FirewallPolicyWithRulesRuleMatchLayer4Config:FirewallPolicyWithRulesRuleMatchLayer4Config" }, - "description": "Pairs of IP protocols and ports that the rule should match.\nStructure is documented below.\n\n\n\u003ca name=\"nested_layer4_config\"\u003e\u003c/a\u003eThe `layer4_config` block supports:\n" + "description": "Pairs of IP protocols and ports that the rule should match.\nStructure is documented below.\n\n\n\u003ca name=\"nested_rule_rule_match_layer4_config\"\u003e\u003c/a\u003eThe `layer4_config` block supports:\n" }, "srcAddressGroups": { "type": "array", @@ -36617,7 +36748,7 @@ "items": { "type": "string" }, - "description": "Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.\n\n\n\u003ca name=\"nested_layer4_configs\"\u003e\u003c/a\u003eThe `layer4_configs` block supports:\n" + "description": "Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.\n\n\n\u003ca name=\"nested_match_layer4_configs\"\u003e\u003c/a\u003eThe `layer4_configs` block supports:\n" } }, "type": "object", @@ -36841,7 +36972,7 @@ "items": { "$ref": "#/types/gcp:compute/NetworkFirewallPolicyWithRulesPredefinedRuleMatchSrcSecureTag:NetworkFirewallPolicyWithRulesPredefinedRuleMatchSrcSecureTag" }, - "description": "List of secure tag values, which should be matched at the source\nof the traffic.\nFor INGRESS rule, if all the \u003ccode\u003esrcSecureTag\u003c/code\u003e are INEFFECTIVE,\nand there is no \u003ccode\u003esrcIpRange\u003c/code\u003e, this rule will be ignored.\nMaximum number of source tag values allowed is 256.\nStructure is documented below.\n\n\n\u003ca name=\"nested_layer4_config\"\u003e\u003c/a\u003eThe `layer4_config` block supports:\n" + "description": "List of secure tag values, which should be matched at the source\nof the traffic.\nFor INGRESS rule, if all the \u003ccode\u003esrcSecureTag\u003c/code\u003e are INEFFECTIVE,\nand there is no \u003ccode\u003esrcIpRange\u003c/code\u003e, this rule will be ignored.\nMaximum number of source tag values allowed is 256.\nStructure is documented below.\n\n\n\u003ca name=\"nested_rule_rule_match_layer4_config\"\u003e\u003c/a\u003eThe `layer4_config` block supports:\n" }, "srcThreatIntelligences": { "type": "array", @@ -37078,7 +37209,7 @@ "items": { "$ref": "#/types/gcp:compute/NetworkFirewallPolicyWithRulesRuleMatchSrcSecureTag:NetworkFirewallPolicyWithRulesRuleMatchSrcSecureTag" }, - "description": "List of secure tag values, which should be matched at the source\nof the traffic.\nFor INGRESS rule, if all the \u003ccode\u003esrcSecureTag\u003c/code\u003e are INEFFECTIVE,\nand there is no \u003ccode\u003esrcIpRange\u003c/code\u003e, this rule will be ignored.\nMaximum number of source tag values allowed is 256.\nStructure is documented below.\n\n\n\u003ca name=\"nested_layer4_config\"\u003e\u003c/a\u003eThe `layer4_config` block supports:\n" + "description": "List of secure tag values, which should be matched at the source\nof the traffic.\nFor INGRESS rule, if all the \u003ccode\u003esrcSecureTag\u003c/code\u003e are INEFFECTIVE,\nand there is no \u003ccode\u003esrcIpRange\u003c/code\u003e, this rule will be ignored.\nMaximum number of source tag values allowed is 256.\nStructure is documented below.\n\n\n\u003ca name=\"nested_rule_rule_match_layer4_config\"\u003e\u003c/a\u003eThe `layer4_config` block supports:\n" }, "srcThreatIntelligences": { "type": "array", @@ -37334,7 +37465,7 @@ "items": { "$ref": "#/types/gcp:compute/OrganizationSecurityPolicyRuleMatchConfigLayer4Config:OrganizationSecurityPolicyRuleMatchConfigLayer4Config" }, - "description": "Pairs of IP protocols and ports that the rule should match.\nStructure is documented below.\n\n\n\u003ca name=\"nested_layer4_config\"\u003e\u003c/a\u003eThe `layer4_config` block supports:\n" + "description": "Pairs of IP protocols and ports that the rule should match.\nStructure is documented below.\n\n\n\u003ca name=\"nested_match_config_layer4_config\"\u003e\u003c/a\u003eThe `layer4_config` block supports:\n" }, "srcIpRanges": { "type": "array", @@ -39935,7 +40066,7 @@ "items": { "type": "string" }, - "description": "Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.\n\n\n\u003ca name=\"nested_layer4_configs\"\u003e\u003c/a\u003eThe `layer4_configs` block supports:\n" + "description": "Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.\n\n\n\u003ca name=\"nested_match_layer4_configs\"\u003e\u003c/a\u003eThe `layer4_configs` block supports:\n" } }, "type": "object", @@ -40159,7 +40290,7 @@ "items": { "$ref": "#/types/gcp:compute/RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchSrcSecureTag:RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchSrcSecureTag" }, - "description": "List of secure tag values, which should be matched at the source\nof the traffic.\nFor INGRESS rule, if all the \u003ccode\u003esrcSecureTag\u003c/code\u003e are INEFFECTIVE,\nand there is no \u003ccode\u003esrcIpRange\u003c/code\u003e, this rule will be ignored.\nMaximum number of source tag values allowed is 256.\nStructure is documented below.\n\n\n\u003ca name=\"nested_layer4_config\"\u003e\u003c/a\u003eThe `layer4_config` block supports:\n" + "description": "List of secure tag values, which should be matched at the source\nof the traffic.\nFor INGRESS rule, if all the \u003ccode\u003esrcSecureTag\u003c/code\u003e are INEFFECTIVE,\nand there is no \u003ccode\u003esrcIpRange\u003c/code\u003e, this rule will be ignored.\nMaximum number of source tag values allowed is 256.\nStructure is documented below.\n\n\n\u003ca name=\"nested_rule_rule_match_layer4_config\"\u003e\u003c/a\u003eThe `layer4_config` block supports:\n" }, "srcThreatIntelligences": { "type": "array", @@ -40396,7 +40527,7 @@ "items": { "$ref": "#/types/gcp:compute/RegionNetworkFirewallPolicyWithRulesRuleMatchSrcSecureTag:RegionNetworkFirewallPolicyWithRulesRuleMatchSrcSecureTag" }, - "description": "List of secure tag values, which should be matched at the source\nof the traffic.\nFor INGRESS rule, if all the \u003ccode\u003esrcSecureTag\u003c/code\u003e are INEFFECTIVE,\nand there is no \u003ccode\u003esrcIpRange\u003c/code\u003e, this rule will be ignored.\nMaximum number of source tag values allowed is 256.\nStructure is documented below.\n\n\n\u003ca name=\"nested_layer4_config\"\u003e\u003c/a\u003eThe `layer4_config` block supports:\n" + "description": "List of secure tag values, which should be matched at the source\nof the traffic.\nFor INGRESS rule, if all the \u003ccode\u003esrcSecureTag\u003c/code\u003e are INEFFECTIVE,\nand there is no \u003ccode\u003esrcIpRange\u003c/code\u003e, this rule will be ignored.\nMaximum number of source tag values allowed is 256.\nStructure is documented below.\n\n\n\u003ca name=\"nested_rule_rule_match_layer4_config\"\u003e\u003c/a\u003eThe `layer4_config` block supports:\n" }, "srcThreatIntelligences": { "type": "array", @@ -66321,7 +66452,7 @@ "items": { "$ref": "#/types/gcp:datacatalog/EntryGcsFilesetSpecSampleGcsFileSpec:EntryGcsFilesetSpecSampleGcsFileSpec" }, - "description": "(Output)\nSample files contained in this fileset, not all files contained in this fileset are represented here.\nStructure is documented below.\n\n\n\u003ca name=\"nested_sample_gcs_file_specs\"\u003e\u003c/a\u003eThe `sample_gcs_file_specs` block contains:\n" + "description": "(Output)\nSample files contained in this fileset, not all files contained in this fileset are represented here.\nStructure is documented below.\n\n\n\u003ca name=\"nested_gcs_fileset_spec_sample_gcs_file_specs\"\u003e\u003c/a\u003eThe `sample_gcs_file_specs` block contains:\n" } }, "type": "object", @@ -82337,6 +82468,18 @@ }, "type": "object" }, + "gcp:developerconnect/ConnectionCryptoKeyConfig:ConnectionCryptoKeyConfig": { + "properties": { + "keyReference": { + "type": "string", + "description": "Required. The name of the key which is used to encrypt/decrypt customer data. For key\nin Cloud KMS, the key should be in the format of\n`projects/*/locations/*/keyRings/*/cryptoKeys/*`.\n" + } + }, + "type": "object", + "required": [ + "keyReference" + ] + }, "gcp:developerconnect/ConnectionGithubConfig:ConnectionGithubConfig": { "properties": { "appInstallationId": { @@ -82345,16 +82488,16 @@ }, "authorizerCredential": { "$ref": "#/types/gcp:developerconnect/ConnectionGithubConfigAuthorizerCredential:ConnectionGithubConfigAuthorizerCredential", - "description": "Represents an OAuth token of the account that authorized the Connection,and\nassociated metadata.\nStructure is documented below.\n" + "description": "Represents an OAuth token of the account that authorized the Connection,\nand associated metadata.\nStructure is documented below.\n" }, "githubApp": { "type": "string", - "description": "Required. Immutable. The GitHub Application that was installed to\nthe GitHub user or organization.\nPossible values:\nGIT_HUB_APP_UNSPECIFIED\nDEVELOPER_CONNECT\nFIREBASE\"\n", + "description": "Required. Immutable. The GitHub Application that was installed to the GitHub user or\norganization.\nPossible values:\nGIT_HUB_APP_UNSPECIFIED\nDEVELOPER_CONNECT\nFIREBASE\n", "willReplaceOnChanges": true }, "installationUri": { "type": "string", - "description": "(Output)\nOutput only. The URI to navigate to in order to manage the installation\nassociated with this GitHubConfig.\n" + "description": "(Output)\nOutput only. The URI to navigate to in order to manage the installation associated\nwith this GitHubConfig.\n" } }, "type": "object", @@ -82376,7 +82519,7 @@ "properties": { "oauthTokenSecretVersion": { "type": "string", - "description": "Required. A SecretManager resource containing the OAuth token\nthat authorizes the connection.\nFormat: `projects/*/secrets/*/versions/*`.\n" + "description": "Required. A SecretManager resource containing the OAuth token that authorizes\nthe connection. Format: `projects/*/secrets/*/versions/*`.\n" }, "username": { "type": "string", @@ -82396,15 +82539,267 @@ } } }, + "gcp:developerconnect/ConnectionGithubEnterpriseConfig:ConnectionGithubEnterpriseConfig": { + "properties": { + "appId": { + "type": "string", + "description": "Optional. ID of the GitHub App created from the manifest.\n" + }, + "appInstallationId": { + "type": "string", + "description": "Optional. ID of the installation of the GitHub App.\n" + }, + "appSlug": { + "type": "string", + "description": "(Output)\nOutput only. The URL-friendly name of the GitHub App.\n" + }, + "hostUri": { + "type": "string", + "description": "Required. The URI of the GitHub Enterprise host this connection is for.\n" + }, + "installationUri": { + "type": "string", + "description": "(Output)\nOutput only. The URI to navigate to in order to manage the installation associated\nwith this GitHubEnterpriseConfig.\n" + }, + "privateKeySecretVersion": { + "type": "string", + "description": "Optional. SecretManager resource containing the private key of the GitHub App,\nformatted as `projects/*/secrets/*/versions/*`.\n" + }, + "serverVersion": { + "type": "string", + "description": "(Output)\nOutput only. GitHub Enterprise version installed at the host_uri.\n" + }, + "serviceDirectoryConfig": { + "$ref": "#/types/gcp:developerconnect/ConnectionGithubEnterpriseConfigServiceDirectoryConfig:ConnectionGithubEnterpriseConfigServiceDirectoryConfig", + "description": "ServiceDirectoryConfig represents Service Directory configuration for a\nconnection.\nStructure is documented below.\n" + }, + "sslCaCertificate": { + "type": "string", + "description": "Optional. SSL certificate to use for requests to GitHub Enterprise.\n" + }, + "webhookSecretSecretVersion": { + "type": "string", + "description": "Optional. SecretManager resource containing the webhook secret of the GitHub App,\nformatted as `projects/*/secrets/*/versions/*`.\n" + } + }, + "type": "object", + "required": [ + "hostUri" + ], + "language": { + "nodejs": { + "requiredOutputs": [ + "appSlug", + "hostUri", + "installationUri", + "serverVersion" + ] + } + } + }, + "gcp:developerconnect/ConnectionGithubEnterpriseConfigServiceDirectoryConfig:ConnectionGithubEnterpriseConfigServiceDirectoryConfig": { + "properties": { + "service": { + "type": "string", + "description": "Required. The Service Directory service name.\nFormat:\nprojects/{project}/locations/{location}/namespaces/{namespace}/services/{service}.\n" + } + }, + "type": "object", + "required": [ + "service" + ] + }, + "gcp:developerconnect/ConnectionGitlabConfig:ConnectionGitlabConfig": { + "properties": { + "authorizerCredential": { + "$ref": "#/types/gcp:developerconnect/ConnectionGitlabConfigAuthorizerCredential:ConnectionGitlabConfigAuthorizerCredential", + "description": "Represents a personal access token that authorized the Connection,\nand associated metadata.\nStructure is documented below.\n" + }, + "readAuthorizerCredential": { + "$ref": "#/types/gcp:developerconnect/ConnectionGitlabConfigReadAuthorizerCredential:ConnectionGitlabConfigReadAuthorizerCredential", + "description": "Represents a personal access token that authorized the Connection,\nand associated metadata.\nStructure is documented below.\n" + }, + "webhookSecretSecretVersion": { + "type": "string", + "description": "Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project,\nformatted as `projects/*/secrets/*/versions/*`. This is used to validate\nwebhooks.\n", + "willReplaceOnChanges": true + } + }, + "type": "object", + "required": [ + "authorizerCredential", + "readAuthorizerCredential", + "webhookSecretSecretVersion" + ] + }, + "gcp:developerconnect/ConnectionGitlabConfigAuthorizerCredential:ConnectionGitlabConfigAuthorizerCredential": { + "properties": { + "userTokenSecretVersion": { + "type": "string", + "description": "Required. A SecretManager resource containing the user token that authorizes\nthe Developer Connect connection. Format:\n`projects/*/secrets/*/versions/*`.\n" + }, + "username": { + "type": "string", + "description": "(Output)\nOutput only. The username associated with this token.\n" + } + }, + "type": "object", + "required": [ + "userTokenSecretVersion" + ], + "language": { + "nodejs": { + "requiredOutputs": [ + "userTokenSecretVersion", + "username" + ] + } + } + }, + "gcp:developerconnect/ConnectionGitlabConfigReadAuthorizerCredential:ConnectionGitlabConfigReadAuthorizerCredential": { + "properties": { + "userTokenSecretVersion": { + "type": "string", + "description": "Required. A SecretManager resource containing the user token that authorizes\nthe Developer Connect connection. Format:\n`projects/*/secrets/*/versions/*`.\n" + }, + "username": { + "type": "string", + "description": "(Output)\nOutput only. The username associated with this token.\n" + } + }, + "type": "object", + "required": [ + "userTokenSecretVersion" + ], + "language": { + "nodejs": { + "requiredOutputs": [ + "userTokenSecretVersion", + "username" + ] + } + } + }, + "gcp:developerconnect/ConnectionGitlabEnterpriseConfig:ConnectionGitlabEnterpriseConfig": { + "properties": { + "authorizerCredential": { + "$ref": "#/types/gcp:developerconnect/ConnectionGitlabEnterpriseConfigAuthorizerCredential:ConnectionGitlabEnterpriseConfigAuthorizerCredential", + "description": "Represents a personal access token that authorized the Connection,\nand associated metadata.\nStructure is documented below.\n" + }, + "hostUri": { + "type": "string", + "description": "Required. The URI of the GitLab Enterprise host this connection is for.\n" + }, + "readAuthorizerCredential": { + "$ref": "#/types/gcp:developerconnect/ConnectionGitlabEnterpriseConfigReadAuthorizerCredential:ConnectionGitlabEnterpriseConfigReadAuthorizerCredential", + "description": "Represents a personal access token that authorized the Connection,\nand associated metadata.\nStructure is documented below.\n" + }, + "serverVersion": { + "type": "string", + "description": "(Output)\nOutput only. Version of the GitLab Enterprise server running on the `host_uri`.\n" + }, + "serviceDirectoryConfig": { + "$ref": "#/types/gcp:developerconnect/ConnectionGitlabEnterpriseConfigServiceDirectoryConfig:ConnectionGitlabEnterpriseConfigServiceDirectoryConfig", + "description": "ServiceDirectoryConfig represents Service Directory configuration for a\nconnection.\nStructure is documented below.\n" + }, + "sslCaCertificate": { + "type": "string", + "description": "Optional. SSL Certificate Authority certificate to use for requests to GitLab\nEnterprise instance.\n" + }, + "webhookSecretSecretVersion": { + "type": "string", + "description": "Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project,\nformatted as `projects/*/secrets/*/versions/*`. This is used to validate\nwebhooks.\n", + "willReplaceOnChanges": true + } + }, + "type": "object", + "required": [ + "authorizerCredential", + "hostUri", + "readAuthorizerCredential", + "webhookSecretSecretVersion" + ], + "language": { + "nodejs": { + "requiredOutputs": [ + "authorizerCredential", + "hostUri", + "readAuthorizerCredential", + "serverVersion", + "webhookSecretSecretVersion" + ] + } + } + }, + "gcp:developerconnect/ConnectionGitlabEnterpriseConfigAuthorizerCredential:ConnectionGitlabEnterpriseConfigAuthorizerCredential": { + "properties": { + "userTokenSecretVersion": { + "type": "string", + "description": "Required. A SecretManager resource containing the user token that authorizes\nthe Developer Connect connection. Format:\n`projects/*/secrets/*/versions/*`.\n" + }, + "username": { + "type": "string", + "description": "(Output)\nOutput only. The username associated with this token.\n" + } + }, + "type": "object", + "required": [ + "userTokenSecretVersion" + ], + "language": { + "nodejs": { + "requiredOutputs": [ + "userTokenSecretVersion", + "username" + ] + } + } + }, + "gcp:developerconnect/ConnectionGitlabEnterpriseConfigReadAuthorizerCredential:ConnectionGitlabEnterpriseConfigReadAuthorizerCredential": { + "properties": { + "userTokenSecretVersion": { + "type": "string", + "description": "Required. A SecretManager resource containing the user token that authorizes\nthe Developer Connect connection. Format:\n`projects/*/secrets/*/versions/*`.\n" + }, + "username": { + "type": "string", + "description": "(Output)\nOutput only. The username associated with this token.\n" + } + }, + "type": "object", + "required": [ + "userTokenSecretVersion" + ], + "language": { + "nodejs": { + "requiredOutputs": [ + "userTokenSecretVersion", + "username" + ] + } + } + }, + "gcp:developerconnect/ConnectionGitlabEnterpriseConfigServiceDirectoryConfig:ConnectionGitlabEnterpriseConfigServiceDirectoryConfig": { + "properties": { + "service": { + "type": "string", + "description": "Required. The Service Directory service name.\nFormat:\nprojects/{project}/locations/{location}/namespaces/{namespace}/services/{service}.\n" + } + }, + "type": "object", + "required": [ + "service" + ] + }, "gcp:developerconnect/ConnectionInstallationState:ConnectionInstallationState": { "properties": { "actionUri": { "type": "string", - "description": "Output only. Link to follow for next action. Empty string if the\ninstallation is already complete.\n" + "description": "Output only. Link to follow for next action. Empty string if the installation is already\ncomplete.\n" }, "message": { "type": "string", - "description": "Output only. Message of what the user should do next to continue\nthe installation.Empty string if the installation is already complete.\n" + "description": "Output only. Message of what the user should do next to continue the installation.\nEmpty string if the installation is already complete.\n" }, "stage": { "type": "string", @@ -85584,6 +85979,11 @@ }, "description": "The configuration for Geolocation based routing policy.\nStructure is documented below.\n" }, + "healthCheck": { + "type": "string", + "description": "Specifies the health check (used with external endpoints).\n", + "willReplaceOnChanges": true + }, "primaryBackup": { "$ref": "#/types/gcp:dns/RecordSetRoutingPolicyPrimaryBackup:RecordSetRoutingPolicyPrimaryBackup", "description": "The configuration for a failover policy with global to regional failover. Queries are responded to with the global primary targets, but if none of the primary targets are healthy, then we fallback to a regional failover policy.\nStructure is documented below.\n" @@ -85623,6 +86023,13 @@ }, "gcp:dns/RecordSetRoutingPolicyGeoHealthCheckedTargets:RecordSetRoutingPolicyGeoHealthCheckedTargets": { "properties": { + "externalEndpoints": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The list of external endpoint addresses to health check.\n" + }, "internalLoadBalancers": { "type": "array", "items": { @@ -85631,10 +86038,7 @@ "description": "The list of internal load balancers to health check.\nStructure is documented below.\n" } }, - "type": "object", - "required": [ - "internalLoadBalancers" - ] + "type": "object" }, "gcp:dns/RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancer:RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancer": { "properties": { @@ -85728,6 +86132,13 @@ }, "gcp:dns/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargets:RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargets": { "properties": { + "externalEndpoints": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The list of external endpoint addresses to health check.\n" + }, "internalLoadBalancers": { "type": "array", "items": { @@ -85736,10 +86147,7 @@ "description": "The list of internal load balancers to health check.\nStructure is documented below.\n" } }, - "type": "object", - "required": [ - "internalLoadBalancers" - ] + "type": "object" }, "gcp:dns/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancer:RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancer": { "properties": { @@ -85783,6 +86191,13 @@ }, "gcp:dns/RecordSetRoutingPolicyPrimaryBackupPrimary:RecordSetRoutingPolicyPrimaryBackupPrimary": { "properties": { + "externalEndpoints": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The Internet IP addresses to be health checked.\n" + }, "internalLoadBalancers": { "type": "array", "items": { @@ -85791,10 +86206,7 @@ "description": "The list of internal load balancers to health check.\n" } }, - "type": "object", - "required": [ - "internalLoadBalancers" - ] + "type": "object" }, "gcp:dns/RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancer:RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancer": { "properties": { @@ -85861,6 +86273,13 @@ }, "gcp:dns/RecordSetRoutingPolicyWrrHealthCheckedTargets:RecordSetRoutingPolicyWrrHealthCheckedTargets": { "properties": { + "externalEndpoints": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The list of external endpoint addresses to health check.\n" + }, "internalLoadBalancers": { "type": "array", "items": { @@ -85869,10 +86288,7 @@ "description": "The list of internal load balancers to health check.\nStructure is documented below.\n" } }, - "type": "object", - "required": [ - "internalLoadBalancers" - ] + "type": "object" }, "gcp:dns/RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancer:RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancer": { "properties": { @@ -86245,7 +86661,7 @@ "items": { "$ref": "#/types/gcp:edgecontainer/ClusterControlPlaneEncryptionKmsStatus:ClusterControlPlaneEncryptionKmsStatus" }, - "description": "(Output)\nError status returned by Cloud KMS when using this key. This field may be\npopulated only if `kms_key_state` is not `KMS_KEY_STATE_KEY_AVAILABLE`.\nIf populated, this field contains the error status reported by Cloud KMS.\nStructure is documented below.\n\n\n\u003ca name=\"nested_kms_status\"\u003e\u003c/a\u003eThe `kms_status` block contains:\n" + "description": "(Output)\nError status returned by Cloud KMS when using this key. This field may be\npopulated only if `kms_key_state` is not `KMS_KEY_STATE_KEY_AVAILABLE`.\nIf populated, this field contains the error status reported by Cloud KMS.\nStructure is documented below.\n\n\n\u003ca name=\"nested_control_plane_encryption_kms_status\"\u003e\u003c/a\u003eThe `kms_status` block contains:\n" } }, "type": "object", @@ -93473,7 +93889,7 @@ "properties": { "enabled": { "type": "boolean", - "description": "Whether to enable control plane node auto resizing.\n\n\u003ca name=\"nested_vsphere_config\"\u003e\u003c/a\u003eThe `vsphere_config` block contains:\n" + "description": "Whether to enable control plane node auto resizing.\n\n\u003ca name=\"nested_control_plane_node_vsphere_config\"\u003e\u003c/a\u003eThe `vsphere_config` block contains:\n" } }, "type": "object", @@ -93672,7 +94088,7 @@ }, "ingressVip": { "type": "string", - "description": "The VIP which you previously set aside for ingress traffic into this cluster.\n\n\u003ca name=\"nested_f5_config\"\u003e\u003c/a\u003eThe `f5_config` block supports:\n" + "description": "The VIP which you previously set aside for ingress traffic into this cluster.\n\n\u003ca name=\"nested_load_balancer_f5_config\"\u003e\u003c/a\u003eThe `f5_config` block supports:\n" } }, "type": "object" @@ -93800,7 +94216,7 @@ "items": { "type": "string" }, - "description": "DNS search domains.\n\n\u003ca name=\"nested_control_plane_v2_config\"\u003e\u003c/a\u003eThe `control_plane_v2_config` block supports:\n" + "description": "DNS search domains.\n\n\u003ca name=\"nested_network_config_control_plane_v2_config\"\u003e\u003c/a\u003eThe `control_plane_v2_config` block supports:\n" }, "dnsServers": { "type": "array", @@ -94087,7 +94503,14 @@ "language": { "nodejs": { "requiredOutputs": [ - "address" + "address", + "caCertData", + "cluster", + "datacenter", + "datastore", + "folder", + "resourcePool", + "storagePolicyName" ] } } @@ -94487,7 +94910,7 @@ "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" + "description": "The VIP to configure the load balancer for add-ons.\n\n\u003ca name=\"nested_load_balancer_f5_config\"\u003e\u003c/a\u003eThe `f5_config` block supports:\n" }, "controlPlaneVip": { "type": "string", @@ -94731,7 +95154,7 @@ "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" + "description": "(Output)\nResourceStatus representing detailed cluster state.\nStructure is documented below.\n\n\n\u003ca name=\"nested_platform_config_bundles_bundles_status\"\u003e\u003c/a\u003eThe `status` block contains:\n" } }, "type": "object", @@ -96411,7 +96834,7 @@ }, "gcipSettings": { "$ref": "#/types/gcp:iap/SettingsAccessSettingsGcipSettings:SettingsAccessSettingsGcipSettings", - "description": "GCIP claims and endpoint configurations for 3p identity providers.\nStructure is documented below.\n" + "description": "GCIP claims and endpoint configurations for 3p identity providers.\n* Enabling gcipSetting significantly changes the way IAP authenticates users. Identity Platform does not support IAM, so IAP will not enforce any IAM policies for requests to your application.\nStructure is documented below.\n" }, "identitySources": { "type": "array", @@ -96480,7 +96903,7 @@ "properties": { "loginHint": { "type": "string", - "description": "Domain hint to send as hd=? parameter in OAuth request flow.\nEnables redirect to primary IDP by skipping Google's login screen.\n(https://developers.google.com/identity/protocols/OpenIDConnect#hd-param)\nNote: IAP does not verify that the id token's hd claim matches this value\nsince access behavior is managed by IAM policies.\n" + "description": "Domain hint to send as hd=? parameter in OAuth request flow.\nEnables redirect to primary IDP by skipping Google's login screen.\n(https://developers.google.com/identity/protocols/OpenIDConnect#hd-param)\nNote: IAP does not verify that the id token's hd claim matches this value\nsince access behavior is managed by IAM policies.\n* loginHint setting is not a replacement for access control. Always enforce an appropriate access policy if you want to restrict access to users outside your domain.\n" }, "programmaticClients": { "type": "array", @@ -96518,7 +96941,7 @@ "properties": { "oauth2": { "$ref": "#/types/gcp:iap/SettingsAccessSettingsWorkforceIdentitySettingsOauth2:SettingsAccessSettingsWorkforceIdentitySettingsOauth2", - "description": "OAuth 2.0 settings for IAP to perform OIDC flow with workforce identity\nfederation services.\nStructure is documented below.\n\n\n\u003ca name=\"nested_oauth2\"\u003e\u003c/a\u003eThe `oauth2` block supports:\n" + "description": "OAuth 2.0 settings for IAP to perform OIDC flow with workforce identity\nfederation services.\nStructure is documented below.\n\n\n\u003ca name=\"nested_access_settings_workforce_identity_settings_oauth2\"\u003e\u003c/a\u003eThe `oauth2` block supports:\n" }, "workforcePools": { "type": "string", @@ -97259,7 +97682,7 @@ "properties": { "enabled": { "type": "boolean", - "description": "Whether anonymous user auth is enabled for the project or not.\n\n\u003ca name=\"nested_hash_config\"\u003e\u003c/a\u003eThe `hash_config` block contains:\n" + "description": "Whether anonymous user auth is enabled for the project or not.\n\n\u003ca name=\"nested_sign_in_hash_config\"\u003e\u003c/a\u003eThe `hash_config` block contains:\n" } }, "type": "object", @@ -97424,7 +97847,7 @@ "items": { "$ref": "#/types/gcp:identityplatform/InboundSamlConfigSpConfigSpCertificate:InboundSamlConfigSpConfigSpCertificate" }, - "description": "(Output)\nThe IDP's certificate data to verify the signature in the SAMLResponse issued by the IDP.\nStructure is documented below.\n\n\n\u003ca name=\"nested_sp_certificates\"\u003e\u003c/a\u003eThe `sp_certificates` block contains:\n" + "description": "(Output)\nThe IDP's certificate data to verify the signature in the SAMLResponse issued by the IDP.\nStructure is documented below.\n\n\n\u003ca name=\"nested_sp_config_sp_certificates\"\u003e\u003c/a\u003eThe `sp_certificates` block contains:\n" }, "spEntityId": { "type": "string", @@ -97505,7 +97928,7 @@ "items": { "$ref": "#/types/gcp:identityplatform/TenantInboundSamlConfigSpConfigSpCertificate:TenantInboundSamlConfigSpConfigSpCertificate" }, - "description": "(Output)\nThe IDP's certificate data to verify the signature in the SAMLResponse issued by the IDP.\nStructure is documented below.\n\n\n\u003ca name=\"nested_sp_certificates\"\u003e\u003c/a\u003eThe `sp_certificates` block contains:\n" + "description": "(Output)\nThe IDP's certificate data to verify the signature in the SAMLResponse issued by the IDP.\nStructure is documented below.\n\n\n\u003ca name=\"nested_sp_config_sp_certificates\"\u003e\u003c/a\u003eThe `sp_certificates` block contains:\n" }, "spEntityId": { "type": "string", @@ -97754,7 +98177,7 @@ "properties": { "audience": { "type": "string", - "description": "Value for the \"aud\" claim.\n\n\u003ca name=\"nested_oauth2_client_credentials\"\u003e\u003c/a\u003eThe `oauth2_client_credentials` block supports:\n" + "description": "Value for the \"aud\" claim.\n\n\u003ca name=\"nested_auth_config_oauth2_client_credentials\"\u003e\u003c/a\u003eThe `oauth2_client_credentials` block supports:\n" }, "issuer": { "type": "string", @@ -97807,7 +98230,7 @@ "properties": { "secretVersion": { "type": "string", - "description": "The resource name of the secret version in the format,\nformat as: projects/*/secrets/*/versions/*.\n\n\u003ca name=\"nested_oauth2_auth_code_flow\"\u003e\u003c/a\u003eThe `oauth2_auth_code_flow` block supports:\n" + "description": "The resource name of the secret version in the format,\nformat as: projects/*/secrets/*/versions/*.\n\n\u003ca name=\"nested_auth_config_oauth2_auth_code_flow\"\u003e\u003c/a\u003eThe `oauth2_auth_code_flow` block supports:\n" } }, "type": "object", @@ -101811,7 +102234,7 @@ "properties": { "cloudFunctionV2": { "$ref": "#/types/gcp:monitoring/UptimeCheckConfigSyntheticMonitorCloudFunctionV2:UptimeCheckConfigSyntheticMonitorCloudFunctionV2", - "description": "Target a Synthetic Monitor GCFv2 Instance\nStructure is documented below.\n\n\n\u003ca name=\"nested_cloud_function_v2\"\u003e\u003c/a\u003eThe `cloud_function_v2` block supports:\n", + "description": "Target a Synthetic Monitor GCFv2 Instance\nStructure is documented below.\n\n\n\u003ca name=\"nested_synthetic_monitor_cloud_function_v2\"\u003e\u003c/a\u003eThe `cloud_function_v2` block supports:\n", "willReplaceOnChanges": true } }, @@ -106560,7 +106983,7 @@ "properties": { "email": { "type": "string", - "description": "The email address used by Oracle to send notifications regarding databases\nand infrastructure.\n\n\u003ca name=\"nested_apex_details\"\u003e\u003c/a\u003eThe `apex_details` block contains:\n", + "description": "The email address used by Oracle to send notifications regarding databases\nand infrastructure.\n\n\u003ca name=\"nested_properties_apex_details\"\u003e\u003c/a\u003eThe `apex_details` block contains:\n", "willReplaceOnChanges": true } }, @@ -119521,6 +119944,10 @@ "type": "string", "description": "Specify how the server certificate's Certificate Authority is hosted. Supported values are `GOOGLE_MANAGED_INTERNAL_CA` and `GOOGLE_MANAGED_CAS_CA`.\n" }, + "serverCaPool": { + "type": "string", + "description": "The resource name of the server CA pool for an instance with `CUSTOMER_MANAGED_CAS_CA` as the `server_ca_mode`.\n" + }, "sslMode": { "type": "string", "description": "Specify how SSL connection should be enforced in DB connections. Supported values are `ALLOW_UNENCRYPTED_AND_ENCRYPTED`, `ENCRYPTED_ONLY`, and `TRUSTED_CLIENT_CERTIFICATE_REQUIRED` (not supported for SQL Server). See [API reference doc](https://cloud.google.com/sql/docs/postgres/admin-api/rest/v1/instances#ipconfiguration) for details.\n" @@ -120424,6 +120851,10 @@ "type": "string", "description": "Specify how the server certificate's Certificate Authority is hosted.\n" }, + "serverCaPool": { + "type": "string", + "description": "The resource name of the server CA pool for an instance with \"CUSTOMER_MANAGED_CAS_CA\" as the \"server_ca_mode\".\n" + }, "sslMode": { "type": "string", "description": "Specify how SSL connection should be enforced in DB connections.\n" @@ -120438,6 +120869,7 @@ "privateNetwork", "pscConfigs", "serverCaMode", + "serverCaPool", "sslMode" ], "language": { @@ -121436,6 +121868,10 @@ "type": "string", "description": "Specify how the server certificate's Certificate Authority is hosted.\n" }, + "serverCaPool": { + "type": "string", + "description": "The resource name of the server CA pool for an instance with \"CUSTOMER_MANAGED_CAS_CA\" as the \"server_ca_mode\".\n" + }, "sslMode": { "type": "string", "description": "Specify how SSL connection should be enforced in DB connections.\n" @@ -121450,6 +121886,7 @@ "privateNetwork", "pscConfigs", "serverCaMode", + "serverCaPool", "sslMode" ], "language": { @@ -124162,7 +124599,7 @@ "properties": { "h264": { "$ref": "#/types/gcp:transcoder/JobConfigElementaryStreamVideoStreamH264:JobConfigElementaryStreamVideoStreamH264", - "description": "H264 codec settings\nStructure is documented below.\n\n\n\u003ca name=\"nested_h264\"\u003e\u003c/a\u003eThe `h264` block supports:\n", + "description": "H264 codec settings\nStructure is documented below.\n\n\n\u003ca name=\"nested_config_elementary_streams_elementary_streams_video_stream_h264\"\u003e\u003c/a\u003eThe `h264` block supports:\n", "willReplaceOnChanges": true } }, @@ -124891,7 +125328,7 @@ "properties": { "h264": { "$ref": "#/types/gcp:transcoder/JobTemplateConfigElementaryStreamVideoStreamH264:JobTemplateConfigElementaryStreamVideoStreamH264", - "description": "H264 codec settings\nStructure is documented below.\n\n\n\u003ca name=\"nested_h264\"\u003e\u003c/a\u003eThe `h264` block supports:\n", + "description": "H264 codec settings\nStructure is documented below.\n\n\n\u003ca name=\"nested_config_elementary_streams_elementary_streams_video_stream_h264\"\u003e\u003c/a\u003eThe `h264` block supports:\n", "willReplaceOnChanges": true } }, @@ -142620,6 +143057,154 @@ "type": "object" } }, + "gcp:beyondcorp/securityGateway:SecurityGateway": { + "description": "Deployment of Security Gateway.\n\n\n\n## Example Usage\n\n### Beyondcorp Security Gateway Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.beyondcorp.SecurityGateway(\"example\", {\n securityGatewayId: \"default\",\n location: \"global\",\n displayName: \"My Security Gateway resource\",\n hubs: [{\n region: \"us-central1\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.beyondcorp.SecurityGateway(\"example\",\n security_gateway_id=\"default\",\n location=\"global\",\n display_name=\"My Security Gateway resource\",\n hubs=[{\n \"region\": \"us-central1\",\n }])\n```\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.Beyondcorp.SecurityGateway(\"example\", new()\n {\n SecurityGatewayId = \"default\",\n Location = \"global\",\n DisplayName = \"My Security Gateway resource\",\n Hubs = new[]\n {\n new Gcp.Beyondcorp.Inputs.SecurityGatewayHubArgs\n {\n Region = \"us-central1\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/beyondcorp\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := beyondcorp.NewSecurityGateway(ctx, \"example\", \u0026beyondcorp.SecurityGatewayArgs{\n\t\t\tSecurityGatewayId: pulumi.String(\"default\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDisplayName: pulumi.String(\"My Security Gateway resource\"),\n\t\t\tHubs: beyondcorp.SecurityGatewayHubArray{\n\t\t\t\t\u0026beyondcorp.SecurityGatewayHubArgs{\n\t\t\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.beyondcorp.SecurityGateway;\nimport com.pulumi.gcp.beyondcorp.SecurityGatewayArgs;\nimport com.pulumi.gcp.beyondcorp.inputs.SecurityGatewayHubArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 SecurityGateway(\"example\", SecurityGatewayArgs.builder()\n .securityGatewayId(\"default\")\n .location(\"global\")\n .displayName(\"My Security Gateway resource\")\n .hubs(SecurityGatewayHubArgs.builder()\n .region(\"us-central1\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:beyondcorp:SecurityGateway\n properties:\n securityGatewayId: default\n location: global\n displayName: My Security Gateway resource\n hubs:\n - region: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSecurityGateway can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/securityGateways/{{security_gateway_id}}`\n\n* `{{project}}/{{location}}/{{security_gateway_id}}`\n\n* `{{location}}/{{security_gateway_id}}`\n\nWhen using the `pulumi import` command, SecurityGateway can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:beyondcorp/securityGateway:SecurityGateway default projects/{{project}}/locations/{{location}}/securityGateways/{{security_gateway_id}}\n```\n\n```sh\n$ pulumi import gcp:beyondcorp/securityGateway:SecurityGateway default {{project}}/{{location}}/{{security_gateway_id}}\n```\n\n```sh\n$ pulumi import gcp:beyondcorp/securityGateway:SecurityGateway default {{location}}/{{security_gateway_id}}\n```\n\n", + "properties": { + "createTime": { + "type": "string", + "description": "Output only. Timestamp when the resource was created.\n" + }, + "displayName": { + "type": "string", + "description": "Optional. An arbitrary user-provided name for the SecurityGateway.\nCannot exceed 64 characters.\n" + }, + "externalIps": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Output only. IP addresses that will be used for establishing\nconnection to the endpoints.\n" + }, + "hubs": { + "type": "array", + "items": { + "$ref": "#/types/gcp:beyondcorp/SecurityGatewayHub:SecurityGatewayHub" + }, + "description": "Optional. Map of Hubs that represents regional data path deployment with GCP region\nas a key.\nStructure is documented below.\n" + }, + "location": { + "type": "string", + "description": "Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122.\n" + }, + "name": { + "type": "string", + "description": "Identifier. Name of the resource.\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" + }, + "securityGatewayId": { + "type": "string", + "description": "Optional. User-settable SecurityGateway resource ID.\n* Must start with a letter.\n* Must contain between 4-63 characters from `/a-z-/`.\n* Must end with a number or letter.\n\n\n- - -\n" + }, + "state": { + "type": "string", + "description": "Output only. The operational state of the SecurityGateway.\nPossible values:\nSTATE_UNSPECIFIED\nCREATING\nUPDATING\nDELETING\nRUNNING\nDOWN\nERROR\n" + }, + "updateTime": { + "type": "string", + "description": "Output only. Timestamp when the resource was last modified.\n" + } + }, + "required": [ + "createTime", + "externalIps", + "location", + "name", + "project", + "securityGatewayId", + "state", + "updateTime" + ], + "inputProperties": { + "displayName": { + "type": "string", + "description": "Optional. An arbitrary user-provided name for the SecurityGateway.\nCannot exceed 64 characters.\n" + }, + "hubs": { + "type": "array", + "items": { + "$ref": "#/types/gcp:beyondcorp/SecurityGatewayHub:SecurityGatewayHub" + }, + "description": "Optional. Map of Hubs that represents regional data path deployment with GCP region\nas a key.\nStructure is documented below.\n" + }, + "location": { + "type": "string", + "description": "Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122.\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 + }, + "securityGatewayId": { + "type": "string", + "description": "Optional. User-settable SecurityGateway resource ID.\n* Must start with a letter.\n* Must contain between 4-63 characters from `/a-z-/`.\n* Must end with a number or letter.\n\n\n- - -\n", + "willReplaceOnChanges": true + } + }, + "requiredInputs": [ + "location", + "securityGatewayId" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering SecurityGateway resources.\n", + "properties": { + "createTime": { + "type": "string", + "description": "Output only. Timestamp when the resource was created.\n" + }, + "displayName": { + "type": "string", + "description": "Optional. An arbitrary user-provided name for the SecurityGateway.\nCannot exceed 64 characters.\n" + }, + "externalIps": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Output only. IP addresses that will be used for establishing\nconnection to the endpoints.\n" + }, + "hubs": { + "type": "array", + "items": { + "$ref": "#/types/gcp:beyondcorp/SecurityGatewayHub:SecurityGatewayHub" + }, + "description": "Optional. Map of Hubs that represents regional data path deployment with GCP region\nas a key.\nStructure is documented below.\n" + }, + "location": { + "type": "string", + "description": "Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122.\n", + "willReplaceOnChanges": true + }, + "name": { + "type": "string", + "description": "Identifier. Name of the resource.\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 + }, + "securityGatewayId": { + "type": "string", + "description": "Optional. User-settable SecurityGateway resource ID.\n* Must start with a letter.\n* Must contain between 4-63 characters from `/a-z-/`.\n* Must end with a number or letter.\n\n\n- - -\n", + "willReplaceOnChanges": true + }, + "state": { + "type": "string", + "description": "Output only. The operational state of the SecurityGateway.\nPossible values:\nSTATE_UNSPECIFIED\nCREATING\nUPDATING\nDELETING\nRUNNING\nDOWN\nERROR\n" + }, + "updateTime": { + "type": "string", + "description": "Output only. Timestamp when the resource was last modified.\n" + } + }, + "type": "object" + } + }, "gcp:biglake/catalog:Catalog": { "description": "Catalogs are top-level containers for Databases and Tables.\n\n\nTo get more information about Catalog, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/biglake/rest/v1/projects.locations.catalogs)\n* How-to Guides\n * [Manage open source metadata with BigLake Metastore](https://cloud.google.com/bigquery/docs/manage-open-source-metadata#create_catalogs)\n\n## Example Usage\n\n### Bigquery Biglake Catalog\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.biglake.Catalog(\"default\", {\n name: \"my_catalog\",\n location: \"US\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.biglake.Catalog(\"default\",\n name=\"my_catalog\",\n location=\"US\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.BigLake.Catalog(\"default\", new()\n {\n Name = \"my_catalog\",\n Location = \"US\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/biglake\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := biglake.NewCatalog(ctx, \"default\", \u0026biglake.CatalogArgs{\n\t\t\tName: pulumi.String(\"my_catalog\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.biglake.Catalog;\nimport com.pulumi.gcp.biglake.CatalogArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Catalog(\"default\", CatalogArgs.builder()\n .name(\"my_catalog\")\n .location(\"US\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:biglake:Catalog\n properties:\n name: my_catalog\n location: US\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCatalog can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/catalogs/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Catalog can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:biglake/catalog:Catalog default projects/{{project}}/locations/{{location}}/catalogs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:biglake/catalog:Catalog default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:biglake/catalog:Catalog default {{location}}/{{name}}\n```\n\n", "properties": { @@ -152992,8 +153577,368 @@ "type": "object" } }, + "gcp:chronicle/dataAccessLabel:DataAccessLabel": { + "description": "## Example Usage\n\n### Chronicle Dataaccesslabel 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.DataAccessLabel(\"example\", {\n location: \"us\",\n instance: \"00000000-0000-0000-0000-000000000000\",\n dataAccessLabelId: \"label-id\",\n udmQuery: \"principal.hostname=\\\"google.com\\\"\",\n description: \"label-description\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.chronicle.DataAccessLabel(\"example\",\n location=\"us\",\n instance=\"00000000-0000-0000-0000-000000000000\",\n data_access_label_id=\"label-id\",\n udm_query=\"principal.hostname=\\\"google.com\\\"\",\n description=\"label-description\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.Chronicle.DataAccessLabel(\"example\", new()\n {\n Location = \"us\",\n Instance = \"00000000-0000-0000-0000-000000000000\",\n DataAccessLabelId = \"label-id\",\n UdmQuery = \"principal.hostname=\\\"google.com\\\"\",\n Description = \"label-description\",\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.NewDataAccessLabel(ctx, \"example\", \u0026chronicle.DataAccessLabelArgs{\n\t\t\tLocation: pulumi.String(\"us\"),\n\t\t\tInstance: pulumi.String(\"00000000-0000-0000-0000-000000000000\"),\n\t\t\tDataAccessLabelId: pulumi.String(\"label-id\"),\n\t\t\tUdmQuery: pulumi.String(\"principal.hostname=\\\"google.com\\\"\"),\n\t\t\tDescription: pulumi.String(\"label-description\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.chronicle.DataAccessLabel;\nimport com.pulumi.gcp.chronicle.DataAccessLabelArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 DataAccessLabel(\"example\", DataAccessLabelArgs.builder()\n .location(\"us\")\n .instance(\"00000000-0000-0000-0000-000000000000\")\n .dataAccessLabelId(\"label-id\")\n .udmQuery(\"principal.hostname=\\\"google.com\\\"\")\n .description(\"label-description\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:chronicle:DataAccessLabel\n properties:\n location: us\n instance: 00000000-0000-0000-0000-000000000000\n dataAccessLabelId: label-id\n udmQuery: principal.hostname=\"google.com\"\n description: label-description\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDataAccessLabel can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/instances/{{instance}}/dataAccessLabels/{{data_access_label_id}}`\n\n* `{{project}}/{{location}}/{{instance}}/{{data_access_label_id}}`\n\n* `{{location}}/{{instance}}/{{data_access_label_id}}`\n\nWhen using the `pulumi import` command, DataAccessLabel can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:chronicle/dataAccessLabel:DataAccessLabel default projects/{{project}}/locations/{{location}}/instances/{{instance}}/dataAccessLabels/{{data_access_label_id}}\n```\n\n```sh\n$ pulumi import gcp:chronicle/dataAccessLabel:DataAccessLabel default {{project}}/{{location}}/{{instance}}/{{data_access_label_id}}\n```\n\n```sh\n$ pulumi import gcp:chronicle/dataAccessLabel:DataAccessLabel default {{location}}/{{instance}}/{{data_access_label_id}}\n```\n\n", + "properties": { + "author": { + "type": "string", + "description": "Output only. The user who created the data access label.\n" + }, + "createTime": { + "type": "string", + "description": "Output only. The time at which the data access label was created.\n" + }, + "dataAccessLabelId": { + "type": "string", + "description": "Required. The ID to use for the data access label, which will become the label's\ndisplay name and the final component of the label's resource name. It must\nonly contain ASCII lowercase letters, numbers, and dashes; it must begin\nwith a letter, and it must not exceed 1000 characters.\n\n\n- - -\n" + }, + "description": { + "type": "string", + "description": "Optional. A description of the data access label for a human reader.\n" + }, + "displayName": { + "type": "string", + "description": "Output only. The short name displayed for the label as it appears on event data. This is same as data access label id.\n" + }, + "instance": { + "type": "string", + "description": "The unique identifier for the Chronicle instance, which is the same as the customer ID.\n" + }, + "lastEditor": { + "type": "string", + "description": "Output only. The user who last updated the data access label.\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" + }, + "name": { + "type": "string", + "description": "The unique resource name of the data access label. This unique identifier is generated using values provided for the URL parameters.\nFormat:\nprojects/{project}/locations/{location}/instances/{instance}/dataAccessLabels/{data_access_label_id}\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" + }, + "udmQuery": { + "type": "string", + "description": "A UDM query over event data.\n" + }, + "updateTime": { + "type": "string", + "description": "Output only. The time at which the data access label was last updated.\n" + } + }, + "required": [ + "author", + "createTime", + "dataAccessLabelId", + "displayName", + "instance", + "lastEditor", + "location", + "name", + "project", + "udmQuery", + "updateTime" + ], + "inputProperties": { + "dataAccessLabelId": { + "type": "string", + "description": "Required. The ID to use for the data access label, which will become the label's\ndisplay name and the final component of the label's resource name. It must\nonly contain ASCII lowercase letters, numbers, and dashes; it must begin\nwith a letter, and it must not exceed 1000 characters.\n\n\n- - -\n", + "willReplaceOnChanges": true + }, + "description": { + "type": "string", + "description": "Optional. A description of the data access label for a human reader.\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 + }, + "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 + }, + "udmQuery": { + "type": "string", + "description": "A UDM query over event data.\n" + } + }, + "requiredInputs": [ + "dataAccessLabelId", + "instance", + "location", + "udmQuery" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering DataAccessLabel resources.\n", + "properties": { + "author": { + "type": "string", + "description": "Output only. The user who created the data access label.\n" + }, + "createTime": { + "type": "string", + "description": "Output only. The time at which the data access label was created.\n" + }, + "dataAccessLabelId": { + "type": "string", + "description": "Required. The ID to use for the data access label, which will become the label's\ndisplay name and the final component of the label's resource name. It must\nonly contain ASCII lowercase letters, numbers, and dashes; it must begin\nwith a letter, and it must not exceed 1000 characters.\n\n\n- - -\n", + "willReplaceOnChanges": true + }, + "description": { + "type": "string", + "description": "Optional. A description of the data access label for a human reader.\n" + }, + "displayName": { + "type": "string", + "description": "Output only. The short name displayed for the label as it appears on event data. This is same as data access label id.\n" + }, + "instance": { + "type": "string", + "description": "The unique identifier for the Chronicle instance, which is the same as the customer ID.\n", + "willReplaceOnChanges": true + }, + "lastEditor": { + "type": "string", + "description": "Output only. The user who last updated the data access label.\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", + "willReplaceOnChanges": true + }, + "name": { + "type": "string", + "description": "The unique resource name of the data access label. This unique identifier is generated using values provided for the URL parameters.\nFormat:\nprojects/{project}/locations/{location}/instances/{instance}/dataAccessLabels/{data_access_label_id}\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 + }, + "udmQuery": { + "type": "string", + "description": "A UDM query over event data.\n" + }, + "updateTime": { + "type": "string", + "description": "Output only. The time at which the data access label was last updated.\n" + } + }, + "type": "object" + } + }, + "gcp:chronicle/dataAccessScope:DataAccessScope": { + "description": "## Example Usage\n\n### Chronicle Dataaccessscope With Logtype\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.DataAccessScope(\"example\", {\n location: \"us\",\n instance: \"00000000-0000-0000-0000-000000000000\",\n dataAccessScopeId: \"scope-id\",\n description: \"scope-description\",\n allowedDataAccessLabels: [\n {\n logType: \"GCP_CLOUDAUDIT\",\n },\n {\n logType: \"GITHUB\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.chronicle.DataAccessScope(\"example\",\n location=\"us\",\n instance=\"00000000-0000-0000-0000-000000000000\",\n data_access_scope_id=\"scope-id\",\n description=\"scope-description\",\n allowed_data_access_labels=[\n {\n \"log_type\": \"GCP_CLOUDAUDIT\",\n },\n {\n \"log_type\": \"GITHUB\",\n },\n ])\n```\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.DataAccessScope(\"example\", new()\n {\n Location = \"us\",\n Instance = \"00000000-0000-0000-0000-000000000000\",\n DataAccessScopeId = \"scope-id\",\n Description = \"scope-description\",\n AllowedDataAccessLabels = new[]\n {\n new Gcp.Chronicle.Inputs.DataAccessScopeAllowedDataAccessLabelArgs\n {\n LogType = \"GCP_CLOUDAUDIT\",\n },\n new Gcp.Chronicle.Inputs.DataAccessScopeAllowedDataAccessLabelArgs\n {\n LogType = \"GITHUB\",\n },\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.NewDataAccessScope(ctx, \"example\", \u0026chronicle.DataAccessScopeArgs{\n\t\t\tLocation: pulumi.String(\"us\"),\n\t\t\tInstance: pulumi.String(\"00000000-0000-0000-0000-000000000000\"),\n\t\t\tDataAccessScopeId: pulumi.String(\"scope-id\"),\n\t\t\tDescription: pulumi.String(\"scope-description\"),\n\t\t\tAllowedDataAccessLabels: chronicle.DataAccessScopeAllowedDataAccessLabelArray{\n\t\t\t\t\u0026chronicle.DataAccessScopeAllowedDataAccessLabelArgs{\n\t\t\t\t\tLogType: pulumi.String(\"GCP_CLOUDAUDIT\"),\n\t\t\t\t},\n\t\t\t\t\u0026chronicle.DataAccessScopeAllowedDataAccessLabelArgs{\n\t\t\t\t\tLogType: pulumi.String(\"GITHUB\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.DataAccessScope;\nimport com.pulumi.gcp.chronicle.DataAccessScopeArgs;\nimport com.pulumi.gcp.chronicle.inputs.DataAccessScopeAllowedDataAccessLabelArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 DataAccessScope(\"example\", DataAccessScopeArgs.builder()\n .location(\"us\")\n .instance(\"00000000-0000-0000-0000-000000000000\")\n .dataAccessScopeId(\"scope-id\")\n .description(\"scope-description\")\n .allowedDataAccessLabels( \n DataAccessScopeAllowedDataAccessLabelArgs.builder()\n .logType(\"GCP_CLOUDAUDIT\")\n .build(),\n DataAccessScopeAllowedDataAccessLabelArgs.builder()\n .logType(\"GITHUB\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:chronicle:DataAccessScope\n properties:\n location: us\n instance: 00000000-0000-0000-0000-000000000000\n dataAccessScopeId: scope-id\n description: scope-description\n allowedDataAccessLabels:\n - logType: GCP_CLOUDAUDIT\n - logType: GITHUB\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Chronicle Dataaccessscope With Dataaccesslabel\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst customDataAccessLabel = new gcp.chronicle.DataAccessLabel(\"custom_data_access_label\", {\n location: \"us\",\n instance: \"00000000-0000-0000-0000-000000000000\",\n dataAccessLabelId: \"label-id\",\n udmQuery: \"principal.hostname=\\\"google.com\\\"\",\n});\nconst example = new gcp.chronicle.DataAccessScope(\"example\", {\n location: \"us\",\n instance: \"00000000-0000-0000-0000-000000000000\",\n dataAccessScopeId: \"scope-id\",\n description: \"scope-description\",\n allowedDataAccessLabels: [{\n dataAccessLabel: googleChronicleDataAccessLabel.customDataAccessLabel.dataAccessLabelId,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_data_access_label = gcp.chronicle.DataAccessLabel(\"custom_data_access_label\",\n location=\"us\",\n instance=\"00000000-0000-0000-0000-000000000000\",\n data_access_label_id=\"label-id\",\n udm_query=\"principal.hostname=\\\"google.com\\\"\")\nexample = gcp.chronicle.DataAccessScope(\"example\",\n location=\"us\",\n instance=\"00000000-0000-0000-0000-000000000000\",\n data_access_scope_id=\"scope-id\",\n description=\"scope-description\",\n allowed_data_access_labels=[{\n \"data_access_label\": google_chronicle_data_access_label[\"customDataAccessLabel\"][\"dataAccessLabelId\"],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customDataAccessLabel = new Gcp.Chronicle.DataAccessLabel(\"custom_data_access_label\", new()\n {\n Location = \"us\",\n Instance = \"00000000-0000-0000-0000-000000000000\",\n DataAccessLabelId = \"label-id\",\n UdmQuery = \"principal.hostname=\\\"google.com\\\"\",\n });\n\n var example = new Gcp.Chronicle.DataAccessScope(\"example\", new()\n {\n Location = \"us\",\n Instance = \"00000000-0000-0000-0000-000000000000\",\n DataAccessScopeId = \"scope-id\",\n Description = \"scope-description\",\n AllowedDataAccessLabels = new[]\n {\n new Gcp.Chronicle.Inputs.DataAccessScopeAllowedDataAccessLabelArgs\n {\n DataAccessLabel = googleChronicleDataAccessLabel.CustomDataAccessLabel.DataAccessLabelId,\n },\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.NewDataAccessLabel(ctx, \"custom_data_access_label\", \u0026chronicle.DataAccessLabelArgs{\n\t\t\tLocation: pulumi.String(\"us\"),\n\t\t\tInstance: pulumi.String(\"00000000-0000-0000-0000-000000000000\"),\n\t\t\tDataAccessLabelId: pulumi.String(\"label-id\"),\n\t\t\tUdmQuery: pulumi.String(\"principal.hostname=\\\"google.com\\\"\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = chronicle.NewDataAccessScope(ctx, \"example\", \u0026chronicle.DataAccessScopeArgs{\n\t\t\tLocation: pulumi.String(\"us\"),\n\t\t\tInstance: pulumi.String(\"00000000-0000-0000-0000-000000000000\"),\n\t\t\tDataAccessScopeId: pulumi.String(\"scope-id\"),\n\t\t\tDescription: pulumi.String(\"scope-description\"),\n\t\t\tAllowedDataAccessLabels: chronicle.DataAccessScopeAllowedDataAccessLabelArray{\n\t\t\t\t\u0026chronicle.DataAccessScopeAllowedDataAccessLabelArgs{\n\t\t\t\t\tDataAccessLabel: pulumi.Any(googleChronicleDataAccessLabel.CustomDataAccessLabel.DataAccessLabelId),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.DataAccessLabel;\nimport com.pulumi.gcp.chronicle.DataAccessLabelArgs;\nimport com.pulumi.gcp.chronicle.DataAccessScope;\nimport com.pulumi.gcp.chronicle.DataAccessScopeArgs;\nimport com.pulumi.gcp.chronicle.inputs.DataAccessScopeAllowedDataAccessLabelArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var customDataAccessLabel = new DataAccessLabel(\"customDataAccessLabel\", DataAccessLabelArgs.builder()\n .location(\"us\")\n .instance(\"00000000-0000-0000-0000-000000000000\")\n .dataAccessLabelId(\"label-id\")\n .udmQuery(\"principal.hostname=\\\"google.com\\\"\")\n .build());\n\n var example = new DataAccessScope(\"example\", DataAccessScopeArgs.builder()\n .location(\"us\")\n .instance(\"00000000-0000-0000-0000-000000000000\")\n .dataAccessScopeId(\"scope-id\")\n .description(\"scope-description\")\n .allowedDataAccessLabels(DataAccessScopeAllowedDataAccessLabelArgs.builder()\n .dataAccessLabel(googleChronicleDataAccessLabel.customDataAccessLabel().dataAccessLabelId())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customDataAccessLabel:\n type: gcp:chronicle:DataAccessLabel\n name: custom_data_access_label\n properties:\n location: us\n instance: 00000000-0000-0000-0000-000000000000\n dataAccessLabelId: label-id\n udmQuery: principal.hostname=\"google.com\"\n example:\n type: gcp:chronicle:DataAccessScope\n properties:\n location: us\n instance: 00000000-0000-0000-0000-000000000000\n dataAccessScopeId: scope-id\n description: scope-description\n allowedDataAccessLabels:\n - dataAccessLabel: ${googleChronicleDataAccessLabel.customDataAccessLabel.dataAccessLabelId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Chronicle Dataaccessscope With Asset Namespace\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.DataAccessScope(\"example\", {\n location: \"us\",\n instance: \"00000000-0000-0000-0000-000000000000\",\n dataAccessScopeId: \"scope-id\",\n description: \"scope-description\",\n allowedDataAccessLabels: [{\n assetNamespace: \"my-namespace\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.chronicle.DataAccessScope(\"example\",\n location=\"us\",\n instance=\"00000000-0000-0000-0000-000000000000\",\n data_access_scope_id=\"scope-id\",\n description=\"scope-description\",\n allowed_data_access_labels=[{\n \"asset_namespace\": \"my-namespace\",\n }])\n```\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.DataAccessScope(\"example\", new()\n {\n Location = \"us\",\n Instance = \"00000000-0000-0000-0000-000000000000\",\n DataAccessScopeId = \"scope-id\",\n Description = \"scope-description\",\n AllowedDataAccessLabels = new[]\n {\n new Gcp.Chronicle.Inputs.DataAccessScopeAllowedDataAccessLabelArgs\n {\n AssetNamespace = \"my-namespace\",\n },\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.NewDataAccessScope(ctx, \"example\", \u0026chronicle.DataAccessScopeArgs{\n\t\t\tLocation: pulumi.String(\"us\"),\n\t\t\tInstance: pulumi.String(\"00000000-0000-0000-0000-000000000000\"),\n\t\t\tDataAccessScopeId: pulumi.String(\"scope-id\"),\n\t\t\tDescription: pulumi.String(\"scope-description\"),\n\t\t\tAllowedDataAccessLabels: chronicle.DataAccessScopeAllowedDataAccessLabelArray{\n\t\t\t\t\u0026chronicle.DataAccessScopeAllowedDataAccessLabelArgs{\n\t\t\t\t\tAssetNamespace: pulumi.String(\"my-namespace\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.DataAccessScope;\nimport com.pulumi.gcp.chronicle.DataAccessScopeArgs;\nimport com.pulumi.gcp.chronicle.inputs.DataAccessScopeAllowedDataAccessLabelArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 DataAccessScope(\"example\", DataAccessScopeArgs.builder()\n .location(\"us\")\n .instance(\"00000000-0000-0000-0000-000000000000\")\n .dataAccessScopeId(\"scope-id\")\n .description(\"scope-description\")\n .allowedDataAccessLabels(DataAccessScopeAllowedDataAccessLabelArgs.builder()\n .assetNamespace(\"my-namespace\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:chronicle:DataAccessScope\n properties:\n location: us\n instance: 00000000-0000-0000-0000-000000000000\n dataAccessScopeId: scope-id\n description: scope-description\n allowedDataAccessLabels:\n - assetNamespace: my-namespace\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Chronicle Dataaccessscope With Ingestion Label\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.DataAccessScope(\"example\", {\n location: \"us\",\n instance: \"00000000-0000-0000-0000-000000000000\",\n dataAccessScopeId: \"scope-id\",\n description: \"scope-description\",\n allowedDataAccessLabels: [{\n ingestionLabel: {\n ingestionLabelKey: \"ingestion_key\",\n ingestionLabelValue: \"ingestion_value\",\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.chronicle.DataAccessScope(\"example\",\n location=\"us\",\n instance=\"00000000-0000-0000-0000-000000000000\",\n data_access_scope_id=\"scope-id\",\n description=\"scope-description\",\n allowed_data_access_labels=[{\n \"ingestion_label\": {\n \"ingestion_label_key\": \"ingestion_key\",\n \"ingestion_label_value\": \"ingestion_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 example = new Gcp.Chronicle.DataAccessScope(\"example\", new()\n {\n Location = \"us\",\n Instance = \"00000000-0000-0000-0000-000000000000\",\n DataAccessScopeId = \"scope-id\",\n Description = \"scope-description\",\n AllowedDataAccessLabels = new[]\n {\n new Gcp.Chronicle.Inputs.DataAccessScopeAllowedDataAccessLabelArgs\n {\n IngestionLabel = new Gcp.Chronicle.Inputs.DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs\n {\n IngestionLabelKey = \"ingestion_key\",\n IngestionLabelValue = \"ingestion_value\",\n },\n },\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.NewDataAccessScope(ctx, \"example\", \u0026chronicle.DataAccessScopeArgs{\n\t\t\tLocation: pulumi.String(\"us\"),\n\t\t\tInstance: pulumi.String(\"00000000-0000-0000-0000-000000000000\"),\n\t\t\tDataAccessScopeId: pulumi.String(\"scope-id\"),\n\t\t\tDescription: pulumi.String(\"scope-description\"),\n\t\t\tAllowedDataAccessLabels: chronicle.DataAccessScopeAllowedDataAccessLabelArray{\n\t\t\t\t\u0026chronicle.DataAccessScopeAllowedDataAccessLabelArgs{\n\t\t\t\t\tIngestionLabel: \u0026chronicle.DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs{\n\t\t\t\t\t\tIngestionLabelKey: pulumi.String(\"ingestion_key\"),\n\t\t\t\t\t\tIngestionLabelValue: pulumi.String(\"ingestion_value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.DataAccessScope;\nimport com.pulumi.gcp.chronicle.DataAccessScopeArgs;\nimport com.pulumi.gcp.chronicle.inputs.DataAccessScopeAllowedDataAccessLabelArgs;\nimport com.pulumi.gcp.chronicle.inputs.DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 DataAccessScope(\"example\", DataAccessScopeArgs.builder()\n .location(\"us\")\n .instance(\"00000000-0000-0000-0000-000000000000\")\n .dataAccessScopeId(\"scope-id\")\n .description(\"scope-description\")\n .allowedDataAccessLabels(DataAccessScopeAllowedDataAccessLabelArgs.builder()\n .ingestionLabel(DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs.builder()\n .ingestionLabelKey(\"ingestion_key\")\n .ingestionLabelValue(\"ingestion_value\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:chronicle:DataAccessScope\n properties:\n location: us\n instance: 00000000-0000-0000-0000-000000000000\n dataAccessScopeId: scope-id\n description: scope-description\n allowedDataAccessLabels:\n - ingestionLabel:\n ingestionLabelKey: ingestion_key\n ingestionLabelValue: ingestion_value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Chronicle Dataaccessscope With Denied Labels\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst customDataAccessLabel = new gcp.chronicle.DataAccessLabel(\"custom_data_access_label\", {\n location: \"us\",\n instance: \"00000000-0000-0000-0000-000000000000\",\n dataAccessLabelId: \"label-id\",\n udmQuery: \"principal.hostname=\\\"google.com\\\"\",\n});\nconst example = new gcp.chronicle.DataAccessScope(\"example\", {\n location: \"us\",\n instance: \"00000000-0000-0000-0000-000000000000\",\n dataAccessScopeId: \"scope-id\",\n description: \"scope-description\",\n allowAll: true,\n deniedDataAccessLabels: [\n {\n logType: \"GCP_CLOUDAUDIT\",\n },\n {\n dataAccessLabel: googleChronicleDataAccessLabel.customDataAccessLabel.dataAccessLabelId,\n },\n {\n ingestionLabel: {\n ingestionLabelKey: \"ingestion_key\",\n ingestionLabelValue: \"ingestion_value\",\n },\n },\n {\n assetNamespace: \"my-namespace\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_data_access_label = gcp.chronicle.DataAccessLabel(\"custom_data_access_label\",\n location=\"us\",\n instance=\"00000000-0000-0000-0000-000000000000\",\n data_access_label_id=\"label-id\",\n udm_query=\"principal.hostname=\\\"google.com\\\"\")\nexample = gcp.chronicle.DataAccessScope(\"example\",\n location=\"us\",\n instance=\"00000000-0000-0000-0000-000000000000\",\n data_access_scope_id=\"scope-id\",\n description=\"scope-description\",\n allow_all=True,\n denied_data_access_labels=[\n {\n \"log_type\": \"GCP_CLOUDAUDIT\",\n },\n {\n \"data_access_label\": google_chronicle_data_access_label[\"customDataAccessLabel\"][\"dataAccessLabelId\"],\n },\n {\n \"ingestion_label\": {\n \"ingestion_label_key\": \"ingestion_key\",\n \"ingestion_label_value\": \"ingestion_value\",\n },\n },\n {\n \"asset_namespace\": \"my-namespace\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customDataAccessLabel = new Gcp.Chronicle.DataAccessLabel(\"custom_data_access_label\", new()\n {\n Location = \"us\",\n Instance = \"00000000-0000-0000-0000-000000000000\",\n DataAccessLabelId = \"label-id\",\n UdmQuery = \"principal.hostname=\\\"google.com\\\"\",\n });\n\n var example = new Gcp.Chronicle.DataAccessScope(\"example\", new()\n {\n Location = \"us\",\n Instance = \"00000000-0000-0000-0000-000000000000\",\n DataAccessScopeId = \"scope-id\",\n Description = \"scope-description\",\n AllowAll = true,\n DeniedDataAccessLabels = new[]\n {\n new Gcp.Chronicle.Inputs.DataAccessScopeDeniedDataAccessLabelArgs\n {\n LogType = \"GCP_CLOUDAUDIT\",\n },\n new Gcp.Chronicle.Inputs.DataAccessScopeDeniedDataAccessLabelArgs\n {\n DataAccessLabel = googleChronicleDataAccessLabel.CustomDataAccessLabel.DataAccessLabelId,\n },\n new Gcp.Chronicle.Inputs.DataAccessScopeDeniedDataAccessLabelArgs\n {\n IngestionLabel = new Gcp.Chronicle.Inputs.DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs\n {\n IngestionLabelKey = \"ingestion_key\",\n IngestionLabelValue = \"ingestion_value\",\n },\n },\n new Gcp.Chronicle.Inputs.DataAccessScopeDeniedDataAccessLabelArgs\n {\n AssetNamespace = \"my-namespace\",\n },\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.NewDataAccessLabel(ctx, \"custom_data_access_label\", \u0026chronicle.DataAccessLabelArgs{\n\t\t\tLocation: pulumi.String(\"us\"),\n\t\t\tInstance: pulumi.String(\"00000000-0000-0000-0000-000000000000\"),\n\t\t\tDataAccessLabelId: pulumi.String(\"label-id\"),\n\t\t\tUdmQuery: pulumi.String(\"principal.hostname=\\\"google.com\\\"\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = chronicle.NewDataAccessScope(ctx, \"example\", \u0026chronicle.DataAccessScopeArgs{\n\t\t\tLocation: pulumi.String(\"us\"),\n\t\t\tInstance: pulumi.String(\"00000000-0000-0000-0000-000000000000\"),\n\t\t\tDataAccessScopeId: pulumi.String(\"scope-id\"),\n\t\t\tDescription: pulumi.String(\"scope-description\"),\n\t\t\tAllowAll: pulumi.Bool(true),\n\t\t\tDeniedDataAccessLabels: chronicle.DataAccessScopeDeniedDataAccessLabelArray{\n\t\t\t\t\u0026chronicle.DataAccessScopeDeniedDataAccessLabelArgs{\n\t\t\t\t\tLogType: pulumi.String(\"GCP_CLOUDAUDIT\"),\n\t\t\t\t},\n\t\t\t\t\u0026chronicle.DataAccessScopeDeniedDataAccessLabelArgs{\n\t\t\t\t\tDataAccessLabel: pulumi.Any(googleChronicleDataAccessLabel.CustomDataAccessLabel.DataAccessLabelId),\n\t\t\t\t},\n\t\t\t\t\u0026chronicle.DataAccessScopeDeniedDataAccessLabelArgs{\n\t\t\t\t\tIngestionLabel: \u0026chronicle.DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs{\n\t\t\t\t\t\tIngestionLabelKey: pulumi.String(\"ingestion_key\"),\n\t\t\t\t\t\tIngestionLabelValue: pulumi.String(\"ingestion_value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026chronicle.DataAccessScopeDeniedDataAccessLabelArgs{\n\t\t\t\t\tAssetNamespace: pulumi.String(\"my-namespace\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.DataAccessLabel;\nimport com.pulumi.gcp.chronicle.DataAccessLabelArgs;\nimport com.pulumi.gcp.chronicle.DataAccessScope;\nimport com.pulumi.gcp.chronicle.DataAccessScopeArgs;\nimport com.pulumi.gcp.chronicle.inputs.DataAccessScopeDeniedDataAccessLabelArgs;\nimport com.pulumi.gcp.chronicle.inputs.DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var customDataAccessLabel = new DataAccessLabel(\"customDataAccessLabel\", DataAccessLabelArgs.builder()\n .location(\"us\")\n .instance(\"00000000-0000-0000-0000-000000000000\")\n .dataAccessLabelId(\"label-id\")\n .udmQuery(\"principal.hostname=\\\"google.com\\\"\")\n .build());\n\n var example = new DataAccessScope(\"example\", DataAccessScopeArgs.builder()\n .location(\"us\")\n .instance(\"00000000-0000-0000-0000-000000000000\")\n .dataAccessScopeId(\"scope-id\")\n .description(\"scope-description\")\n .allowAll(true)\n .deniedDataAccessLabels( \n DataAccessScopeDeniedDataAccessLabelArgs.builder()\n .logType(\"GCP_CLOUDAUDIT\")\n .build(),\n DataAccessScopeDeniedDataAccessLabelArgs.builder()\n .dataAccessLabel(googleChronicleDataAccessLabel.customDataAccessLabel().dataAccessLabelId())\n .build(),\n DataAccessScopeDeniedDataAccessLabelArgs.builder()\n .ingestionLabel(DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs.builder()\n .ingestionLabelKey(\"ingestion_key\")\n .ingestionLabelValue(\"ingestion_value\")\n .build())\n .build(),\n DataAccessScopeDeniedDataAccessLabelArgs.builder()\n .assetNamespace(\"my-namespace\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customDataAccessLabel:\n type: gcp:chronicle:DataAccessLabel\n name: custom_data_access_label\n properties:\n location: us\n instance: 00000000-0000-0000-0000-000000000000\n dataAccessLabelId: label-id\n udmQuery: principal.hostname=\"google.com\"\n example:\n type: gcp:chronicle:DataAccessScope\n properties:\n location: us\n instance: 00000000-0000-0000-0000-000000000000\n dataAccessScopeId: scope-id\n description: scope-description\n allowAll: true\n deniedDataAccessLabels:\n - logType: GCP_CLOUDAUDIT\n - dataAccessLabel: ${googleChronicleDataAccessLabel.customDataAccessLabel.dataAccessLabelId}\n - ingestionLabel:\n ingestionLabelKey: ingestion_key\n ingestionLabelValue: ingestion_value\n - assetNamespace: my-namespace\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDataAccessScope can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/instances/{{instance}}/dataAccessScopes/{{data_access_scope_id}}`\n\n* `{{project}}/{{location}}/{{instance}}/{{data_access_scope_id}}`\n\n* `{{location}}/{{instance}}/{{data_access_scope_id}}`\n\nWhen using the `pulumi import` command, DataAccessScope can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:chronicle/dataAccessScope:DataAccessScope default projects/{{project}}/locations/{{location}}/instances/{{instance}}/dataAccessScopes/{{data_access_scope_id}}\n```\n\n```sh\n$ pulumi import gcp:chronicle/dataAccessScope:DataAccessScope default {{project}}/{{location}}/{{instance}}/{{data_access_scope_id}}\n```\n\n```sh\n$ pulumi import gcp:chronicle/dataAccessScope:DataAccessScope default {{location}}/{{instance}}/{{data_access_scope_id}}\n```\n\n", + "properties": { + "allowAll": { + "type": "boolean", + "description": "Optional. Whether or not the scope allows all labels, allow_all and\nallowed_data_access_labels are mutually exclusive and one of them must be\npresent. denied_data_access_labels can still be used along with allow_all.\nWhen combined with denied_data_access_labels, access will be granted to all\ndata that doesn't have labels mentioned in denied_data_access_labels. E.g.:\nA customer with scope with denied labels A and B and allow_all will be able\nto see all data except data labeled with A and data labeled with B and data\nwith labels A and B.\n" + }, + "allowedDataAccessLabels": { + "type": "array", + "items": { + "$ref": "#/types/gcp:chronicle/DataAccessScopeAllowedDataAccessLabel:DataAccessScopeAllowedDataAccessLabel" + }, + "description": "The allowed labels for the scope. There has to be at\nleast one label allowed for the scope to be valid.\nThe logical operator for evaluation of the allowed labels is OR.\nEither allow_all or allowed_data_access_labels needs to be provided.\nE.g.: A customer with scope with allowed labels A and B will be able\nto see data with labeled with A or B or (A and B).\nStructure is documented below.\n" + }, + "author": { + "type": "string", + "description": "Output only. The user who created the data access scope.\n" + }, + "createTime": { + "type": "string", + "description": "Output only. The time at which the data access scope was created.\n" + }, + "dataAccessScopeId": { + "type": "string", + "description": "Required. The user provided scope id which will become the last part of the name\nof the scope resource.\nNeeds to be compliant with https://google.aip.dev/122\n\n\n- - -\n" + }, + "deniedDataAccessLabels": { + "type": "array", + "items": { + "$ref": "#/types/gcp:chronicle/DataAccessScopeDeniedDataAccessLabel:DataAccessScopeDeniedDataAccessLabel" + }, + "description": "Optional. The denied labels for the scope.\nThe logical operator for evaluation of the denied labels is AND.\nE.g.: A customer with scope with denied labels A and B won't be able\nto see data labeled with A and data labeled with B\nand data with labels A and B.\nStructure is documented below.\n" + }, + "description": { + "type": "string", + "description": "Optional. A description of the data access scope for a human reader.\n" + }, + "displayName": { + "type": "string", + "description": "Output only. The name to be used for display to customers of the data access scope.\n" + }, + "instance": { + "type": "string", + "description": "The unique identifier for the Chronicle instance, which is the same as the customer ID.\n" + }, + "lastEditor": { + "type": "string", + "description": "Output only. The user who last updated the data access scope.\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" + }, + "name": { + "type": "string", + "description": "The unique full name of the data access scope. This unique identifier is generated using values provided for the URL parameters.\nFormat:\nprojects/{project}/locations/{location}/instances/{instance}/dataAccessScopes/{data_access_scope_id}\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" + }, + "updateTime": { + "type": "string", + "description": "Output only. The time at which the data access scope was last updated.\n" + } + }, + "required": [ + "author", + "createTime", + "dataAccessScopeId", + "displayName", + "instance", + "lastEditor", + "location", + "name", + "project", + "updateTime" + ], + "inputProperties": { + "allowAll": { + "type": "boolean", + "description": "Optional. Whether or not the scope allows all labels, allow_all and\nallowed_data_access_labels are mutually exclusive and one of them must be\npresent. denied_data_access_labels can still be used along with allow_all.\nWhen combined with denied_data_access_labels, access will be granted to all\ndata that doesn't have labels mentioned in denied_data_access_labels. E.g.:\nA customer with scope with denied labels A and B and allow_all will be able\nto see all data except data labeled with A and data labeled with B and data\nwith labels A and B.\n" + }, + "allowedDataAccessLabels": { + "type": "array", + "items": { + "$ref": "#/types/gcp:chronicle/DataAccessScopeAllowedDataAccessLabel:DataAccessScopeAllowedDataAccessLabel" + }, + "description": "The allowed labels for the scope. There has to be at\nleast one label allowed for the scope to be valid.\nThe logical operator for evaluation of the allowed labels is OR.\nEither allow_all or allowed_data_access_labels needs to be provided.\nE.g.: A customer with scope with allowed labels A and B will be able\nto see data with labeled with A or B or (A and B).\nStructure is documented below.\n" + }, + "dataAccessScopeId": { + "type": "string", + "description": "Required. The user provided scope id which will become the last part of the name\nof the scope resource.\nNeeds to be compliant with https://google.aip.dev/122\n\n\n- - -\n", + "willReplaceOnChanges": true + }, + "deniedDataAccessLabels": { + "type": "array", + "items": { + "$ref": "#/types/gcp:chronicle/DataAccessScopeDeniedDataAccessLabel:DataAccessScopeDeniedDataAccessLabel" + }, + "description": "Optional. The denied labels for the scope.\nThe logical operator for evaluation of the denied labels is AND.\nE.g.: A customer with scope with denied labels A and B won't be able\nto see data labeled with A and data labeled with B\nand data with labels A and B.\nStructure is documented below.\n" + }, + "description": { + "type": "string", + "description": "Optional. A description of the data access scope for a human reader.\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 + }, + "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": [ + "dataAccessScopeId", + "instance", + "location" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering DataAccessScope resources.\n", + "properties": { + "allowAll": { + "type": "boolean", + "description": "Optional. Whether or not the scope allows all labels, allow_all and\nallowed_data_access_labels are mutually exclusive and one of them must be\npresent. denied_data_access_labels can still be used along with allow_all.\nWhen combined with denied_data_access_labels, access will be granted to all\ndata that doesn't have labels mentioned in denied_data_access_labels. E.g.:\nA customer with scope with denied labels A and B and allow_all will be able\nto see all data except data labeled with A and data labeled with B and data\nwith labels A and B.\n" + }, + "allowedDataAccessLabels": { + "type": "array", + "items": { + "$ref": "#/types/gcp:chronicle/DataAccessScopeAllowedDataAccessLabel:DataAccessScopeAllowedDataAccessLabel" + }, + "description": "The allowed labels for the scope. There has to be at\nleast one label allowed for the scope to be valid.\nThe logical operator for evaluation of the allowed labels is OR.\nEither allow_all or allowed_data_access_labels needs to be provided.\nE.g.: A customer with scope with allowed labels A and B will be able\nto see data with labeled with A or B or (A and B).\nStructure is documented below.\n" + }, + "author": { + "type": "string", + "description": "Output only. The user who created the data access scope.\n" + }, + "createTime": { + "type": "string", + "description": "Output only. The time at which the data access scope was created.\n" + }, + "dataAccessScopeId": { + "type": "string", + "description": "Required. The user provided scope id which will become the last part of the name\nof the scope resource.\nNeeds to be compliant with https://google.aip.dev/122\n\n\n- - -\n", + "willReplaceOnChanges": true + }, + "deniedDataAccessLabels": { + "type": "array", + "items": { + "$ref": "#/types/gcp:chronicle/DataAccessScopeDeniedDataAccessLabel:DataAccessScopeDeniedDataAccessLabel" + }, + "description": "Optional. The denied labels for the scope.\nThe logical operator for evaluation of the denied labels is AND.\nE.g.: A customer with scope with denied labels A and B won't be able\nto see data labeled with A and data labeled with B\nand data with labels A and B.\nStructure is documented below.\n" + }, + "description": { + "type": "string", + "description": "Optional. A description of the data access scope for a human reader.\n" + }, + "displayName": { + "type": "string", + "description": "Output only. The name to be used for display to customers of the data access scope.\n" + }, + "instance": { + "type": "string", + "description": "The unique identifier for the Chronicle instance, which is the same as the customer ID.\n", + "willReplaceOnChanges": true + }, + "lastEditor": { + "type": "string", + "description": "Output only. The user who last updated the data access scope.\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", + "willReplaceOnChanges": true + }, + "name": { + "type": "string", + "description": "The unique full name of the data access scope. This unique identifier is generated using values provided for the URL parameters.\nFormat:\nprojects/{project}/locations/{location}/instances/{instance}/dataAccessScopes/{data_access_scope_id}\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 + }, + "updateTime": { + "type": "string", + "description": "Output only. The time at which the data access scope was last updated.\n" + } + }, + "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", + "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-id\",\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-id\",\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-id\",\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-id\"),\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-id\")\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-id\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### Chronicle Watchlist Without Id\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 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 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 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\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 .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 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", @@ -153043,7 +153988,7 @@ }, "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" + "description": "Optional. The ID to use for the watchlist, which will become the final component of the watchlist's resource name. This\nvalue should be 4-63 characters, and valid characters are /a-z-/.\n" }, "watchlistUserPreferences": { "$ref": "#/types/gcp:chronicle/WatchlistWatchlistUserPreferences:WatchlistWatchlistUserPreferences", @@ -153096,7 +154041,7 @@ }, "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", + "description": "Optional. The ID to use for the watchlist, which will become the final component of the watchlist's resource name. This\nvalue should be 4-63 characters, and valid characters are /a-z-/.\n", "willReplaceOnChanges": true }, "watchlistUserPreferences": { @@ -153108,8 +154053,7 @@ "displayName", "entityPopulationMechanism", "instance", - "location", - "watchlistId" + "location" ], "stateInputs": { "description": "Input properties used for looking up and filtering Watchlist resources.\n", @@ -153165,7 +154109,7 @@ }, "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", + "description": "Optional. The ID to use for the watchlist, which will become the final component of the watchlist's resource name. This\nvalue should be 4-63 characters, and valid characters are /a-z-/.\n", "willReplaceOnChanges": true }, "watchlistUserPreferences": { @@ -159066,6 +160010,70 @@ "type": "object" } }, + "gcp:cloudquota/sQuotaAdjusterSettings:SQuotaAdjusterSettings": { + "description": "## Example Usage\n\n### Cloudquotas Quota Adjuster Settings Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst adjusterSettings = new gcp.cloudquota.SQuotaAdjusterSettings(\"adjuster_settings\", {\n parent: \"projects/104740170505\",\n enablement: \"ENABLED\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadjuster_settings = gcp.cloudquota.SQuotaAdjusterSettings(\"adjuster_settings\",\n parent=\"projects/104740170505\",\n enablement=\"ENABLED\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var adjusterSettings = new Gcp.CloudQuota.SQuotaAdjusterSettings(\"adjuster_settings\", new()\n {\n Parent = \"projects/104740170505\",\n Enablement = \"ENABLED\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudquota\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudquota.NewSQuotaAdjusterSettings(ctx, \"adjuster_settings\", \u0026cloudquota.SQuotaAdjusterSettingsArgs{\n\t\t\tParent: pulumi.String(\"projects/104740170505\"),\n\t\t\tEnablement: pulumi.String(\"ENABLED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudquota.SQuotaAdjusterSettings;\nimport com.pulumi.gcp.cloudquota.SQuotaAdjusterSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var adjusterSettings = new SQuotaAdjusterSettings(\"adjusterSettings\", SQuotaAdjusterSettingsArgs.builder()\n .parent(\"projects/104740170505\")\n .enablement(\"ENABLED\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n adjusterSettings:\n type: gcp:cloudquota:SQuotaAdjusterSettings\n name: adjuster_settings\n properties:\n parent: projects/104740170505\n enablement: ENABLED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nQuotaAdjusterSettings can be imported using any of these accepted formats:\n\n* `{{parent}}/locations/global/quotaAdjusterSettings`\n\nWhen using the `pulumi import` command, QuotaAdjusterSettings can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudquota/sQuotaAdjusterSettings:SQuotaAdjusterSettings default {{parent}}/locations/global/quotaAdjusterSettings\n```\n\n", + "properties": { + "effectiveContainer": { + "type": "string", + "description": "Fields to capture the hierarchy enablement.\nThe container (org/folder/project) that determines if the quota adjuster is set for this project/folder/org. We use the nearest-ancestor to determine the effective container.\nThe nearest ancestor (including this container) with `enabled` set (either true or false) will be returned.\n" + }, + "effectiveEnablement": { + "type": "string", + "description": "Based on the effective container`s setting above, determines Whether this container has the quota adjuster enabled.\n" + }, + "enablement": { + "type": "string", + "description": "Required. The configured value of the enablement at the given resource.\nPossible values are: `ENABLED`, `DISABLED`.\n" + }, + "parent": { + "type": "string", + "description": "The parent of the quota preference. Allowed parents are \"projects/[project-id / number]\" or \"folders/[folder-id / number]\" or \"organizations/[org-id / number]\".\n\n\n- - -\n" + } + }, + "required": [ + "effectiveContainer", + "effectiveEnablement", + "enablement", + "parent" + ], + "inputProperties": { + "enablement": { + "type": "string", + "description": "Required. The configured value of the enablement at the given resource.\nPossible values are: `ENABLED`, `DISABLED`.\n" + }, + "parent": { + "type": "string", + "description": "The parent of the quota preference. Allowed parents are \"projects/[project-id / number]\" or \"folders/[folder-id / number]\" or \"organizations/[org-id / number]\".\n\n\n- - -\n", + "willReplaceOnChanges": true + } + }, + "requiredInputs": [ + "enablement" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering SQuotaAdjusterSettings resources.\n", + "properties": { + "effectiveContainer": { + "type": "string", + "description": "Fields to capture the hierarchy enablement.\nThe container (org/folder/project) that determines if the quota adjuster is set for this project/folder/org. We use the nearest-ancestor to determine the effective container.\nThe nearest ancestor (including this container) with `enabled` set (either true or false) will be returned.\n" + }, + "effectiveEnablement": { + "type": "string", + "description": "Based on the effective container`s setting above, determines Whether this container has the quota adjuster enabled.\n" + }, + "enablement": { + "type": "string", + "description": "Required. The configured value of the enablement at the given resource.\nPossible values are: `ENABLED`, `DISABLED`.\n" + }, + "parent": { + "type": "string", + "description": "The parent of the quota preference. Allowed parents are \"projects/[project-id / number]\" or \"folders/[folder-id / number]\" or \"organizations/[org-id / number]\".\n\n\n- - -\n", + "willReplaceOnChanges": true + } + }, + "type": "object" + } + }, "gcp:cloudquota/sQuotaPreference:SQuotaPreference": { "description": "QuotaPreference represents the preferred quota configuration specified for a project, folder or organization. There is only one QuotaPreference resource for a quota value targeting a unique set of dimensions.\n\n\nTo get more information about QuotaPreference, see:\n\n* [API documentation](https://cloud.google.com/docs/quotas/reference/rest/v1/projects.locations.quotaPreferences)\n* How-to Guides\n * [Cloud Quotas Overview](https://cloud.google.com/docs/quotas/overview)\n\n## Example Usage\n\n### Cloudquotas Quota Preference Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst preference = new gcp.cloudquota.SQuotaPreference(\"preference\", {\n parent: \"projects/my-project-name\",\n name: \"compute_googleapis_com-CPUS-per-project_us-east1\",\n dimensions: {\n region: \"us-east1\",\n },\n service: \"compute.googleapis.com\",\n quotaId: \"CPUS-per-project-region\",\n contactEmail: \"testuser@gmail.com\",\n quotaConfig: {\n preferredValue: \"200\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npreference = gcp.cloudquota.SQuotaPreference(\"preference\",\n parent=\"projects/my-project-name\",\n name=\"compute_googleapis_com-CPUS-per-project_us-east1\",\n dimensions={\n \"region\": \"us-east1\",\n },\n service=\"compute.googleapis.com\",\n quota_id=\"CPUS-per-project-region\",\n contact_email=\"testuser@gmail.com\",\n quota_config={\n \"preferred_value\": \"200\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var preference = new Gcp.CloudQuota.SQuotaPreference(\"preference\", new()\n {\n Parent = \"projects/my-project-name\",\n Name = \"compute_googleapis_com-CPUS-per-project_us-east1\",\n Dimensions = \n {\n { \"region\", \"us-east1\" },\n },\n Service = \"compute.googleapis.com\",\n QuotaId = \"CPUS-per-project-region\",\n ContactEmail = \"testuser@gmail.com\",\n QuotaConfig = new Gcp.CloudQuota.Inputs.SQuotaPreferenceQuotaConfigArgs\n {\n PreferredValue = \"200\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudquota\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudquota.NewSQuotaPreference(ctx, \"preference\", \u0026cloudquota.SQuotaPreferenceArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tName: pulumi.String(\"compute_googleapis_com-CPUS-per-project_us-east1\"),\n\t\t\tDimensions: pulumi.StringMap{\n\t\t\t\t\"region\": pulumi.String(\"us-east1\"),\n\t\t\t},\n\t\t\tService: pulumi.String(\"compute.googleapis.com\"),\n\t\t\tQuotaId: pulumi.String(\"CPUS-per-project-region\"),\n\t\t\tContactEmail: pulumi.String(\"testuser@gmail.com\"),\n\t\t\tQuotaConfig: \u0026cloudquota.SQuotaPreferenceQuotaConfigArgs{\n\t\t\t\tPreferredValue: pulumi.String(\"200\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudquota.SQuotaPreference;\nimport com.pulumi.gcp.cloudquota.SQuotaPreferenceArgs;\nimport com.pulumi.gcp.cloudquota.inputs.SQuotaPreferenceQuotaConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var preference = new SQuotaPreference(\"preference\", SQuotaPreferenceArgs.builder()\n .parent(\"projects/my-project-name\")\n .name(\"compute_googleapis_com-CPUS-per-project_us-east1\")\n .dimensions(Map.of(\"region\", \"us-east1\"))\n .service(\"compute.googleapis.com\")\n .quotaId(\"CPUS-per-project-region\")\n .contactEmail(\"testuser@gmail.com\")\n .quotaConfig(SQuotaPreferenceQuotaConfigArgs.builder()\n .preferredValue(200)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n preference:\n type: gcp:cloudquota:SQuotaPreference\n properties:\n parent: projects/my-project-name\n name: compute_googleapis_com-CPUS-per-project_us-east1\n dimensions:\n region: us-east1\n service: compute.googleapis.com\n quotaId: CPUS-per-project-region\n contactEmail: testuser@gmail.com\n quotaConfig:\n preferredValue: 200\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nQuotaPreference can be imported using any of these accepted formats:\n\n* `{{parent}}/locations/global/quotaPreferences/{{name}}`\n\nWhen using the `pulumi import` command, QuotaPreference can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudquota/sQuotaPreference:SQuotaPreference default {{parent}}/locations/global/quotaPreferences/{{name}}\n```\n\n", "properties": { @@ -171020,7 +172028,7 @@ } }, "gcp:compute/instanceGroupManager:InstanceGroupManager": { - "description": "The Google Compute Engine Instance Group Manager API creates and manages pools\nof homogeneous Compute Engine virtual machine instances from a common instance\ntemplate. For more information, see [the official documentation](https://cloud.google.com/compute/docs/instance-groups/manager)\nand [API](https://cloud.google.com/compute/docs/reference/latest/instanceGroupManagers)\n\n\u003e **Note:** Use [gcp.compute.RegionInstanceGroupManager](https://www.terraform.io/docs/providers/google/r/compute_region_instance_group_manager.html) to create a regional (multi-zone) instance group manager.\n\n## Example Usage\n\n### With Top Level Instance Template (`Google` Provider)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst autohealing = new gcp.compute.HealthCheck(\"autohealing\", {\n name: \"autohealing-health-check\",\n checkIntervalSec: 5,\n timeoutSec: 5,\n healthyThreshold: 2,\n unhealthyThreshold: 10,\n httpHealthCheck: {\n requestPath: \"/healthz\",\n port: 8080,\n },\n});\nconst appserver = new gcp.compute.InstanceGroupManager(\"appserver\", {\n name: \"appserver-igm\",\n baseInstanceName: \"app\",\n zone: \"us-central1-a\",\n versions: [{\n instanceTemplate: appserverGoogleComputeInstanceTemplate.selfLinkUnique,\n }],\n allInstancesConfig: {\n metadata: {\n metadata_key: \"metadata_value\",\n },\n labels: {\n label_key: \"label_value\",\n },\n },\n targetPools: [appserverGoogleComputeTargetPool.id],\n targetSize: 2,\n namedPorts: [{\n name: \"customhttp\",\n port: 8888,\n }],\n autoHealingPolicies: {\n healthCheck: autohealing.id,\n initialDelaySec: 300,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nautohealing = gcp.compute.HealthCheck(\"autohealing\",\n name=\"autohealing-health-check\",\n check_interval_sec=5,\n timeout_sec=5,\n healthy_threshold=2,\n unhealthy_threshold=10,\n http_health_check={\n \"request_path\": \"/healthz\",\n \"port\": 8080,\n })\nappserver = gcp.compute.InstanceGroupManager(\"appserver\",\n name=\"appserver-igm\",\n base_instance_name=\"app\",\n zone=\"us-central1-a\",\n versions=[{\n \"instance_template\": appserver_google_compute_instance_template[\"selfLinkUnique\"],\n }],\n all_instances_config={\n \"metadata\": {\n \"metadata_key\": \"metadata_value\",\n },\n \"labels\": {\n \"label_key\": \"label_value\",\n },\n },\n target_pools=[appserver_google_compute_target_pool[\"id\"]],\n target_size=2,\n named_ports=[{\n \"name\": \"customhttp\",\n \"port\": 8888,\n }],\n auto_healing_policies={\n \"health_check\": autohealing.id,\n \"initial_delay_sec\": 300,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var autohealing = new Gcp.Compute.HealthCheck(\"autohealing\", new()\n {\n Name = \"autohealing-health-check\",\n CheckIntervalSec = 5,\n TimeoutSec = 5,\n HealthyThreshold = 2,\n UnhealthyThreshold = 10,\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n RequestPath = \"/healthz\",\n Port = 8080,\n },\n });\n\n var appserver = new Gcp.Compute.InstanceGroupManager(\"appserver\", new()\n {\n Name = \"appserver-igm\",\n BaseInstanceName = \"app\",\n Zone = \"us-central1-a\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n InstanceTemplate = appserverGoogleComputeInstanceTemplate.SelfLinkUnique,\n },\n },\n AllInstancesConfig = new Gcp.Compute.Inputs.InstanceGroupManagerAllInstancesConfigArgs\n {\n Metadata = \n {\n { \"metadata_key\", \"metadata_value\" },\n },\n Labels = \n {\n { \"label_key\", \"label_value\" },\n },\n },\n TargetPools = new[]\n {\n appserverGoogleComputeTargetPool.Id,\n },\n TargetSize = 2,\n NamedPorts = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerNamedPortArgs\n {\n Name = \"customhttp\",\n Port = 8888,\n },\n },\n AutoHealingPolicies = new Gcp.Compute.Inputs.InstanceGroupManagerAutoHealingPoliciesArgs\n {\n HealthCheck = autohealing.Id,\n InitialDelaySec = 300,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tautohealing, err := compute.NewHealthCheck(ctx, \"autohealing\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"autohealing-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(5),\n\t\t\tTimeoutSec: pulumi.Int(5),\n\t\t\tHealthyThreshold: pulumi.Int(2),\n\t\t\tUnhealthyThreshold: pulumi.Int(10),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tRequestPath: pulumi.String(\"/healthz\"),\n\t\t\t\tPort: pulumi.Int(8080),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstanceGroupManager(ctx, \"appserver\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"appserver-igm\"),\n\t\t\tBaseInstanceName: pulumi.String(\"app\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tVersions: compute.InstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: pulumi.Any(appserverGoogleComputeInstanceTemplate.SelfLinkUnique),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAllInstancesConfig: \u0026compute.InstanceGroupManagerAllInstancesConfigArgs{\n\t\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\t\"metadata_key\": pulumi.String(\"metadata_value\"),\n\t\t\t\t},\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"label_key\": pulumi.String(\"label_value\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTargetPools: pulumi.StringArray{\n\t\t\t\tappserverGoogleComputeTargetPool.Id,\n\t\t\t},\n\t\t\tTargetSize: pulumi.Int(2),\n\t\t\tNamedPorts: compute.InstanceGroupManagerNamedPortArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerNamedPortArgs{\n\t\t\t\t\tName: pulumi.String(\"customhttp\"),\n\t\t\t\t\tPort: pulumi.Int(8888),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAutoHealingPolicies: \u0026compute.InstanceGroupManagerAutoHealingPoliciesArgs{\n\t\t\t\tHealthCheck: autohealing.ID(),\n\t\t\t\tInitialDelaySec: pulumi.Int(300),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.InstanceGroupManager;\nimport com.pulumi.gcp.compute.InstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerAllInstancesConfigArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerNamedPortArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerAutoHealingPoliciesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var autohealing = new HealthCheck(\"autohealing\", HealthCheckArgs.builder()\n .name(\"autohealing-health-check\")\n .checkIntervalSec(5)\n .timeoutSec(5)\n .healthyThreshold(2)\n .unhealthyThreshold(10)\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .requestPath(\"/healthz\")\n .port(\"8080\")\n .build())\n .build());\n\n var appserver = new InstanceGroupManager(\"appserver\", InstanceGroupManagerArgs.builder()\n .name(\"appserver-igm\")\n .baseInstanceName(\"app\")\n .zone(\"us-central1-a\")\n .versions(InstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(appserverGoogleComputeInstanceTemplate.selfLinkUnique())\n .build())\n .allInstancesConfig(InstanceGroupManagerAllInstancesConfigArgs.builder()\n .metadata(Map.of(\"metadata_key\", \"metadata_value\"))\n .labels(Map.of(\"label_key\", \"label_value\"))\n .build())\n .targetPools(appserverGoogleComputeTargetPool.id())\n .targetSize(2)\n .namedPorts(InstanceGroupManagerNamedPortArgs.builder()\n .name(\"customhttp\")\n .port(8888)\n .build())\n .autoHealingPolicies(InstanceGroupManagerAutoHealingPoliciesArgs.builder()\n .healthCheck(autohealing.id())\n .initialDelaySec(300)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n autohealing:\n type: gcp:compute:HealthCheck\n properties:\n name: autohealing-health-check\n checkIntervalSec: 5\n timeoutSec: 5\n healthyThreshold: 2\n unhealthyThreshold: 10 # 50 seconds\n httpHealthCheck:\n requestPath: /healthz\n port: '8080'\n appserver:\n type: gcp:compute:InstanceGroupManager\n properties:\n name: appserver-igm\n baseInstanceName: app\n zone: us-central1-a\n versions:\n - instanceTemplate: ${appserverGoogleComputeInstanceTemplate.selfLinkUnique}\n allInstancesConfig:\n metadata:\n metadata_key: metadata_value\n labels:\n label_key: label_value\n targetPools:\n - ${appserverGoogleComputeTargetPool.id}\n targetSize: 2\n namedPorts:\n - name: customhttp\n port: 8888\n autoHealingPolicies:\n healthCheck: ${autohealing.id}\n initialDelaySec: 300\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With Multiple Versions (`Google-Beta` Provider)\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst appserver = new gcp.compute.InstanceGroupManager(\"appserver\", {\n name: \"appserver-igm\",\n baseInstanceName: \"app\",\n zone: \"us-central1-a\",\n targetSize: 5,\n versions: [\n {\n name: \"appserver\",\n instanceTemplate: appserverGoogleComputeInstanceTemplate.selfLinkUnique,\n },\n {\n name: \"appserver-canary\",\n instanceTemplate: appserver_canary.selfLinkUnique,\n targetSize: {\n fixed: 1,\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nappserver = gcp.compute.InstanceGroupManager(\"appserver\",\n name=\"appserver-igm\",\n base_instance_name=\"app\",\n zone=\"us-central1-a\",\n target_size=5,\n versions=[\n {\n \"name\": \"appserver\",\n \"instance_template\": appserver_google_compute_instance_template[\"selfLinkUnique\"],\n },\n {\n \"name\": \"appserver-canary\",\n \"instance_template\": appserver_canary[\"selfLinkUnique\"],\n \"target_size\": {\n \"fixed\": 1,\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var appserver = new Gcp.Compute.InstanceGroupManager(\"appserver\", new()\n {\n Name = \"appserver-igm\",\n BaseInstanceName = \"app\",\n Zone = \"us-central1-a\",\n TargetSize = 5,\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n Name = \"appserver\",\n InstanceTemplate = appserverGoogleComputeInstanceTemplate.SelfLinkUnique,\n },\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n Name = \"appserver-canary\",\n InstanceTemplate = appserver_canary.SelfLinkUnique,\n TargetSize = new Gcp.Compute.Inputs.InstanceGroupManagerVersionTargetSizeArgs\n {\n Fixed = 1,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewInstanceGroupManager(ctx, \"appserver\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"appserver-igm\"),\n\t\t\tBaseInstanceName: pulumi.String(\"app\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tTargetSize: pulumi.Int(5),\n\t\t\tVersions: compute.InstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tName: pulumi.String(\"appserver\"),\n\t\t\t\t\tInstanceTemplate: pulumi.Any(appserverGoogleComputeInstanceTemplate.SelfLinkUnique),\n\t\t\t\t},\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tName: pulumi.String(\"appserver-canary\"),\n\t\t\t\t\tInstanceTemplate: pulumi.Any(appserver_canary.SelfLinkUnique),\n\t\t\t\t\tTargetSize: \u0026compute.InstanceGroupManagerVersionTargetSizeArgs{\n\t\t\t\t\t\tFixed: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.InstanceGroupManager;\nimport com.pulumi.gcp.compute.InstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionTargetSizeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var appserver = new InstanceGroupManager(\"appserver\", InstanceGroupManagerArgs.builder()\n .name(\"appserver-igm\")\n .baseInstanceName(\"app\")\n .zone(\"us-central1-a\")\n .targetSize(5)\n .versions( \n InstanceGroupManagerVersionArgs.builder()\n .name(\"appserver\")\n .instanceTemplate(appserverGoogleComputeInstanceTemplate.selfLinkUnique())\n .build(),\n InstanceGroupManagerVersionArgs.builder()\n .name(\"appserver-canary\")\n .instanceTemplate(appserver_canary.selfLinkUnique())\n .targetSize(InstanceGroupManagerVersionTargetSizeArgs.builder()\n .fixed(1)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n appserver:\n type: gcp:compute:InstanceGroupManager\n properties:\n name: appserver-igm\n baseInstanceName: app\n zone: us-central1-a\n targetSize: 5\n versions:\n - name: appserver\n instanceTemplate: ${appserverGoogleComputeInstanceTemplate.selfLinkUnique}\n - name: appserver-canary\n instanceTemplate: ${[\"appserver-canary\"].selfLinkUnique}\n targetSize:\n fixed: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With Standby Policy (`Google-Beta` Provider)\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst igm_sr = new gcp.compute.InstanceGroupManager(\"igm-sr\", {\n name: \"tf-sr-igm\",\n baseInstanceName: \"tf-sr-igm-instance\",\n zone: \"us-central1-a\",\n targetSize: 5,\n versions: [{\n instanceTemplate: sr_igm.selfLink,\n name: \"primary\",\n }],\n standbyPolicy: {\n initialDelaySec: 30,\n mode: \"MANUAL\",\n },\n targetSuspendedSize: 2,\n targetStoppedSize: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nigm_sr = gcp.compute.InstanceGroupManager(\"igm-sr\",\n name=\"tf-sr-igm\",\n base_instance_name=\"tf-sr-igm-instance\",\n zone=\"us-central1-a\",\n target_size=5,\n versions=[{\n \"instance_template\": sr_igm[\"selfLink\"],\n \"name\": \"primary\",\n }],\n standby_policy={\n \"initial_delay_sec\": 30,\n \"mode\": \"MANUAL\",\n },\n target_suspended_size=2,\n target_stopped_size=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var igm_sr = new Gcp.Compute.InstanceGroupManager(\"igm-sr\", new()\n {\n Name = \"tf-sr-igm\",\n BaseInstanceName = \"tf-sr-igm-instance\",\n Zone = \"us-central1-a\",\n TargetSize = 5,\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n InstanceTemplate = sr_igm.SelfLink,\n Name = \"primary\",\n },\n },\n StandbyPolicy = new Gcp.Compute.Inputs.InstanceGroupManagerStandbyPolicyArgs\n {\n InitialDelaySec = 30,\n Mode = \"MANUAL\",\n },\n TargetSuspendedSize = 2,\n TargetStoppedSize = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewInstanceGroupManager(ctx, \"igm-sr\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"tf-sr-igm\"),\n\t\t\tBaseInstanceName: pulumi.String(\"tf-sr-igm-instance\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tTargetSize: pulumi.Int(5),\n\t\t\tVersions: compute.InstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: pulumi.Any(sr_igm.SelfLink),\n\t\t\t\t\tName: pulumi.String(\"primary\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStandbyPolicy: \u0026compute.InstanceGroupManagerStandbyPolicyArgs{\n\t\t\t\tInitialDelaySec: pulumi.Int(30),\n\t\t\t\tMode: pulumi.String(\"MANUAL\"),\n\t\t\t},\n\t\t\tTargetSuspendedSize: pulumi.Int(2),\n\t\t\tTargetStoppedSize: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.InstanceGroupManager;\nimport com.pulumi.gcp.compute.InstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerStandbyPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var igm_sr = new InstanceGroupManager(\"igm-sr\", InstanceGroupManagerArgs.builder()\n .name(\"tf-sr-igm\")\n .baseInstanceName(\"tf-sr-igm-instance\")\n .zone(\"us-central1-a\")\n .targetSize(5)\n .versions(InstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(sr_igm.selfLink())\n .name(\"primary\")\n .build())\n .standbyPolicy(InstanceGroupManagerStandbyPolicyArgs.builder()\n .initialDelaySec(30)\n .mode(\"MANUAL\")\n .build())\n .targetSuspendedSize(2)\n .targetStoppedSize(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n igm-sr:\n type: gcp:compute:InstanceGroupManager\n properties:\n name: tf-sr-igm\n baseInstanceName: tf-sr-igm-instance\n zone: us-central1-a\n targetSize: 5\n versions:\n - instanceTemplate: ${[\"sr-igm\"].selfLink}\n name: primary\n standbyPolicy:\n initialDelaySec: 30\n mode: MANUAL\n targetSuspendedSize: 2\n targetStoppedSize: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance group managers can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/instanceGroupManagers/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, instance group managers can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/instanceGroupManager:InstanceGroupManager default projects/{{project}}/zones/{{zone}}/instanceGroupManagers/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupManager:InstanceGroupManager default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupManager:InstanceGroupManager default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupManager:InstanceGroupManager default {{name}}\n```\n\n", + "description": "The Google Compute Engine Instance Group Manager API creates and manages pools\nof homogeneous Compute Engine virtual machine instances from a common instance\ntemplate. For more information, see [the official documentation](https://cloud.google.com/compute/docs/instance-groups/manager)\nand [API](https://cloud.google.com/compute/docs/reference/latest/instanceGroupManagers)\n\n\u003e **Note:** Use [gcp.compute.RegionInstanceGroupManager](https://www.terraform.io/docs/providers/google/r/compute_region_instance_group_manager.html) to create a regional (multi-zone) instance group manager.\n\n## Example Usage\n\n### With Top Level Instance Template (`Google` Provider)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst autohealing = new gcp.compute.HealthCheck(\"autohealing\", {\n name: \"autohealing-health-check\",\n checkIntervalSec: 5,\n timeoutSec: 5,\n healthyThreshold: 2,\n unhealthyThreshold: 10,\n httpHealthCheck: {\n requestPath: \"/healthz\",\n port: 8080,\n },\n});\nconst appserver = new gcp.compute.InstanceGroupManager(\"appserver\", {\n name: \"appserver-igm\",\n baseInstanceName: \"app\",\n zone: \"us-central1-a\",\n versions: [{\n instanceTemplate: appserverGoogleComputeInstanceTemplate.selfLinkUnique,\n }],\n allInstancesConfig: {\n metadata: {\n metadata_key: \"metadata_value\",\n },\n labels: {\n label_key: \"label_value\",\n },\n },\n targetPools: [appserverGoogleComputeTargetPool.id],\n targetSize: 2,\n namedPorts: [{\n name: \"customhttp\",\n port: 8888,\n }],\n autoHealingPolicies: {\n healthCheck: autohealing.id,\n initialDelaySec: 300,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nautohealing = gcp.compute.HealthCheck(\"autohealing\",\n name=\"autohealing-health-check\",\n check_interval_sec=5,\n timeout_sec=5,\n healthy_threshold=2,\n unhealthy_threshold=10,\n http_health_check={\n \"request_path\": \"/healthz\",\n \"port\": 8080,\n })\nappserver = gcp.compute.InstanceGroupManager(\"appserver\",\n name=\"appserver-igm\",\n base_instance_name=\"app\",\n zone=\"us-central1-a\",\n versions=[{\n \"instance_template\": appserver_google_compute_instance_template[\"selfLinkUnique\"],\n }],\n all_instances_config={\n \"metadata\": {\n \"metadata_key\": \"metadata_value\",\n },\n \"labels\": {\n \"label_key\": \"label_value\",\n },\n },\n target_pools=[appserver_google_compute_target_pool[\"id\"]],\n target_size=2,\n named_ports=[{\n \"name\": \"customhttp\",\n \"port\": 8888,\n }],\n auto_healing_policies={\n \"health_check\": autohealing.id,\n \"initial_delay_sec\": 300,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var autohealing = new Gcp.Compute.HealthCheck(\"autohealing\", new()\n {\n Name = \"autohealing-health-check\",\n CheckIntervalSec = 5,\n TimeoutSec = 5,\n HealthyThreshold = 2,\n UnhealthyThreshold = 10,\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n RequestPath = \"/healthz\",\n Port = 8080,\n },\n });\n\n var appserver = new Gcp.Compute.InstanceGroupManager(\"appserver\", new()\n {\n Name = \"appserver-igm\",\n BaseInstanceName = \"app\",\n Zone = \"us-central1-a\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n InstanceTemplate = appserverGoogleComputeInstanceTemplate.SelfLinkUnique,\n },\n },\n AllInstancesConfig = new Gcp.Compute.Inputs.InstanceGroupManagerAllInstancesConfigArgs\n {\n Metadata = \n {\n { \"metadata_key\", \"metadata_value\" },\n },\n Labels = \n {\n { \"label_key\", \"label_value\" },\n },\n },\n TargetPools = new[]\n {\n appserverGoogleComputeTargetPool.Id,\n },\n TargetSize = 2,\n NamedPorts = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerNamedPortArgs\n {\n Name = \"customhttp\",\n Port = 8888,\n },\n },\n AutoHealingPolicies = new Gcp.Compute.Inputs.InstanceGroupManagerAutoHealingPoliciesArgs\n {\n HealthCheck = autohealing.Id,\n InitialDelaySec = 300,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tautohealing, err := compute.NewHealthCheck(ctx, \"autohealing\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"autohealing-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(5),\n\t\t\tTimeoutSec: pulumi.Int(5),\n\t\t\tHealthyThreshold: pulumi.Int(2),\n\t\t\tUnhealthyThreshold: pulumi.Int(10),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tRequestPath: pulumi.String(\"/healthz\"),\n\t\t\t\tPort: pulumi.Int(8080),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstanceGroupManager(ctx, \"appserver\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"appserver-igm\"),\n\t\t\tBaseInstanceName: pulumi.String(\"app\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tVersions: compute.InstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: pulumi.Any(appserverGoogleComputeInstanceTemplate.SelfLinkUnique),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAllInstancesConfig: \u0026compute.InstanceGroupManagerAllInstancesConfigArgs{\n\t\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\t\"metadata_key\": pulumi.String(\"metadata_value\"),\n\t\t\t\t},\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"label_key\": pulumi.String(\"label_value\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTargetPools: pulumi.StringArray{\n\t\t\t\tappserverGoogleComputeTargetPool.Id,\n\t\t\t},\n\t\t\tTargetSize: pulumi.Int(2),\n\t\t\tNamedPorts: compute.InstanceGroupManagerNamedPortArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerNamedPortArgs{\n\t\t\t\t\tName: pulumi.String(\"customhttp\"),\n\t\t\t\t\tPort: pulumi.Int(8888),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAutoHealingPolicies: \u0026compute.InstanceGroupManagerAutoHealingPoliciesArgs{\n\t\t\t\tHealthCheck: autohealing.ID(),\n\t\t\t\tInitialDelaySec: pulumi.Int(300),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.InstanceGroupManager;\nimport com.pulumi.gcp.compute.InstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerAllInstancesConfigArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerNamedPortArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerAutoHealingPoliciesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var autohealing = new HealthCheck(\"autohealing\", HealthCheckArgs.builder()\n .name(\"autohealing-health-check\")\n .checkIntervalSec(5)\n .timeoutSec(5)\n .healthyThreshold(2)\n .unhealthyThreshold(10)\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .requestPath(\"/healthz\")\n .port(\"8080\")\n .build())\n .build());\n\n var appserver = new InstanceGroupManager(\"appserver\", InstanceGroupManagerArgs.builder()\n .name(\"appserver-igm\")\n .baseInstanceName(\"app\")\n .zone(\"us-central1-a\")\n .versions(InstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(appserverGoogleComputeInstanceTemplate.selfLinkUnique())\n .build())\n .allInstancesConfig(InstanceGroupManagerAllInstancesConfigArgs.builder()\n .metadata(Map.of(\"metadata_key\", \"metadata_value\"))\n .labels(Map.of(\"label_key\", \"label_value\"))\n .build())\n .targetPools(appserverGoogleComputeTargetPool.id())\n .targetSize(2)\n .namedPorts(InstanceGroupManagerNamedPortArgs.builder()\n .name(\"customhttp\")\n .port(8888)\n .build())\n .autoHealingPolicies(InstanceGroupManagerAutoHealingPoliciesArgs.builder()\n .healthCheck(autohealing.id())\n .initialDelaySec(300)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n autohealing:\n type: gcp:compute:HealthCheck\n properties:\n name: autohealing-health-check\n checkIntervalSec: 5\n timeoutSec: 5\n healthyThreshold: 2\n unhealthyThreshold: 10 # 50 seconds\n httpHealthCheck:\n requestPath: /healthz\n port: '8080'\n appserver:\n type: gcp:compute:InstanceGroupManager\n properties:\n name: appserver-igm\n baseInstanceName: app\n zone: us-central1-a\n versions:\n - instanceTemplate: ${appserverGoogleComputeInstanceTemplate.selfLinkUnique}\n allInstancesConfig:\n metadata:\n metadata_key: metadata_value\n labels:\n label_key: label_value\n targetPools:\n - ${appserverGoogleComputeTargetPool.id}\n targetSize: 2\n namedPorts:\n - name: customhttp\n port: 8888\n autoHealingPolicies:\n healthCheck: ${autohealing.id}\n initialDelaySec: 300\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With Multiple Versions (`Google-Beta` Provider)\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst appserver = new gcp.compute.InstanceGroupManager(\"appserver\", {\n name: \"appserver-igm\",\n baseInstanceName: \"app\",\n zone: \"us-central1-a\",\n targetSize: 5,\n versions: [\n {\n name: \"appserver\",\n instanceTemplate: appserverGoogleComputeInstanceTemplate.selfLinkUnique,\n },\n {\n name: \"appserver-canary\",\n instanceTemplate: appserver_canary.selfLinkUnique,\n targetSize: {\n fixed: 1,\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nappserver = gcp.compute.InstanceGroupManager(\"appserver\",\n name=\"appserver-igm\",\n base_instance_name=\"app\",\n zone=\"us-central1-a\",\n target_size=5,\n versions=[\n {\n \"name\": \"appserver\",\n \"instance_template\": appserver_google_compute_instance_template[\"selfLinkUnique\"],\n },\n {\n \"name\": \"appserver-canary\",\n \"instance_template\": appserver_canary[\"selfLinkUnique\"],\n \"target_size\": {\n \"fixed\": 1,\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var appserver = new Gcp.Compute.InstanceGroupManager(\"appserver\", new()\n {\n Name = \"appserver-igm\",\n BaseInstanceName = \"app\",\n Zone = \"us-central1-a\",\n TargetSize = 5,\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n Name = \"appserver\",\n InstanceTemplate = appserverGoogleComputeInstanceTemplate.SelfLinkUnique,\n },\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n Name = \"appserver-canary\",\n InstanceTemplate = appserver_canary.SelfLinkUnique,\n TargetSize = new Gcp.Compute.Inputs.InstanceGroupManagerVersionTargetSizeArgs\n {\n Fixed = 1,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewInstanceGroupManager(ctx, \"appserver\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"appserver-igm\"),\n\t\t\tBaseInstanceName: pulumi.String(\"app\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tTargetSize: pulumi.Int(5),\n\t\t\tVersions: compute.InstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tName: pulumi.String(\"appserver\"),\n\t\t\t\t\tInstanceTemplate: pulumi.Any(appserverGoogleComputeInstanceTemplate.SelfLinkUnique),\n\t\t\t\t},\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tName: pulumi.String(\"appserver-canary\"),\n\t\t\t\t\tInstanceTemplate: pulumi.Any(appserver_canary.SelfLinkUnique),\n\t\t\t\t\tTargetSize: \u0026compute.InstanceGroupManagerVersionTargetSizeArgs{\n\t\t\t\t\t\tFixed: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.InstanceGroupManager;\nimport com.pulumi.gcp.compute.InstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionTargetSizeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var appserver = new InstanceGroupManager(\"appserver\", InstanceGroupManagerArgs.builder()\n .name(\"appserver-igm\")\n .baseInstanceName(\"app\")\n .zone(\"us-central1-a\")\n .targetSize(5)\n .versions( \n InstanceGroupManagerVersionArgs.builder()\n .name(\"appserver\")\n .instanceTemplate(appserverGoogleComputeInstanceTemplate.selfLinkUnique())\n .build(),\n InstanceGroupManagerVersionArgs.builder()\n .name(\"appserver-canary\")\n .instanceTemplate(appserver_canary.selfLinkUnique())\n .targetSize(InstanceGroupManagerVersionTargetSizeArgs.builder()\n .fixed(1)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n appserver:\n type: gcp:compute:InstanceGroupManager\n properties:\n name: appserver-igm\n baseInstanceName: app\n zone: us-central1-a\n targetSize: 5\n versions:\n - name: appserver\n instanceTemplate: ${appserverGoogleComputeInstanceTemplate.selfLinkUnique}\n - name: appserver-canary\n instanceTemplate: ${[\"appserver-canary\"].selfLinkUnique}\n targetSize:\n fixed: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With Standby Policy (`Google` Provider)\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst igm_sr = new gcp.compute.InstanceGroupManager(\"igm-sr\", {\n name: \"tf-sr-igm\",\n baseInstanceName: \"tf-sr-igm-instance\",\n zone: \"us-central1-a\",\n targetSize: 5,\n versions: [{\n instanceTemplate: sr_igm.selfLink,\n name: \"primary\",\n }],\n standbyPolicy: {\n initialDelaySec: 30,\n mode: \"MANUAL\",\n },\n targetSuspendedSize: 2,\n targetStoppedSize: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nigm_sr = gcp.compute.InstanceGroupManager(\"igm-sr\",\n name=\"tf-sr-igm\",\n base_instance_name=\"tf-sr-igm-instance\",\n zone=\"us-central1-a\",\n target_size=5,\n versions=[{\n \"instance_template\": sr_igm[\"selfLink\"],\n \"name\": \"primary\",\n }],\n standby_policy={\n \"initial_delay_sec\": 30,\n \"mode\": \"MANUAL\",\n },\n target_suspended_size=2,\n target_stopped_size=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var igm_sr = new Gcp.Compute.InstanceGroupManager(\"igm-sr\", new()\n {\n Name = \"tf-sr-igm\",\n BaseInstanceName = \"tf-sr-igm-instance\",\n Zone = \"us-central1-a\",\n TargetSize = 5,\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n InstanceTemplate = sr_igm.SelfLink,\n Name = \"primary\",\n },\n },\n StandbyPolicy = new Gcp.Compute.Inputs.InstanceGroupManagerStandbyPolicyArgs\n {\n InitialDelaySec = 30,\n Mode = \"MANUAL\",\n },\n TargetSuspendedSize = 2,\n TargetStoppedSize = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewInstanceGroupManager(ctx, \"igm-sr\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"tf-sr-igm\"),\n\t\t\tBaseInstanceName: pulumi.String(\"tf-sr-igm-instance\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tTargetSize: pulumi.Int(5),\n\t\t\tVersions: compute.InstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: pulumi.Any(sr_igm.SelfLink),\n\t\t\t\t\tName: pulumi.String(\"primary\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStandbyPolicy: \u0026compute.InstanceGroupManagerStandbyPolicyArgs{\n\t\t\t\tInitialDelaySec: pulumi.Int(30),\n\t\t\t\tMode: pulumi.String(\"MANUAL\"),\n\t\t\t},\n\t\t\tTargetSuspendedSize: pulumi.Int(2),\n\t\t\tTargetStoppedSize: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.InstanceGroupManager;\nimport com.pulumi.gcp.compute.InstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerStandbyPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var igm_sr = new InstanceGroupManager(\"igm-sr\", InstanceGroupManagerArgs.builder()\n .name(\"tf-sr-igm\")\n .baseInstanceName(\"tf-sr-igm-instance\")\n .zone(\"us-central1-a\")\n .targetSize(5)\n .versions(InstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(sr_igm.selfLink())\n .name(\"primary\")\n .build())\n .standbyPolicy(InstanceGroupManagerStandbyPolicyArgs.builder()\n .initialDelaySec(30)\n .mode(\"MANUAL\")\n .build())\n .targetSuspendedSize(2)\n .targetStoppedSize(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n igm-sr:\n type: gcp:compute:InstanceGroupManager\n properties:\n name: tf-sr-igm\n baseInstanceName: tf-sr-igm-instance\n zone: us-central1-a\n targetSize: 5\n versions:\n - instanceTemplate: ${[\"sr-igm\"].selfLink}\n name: primary\n standbyPolicy:\n initialDelaySec: 30\n mode: MANUAL\n targetSuspendedSize: 2\n targetStoppedSize: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance group managers can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/instanceGroupManagers/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, instance group managers can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/instanceGroupManager:InstanceGroupManager default projects/{{project}}/zones/{{zone}}/instanceGroupManagers/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupManager:InstanceGroupManager default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupManager:InstanceGroupManager default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupManager:InstanceGroupManager default {{name}}\n```\n\n", "properties": { "allInstancesConfig": { "$ref": "#/types/gcp:compute/InstanceGroupManagerAllInstancesConfig:InstanceGroupManagerAllInstancesConfig", @@ -171090,7 +172098,7 @@ }, "standbyPolicy": { "$ref": "#/types/gcp:compute/InstanceGroupManagerStandbyPolicy:InstanceGroupManagerStandbyPolicy", - "description": "The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch)\n" + "description": "The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig).\n" }, "statefulDisks": { "type": "array", @@ -171233,7 +172241,7 @@ }, "standbyPolicy": { "$ref": "#/types/gcp:compute/InstanceGroupManagerStandbyPolicy:InstanceGroupManagerStandbyPolicy", - "description": "The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch)\n" + "description": "The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig).\n" }, "statefulDisks": { "type": "array", @@ -171379,7 +172387,7 @@ }, "standbyPolicy": { "$ref": "#/types/gcp:compute/InstanceGroupManagerStandbyPolicy:InstanceGroupManagerStandbyPolicy", - "description": "The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch)\n" + "description": "The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig).\n" }, "statefulDisks": { "type": "array", @@ -179477,7 +180485,7 @@ } }, "gcp:compute/regionInstanceGroupManager:RegionInstanceGroupManager": { - "description": "The Google Compute Engine Regional Instance Group Manager API creates and manages pools\nof homogeneous Compute Engine virtual machine instances from a common instance\ntemplate.\n\nTo get more information about regionInstanceGroupManagers, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/latest/regionInstanceGroupManagers)\n* How-to Guides\n * [Regional Instance Groups Guide](https://cloud.google.com/compute/docs/instance-groups/distributing-instances-with-regional-instance-groups)\n\n\u003e **Note:** Use [gcp.compute.InstanceGroupManager](https://www.terraform.io/docs/providers/google/r/compute_instance_group_manager.html) to create a zonal instance group manager.\n\n## Example Usage\n\n### With Top Level Instance Template (`Google` Provider)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst autohealing = new gcp.compute.HealthCheck(\"autohealing\", {\n name: \"autohealing-health-check\",\n checkIntervalSec: 5,\n timeoutSec: 5,\n healthyThreshold: 2,\n unhealthyThreshold: 10,\n httpHealthCheck: {\n requestPath: \"/healthz\",\n port: 8080,\n },\n});\nconst appserver = new gcp.compute.RegionInstanceGroupManager(\"appserver\", {\n name: \"appserver-igm\",\n baseInstanceName: \"app\",\n region: \"us-central1\",\n distributionPolicyZones: [\n \"us-central1-a\",\n \"us-central1-f\",\n ],\n versions: [{\n instanceTemplate: appserverGoogleComputeInstanceTemplate.selfLinkUnique,\n }],\n allInstancesConfig: {\n metadata: {\n metadata_key: \"metadata_value\",\n },\n labels: {\n label_key: \"label_value\",\n },\n },\n targetPools: [appserverGoogleComputeTargetPool.id],\n targetSize: 2,\n namedPorts: [{\n name: \"custom\",\n port: 8888,\n }],\n autoHealingPolicies: {\n healthCheck: autohealing.id,\n initialDelaySec: 300,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nautohealing = gcp.compute.HealthCheck(\"autohealing\",\n name=\"autohealing-health-check\",\n check_interval_sec=5,\n timeout_sec=5,\n healthy_threshold=2,\n unhealthy_threshold=10,\n http_health_check={\n \"request_path\": \"/healthz\",\n \"port\": 8080,\n })\nappserver = gcp.compute.RegionInstanceGroupManager(\"appserver\",\n name=\"appserver-igm\",\n base_instance_name=\"app\",\n region=\"us-central1\",\n distribution_policy_zones=[\n \"us-central1-a\",\n \"us-central1-f\",\n ],\n versions=[{\n \"instance_template\": appserver_google_compute_instance_template[\"selfLinkUnique\"],\n }],\n all_instances_config={\n \"metadata\": {\n \"metadata_key\": \"metadata_value\",\n },\n \"labels\": {\n \"label_key\": \"label_value\",\n },\n },\n target_pools=[appserver_google_compute_target_pool[\"id\"]],\n target_size=2,\n named_ports=[{\n \"name\": \"custom\",\n \"port\": 8888,\n }],\n auto_healing_policies={\n \"health_check\": autohealing.id,\n \"initial_delay_sec\": 300,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var autohealing = new Gcp.Compute.HealthCheck(\"autohealing\", new()\n {\n Name = \"autohealing-health-check\",\n CheckIntervalSec = 5,\n TimeoutSec = 5,\n HealthyThreshold = 2,\n UnhealthyThreshold = 10,\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n RequestPath = \"/healthz\",\n Port = 8080,\n },\n });\n\n var appserver = new Gcp.Compute.RegionInstanceGroupManager(\"appserver\", new()\n {\n Name = \"appserver-igm\",\n BaseInstanceName = \"app\",\n Region = \"us-central1\",\n DistributionPolicyZones = new[]\n {\n \"us-central1-a\",\n \"us-central1-f\",\n },\n Versions = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionArgs\n {\n InstanceTemplate = appserverGoogleComputeInstanceTemplate.SelfLinkUnique,\n },\n },\n AllInstancesConfig = new Gcp.Compute.Inputs.RegionInstanceGroupManagerAllInstancesConfigArgs\n {\n Metadata = \n {\n { \"metadata_key\", \"metadata_value\" },\n },\n Labels = \n {\n { \"label_key\", \"label_value\" },\n },\n },\n TargetPools = new[]\n {\n appserverGoogleComputeTargetPool.Id,\n },\n TargetSize = 2,\n NamedPorts = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerNamedPortArgs\n {\n Name = \"custom\",\n Port = 8888,\n },\n },\n AutoHealingPolicies = new Gcp.Compute.Inputs.RegionInstanceGroupManagerAutoHealingPoliciesArgs\n {\n HealthCheck = autohealing.Id,\n InitialDelaySec = 300,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tautohealing, err := compute.NewHealthCheck(ctx, \"autohealing\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"autohealing-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(5),\n\t\t\tTimeoutSec: pulumi.Int(5),\n\t\t\tHealthyThreshold: pulumi.Int(2),\n\t\t\tUnhealthyThreshold: pulumi.Int(10),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tRequestPath: pulumi.String(\"/healthz\"),\n\t\t\t\tPort: pulumi.Int(8080),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionInstanceGroupManager(ctx, \"appserver\", \u0026compute.RegionInstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"appserver-igm\"),\n\t\t\tBaseInstanceName: pulumi.String(\"app\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDistributionPolicyZones: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-central1-a\"),\n\t\t\t\tpulumi.String(\"us-central1-f\"),\n\t\t\t},\n\t\t\tVersions: compute.RegionInstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: pulumi.Any(appserverGoogleComputeInstanceTemplate.SelfLinkUnique),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAllInstancesConfig: \u0026compute.RegionInstanceGroupManagerAllInstancesConfigArgs{\n\t\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\t\"metadata_key\": pulumi.String(\"metadata_value\"),\n\t\t\t\t},\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"label_key\": pulumi.String(\"label_value\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTargetPools: pulumi.StringArray{\n\t\t\t\tappserverGoogleComputeTargetPool.Id,\n\t\t\t},\n\t\t\tTargetSize: pulumi.Int(2),\n\t\t\tNamedPorts: compute.RegionInstanceGroupManagerNamedPortArray{\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerNamedPortArgs{\n\t\t\t\t\tName: pulumi.String(\"custom\"),\n\t\t\t\t\tPort: pulumi.Int(8888),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAutoHealingPolicies: \u0026compute.RegionInstanceGroupManagerAutoHealingPoliciesArgs{\n\t\t\t\tHealthCheck: autohealing.ID(),\n\t\t\t\tInitialDelaySec: pulumi.Int(300),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManager;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerAllInstancesConfigArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerNamedPortArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerAutoHealingPoliciesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var autohealing = new HealthCheck(\"autohealing\", HealthCheckArgs.builder()\n .name(\"autohealing-health-check\")\n .checkIntervalSec(5)\n .timeoutSec(5)\n .healthyThreshold(2)\n .unhealthyThreshold(10)\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .requestPath(\"/healthz\")\n .port(\"8080\")\n .build())\n .build());\n\n var appserver = new RegionInstanceGroupManager(\"appserver\", RegionInstanceGroupManagerArgs.builder()\n .name(\"appserver-igm\")\n .baseInstanceName(\"app\")\n .region(\"us-central1\")\n .distributionPolicyZones( \n \"us-central1-a\",\n \"us-central1-f\")\n .versions(RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(appserverGoogleComputeInstanceTemplate.selfLinkUnique())\n .build())\n .allInstancesConfig(RegionInstanceGroupManagerAllInstancesConfigArgs.builder()\n .metadata(Map.of(\"metadata_key\", \"metadata_value\"))\n .labels(Map.of(\"label_key\", \"label_value\"))\n .build())\n .targetPools(appserverGoogleComputeTargetPool.id())\n .targetSize(2)\n .namedPorts(RegionInstanceGroupManagerNamedPortArgs.builder()\n .name(\"custom\")\n .port(8888)\n .build())\n .autoHealingPolicies(RegionInstanceGroupManagerAutoHealingPoliciesArgs.builder()\n .healthCheck(autohealing.id())\n .initialDelaySec(300)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n autohealing:\n type: gcp:compute:HealthCheck\n properties:\n name: autohealing-health-check\n checkIntervalSec: 5\n timeoutSec: 5\n healthyThreshold: 2\n unhealthyThreshold: 10 # 50 seconds\n httpHealthCheck:\n requestPath: /healthz\n port: '8080'\n appserver:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n name: appserver-igm\n baseInstanceName: app\n region: us-central1\n distributionPolicyZones:\n - us-central1-a\n - us-central1-f\n versions:\n - instanceTemplate: ${appserverGoogleComputeInstanceTemplate.selfLinkUnique}\n allInstancesConfig:\n metadata:\n metadata_key: metadata_value\n labels:\n label_key: label_value\n targetPools:\n - ${appserverGoogleComputeTargetPool.id}\n targetSize: 2\n namedPorts:\n - name: custom\n port: 8888\n autoHealingPolicies:\n healthCheck: ${autohealing.id}\n initialDelaySec: 300\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With Multiple Versions\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst appserver = new gcp.compute.RegionInstanceGroupManager(\"appserver\", {\n name: \"appserver-igm\",\n baseInstanceName: \"app\",\n region: \"us-central1\",\n targetSize: 5,\n versions: [\n {\n instanceTemplate: appserverGoogleComputeInstanceTemplate.selfLinkUnique,\n },\n {\n instanceTemplate: appserver_canary.selfLinkUnique,\n targetSize: {\n fixed: 1,\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nappserver = gcp.compute.RegionInstanceGroupManager(\"appserver\",\n name=\"appserver-igm\",\n base_instance_name=\"app\",\n region=\"us-central1\",\n target_size=5,\n versions=[\n {\n \"instance_template\": appserver_google_compute_instance_template[\"selfLinkUnique\"],\n },\n {\n \"instance_template\": appserver_canary[\"selfLinkUnique\"],\n \"target_size\": {\n \"fixed\": 1,\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var appserver = new Gcp.Compute.RegionInstanceGroupManager(\"appserver\", new()\n {\n Name = \"appserver-igm\",\n BaseInstanceName = \"app\",\n Region = \"us-central1\",\n TargetSize = 5,\n Versions = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionArgs\n {\n InstanceTemplate = appserverGoogleComputeInstanceTemplate.SelfLinkUnique,\n },\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionArgs\n {\n InstanceTemplate = appserver_canary.SelfLinkUnique,\n TargetSize = new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionTargetSizeArgs\n {\n Fixed = 1,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRegionInstanceGroupManager(ctx, \"appserver\", \u0026compute.RegionInstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"appserver-igm\"),\n\t\t\tBaseInstanceName: pulumi.String(\"app\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tTargetSize: pulumi.Int(5),\n\t\t\tVersions: compute.RegionInstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: pulumi.Any(appserverGoogleComputeInstanceTemplate.SelfLinkUnique),\n\t\t\t\t},\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: pulumi.Any(appserver_canary.SelfLinkUnique),\n\t\t\t\t\tTargetSize: \u0026compute.RegionInstanceGroupManagerVersionTargetSizeArgs{\n\t\t\t\t\t\tFixed: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManager;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionTargetSizeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var appserver = new RegionInstanceGroupManager(\"appserver\", RegionInstanceGroupManagerArgs.builder()\n .name(\"appserver-igm\")\n .baseInstanceName(\"app\")\n .region(\"us-central1\")\n .targetSize(5)\n .versions( \n RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(appserverGoogleComputeInstanceTemplate.selfLinkUnique())\n .build(),\n RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(appserver_canary.selfLinkUnique())\n .targetSize(RegionInstanceGroupManagerVersionTargetSizeArgs.builder()\n .fixed(1)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n appserver:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n name: appserver-igm\n baseInstanceName: app\n region: us-central1\n targetSize: 5\n versions:\n - instanceTemplate: ${appserverGoogleComputeInstanceTemplate.selfLinkUnique}\n - instanceTemplate: ${[\"appserver-canary\"].selfLinkUnique}\n targetSize:\n fixed: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With Standby Policy (`Google-Beta` Provider)\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst igm_sr = new gcp.compute.RegionInstanceGroupManager(\"igm-sr\", {\n name: \"tf-sr-igm\",\n baseInstanceName: \"tf-sr-igm-instance\",\n region: \"us-central1\",\n targetSize: 5,\n versions: [{\n instanceTemplate: sr_igm.selfLink,\n name: \"primary\",\n }],\n standbyPolicy: {\n initialDelaySec: 50,\n mode: \"SCALE_OUT_POOL\",\n },\n targetSuspendedSize: 1,\n targetStoppedSize: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nigm_sr = gcp.compute.RegionInstanceGroupManager(\"igm-sr\",\n name=\"tf-sr-igm\",\n base_instance_name=\"tf-sr-igm-instance\",\n region=\"us-central1\",\n target_size=5,\n versions=[{\n \"instance_template\": sr_igm[\"selfLink\"],\n \"name\": \"primary\",\n }],\n standby_policy={\n \"initial_delay_sec\": 50,\n \"mode\": \"SCALE_OUT_POOL\",\n },\n target_suspended_size=1,\n target_stopped_size=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var igm_sr = new Gcp.Compute.RegionInstanceGroupManager(\"igm-sr\", new()\n {\n Name = \"tf-sr-igm\",\n BaseInstanceName = \"tf-sr-igm-instance\",\n Region = \"us-central1\",\n TargetSize = 5,\n Versions = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionArgs\n {\n InstanceTemplate = sr_igm.SelfLink,\n Name = \"primary\",\n },\n },\n StandbyPolicy = new Gcp.Compute.Inputs.RegionInstanceGroupManagerStandbyPolicyArgs\n {\n InitialDelaySec = 50,\n Mode = \"SCALE_OUT_POOL\",\n },\n TargetSuspendedSize = 1,\n TargetStoppedSize = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRegionInstanceGroupManager(ctx, \"igm-sr\", \u0026compute.RegionInstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"tf-sr-igm\"),\n\t\t\tBaseInstanceName: pulumi.String(\"tf-sr-igm-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tTargetSize: pulumi.Int(5),\n\t\t\tVersions: compute.RegionInstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: pulumi.Any(sr_igm.SelfLink),\n\t\t\t\t\tName: pulumi.String(\"primary\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStandbyPolicy: \u0026compute.RegionInstanceGroupManagerStandbyPolicyArgs{\n\t\t\t\tInitialDelaySec: pulumi.Int(50),\n\t\t\t\tMode: pulumi.String(\"SCALE_OUT_POOL\"),\n\t\t\t},\n\t\t\tTargetSuspendedSize: pulumi.Int(1),\n\t\t\tTargetStoppedSize: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManager;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerStandbyPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var igm_sr = new RegionInstanceGroupManager(\"igm-sr\", RegionInstanceGroupManagerArgs.builder()\n .name(\"tf-sr-igm\")\n .baseInstanceName(\"tf-sr-igm-instance\")\n .region(\"us-central1\")\n .targetSize(5)\n .versions(RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(sr_igm.selfLink())\n .name(\"primary\")\n .build())\n .standbyPolicy(RegionInstanceGroupManagerStandbyPolicyArgs.builder()\n .initialDelaySec(50)\n .mode(\"SCALE_OUT_POOL\")\n .build())\n .targetSuspendedSize(1)\n .targetStoppedSize(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n igm-sr:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n name: tf-sr-igm\n baseInstanceName: tf-sr-igm-instance\n region: us-central1\n targetSize: 5\n versions:\n - instanceTemplate: ${[\"sr-igm\"].selfLink}\n name: primary\n standbyPolicy:\n initialDelaySec: 50\n mode: SCALE_OUT_POOL\n targetSuspendedSize: 1\n targetStoppedSize: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance group managers can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, instance group managers can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionInstanceGroupManager:RegionInstanceGroupManager default {{name}}\n```\n\n", + "description": "The Google Compute Engine Regional Instance Group Manager API creates and manages pools\nof homogeneous Compute Engine virtual machine instances from a common instance\ntemplate.\n\nTo get more information about regionInstanceGroupManagers, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/latest/regionInstanceGroupManagers)\n* How-to Guides\n * [Regional Instance Groups Guide](https://cloud.google.com/compute/docs/instance-groups/distributing-instances-with-regional-instance-groups)\n\n\u003e **Note:** Use [gcp.compute.InstanceGroupManager](https://www.terraform.io/docs/providers/google/r/compute_instance_group_manager.html) to create a zonal instance group manager.\n\n## Example Usage\n\n### With Top Level Instance Template (`Google` Provider)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst autohealing = new gcp.compute.HealthCheck(\"autohealing\", {\n name: \"autohealing-health-check\",\n checkIntervalSec: 5,\n timeoutSec: 5,\n healthyThreshold: 2,\n unhealthyThreshold: 10,\n httpHealthCheck: {\n requestPath: \"/healthz\",\n port: 8080,\n },\n});\nconst appserver = new gcp.compute.RegionInstanceGroupManager(\"appserver\", {\n name: \"appserver-igm\",\n baseInstanceName: \"app\",\n region: \"us-central1\",\n distributionPolicyZones: [\n \"us-central1-a\",\n \"us-central1-f\",\n ],\n versions: [{\n instanceTemplate: appserverGoogleComputeInstanceTemplate.selfLinkUnique,\n }],\n allInstancesConfig: {\n metadata: {\n metadata_key: \"metadata_value\",\n },\n labels: {\n label_key: \"label_value\",\n },\n },\n targetPools: [appserverGoogleComputeTargetPool.id],\n targetSize: 2,\n namedPorts: [{\n name: \"custom\",\n port: 8888,\n }],\n autoHealingPolicies: {\n healthCheck: autohealing.id,\n initialDelaySec: 300,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nautohealing = gcp.compute.HealthCheck(\"autohealing\",\n name=\"autohealing-health-check\",\n check_interval_sec=5,\n timeout_sec=5,\n healthy_threshold=2,\n unhealthy_threshold=10,\n http_health_check={\n \"request_path\": \"/healthz\",\n \"port\": 8080,\n })\nappserver = gcp.compute.RegionInstanceGroupManager(\"appserver\",\n name=\"appserver-igm\",\n base_instance_name=\"app\",\n region=\"us-central1\",\n distribution_policy_zones=[\n \"us-central1-a\",\n \"us-central1-f\",\n ],\n versions=[{\n \"instance_template\": appserver_google_compute_instance_template[\"selfLinkUnique\"],\n }],\n all_instances_config={\n \"metadata\": {\n \"metadata_key\": \"metadata_value\",\n },\n \"labels\": {\n \"label_key\": \"label_value\",\n },\n },\n target_pools=[appserver_google_compute_target_pool[\"id\"]],\n target_size=2,\n named_ports=[{\n \"name\": \"custom\",\n \"port\": 8888,\n }],\n auto_healing_policies={\n \"health_check\": autohealing.id,\n \"initial_delay_sec\": 300,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var autohealing = new Gcp.Compute.HealthCheck(\"autohealing\", new()\n {\n Name = \"autohealing-health-check\",\n CheckIntervalSec = 5,\n TimeoutSec = 5,\n HealthyThreshold = 2,\n UnhealthyThreshold = 10,\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n RequestPath = \"/healthz\",\n Port = 8080,\n },\n });\n\n var appserver = new Gcp.Compute.RegionInstanceGroupManager(\"appserver\", new()\n {\n Name = \"appserver-igm\",\n BaseInstanceName = \"app\",\n Region = \"us-central1\",\n DistributionPolicyZones = new[]\n {\n \"us-central1-a\",\n \"us-central1-f\",\n },\n Versions = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionArgs\n {\n InstanceTemplate = appserverGoogleComputeInstanceTemplate.SelfLinkUnique,\n },\n },\n AllInstancesConfig = new Gcp.Compute.Inputs.RegionInstanceGroupManagerAllInstancesConfigArgs\n {\n Metadata = \n {\n { \"metadata_key\", \"metadata_value\" },\n },\n Labels = \n {\n { \"label_key\", \"label_value\" },\n },\n },\n TargetPools = new[]\n {\n appserverGoogleComputeTargetPool.Id,\n },\n TargetSize = 2,\n NamedPorts = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerNamedPortArgs\n {\n Name = \"custom\",\n Port = 8888,\n },\n },\n AutoHealingPolicies = new Gcp.Compute.Inputs.RegionInstanceGroupManagerAutoHealingPoliciesArgs\n {\n HealthCheck = autohealing.Id,\n InitialDelaySec = 300,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tautohealing, err := compute.NewHealthCheck(ctx, \"autohealing\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"autohealing-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(5),\n\t\t\tTimeoutSec: pulumi.Int(5),\n\t\t\tHealthyThreshold: pulumi.Int(2),\n\t\t\tUnhealthyThreshold: pulumi.Int(10),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tRequestPath: pulumi.String(\"/healthz\"),\n\t\t\t\tPort: pulumi.Int(8080),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionInstanceGroupManager(ctx, \"appserver\", \u0026compute.RegionInstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"appserver-igm\"),\n\t\t\tBaseInstanceName: pulumi.String(\"app\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDistributionPolicyZones: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-central1-a\"),\n\t\t\t\tpulumi.String(\"us-central1-f\"),\n\t\t\t},\n\t\t\tVersions: compute.RegionInstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: pulumi.Any(appserverGoogleComputeInstanceTemplate.SelfLinkUnique),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAllInstancesConfig: \u0026compute.RegionInstanceGroupManagerAllInstancesConfigArgs{\n\t\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\t\"metadata_key\": pulumi.String(\"metadata_value\"),\n\t\t\t\t},\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"label_key\": pulumi.String(\"label_value\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTargetPools: pulumi.StringArray{\n\t\t\t\tappserverGoogleComputeTargetPool.Id,\n\t\t\t},\n\t\t\tTargetSize: pulumi.Int(2),\n\t\t\tNamedPorts: compute.RegionInstanceGroupManagerNamedPortArray{\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerNamedPortArgs{\n\t\t\t\t\tName: pulumi.String(\"custom\"),\n\t\t\t\t\tPort: pulumi.Int(8888),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAutoHealingPolicies: \u0026compute.RegionInstanceGroupManagerAutoHealingPoliciesArgs{\n\t\t\t\tHealthCheck: autohealing.ID(),\n\t\t\t\tInitialDelaySec: pulumi.Int(300),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManager;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerAllInstancesConfigArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerNamedPortArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerAutoHealingPoliciesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var autohealing = new HealthCheck(\"autohealing\", HealthCheckArgs.builder()\n .name(\"autohealing-health-check\")\n .checkIntervalSec(5)\n .timeoutSec(5)\n .healthyThreshold(2)\n .unhealthyThreshold(10)\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .requestPath(\"/healthz\")\n .port(\"8080\")\n .build())\n .build());\n\n var appserver = new RegionInstanceGroupManager(\"appserver\", RegionInstanceGroupManagerArgs.builder()\n .name(\"appserver-igm\")\n .baseInstanceName(\"app\")\n .region(\"us-central1\")\n .distributionPolicyZones( \n \"us-central1-a\",\n \"us-central1-f\")\n .versions(RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(appserverGoogleComputeInstanceTemplate.selfLinkUnique())\n .build())\n .allInstancesConfig(RegionInstanceGroupManagerAllInstancesConfigArgs.builder()\n .metadata(Map.of(\"metadata_key\", \"metadata_value\"))\n .labels(Map.of(\"label_key\", \"label_value\"))\n .build())\n .targetPools(appserverGoogleComputeTargetPool.id())\n .targetSize(2)\n .namedPorts(RegionInstanceGroupManagerNamedPortArgs.builder()\n .name(\"custom\")\n .port(8888)\n .build())\n .autoHealingPolicies(RegionInstanceGroupManagerAutoHealingPoliciesArgs.builder()\n .healthCheck(autohealing.id())\n .initialDelaySec(300)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n autohealing:\n type: gcp:compute:HealthCheck\n properties:\n name: autohealing-health-check\n checkIntervalSec: 5\n timeoutSec: 5\n healthyThreshold: 2\n unhealthyThreshold: 10 # 50 seconds\n httpHealthCheck:\n requestPath: /healthz\n port: '8080'\n appserver:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n name: appserver-igm\n baseInstanceName: app\n region: us-central1\n distributionPolicyZones:\n - us-central1-a\n - us-central1-f\n versions:\n - instanceTemplate: ${appserverGoogleComputeInstanceTemplate.selfLinkUnique}\n allInstancesConfig:\n metadata:\n metadata_key: metadata_value\n labels:\n label_key: label_value\n targetPools:\n - ${appserverGoogleComputeTargetPool.id}\n targetSize: 2\n namedPorts:\n - name: custom\n port: 8888\n autoHealingPolicies:\n healthCheck: ${autohealing.id}\n initialDelaySec: 300\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With Multiple Versions\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst appserver = new gcp.compute.RegionInstanceGroupManager(\"appserver\", {\n name: \"appserver-igm\",\n baseInstanceName: \"app\",\n region: \"us-central1\",\n targetSize: 5,\n versions: [\n {\n instanceTemplate: appserverGoogleComputeInstanceTemplate.selfLinkUnique,\n },\n {\n instanceTemplate: appserver_canary.selfLinkUnique,\n targetSize: {\n fixed: 1,\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nappserver = gcp.compute.RegionInstanceGroupManager(\"appserver\",\n name=\"appserver-igm\",\n base_instance_name=\"app\",\n region=\"us-central1\",\n target_size=5,\n versions=[\n {\n \"instance_template\": appserver_google_compute_instance_template[\"selfLinkUnique\"],\n },\n {\n \"instance_template\": appserver_canary[\"selfLinkUnique\"],\n \"target_size\": {\n \"fixed\": 1,\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var appserver = new Gcp.Compute.RegionInstanceGroupManager(\"appserver\", new()\n {\n Name = \"appserver-igm\",\n BaseInstanceName = \"app\",\n Region = \"us-central1\",\n TargetSize = 5,\n Versions = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionArgs\n {\n InstanceTemplate = appserverGoogleComputeInstanceTemplate.SelfLinkUnique,\n },\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionArgs\n {\n InstanceTemplate = appserver_canary.SelfLinkUnique,\n TargetSize = new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionTargetSizeArgs\n {\n Fixed = 1,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRegionInstanceGroupManager(ctx, \"appserver\", \u0026compute.RegionInstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"appserver-igm\"),\n\t\t\tBaseInstanceName: pulumi.String(\"app\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tTargetSize: pulumi.Int(5),\n\t\t\tVersions: compute.RegionInstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: pulumi.Any(appserverGoogleComputeInstanceTemplate.SelfLinkUnique),\n\t\t\t\t},\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: pulumi.Any(appserver_canary.SelfLinkUnique),\n\t\t\t\t\tTargetSize: \u0026compute.RegionInstanceGroupManagerVersionTargetSizeArgs{\n\t\t\t\t\t\tFixed: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManager;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionTargetSizeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var appserver = new RegionInstanceGroupManager(\"appserver\", RegionInstanceGroupManagerArgs.builder()\n .name(\"appserver-igm\")\n .baseInstanceName(\"app\")\n .region(\"us-central1\")\n .targetSize(5)\n .versions( \n RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(appserverGoogleComputeInstanceTemplate.selfLinkUnique())\n .build(),\n RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(appserver_canary.selfLinkUnique())\n .targetSize(RegionInstanceGroupManagerVersionTargetSizeArgs.builder()\n .fixed(1)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n appserver:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n name: appserver-igm\n baseInstanceName: app\n region: us-central1\n targetSize: 5\n versions:\n - instanceTemplate: ${appserverGoogleComputeInstanceTemplate.selfLinkUnique}\n - instanceTemplate: ${[\"appserver-canary\"].selfLinkUnique}\n targetSize:\n fixed: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With Standby Policy (`Google` Provider)\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst igm_sr = new gcp.compute.RegionInstanceGroupManager(\"igm-sr\", {\n name: \"tf-sr-igm\",\n baseInstanceName: \"tf-sr-igm-instance\",\n region: \"us-central1\",\n targetSize: 5,\n versions: [{\n instanceTemplate: sr_igm.selfLink,\n name: \"primary\",\n }],\n standbyPolicy: {\n initialDelaySec: 50,\n mode: \"SCALE_OUT_POOL\",\n },\n targetSuspendedSize: 1,\n targetStoppedSize: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nigm_sr = gcp.compute.RegionInstanceGroupManager(\"igm-sr\",\n name=\"tf-sr-igm\",\n base_instance_name=\"tf-sr-igm-instance\",\n region=\"us-central1\",\n target_size=5,\n versions=[{\n \"instance_template\": sr_igm[\"selfLink\"],\n \"name\": \"primary\",\n }],\n standby_policy={\n \"initial_delay_sec\": 50,\n \"mode\": \"SCALE_OUT_POOL\",\n },\n target_suspended_size=1,\n target_stopped_size=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var igm_sr = new Gcp.Compute.RegionInstanceGroupManager(\"igm-sr\", new()\n {\n Name = \"tf-sr-igm\",\n BaseInstanceName = \"tf-sr-igm-instance\",\n Region = \"us-central1\",\n TargetSize = 5,\n Versions = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionArgs\n {\n InstanceTemplate = sr_igm.SelfLink,\n Name = \"primary\",\n },\n },\n StandbyPolicy = new Gcp.Compute.Inputs.RegionInstanceGroupManagerStandbyPolicyArgs\n {\n InitialDelaySec = 50,\n Mode = \"SCALE_OUT_POOL\",\n },\n TargetSuspendedSize = 1,\n TargetStoppedSize = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRegionInstanceGroupManager(ctx, \"igm-sr\", \u0026compute.RegionInstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"tf-sr-igm\"),\n\t\t\tBaseInstanceName: pulumi.String(\"tf-sr-igm-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tTargetSize: pulumi.Int(5),\n\t\t\tVersions: compute.RegionInstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: pulumi.Any(sr_igm.SelfLink),\n\t\t\t\t\tName: pulumi.String(\"primary\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStandbyPolicy: \u0026compute.RegionInstanceGroupManagerStandbyPolicyArgs{\n\t\t\t\tInitialDelaySec: pulumi.Int(50),\n\t\t\t\tMode: pulumi.String(\"SCALE_OUT_POOL\"),\n\t\t\t},\n\t\t\tTargetSuspendedSize: pulumi.Int(1),\n\t\t\tTargetStoppedSize: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManager;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerStandbyPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var igm_sr = new RegionInstanceGroupManager(\"igm-sr\", RegionInstanceGroupManagerArgs.builder()\n .name(\"tf-sr-igm\")\n .baseInstanceName(\"tf-sr-igm-instance\")\n .region(\"us-central1\")\n .targetSize(5)\n .versions(RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(sr_igm.selfLink())\n .name(\"primary\")\n .build())\n .standbyPolicy(RegionInstanceGroupManagerStandbyPolicyArgs.builder()\n .initialDelaySec(50)\n .mode(\"SCALE_OUT_POOL\")\n .build())\n .targetSuspendedSize(1)\n .targetStoppedSize(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n igm-sr:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n name: tf-sr-igm\n baseInstanceName: tf-sr-igm-instance\n region: us-central1\n targetSize: 5\n versions:\n - instanceTemplate: ${[\"sr-igm\"].selfLink}\n name: primary\n standbyPolicy:\n initialDelaySec: 50\n mode: SCALE_OUT_POOL\n targetSuspendedSize: 1\n targetStoppedSize: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance group managers can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, instance group managers can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionInstanceGroupManager:RegionInstanceGroupManager default {{name}}\n```\n\n", "properties": { "allInstancesConfig": { "$ref": "#/types/gcp:compute/RegionInstanceGroupManagerAllInstancesConfig:RegionInstanceGroupManagerAllInstancesConfig", @@ -179563,7 +180571,7 @@ }, "standbyPolicy": { "$ref": "#/types/gcp:compute/RegionInstanceGroupManagerStandbyPolicy:RegionInstanceGroupManagerStandbyPolicy", - "description": "The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch)\n" + "description": "The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig).\n" }, "statefulDisks": { "type": "array", @@ -179725,7 +180733,7 @@ }, "standbyPolicy": { "$ref": "#/types/gcp:compute/RegionInstanceGroupManagerStandbyPolicy:RegionInstanceGroupManagerStandbyPolicy", - "description": "The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch)\n" + "description": "The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig).\n" }, "statefulDisks": { "type": "array", @@ -179885,7 +180893,7 @@ }, "standbyPolicy": { "$ref": "#/types/gcp:compute/RegionInstanceGroupManagerStandbyPolicy:RegionInstanceGroupManagerStandbyPolicy", - "description": "The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch)\n" + "description": "The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig).\n" }, "statefulDisks": { "type": "array", @@ -208022,30 +209030,34 @@ } }, "gcp:developerconnect/connection:Connection": { - "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", + "description": "A connection for GitHub, GitHub Enterprise, GitLab, and GitLab Enterprise.\n\n\n\n## 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### Developer Connect Connection Github\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### Developer Connect Connection Github Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_connection = new gcp.developerconnect.Connection(\"my-connection\", {\n location: \"us-central1\",\n connectionId: \"tf-test-connection\",\n githubEnterpriseConfig: {\n hostUri: \"https://ghe.proctor-staging-test.com\",\n appId: \"864434\",\n privateKeySecretVersion: \"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-private-key-f522d2/versions/latest\",\n webhookSecretSecretVersion: \"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-webhook-secret-3c806f/versions/latest\",\n appInstallationId: \"837537\",\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_enterprise_config={\n \"host_uri\": \"https://ghe.proctor-staging-test.com\",\n \"app_id\": \"864434\",\n \"private_key_secret_version\": \"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-private-key-f522d2/versions/latest\",\n \"webhook_secret_secret_version\": \"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-webhook-secret-3c806f/versions/latest\",\n \"app_installation_id\": \"837537\",\n })\n```\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 GithubEnterpriseConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubEnterpriseConfigArgs\n {\n HostUri = \"https://ghe.proctor-staging-test.com\",\n AppId = \"864434\",\n PrivateKeySecretVersion = \"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-private-key-f522d2/versions/latest\",\n WebhookSecretSecretVersion = \"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-webhook-secret-3c806f/versions/latest\",\n AppInstallationId = \"837537\",\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\tGithubEnterpriseConfig: \u0026developerconnect.ConnectionGithubEnterpriseConfigArgs{\n\t\t\t\tHostUri: pulumi.String(\"https://ghe.proctor-staging-test.com\"),\n\t\t\t\tAppId: pulumi.String(\"864434\"),\n\t\t\t\tPrivateKeySecretVersion: pulumi.String(\"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-private-key-f522d2/versions/latest\"),\n\t\t\t\tWebhookSecretSecretVersion: pulumi.String(\"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-webhook-secret-3c806f/versions/latest\"),\n\t\t\t\tAppInstallationId: pulumi.String(\"837537\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.ConnectionGithubEnterpriseConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 .githubEnterpriseConfig(ConnectionGithubEnterpriseConfigArgs.builder()\n .hostUri(\"https://ghe.proctor-staging-test.com\")\n .appId(864434)\n .privateKeySecretVersion(\"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-private-key-f522d2/versions/latest\")\n .webhookSecretSecretVersion(\"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-webhook-secret-3c806f/versions/latest\")\n .appInstallationId(837537)\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 githubEnterpriseConfig:\n hostUri: https://ghe.proctor-staging-test.com\n appId: 864434\n privateKeySecretVersion: projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-private-key-f522d2/versions/latest\n webhookSecretSecretVersion: projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-webhook-secret-3c806f/versions/latest\n appInstallationId: 837537\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Developer Connect Connection Github Enterprise Doc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst private_key_secret = new gcp.secretmanager.Secret(\"private-key-secret\", {\n secretId: \"ghe-pk-secret\",\n replication: {\n auto: {},\n },\n});\nconst private_key_secret_version = new gcp.secretmanager.SecretVersion(\"private-key-secret-version\", {\n secret: private_key_secret.id,\n secretData: std.file({\n input: \"private-key.pem\",\n }).then(invoke =\u003e invoke.result),\n});\nconst webhook_secret_secret = new gcp.secretmanager.Secret(\"webhook-secret-secret\", {\n secretId: \"ghe-token-secret\",\n replication: {\n auto: {},\n },\n});\nconst webhook_secret_secret_version = new gcp.secretmanager.SecretVersion(\"webhook-secret-secret-version\", {\n secret: webhook_secret_secret.id,\n secretData: \"\u003cwebhook-secret-data\u003e\",\n});\nconst p4sa-secretAccessor = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [\"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\"],\n }],\n});\nconst policy_pk = new gcp.secretmanager.SecretIamPolicy(\"policy-pk\", {\n secretId: private_key_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst policy_whs = new gcp.secretmanager.SecretIamPolicy(\"policy-whs\", {\n secretId: webhook_secret_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst my_connection = new gcp.developerconnect.Connection(\"my-connection\", {\n location: \"us-central1\",\n connectionId: \"my-connection\",\n githubEnterpriseConfig: {\n hostUri: \"https://ghe.com\",\n privateKeySecretVersion: private_key_secret_version.id,\n webhookSecretSecretVersion: webhook_secret_secret_version.id,\n appId: \"100\",\n appInstallationId: \"123123\",\n },\n}, {\n dependsOn: [\n policy_pk,\n policy_whs,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nprivate_key_secret = gcp.secretmanager.Secret(\"private-key-secret\",\n secret_id=\"ghe-pk-secret\",\n replication={\n \"auto\": {},\n })\nprivate_key_secret_version = gcp.secretmanager.SecretVersion(\"private-key-secret-version\",\n secret=private_key_secret.id,\n secret_data=std.file(input=\"private-key.pem\").result)\nwebhook_secret_secret = gcp.secretmanager.Secret(\"webhook-secret-secret\",\n secret_id=\"ghe-token-secret\",\n replication={\n \"auto\": {},\n })\nwebhook_secret_secret_version = gcp.secretmanager.SecretVersion(\"webhook-secret-secret-version\",\n secret=webhook_secret_secret.id,\n secret_data=\"\u003cwebhook-secret-data\u003e\")\np4sa_secret_accessor = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [\"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\"],\n}])\npolicy_pk = gcp.secretmanager.SecretIamPolicy(\"policy-pk\",\n secret_id=private_key_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\npolicy_whs = gcp.secretmanager.SecretIamPolicy(\"policy-whs\",\n secret_id=webhook_secret_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\nmy_connection = gcp.developerconnect.Connection(\"my-connection\",\n location=\"us-central1\",\n connection_id=\"my-connection\",\n github_enterprise_config={\n \"host_uri\": \"https://ghe.com\",\n \"private_key_secret_version\": private_key_secret_version.id,\n \"webhook_secret_secret_version\": webhook_secret_secret_version.id,\n \"app_id\": \"100\",\n \"app_installation_id\": \"123123\",\n },\n opts = pulumi.ResourceOptions(depends_on=[\n policy_pk,\n policy_whs,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var private_key_secret = new Gcp.SecretManager.Secret(\"private-key-secret\", new()\n {\n SecretId = \"ghe-pk-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var private_key_secret_version = new Gcp.SecretManager.SecretVersion(\"private-key-secret-version\", new()\n {\n Secret = private_key_secret.Id,\n SecretData = Std.File.Invoke(new()\n {\n Input = \"private-key.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var webhook_secret_secret = new Gcp.SecretManager.Secret(\"webhook-secret-secret\", new()\n {\n SecretId = \"ghe-token-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var webhook_secret_secret_version = new Gcp.SecretManager.SecretVersion(\"webhook-secret-secret-version\", new()\n {\n Secret = webhook_secret_secret.Id,\n SecretData = \"\u003cwebhook-secret-data\u003e\",\n });\n\n var p4sa_secretAccessor = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/secretmanager.secretAccessor\",\n Members = new[]\n {\n \"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\",\n },\n },\n },\n });\n\n var policy_pk = new Gcp.SecretManager.SecretIamPolicy(\"policy-pk\", new()\n {\n SecretId = private_key_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var policy_whs = new Gcp.SecretManager.SecretIamPolicy(\"policy-whs\", new()\n {\n SecretId = webhook_secret_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var my_connection = new Gcp.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"my-connection\",\n GithubEnterpriseConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubEnterpriseConfigArgs\n {\n HostUri = \"https://ghe.com\",\n PrivateKeySecretVersion = private_key_secret_version.Id,\n WebhookSecretSecretVersion = webhook_secret_secret_version.Id,\n AppId = \"100\",\n AppInstallationId = \"123123\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n policy_pk,\n policy_whs,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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, \"private-key-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"ghe-pk-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \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: \"private-key.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"private-key-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: private_key_secret.ID(),\n\t\t\tSecretData: pulumi.String(invokeFile.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"webhook-secret-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"ghe-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\t_, err = secretmanager.NewSecretVersion(ctx, \"webhook-secret-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: webhook_secret_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"\u003cwebhook-secret-data\u003e\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tp4sa_secretAccessor, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/secretmanager.secretAccessor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"serviceAccount:service-123456789@gcp-sa-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-pk\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: private_key_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy-whs\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: webhook_secret_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = 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\tGithubEnterpriseConfig: \u0026developerconnect.ConnectionGithubEnterpriseConfigArgs{\n\t\t\t\tHostUri: pulumi.String(\"https://ghe.com\"),\n\t\t\t\tPrivateKeySecretVersion: private_key_secret_version.ID(),\n\t\t\t\tWebhookSecretSecretVersion: webhook_secret_secret_version.ID(),\n\t\t\t\tAppId: pulumi.String(\"100\"),\n\t\t\t\tAppInstallationId: pulumi.String(\"123123\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpolicy_pk,\n\t\t\tpolicy_whs,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\nimport com.pulumi.gcp.developerconnect.Connection;\nimport com.pulumi.gcp.developerconnect.ConnectionArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubEnterpriseConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var private_key_secret = new Secret(\"private-key-secret\", SecretArgs.builder()\n .secretId(\"ghe-pk-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var private_key_secret_version = new SecretVersion(\"private-key-secret-version\", SecretVersionArgs.builder()\n .secret(private_key_secret.id())\n .secretData(StdFunctions.file(FileArgs.builder()\n .input(\"private-key.pem\")\n .build()).result())\n .build());\n\n var webhook_secret_secret = new Secret(\"webhook-secret-secret\", SecretArgs.builder()\n .secretId(\"ghe-token-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var webhook_secret_secret_version = new SecretVersion(\"webhook-secret-secret-version\", SecretVersionArgs.builder()\n .secret(webhook_secret_secret.id())\n .secretData(\"\u003cwebhook-secret-data\u003e\")\n .build());\n\n final var p4sa-secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(\"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\")\n .build())\n .build());\n\n var policy_pk = new SecretIamPolicy(\"policy-pk\", SecretIamPolicyArgs.builder()\n .secretId(private_key_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var policy_whs = new SecretIamPolicy(\"policy-whs\", SecretIamPolicyArgs.builder()\n .secretId(webhook_secret_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .connectionId(\"my-connection\")\n .githubEnterpriseConfig(ConnectionGithubEnterpriseConfigArgs.builder()\n .hostUri(\"https://ghe.com\")\n .privateKeySecretVersion(private_key_secret_version.id())\n .webhookSecretSecretVersion(webhook_secret_secret_version.id())\n .appId(100)\n .appInstallationId(123123)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n policy_pk,\n policy_whs)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n private-key-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: ghe-pk-secret\n replication:\n auto: {}\n private-key-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"private-key-secret\"].id}\n secretData:\n fn::invoke:\n function: std:file\n arguments:\n input: private-key.pem\n return: result\n webhook-secret-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: ghe-token-secret\n replication:\n auto: {}\n webhook-secret-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"webhook-secret-secret\"].id}\n secretData: \u003cwebhook-secret-data\u003e\n policy-pk:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"private-key-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n policy-whs:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"webhook-secret-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n my-connection:\n type: gcp:developerconnect:Connection\n properties:\n location: us-central1\n connectionId: my-connection\n githubEnterpriseConfig:\n hostUri: https://ghe.com\n privateKeySecretVersion: ${[\"private-key-secret-version\"].id}\n webhookSecretSecretVersion: ${[\"webhook-secret-secret-version\"].id}\n appId: 100\n appInstallationId: 123123\n options:\n dependsOn:\n - ${[\"policy-pk\"]}\n - ${[\"policy-whs\"]}\nvariables:\n p4sa-secretAccessor:\n fn::invoke:\n function: gcp:organizations:getIAMPolicy\n arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Developer Connect Connection Gitlab\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 gitlabConfig: {\n webhookSecretSecretVersion: \"projects/devconnect-terraform-creds/secrets/gitlab-webhook/versions/latest\",\n readAuthorizerCredential: {\n userTokenSecretVersion: \"projects/devconnect-terraform-creds/secrets/gitlab-read-cred/versions/latest\",\n },\n authorizerCredential: {\n userTokenSecretVersion: \"projects/devconnect-terraform-creds/secrets/gitlab-auth-cred/versions/latest\",\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 gitlab_config={\n \"webhook_secret_secret_version\": \"projects/devconnect-terraform-creds/secrets/gitlab-webhook/versions/latest\",\n \"read_authorizer_credential\": {\n \"user_token_secret_version\": \"projects/devconnect-terraform-creds/secrets/gitlab-read-cred/versions/latest\",\n },\n \"authorizer_credential\": {\n \"user_token_secret_version\": \"projects/devconnect-terraform-creds/secrets/gitlab-auth-cred/versions/latest\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_connection = new Gcp.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"tf-test-connection\",\n GitlabConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGitlabConfigArgs\n {\n WebhookSecretSecretVersion = \"projects/devconnect-terraform-creds/secrets/gitlab-webhook/versions/latest\",\n ReadAuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGitlabConfigReadAuthorizerCredentialArgs\n {\n UserTokenSecretVersion = \"projects/devconnect-terraform-creds/secrets/gitlab-read-cred/versions/latest\",\n },\n AuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGitlabConfigAuthorizerCredentialArgs\n {\n UserTokenSecretVersion = \"projects/devconnect-terraform-creds/secrets/gitlab-auth-cred/versions/latest\",\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\tGitlabConfig: \u0026developerconnect.ConnectionGitlabConfigArgs{\n\t\t\t\tWebhookSecretSecretVersion: pulumi.String(\"projects/devconnect-terraform-creds/secrets/gitlab-webhook/versions/latest\"),\n\t\t\t\tReadAuthorizerCredential: \u0026developerconnect.ConnectionGitlabConfigReadAuthorizerCredentialArgs{\n\t\t\t\t\tUserTokenSecretVersion: pulumi.String(\"projects/devconnect-terraform-creds/secrets/gitlab-read-cred/versions/latest\"),\n\t\t\t\t},\n\t\t\t\tAuthorizerCredential: \u0026developerconnect.ConnectionGitlabConfigAuthorizerCredentialArgs{\n\t\t\t\t\tUserTokenSecretVersion: pulumi.String(\"projects/devconnect-terraform-creds/secrets/gitlab-auth-cred/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\treturn nil\n\t})\n}\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.ConnectionGitlabConfigArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabConfigReadAuthorizerCredentialArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabConfigAuthorizerCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 .gitlabConfig(ConnectionGitlabConfigArgs.builder()\n .webhookSecretSecretVersion(\"projects/devconnect-terraform-creds/secrets/gitlab-webhook/versions/latest\")\n .readAuthorizerCredential(ConnectionGitlabConfigReadAuthorizerCredentialArgs.builder()\n .userTokenSecretVersion(\"projects/devconnect-terraform-creds/secrets/gitlab-read-cred/versions/latest\")\n .build())\n .authorizerCredential(ConnectionGitlabConfigAuthorizerCredentialArgs.builder()\n .userTokenSecretVersion(\"projects/devconnect-terraform-creds/secrets/gitlab-auth-cred/versions/latest\")\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 gitlabConfig:\n webhookSecretSecretVersion: projects/devconnect-terraform-creds/secrets/gitlab-webhook/versions/latest\n readAuthorizerCredential:\n userTokenSecretVersion: projects/devconnect-terraform-creds/secrets/gitlab-read-cred/versions/latest\n authorizerCredential:\n userTokenSecretVersion: projects/devconnect-terraform-creds/secrets/gitlab-auth-cred/versions/latest\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Developer Connect Connection Gitlab Enterprise\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 gitlabEnterpriseConfig: {\n hostUri: \"https://gle-us-central1.gcb-test.com\",\n webhookSecretSecretVersion: \"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-webhook/versions/latest\",\n readAuthorizerCredential: {\n userTokenSecretVersion: \"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-read-cred/versions/latest\",\n },\n authorizerCredential: {\n userTokenSecretVersion: \"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-auth-cred/versions/latest\",\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 gitlab_enterprise_config={\n \"host_uri\": \"https://gle-us-central1.gcb-test.com\",\n \"webhook_secret_secret_version\": \"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-webhook/versions/latest\",\n \"read_authorizer_credential\": {\n \"user_token_secret_version\": \"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-read-cred/versions/latest\",\n },\n \"authorizer_credential\": {\n \"user_token_secret_version\": \"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-auth-cred/versions/latest\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_connection = new Gcp.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"tf-test-connection\",\n GitlabEnterpriseConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGitlabEnterpriseConfigArgs\n {\n HostUri = \"https://gle-us-central1.gcb-test.com\",\n WebhookSecretSecretVersion = \"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-webhook/versions/latest\",\n ReadAuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs\n {\n UserTokenSecretVersion = \"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-read-cred/versions/latest\",\n },\n AuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs\n {\n UserTokenSecretVersion = \"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-auth-cred/versions/latest\",\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\tGitlabEnterpriseConfig: \u0026developerconnect.ConnectionGitlabEnterpriseConfigArgs{\n\t\t\t\tHostUri: pulumi.String(\"https://gle-us-central1.gcb-test.com\"),\n\t\t\t\tWebhookSecretSecretVersion: pulumi.String(\"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-webhook/versions/latest\"),\n\t\t\t\tReadAuthorizerCredential: \u0026developerconnect.ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs{\n\t\t\t\t\tUserTokenSecretVersion: pulumi.String(\"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-read-cred/versions/latest\"),\n\t\t\t\t},\n\t\t\t\tAuthorizerCredential: \u0026developerconnect.ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs{\n\t\t\t\t\tUserTokenSecretVersion: pulumi.String(\"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-auth-cred/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\treturn nil\n\t})\n}\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.ConnectionGitlabEnterpriseConfigArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 .gitlabEnterpriseConfig(ConnectionGitlabEnterpriseConfigArgs.builder()\n .hostUri(\"https://gle-us-central1.gcb-test.com\")\n .webhookSecretSecretVersion(\"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-webhook/versions/latest\")\n .readAuthorizerCredential(ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs.builder()\n .userTokenSecretVersion(\"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-read-cred/versions/latest\")\n .build())\n .authorizerCredential(ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs.builder()\n .userTokenSecretVersion(\"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-auth-cred/versions/latest\")\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 gitlabEnterpriseConfig:\n hostUri: https://gle-us-central1.gcb-test.com\n webhookSecretSecretVersion: projects/devconnect-terraform-creds/secrets/gitlab-enterprise-webhook/versions/latest\n readAuthorizerCredential:\n userTokenSecretVersion: projects/devconnect-terraform-creds/secrets/gitlab-enterprise-read-cred/versions/latest\n authorizerCredential:\n userTokenSecretVersion: projects/devconnect-terraform-creds/secrets/gitlab-enterprise-auth-cred/versions/latest\n```\n\u003c!--End PulumiCodeChooser --\u003e\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", "additionalProperties": { "type": "string" }, - "description": "Optional. Allows clients to store small amounts of arbitrary data.\n\n**Note**: This field is non-authoritative, and will only manage the annotations present in your configuration.\nPlease refer to the field `effective_annotations` for all of the annotations present on the resource.\n" + "description": "Optional. Allows clients to store small amounts of arbitrary data.\n**Note**: This field is non-authoritative, and will only manage the annotations present in your configuration.\nPlease refer to the field `effective_annotations` for all of the annotations present on the resource.\n" }, "connectionId": { "type": "string", - "description": "Required. Id of the requesting object. If auto-generating Id server-side,\nremove this field and connection_id from the method_signature of Create RPC.\n\n\n- - -\n" + "description": "Required. Id of the requesting object\nIf auto-generating Id server-side, remove this field and\nconnection_id from the method_signature of Create RPC\n\n\n- - -\n" }, "createTime": { "type": "string", "description": "Output only. [Output only] Create timestamp\n" }, + "cryptoKeyConfig": { + "$ref": "#/types/gcp:developerconnect/ConnectionCryptoKeyConfig:ConnectionCryptoKeyConfig", + "description": "The crypto key configuration. This field is used by the Customer-managed\nencryption keys (CMEK) feature.\nStructure is documented below.\n" + }, "deleteTime": { "type": "string", "description": "Output only. [Output only] Delete timestamp\n" }, "disabled": { "type": "boolean", - "description": "Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled.\n" + "description": "Optional. If disabled is set to true, functionality is disabled for this connection.\nRepository based API methods and webhooks processing for repositories in\nthis connection will be disabled.\n" }, "effectiveAnnotations": { "type": "object", @@ -208063,29 +209075,41 @@ }, "etag": { "type": "string", - "description": "Optional. This checksum is computed by the server based on the value\nof other fields, and may be sent on update and delete requests to ensure the\nclient has an up-to-date value before proceeding.\n" + "description": "Optional. 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.\n" }, "githubConfig": { "$ref": "#/types/gcp:developerconnect/ConnectionGithubConfig:ConnectionGithubConfig", "description": "Configuration for connections to github.com.\nStructure is documented below.\n" }, + "githubEnterpriseConfig": { + "$ref": "#/types/gcp:developerconnect/ConnectionGithubEnterpriseConfig:ConnectionGithubEnterpriseConfig", + "description": "Configuration for connections to an instance of GitHub Enterprise.\nStructure is documented below.\n" + }, + "gitlabConfig": { + "$ref": "#/types/gcp:developerconnect/ConnectionGitlabConfig:ConnectionGitlabConfig", + "description": "Configuration for connections to gitlab.com.\nStructure is documented below.\n" + }, + "gitlabEnterpriseConfig": { + "$ref": "#/types/gcp:developerconnect/ConnectionGitlabEnterpriseConfig:ConnectionGitlabEnterpriseConfig", + "description": "Configuration for connections to an instance of GitLab Enterprise.\nStructure is documented below.\n" + }, "installationStates": { "type": "array", "items": { "$ref": "#/types/gcp:developerconnect/ConnectionInstallationState:ConnectionInstallationState" }, - "description": "Describes stage and necessary actions to be taken by the user to complete the installation.\nUsed for GitHub and GitHub Enterprise based connections.\nStructure is documented below.\n" + "description": "Describes stage and necessary actions to be taken by the\nuser to complete the installation. Used for GitHub and GitHub Enterprise\nbased connections.\nStructure is documented below.\n" }, "labels": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Optional. Labels as key value pairs\n\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" + "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": "Resource ID segment making up resource `name`. It identifies the resource\nwithin its parent collection as described in https://google.aip.dev/122. See documentation\nfor resource type `developerconnect.googleapis.com/GitRepositoryLink`.\n" + "description": "Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122.\n" }, "name": { "type": "string", @@ -208105,7 +209129,7 @@ }, "reconciling": { "type": "boolean", - "description": "Output only. Set to true when the connection is being set up or updated\nin the background.\n" + "description": "Output only. Set to true when the connection is being set up or updated in the\nbackground.\n" }, "uid": { "type": "string", @@ -208137,35 +209161,51 @@ "additionalProperties": { "type": "string" }, - "description": "Optional. Allows clients to store small amounts of arbitrary data.\n\n**Note**: This field is non-authoritative, and will only manage the annotations present in your configuration.\nPlease refer to the field `effective_annotations` for all of the annotations present on the resource.\n" + "description": "Optional. Allows clients to store small amounts of arbitrary data.\n**Note**: This field is non-authoritative, and will only manage the annotations present in your configuration.\nPlease refer to the field `effective_annotations` for all of the annotations present on the resource.\n" }, "connectionId": { "type": "string", - "description": "Required. Id of the requesting object. If auto-generating Id server-side,\nremove this field and connection_id from the method_signature of Create RPC.\n\n\n- - -\n", + "description": "Required. Id of the requesting object\nIf auto-generating Id server-side, remove this field and\nconnection_id from the method_signature of Create RPC\n\n\n- - -\n", "willReplaceOnChanges": true }, + "cryptoKeyConfig": { + "$ref": "#/types/gcp:developerconnect/ConnectionCryptoKeyConfig:ConnectionCryptoKeyConfig", + "description": "The crypto key configuration. This field is used by the Customer-managed\nencryption keys (CMEK) feature.\nStructure is documented below.\n" + }, "disabled": { "type": "boolean", - "description": "Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled.\n" + "description": "Optional. If disabled is set to true, functionality is disabled for this connection.\nRepository based API methods and webhooks processing for repositories in\nthis connection will be disabled.\n" }, "etag": { "type": "string", - "description": "Optional. This checksum is computed by the server based on the value\nof other fields, and may be sent on update and delete requests to ensure the\nclient has an up-to-date value before proceeding.\n" + "description": "Optional. 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.\n" }, "githubConfig": { "$ref": "#/types/gcp:developerconnect/ConnectionGithubConfig:ConnectionGithubConfig", "description": "Configuration for connections to github.com.\nStructure is documented below.\n" }, + "githubEnterpriseConfig": { + "$ref": "#/types/gcp:developerconnect/ConnectionGithubEnterpriseConfig:ConnectionGithubEnterpriseConfig", + "description": "Configuration for connections to an instance of GitHub Enterprise.\nStructure is documented below.\n" + }, + "gitlabConfig": { + "$ref": "#/types/gcp:developerconnect/ConnectionGitlabConfig:ConnectionGitlabConfig", + "description": "Configuration for connections to gitlab.com.\nStructure is documented below.\n" + }, + "gitlabEnterpriseConfig": { + "$ref": "#/types/gcp:developerconnect/ConnectionGitlabEnterpriseConfig:ConnectionGitlabEnterpriseConfig", + "description": "Configuration for connections to an instance of GitLab Enterprise.\nStructure is documented below.\n" + }, "labels": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Optional. Labels as key value pairs\n\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" + "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": "Resource ID segment making up resource `name`. It identifies the resource\nwithin its parent collection as described in https://google.aip.dev/122. See documentation\nfor resource type `developerconnect.googleapis.com/GitRepositoryLink`.\n", + "description": "Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122.\n", "willReplaceOnChanges": true }, "project": { @@ -208186,24 +209226,28 @@ "additionalProperties": { "type": "string" }, - "description": "Optional. Allows clients to store small amounts of arbitrary data.\n\n**Note**: This field is non-authoritative, and will only manage the annotations present in your configuration.\nPlease refer to the field `effective_annotations` for all of the annotations present on the resource.\n" + "description": "Optional. Allows clients to store small amounts of arbitrary data.\n**Note**: This field is non-authoritative, and will only manage the annotations present in your configuration.\nPlease refer to the field `effective_annotations` for all of the annotations present on the resource.\n" }, "connectionId": { "type": "string", - "description": "Required. Id of the requesting object. If auto-generating Id server-side,\nremove this field and connection_id from the method_signature of Create RPC.\n\n\n- - -\n", + "description": "Required. Id of the requesting object\nIf auto-generating Id server-side, remove this field and\nconnection_id from the method_signature of Create RPC\n\n\n- - -\n", "willReplaceOnChanges": true }, "createTime": { "type": "string", "description": "Output only. [Output only] Create timestamp\n" }, + "cryptoKeyConfig": { + "$ref": "#/types/gcp:developerconnect/ConnectionCryptoKeyConfig:ConnectionCryptoKeyConfig", + "description": "The crypto key configuration. This field is used by the Customer-managed\nencryption keys (CMEK) feature.\nStructure is documented below.\n" + }, "deleteTime": { "type": "string", "description": "Output only. [Output only] Delete timestamp\n" }, "disabled": { "type": "boolean", - "description": "Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled.\n" + "description": "Optional. If disabled is set to true, functionality is disabled for this connection.\nRepository based API methods and webhooks processing for repositories in\nthis connection will be disabled.\n" }, "effectiveAnnotations": { "type": "object", @@ -208221,29 +209265,41 @@ }, "etag": { "type": "string", - "description": "Optional. This checksum is computed by the server based on the value\nof other fields, and may be sent on update and delete requests to ensure the\nclient has an up-to-date value before proceeding.\n" + "description": "Optional. 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.\n" }, "githubConfig": { "$ref": "#/types/gcp:developerconnect/ConnectionGithubConfig:ConnectionGithubConfig", "description": "Configuration for connections to github.com.\nStructure is documented below.\n" }, + "githubEnterpriseConfig": { + "$ref": "#/types/gcp:developerconnect/ConnectionGithubEnterpriseConfig:ConnectionGithubEnterpriseConfig", + "description": "Configuration for connections to an instance of GitHub Enterprise.\nStructure is documented below.\n" + }, + "gitlabConfig": { + "$ref": "#/types/gcp:developerconnect/ConnectionGitlabConfig:ConnectionGitlabConfig", + "description": "Configuration for connections to gitlab.com.\nStructure is documented below.\n" + }, + "gitlabEnterpriseConfig": { + "$ref": "#/types/gcp:developerconnect/ConnectionGitlabEnterpriseConfig:ConnectionGitlabEnterpriseConfig", + "description": "Configuration for connections to an instance of GitLab Enterprise.\nStructure is documented below.\n" + }, "installationStates": { "type": "array", "items": { "$ref": "#/types/gcp:developerconnect/ConnectionInstallationState:ConnectionInstallationState" }, - "description": "Describes stage and necessary actions to be taken by the user to complete the installation.\nUsed for GitHub and GitHub Enterprise based connections.\nStructure is documented below.\n" + "description": "Describes stage and necessary actions to be taken by the\nuser to complete the installation. Used for GitHub and GitHub Enterprise\nbased connections.\nStructure is documented below.\n" }, "labels": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Optional. Labels as key value pairs\n\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" + "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": "Resource ID segment making up resource `name`. It identifies the resource\nwithin its parent collection as described in https://google.aip.dev/122. See documentation\nfor resource type `developerconnect.googleapis.com/GitRepositoryLink`.\n", + "description": "Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122.\n", "willReplaceOnChanges": true }, "name": { @@ -208265,7 +209321,7 @@ }, "reconciling": { "type": "boolean", - "description": "Output only. Set to true when the connection is being set up or updated\nin the background.\n" + "description": "Output only. Set to true when the connection is being set up or updated in the\nbackground.\n" }, "uid": { "type": "string", @@ -208280,7 +209336,7 @@ } }, "gcp:developerconnect/gitRepositoryLink:GitRepositoryLink": { - "description": "## Example Usage\n\n### Developer Connect Git Repository Link Github Doc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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}\n my-repository:\n type: gcp:developerconnect:GitRepositoryLink\n properties:\n location: us-central1\n gitRepositoryLinkId: my-repo\n parentConnection: ${[\"my-connection\"].connectionId}\n remoteUri: https://github.com/myuser/myrepo.git\nvariables:\n p4sa-secretAccessor:\n fn::invoke:\n function: gcp:organizations:getIAMPolicy\n arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGitRepositoryLink can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connections/{{parent_connection}}/gitRepositoryLinks/{{git_repository_link_id}}`\n\n* `{{project}}/{{location}}/{{parent_connection}}/{{git_repository_link_id}}`\n\n* `{{location}}/{{parent_connection}}/{{git_repository_link_id}}`\n\nWhen using the `pulumi import` command, GitRepositoryLink can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:developerconnect/gitRepositoryLink:GitRepositoryLink default projects/{{project}}/locations/{{location}}/connections/{{parent_connection}}/gitRepositoryLinks/{{git_repository_link_id}}\n```\n\n```sh\n$ pulumi import gcp:developerconnect/gitRepositoryLink:GitRepositoryLink default {{project}}/{{location}}/{{parent_connection}}/{{git_repository_link_id}}\n```\n\n```sh\n$ pulumi import gcp:developerconnect/gitRepositoryLink:GitRepositoryLink default {{location}}/{{parent_connection}}/{{git_repository_link_id}}\n```\n\n", + "description": "A git repository link to a parent connection.\n\n\n\n## Example Usage\n\n### Developer Connect Git Repository Link Github Doc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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}\n my-repository:\n type: gcp:developerconnect:GitRepositoryLink\n properties:\n location: us-central1\n gitRepositoryLinkId: my-repo\n parentConnection: ${[\"my-connection\"].connectionId}\n remoteUri: https://github.com/myuser/myrepo.git\nvariables:\n p4sa-secretAccessor:\n fn::invoke:\n function: gcp:organizations:getIAMPolicy\n arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGitRepositoryLink can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connections/{{parent_connection}}/gitRepositoryLinks/{{git_repository_link_id}}`\n\n* `{{project}}/{{location}}/{{parent_connection}}/{{git_repository_link_id}}`\n\n* `{{location}}/{{parent_connection}}/{{git_repository_link_id}}`\n\nWhen using the `pulumi import` command, GitRepositoryLink can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:developerconnect/gitRepositoryLink:GitRepositoryLink default projects/{{project}}/locations/{{location}}/connections/{{parent_connection}}/gitRepositoryLinks/{{git_repository_link_id}}\n```\n\n```sh\n$ pulumi import gcp:developerconnect/gitRepositoryLink:GitRepositoryLink default {{project}}/{{location}}/{{parent_connection}}/{{git_repository_link_id}}\n```\n\n```sh\n$ pulumi import gcp:developerconnect/gitRepositoryLink:GitRepositoryLink default {{location}}/{{parent_connection}}/{{git_repository_link_id}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -212378,7 +213434,7 @@ } }, "gcp:dns/recordSet:RecordSet": { - "description": "## Example Usage\n\n### Binding a DNS name to the ephemeral IP of a new instance:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst frontendInstance = new gcp.compute.Instance(\"frontend\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: \"default\",\n }],\n name: \"frontend\",\n machineType: \"g1-small\",\n zone: \"us-central1-b\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n});\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst frontend = new gcp.dns.RecordSet(\"frontend\", {\n name: pulumi.interpolate`frontend.${prod.dnsName}`,\n type: \"A\",\n ttl: 300,\n managedZone: prod.name,\n rrdatas: [frontendInstance.networkInterfaces.apply(networkInterfaces =\u003e networkInterfaces[0].accessConfigs?.[0]?.natIp)],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfrontend_instance = gcp.compute.Instance(\"frontend\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": \"default\",\n }],\n name=\"frontend\",\n machine_type=\"g1-small\",\n zone=\"us-central1-b\",\n boot_disk={\n \"initialize_params\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n })\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\nfrontend = gcp.dns.RecordSet(\"frontend\",\n name=prod.dns_name.apply(lambda dns_name: f\"frontend.{dns_name}\"),\n type=\"A\",\n ttl=300,\n managed_zone=prod.name,\n rrdatas=[frontend_instance.network_interfaces[0].access_configs[0].nat_ip])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var frontendInstance = new Gcp.Compute.Instance(\"frontend\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = \"default\",\n },\n },\n Name = \"frontend\",\n MachineType = \"g1-small\",\n Zone = \"us-central1-b\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"debian-cloud/debian-11\",\n },\n },\n });\n\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var frontend = new Gcp.Dns.RecordSet(\"frontend\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"frontend.{dnsName}\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = prod.Name,\n Rrdatas = new[]\n {\n frontendInstance.NetworkInterfaces.Apply(networkInterfaces =\u003e networkInterfaces[0].AccessConfigs[0]?.NatIp),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfrontendInstance, err := compute.NewInstance(ctx, \"frontend\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\t\u0026compute.InstanceNetworkInterfaceAccessConfigArgs{},\n\t\t\t\t\t},\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"frontend\"),\n\t\t\tMachineType: pulumi.String(\"g1-small\"),\n\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"prod-zone\"),\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"frontend\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"frontend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tManagedZone: prod.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tpulumi.String(frontendInstance.NetworkInterfaces.ApplyT(func(networkInterfaces []compute.InstanceNetworkInterface) (*string, error) {\n\t\t\t\t\treturn \u0026networkInterfaces[0].AccessConfigs[0].NatIp, nil\n\t\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var frontendInstance = new Instance(\"frontendInstance\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(\"default\")\n .build())\n .name(\"frontend\")\n .machineType(\"g1-small\")\n .zone(\"us-central1-b\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .build())\n .build())\n .build());\n\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var frontend = new RecordSet(\"frontend\", RecordSetArgs.builder()\n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"frontend.%s\", dnsName)))\n .type(\"A\")\n .ttl(300)\n .managedZone(prod.name())\n .rrdatas(frontendInstance.networkInterfaces().applyValue(networkInterfaces -\u003e networkInterfaces[0].accessConfigs()[0].natIp()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n frontend:\n type: gcp:dns:RecordSet\n properties:\n name: frontend.${prod.dnsName}\n type: A\n ttl: 300\n managedZone: ${prod.name}\n rrdatas:\n - ${frontendInstance.networkInterfaces[0].accessConfigs[0].natIp}\n frontendInstance:\n type: gcp:compute:Instance\n name: frontend\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: default\n name: frontend\n machineType: g1-small\n zone: us-central1-b\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Adding an A record\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst a = new gcp.dns.RecordSet(\"a\", {\n name: pulumi.interpolate`backend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"A\",\n ttl: 300,\n rrdatas: [\"8.8.8.8\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\na = gcp.dns.RecordSet(\"a\",\n name=prod.dns_name.apply(lambda dns_name: f\"backend.{dns_name}\"),\n managed_zone=prod.name,\n type=\"A\",\n ttl=300,\n rrdatas=[\"8.8.8.8\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var a = new Gcp.Dns.RecordSet(\"a\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"backend.{dnsName}\"),\n ManagedZone = prod.Name,\n Type = \"A\",\n Ttl = 300,\n Rrdatas = new[]\n {\n \"8.8.8.8\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"prod-zone\"),\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"a\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"backend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"8.8.8.8\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var a = new RecordSet(\"a\", RecordSetArgs.builder()\n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"backend.%s\", dnsName)))\n .managedZone(prod.name())\n .type(\"A\")\n .ttl(300)\n .rrdatas(\"8.8.8.8\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n a:\n type: gcp:dns:RecordSet\n properties:\n name: backend.${prod.dnsName}\n managedZone: ${prod.name}\n type: A\n ttl: 300\n rrdatas:\n - 8.8.8.8\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Adding an MX record\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst mx = new gcp.dns.RecordSet(\"mx\", {\n name: prod.dnsName,\n managedZone: prod.name,\n type: \"MX\",\n ttl: 3600,\n rrdatas: [\n \"1 aspmx.l.google.com.\",\n \"5 alt1.aspmx.l.google.com.\",\n \"5 alt2.aspmx.l.google.com.\",\n \"10 alt3.aspmx.l.google.com.\",\n \"10 alt4.aspmx.l.google.com.\",\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\nmx = gcp.dns.RecordSet(\"mx\",\n name=prod.dns_name,\n managed_zone=prod.name,\n type=\"MX\",\n ttl=3600,\n rrdatas=[\n \"1 aspmx.l.google.com.\",\n \"5 alt1.aspmx.l.google.com.\",\n \"5 alt2.aspmx.l.google.com.\",\n \"10 alt3.aspmx.l.google.com.\",\n \"10 alt4.aspmx.l.google.com.\",\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var mx = new Gcp.Dns.RecordSet(\"mx\", new()\n {\n Name = prod.DnsName,\n ManagedZone = prod.Name,\n Type = \"MX\",\n Ttl = 3600,\n Rrdatas = new[]\n {\n \"1 aspmx.l.google.com.\",\n \"5 alt1.aspmx.l.google.com.\",\n \"5 alt2.aspmx.l.google.com.\",\n \"10 alt3.aspmx.l.google.com.\",\n \"10 alt4.aspmx.l.google.com.\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"prod-zone\"),\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"mx\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName,\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"MX\"),\n\t\t\tTtl: pulumi.Int(3600),\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"1 aspmx.l.google.com.\"),\n\t\t\t\tpulumi.String(\"5 alt1.aspmx.l.google.com.\"),\n\t\t\t\tpulumi.String(\"5 alt2.aspmx.l.google.com.\"),\n\t\t\t\tpulumi.String(\"10 alt3.aspmx.l.google.com.\"),\n\t\t\t\tpulumi.String(\"10 alt4.aspmx.l.google.com.\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var mx = new RecordSet(\"mx\", RecordSetArgs.builder()\n .name(prod.dnsName())\n .managedZone(prod.name())\n .type(\"MX\")\n .ttl(3600)\n .rrdatas( \n \"1 aspmx.l.google.com.\",\n \"5 alt1.aspmx.l.google.com.\",\n \"5 alt2.aspmx.l.google.com.\",\n \"10 alt3.aspmx.l.google.com.\",\n \"10 alt4.aspmx.l.google.com.\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n mx:\n type: gcp:dns:RecordSet\n properties:\n name: ${prod.dnsName}\n managedZone: ${prod.name}\n type: MX\n ttl: 3600\n rrdatas:\n - 1 aspmx.l.google.com.\n - 5 alt1.aspmx.l.google.com.\n - 5 alt2.aspmx.l.google.com.\n - 10 alt3.aspmx.l.google.com.\n - 10 alt4.aspmx.l.google.com.\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Adding an SPF record\n\nQuotes (`\"\"`) must be added around your `rrdatas` for a SPF record. Otherwise `rrdatas` string gets split on spaces.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst spf = new gcp.dns.RecordSet(\"spf\", {\n name: pulumi.interpolate`frontend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"TXT\",\n ttl: 300,\n rrdatas: [\"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\nspf = gcp.dns.RecordSet(\"spf\",\n name=prod.dns_name.apply(lambda dns_name: f\"frontend.{dns_name}\"),\n managed_zone=prod.name,\n type=\"TXT\",\n ttl=300,\n rrdatas=[\"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var spf = new Gcp.Dns.RecordSet(\"spf\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"frontend.{dnsName}\"),\n ManagedZone = prod.Name,\n Type = \"TXT\",\n Ttl = 300,\n Rrdatas = new[]\n {\n \"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"prod-zone\"),\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"spf\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"frontend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"TXT\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var spf = new RecordSet(\"spf\", RecordSetArgs.builder()\n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"frontend.%s\", dnsName)))\n .managedZone(prod.name())\n .type(\"TXT\")\n .ttl(300)\n .rrdatas(\"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n spf:\n type: gcp:dns:RecordSet\n properties:\n name: frontend.${prod.dnsName}\n managedZone: ${prod.name}\n type: TXT\n ttl: 300\n rrdatas:\n - '\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\"'\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Adding a CNAME record\n\n The list of `rrdatas` should only contain a single string corresponding to the Canonical Name intended.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst cname = new gcp.dns.RecordSet(\"cname\", {\n name: pulumi.interpolate`frontend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"CNAME\",\n ttl: 300,\n rrdatas: [\"frontend.mydomain.com.\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\ncname = gcp.dns.RecordSet(\"cname\",\n name=prod.dns_name.apply(lambda dns_name: f\"frontend.{dns_name}\"),\n managed_zone=prod.name,\n type=\"CNAME\",\n ttl=300,\n rrdatas=[\"frontend.mydomain.com.\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var cname = new Gcp.Dns.RecordSet(\"cname\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"frontend.{dnsName}\"),\n ManagedZone = prod.Name,\n Type = \"CNAME\",\n Ttl = 300,\n Rrdatas = new[]\n {\n \"frontend.mydomain.com.\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"prod-zone\"),\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"cname\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"frontend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"CNAME\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"frontend.mydomain.com.\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var cname = new RecordSet(\"cname\", RecordSetArgs.builder()\n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"frontend.%s\", dnsName)))\n .managedZone(prod.name())\n .type(\"CNAME\")\n .ttl(300)\n .rrdatas(\"frontend.mydomain.com.\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cname:\n type: gcp:dns:RecordSet\n properties:\n name: frontend.${prod.dnsName}\n managedZone: ${prod.name}\n type: CNAME\n ttl: 300\n rrdatas:\n - frontend.mydomain.com.\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Setting Routing Policy instead of using rrdatas\n### Geolocation\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst geo = new gcp.dns.RecordSet(\"geo\", {\n name: `backend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"A\",\n ttl: 300,\n routingPolicy: {\n geos: [\n {\n location: \"asia-east1\",\n rrdatas: [\"10.128.1.1\"],\n },\n {\n location: \"us-central1\",\n rrdatas: [\"10.130.1.1\"],\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngeo = gcp.dns.RecordSet(\"geo\",\n name=f\"backend.{prod['dnsName']}\",\n managed_zone=prod[\"name\"],\n type=\"A\",\n ttl=300,\n routing_policy={\n \"geos\": [\n {\n \"location\": \"asia-east1\",\n \"rrdatas\": [\"10.128.1.1\"],\n },\n {\n \"location\": \"us-central1\",\n \"rrdatas\": [\"10.130.1.1\"],\n },\n ],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var geo = new Gcp.Dns.RecordSet(\"geo\", new()\n {\n Name = $\"backend.{prod.DnsName}\",\n ManagedZone = prod.Name,\n Type = \"A\",\n Ttl = 300,\n RoutingPolicy = new Gcp.Dns.Inputs.RecordSetRoutingPolicyArgs\n {\n Geos = new[]\n {\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyGeoArgs\n {\n Location = \"asia-east1\",\n Rrdatas = new[]\n {\n \"10.128.1.1\",\n },\n },\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyGeoArgs\n {\n Location = \"us-central1\",\n Rrdatas = new[]\n {\n \"10.130.1.1\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dns.NewRecordSet(ctx, \"geo\", \u0026dns.RecordSetArgs{\n\t\t\tName: pulumi.Sprintf(\"backend.%v\", prod.DnsName),\n\t\t\tManagedZone: pulumi.Any(prod.Name),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRoutingPolicy: \u0026dns.RecordSetRoutingPolicyArgs{\n\t\t\t\tGeos: dns.RecordSetRoutingPolicyGeoArray{\n\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyGeoArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"asia-east1\"),\n\t\t\t\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.128.1.1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyGeoArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.130.1.1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var geo = new RecordSet(\"geo\", RecordSetArgs.builder()\n .name(String.format(\"backend.%s\", prod.dnsName()))\n .managedZone(prod.name())\n .type(\"A\")\n .ttl(300)\n .routingPolicy(RecordSetRoutingPolicyArgs.builder()\n .geos( \n RecordSetRoutingPolicyGeoArgs.builder()\n .location(\"asia-east1\")\n .rrdatas(\"10.128.1.1\")\n .build(),\n RecordSetRoutingPolicyGeoArgs.builder()\n .location(\"us-central1\")\n .rrdatas(\"10.130.1.1\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n geo:\n type: gcp:dns:RecordSet\n properties:\n name: backend.${prod.dnsName}\n managedZone: ${prod.name}\n type: A\n ttl: 300\n routingPolicy:\n geos:\n - location: asia-east1\n rrdatas:\n - 10.128.1.1\n - location: us-central1\n rrdatas:\n - 10.130.1.1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Failover\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst prodRegionBackendService = new gcp.compute.RegionBackendService(\"prod\", {\n name: \"prod-backend\",\n region: \"us-central1\",\n});\nconst prodNetwork = new gcp.compute.Network(\"prod\", {name: \"prod-network\"});\nconst prodForwardingRule = new gcp.compute.ForwardingRule(\"prod\", {\n name: \"prod-ilb\",\n region: \"us-central1\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: prodRegionBackendService.id,\n allPorts: true,\n network: prodNetwork.name,\n allowGlobalAccess: true,\n});\nconst a = new gcp.dns.RecordSet(\"a\", {\n name: pulumi.interpolate`backend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"A\",\n ttl: 300,\n routingPolicy: {\n primaryBackup: {\n trickleRatio: 0.1,\n primary: {\n internalLoadBalancers: [{\n loadBalancerType: \"regionalL4ilb\",\n ipAddress: prodForwardingRule.ipAddress,\n port: \"80\",\n ipProtocol: \"tcp\",\n networkUrl: prodNetwork.id,\n project: prodForwardingRule.project,\n region: prodForwardingRule.region,\n }],\n },\n backupGeos: [\n {\n location: \"asia-east1\",\n rrdatas: [\"10.128.1.1\"],\n },\n {\n location: \"us-west1\",\n rrdatas: [\"10.130.1.1\"],\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\nprod_region_backend_service = gcp.compute.RegionBackendService(\"prod\",\n name=\"prod-backend\",\n region=\"us-central1\")\nprod_network = gcp.compute.Network(\"prod\", name=\"prod-network\")\nprod_forwarding_rule = gcp.compute.ForwardingRule(\"prod\",\n name=\"prod-ilb\",\n region=\"us-central1\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=prod_region_backend_service.id,\n all_ports=True,\n network=prod_network.name,\n allow_global_access=True)\na = gcp.dns.RecordSet(\"a\",\n name=prod.dns_name.apply(lambda dns_name: f\"backend.{dns_name}\"),\n managed_zone=prod.name,\n type=\"A\",\n ttl=300,\n routing_policy={\n \"primary_backup\": {\n \"trickle_ratio\": 0.1,\n \"primary\": {\n \"internal_load_balancers\": [{\n \"load_balancer_type\": \"regionalL4ilb\",\n \"ip_address\": prod_forwarding_rule.ip_address,\n \"port\": \"80\",\n \"ip_protocol\": \"tcp\",\n \"network_url\": prod_network.id,\n \"project\": prod_forwarding_rule.project,\n \"region\": prod_forwarding_rule.region,\n }],\n },\n \"backup_geos\": [\n {\n \"location\": \"asia-east1\",\n \"rrdatas\": [\"10.128.1.1\"],\n },\n {\n \"location\": \"us-west1\",\n \"rrdatas\": [\"10.130.1.1\"],\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var prodRegionBackendService = new Gcp.Compute.RegionBackendService(\"prod\", new()\n {\n Name = \"prod-backend\",\n Region = \"us-central1\",\n });\n\n var prodNetwork = new Gcp.Compute.Network(\"prod\", new()\n {\n Name = \"prod-network\",\n });\n\n var prodForwardingRule = new Gcp.Compute.ForwardingRule(\"prod\", new()\n {\n Name = \"prod-ilb\",\n Region = \"us-central1\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = prodRegionBackendService.Id,\n AllPorts = true,\n Network = prodNetwork.Name,\n AllowGlobalAccess = true,\n });\n\n var a = new Gcp.Dns.RecordSet(\"a\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"backend.{dnsName}\"),\n ManagedZone = prod.Name,\n Type = \"A\",\n Ttl = 300,\n RoutingPolicy = new Gcp.Dns.Inputs.RecordSetRoutingPolicyArgs\n {\n PrimaryBackup = new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupArgs\n {\n TrickleRatio = 0.1,\n Primary = new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs\n {\n InternalLoadBalancers = new[]\n {\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs\n {\n LoadBalancerType = \"regionalL4ilb\",\n IpAddress = prodForwardingRule.IpAddress,\n Port = \"80\",\n IpProtocol = \"tcp\",\n NetworkUrl = prodNetwork.Id,\n Project = prodForwardingRule.Project,\n Region = prodForwardingRule.Region,\n },\n },\n },\n BackupGeos = new[]\n {\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs\n {\n Location = \"asia-east1\",\n Rrdatas = new[]\n {\n \"10.128.1.1\",\n },\n },\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs\n {\n Location = \"us-west1\",\n Rrdatas = new[]\n {\n \"10.130.1.1\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"prod-zone\"),\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprodRegionBackendService, err := compute.NewRegionBackendService(ctx, \"prod\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"prod-backend\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprodNetwork, err := compute.NewNetwork(ctx, \"prod\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"prod-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprodForwardingRule, err := compute.NewForwardingRule(ctx, \"prod\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"prod-ilb\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: prodRegionBackendService.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: prodNetwork.Name,\n\t\t\tAllowGlobalAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"a\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"backend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRoutingPolicy: \u0026dns.RecordSetRoutingPolicyArgs{\n\t\t\t\tPrimaryBackup: \u0026dns.RecordSetRoutingPolicyPrimaryBackupArgs{\n\t\t\t\t\tTrickleRatio: pulumi.Float64(0.1),\n\t\t\t\t\tPrimary: \u0026dns.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs{\n\t\t\t\t\t\tInternalLoadBalancers: dns.RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArray{\n\t\t\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs{\n\t\t\t\t\t\t\t\tLoadBalancerType: pulumi.String(\"regionalL4ilb\"),\n\t\t\t\t\t\t\t\tIpAddress: prodForwardingRule.IpAddress,\n\t\t\t\t\t\t\t\tPort: pulumi.String(\"80\"),\n\t\t\t\t\t\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\t\t\t\tNetworkUrl: prodNetwork.ID(),\n\t\t\t\t\t\t\t\tProject: prodForwardingRule.Project,\n\t\t\t\t\t\t\t\tRegion: prodForwardingRule.Region,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tBackupGeos: dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArray{\n\t\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"asia-east1\"),\n\t\t\t\t\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.128.1.1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\t\t\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.130.1.1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyPrimaryBackupArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var prodRegionBackendService = new RegionBackendService(\"prodRegionBackendService\", RegionBackendServiceArgs.builder()\n .name(\"prod-backend\")\n .region(\"us-central1\")\n .build());\n\n var prodNetwork = new Network(\"prodNetwork\", NetworkArgs.builder()\n .name(\"prod-network\")\n .build());\n\n var prodForwardingRule = new ForwardingRule(\"prodForwardingRule\", ForwardingRuleArgs.builder()\n .name(\"prod-ilb\")\n .region(\"us-central1\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(prodRegionBackendService.id())\n .allPorts(true)\n .network(prodNetwork.name())\n .allowGlobalAccess(true)\n .build());\n\n var a = new RecordSet(\"a\", RecordSetArgs.builder()\n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"backend.%s\", dnsName)))\n .managedZone(prod.name())\n .type(\"A\")\n .ttl(300)\n .routingPolicy(RecordSetRoutingPolicyArgs.builder()\n .primaryBackup(RecordSetRoutingPolicyPrimaryBackupArgs.builder()\n .trickleRatio(0.1)\n .primary(RecordSetRoutingPolicyPrimaryBackupPrimaryArgs.builder()\n .internalLoadBalancers(RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs.builder()\n .loadBalancerType(\"regionalL4ilb\")\n .ipAddress(prodForwardingRule.ipAddress())\n .port(\"80\")\n .ipProtocol(\"tcp\")\n .networkUrl(prodNetwork.id())\n .project(prodForwardingRule.project())\n .region(prodForwardingRule.region())\n .build())\n .build())\n .backupGeos( \n RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs.builder()\n .location(\"asia-east1\")\n .rrdatas(\"10.128.1.1\")\n .build(),\n RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs.builder()\n .location(\"us-west1\")\n .rrdatas(\"10.130.1.1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n a:\n type: gcp:dns:RecordSet\n properties:\n name: backend.${prod.dnsName}\n managedZone: ${prod.name}\n type: A\n ttl: 300\n routingPolicy:\n primaryBackup:\n trickleRatio: 0.1\n primary:\n internalLoadBalancers:\n - loadBalancerType: regionalL4ilb\n ipAddress: ${prodForwardingRule.ipAddress}\n port: '80'\n ipProtocol: tcp\n networkUrl: ${prodNetwork.id}\n project: ${prodForwardingRule.project}\n region: ${prodForwardingRule.region}\n backupGeos:\n - location: asia-east1\n rrdatas:\n - 10.128.1.1\n - location: us-west1\n rrdatas:\n - 10.130.1.1\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n prodForwardingRule:\n type: gcp:compute:ForwardingRule\n name: prod\n properties:\n name: prod-ilb\n region: us-central1\n loadBalancingScheme: INTERNAL\n backendService: ${prodRegionBackendService.id}\n allPorts: true\n network: ${prodNetwork.name}\n allowGlobalAccess: true\n prodRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: prod\n properties:\n name: prod-backend\n region: us-central1\n prodNetwork:\n type: gcp:compute:Network\n name: prod\n properties:\n name: prod-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDNS record sets can be imported using either of these accepted formats:\n\n* `projects/{{project}}/managedZones/{{zone}}/rrsets/{{name}}/{{type}}`\n\n* `{{project}}/{{zone}}/{{name}}/{{type}}`\n\n* `{{zone}}/{{name}}/{{type}}`\n\nWhen using the `pulumi import` command, DNS record sets can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dns/recordSet:RecordSet default projects/{{project}}/managedZones/{{zone}}/rrsets/{{name}}/{{type}}\n```\n\n```sh\n$ pulumi import gcp:dns/recordSet:RecordSet default {{project}}/{{zone}}/{{name}}/{{type}}\n```\n\n```sh\n$ pulumi import gcp:dns/recordSet:RecordSet default {{zone}}/{{name}}/{{type}}\n```\n\nNote: The record name must include the trailing dot at the end.\n\n", + "description": "## Example Usage\n\n### Binding a DNS name to the ephemeral IP of a new instance:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst frontendInstance = new gcp.compute.Instance(\"frontend\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: \"default\",\n }],\n name: \"frontend\",\n machineType: \"g1-small\",\n zone: \"us-central1-b\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n});\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst frontend = new gcp.dns.RecordSet(\"frontend\", {\n name: pulumi.interpolate`frontend.${prod.dnsName}`,\n type: \"A\",\n ttl: 300,\n managedZone: prod.name,\n rrdatas: [frontendInstance.networkInterfaces.apply(networkInterfaces =\u003e networkInterfaces[0].accessConfigs?.[0]?.natIp)],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfrontend_instance = gcp.compute.Instance(\"frontend\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": \"default\",\n }],\n name=\"frontend\",\n machine_type=\"g1-small\",\n zone=\"us-central1-b\",\n boot_disk={\n \"initialize_params\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n })\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\nfrontend = gcp.dns.RecordSet(\"frontend\",\n name=prod.dns_name.apply(lambda dns_name: f\"frontend.{dns_name}\"),\n type=\"A\",\n ttl=300,\n managed_zone=prod.name,\n rrdatas=[frontend_instance.network_interfaces[0].access_configs[0].nat_ip])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var frontendInstance = new Gcp.Compute.Instance(\"frontend\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = \"default\",\n },\n },\n Name = \"frontend\",\n MachineType = \"g1-small\",\n Zone = \"us-central1-b\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"debian-cloud/debian-11\",\n },\n },\n });\n\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var frontend = new Gcp.Dns.RecordSet(\"frontend\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"frontend.{dnsName}\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = prod.Name,\n Rrdatas = new[]\n {\n frontendInstance.NetworkInterfaces.Apply(networkInterfaces =\u003e networkInterfaces[0].AccessConfigs[0]?.NatIp),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfrontendInstance, err := compute.NewInstance(ctx, \"frontend\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\t\u0026compute.InstanceNetworkInterfaceAccessConfigArgs{},\n\t\t\t\t\t},\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"frontend\"),\n\t\t\tMachineType: pulumi.String(\"g1-small\"),\n\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"prod-zone\"),\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"frontend\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"frontend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tManagedZone: prod.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tpulumi.String(frontendInstance.NetworkInterfaces.ApplyT(func(networkInterfaces []compute.InstanceNetworkInterface) (*string, error) {\n\t\t\t\t\treturn \u0026networkInterfaces[0].AccessConfigs[0].NatIp, nil\n\t\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var frontendInstance = new Instance(\"frontendInstance\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(\"default\")\n .build())\n .name(\"frontend\")\n .machineType(\"g1-small\")\n .zone(\"us-central1-b\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .build())\n .build())\n .build());\n\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var frontend = new RecordSet(\"frontend\", RecordSetArgs.builder()\n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"frontend.%s\", dnsName)))\n .type(\"A\")\n .ttl(300)\n .managedZone(prod.name())\n .rrdatas(frontendInstance.networkInterfaces().applyValue(networkInterfaces -\u003e networkInterfaces[0].accessConfigs()[0].natIp()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n frontend:\n type: gcp:dns:RecordSet\n properties:\n name: frontend.${prod.dnsName}\n type: A\n ttl: 300\n managedZone: ${prod.name}\n rrdatas:\n - ${frontendInstance.networkInterfaces[0].accessConfigs[0].natIp}\n frontendInstance:\n type: gcp:compute:Instance\n name: frontend\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: default\n name: frontend\n machineType: g1-small\n zone: us-central1-b\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Adding an A record\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst a = new gcp.dns.RecordSet(\"a\", {\n name: pulumi.interpolate`backend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"A\",\n ttl: 300,\n rrdatas: [\"8.8.8.8\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\na = gcp.dns.RecordSet(\"a\",\n name=prod.dns_name.apply(lambda dns_name: f\"backend.{dns_name}\"),\n managed_zone=prod.name,\n type=\"A\",\n ttl=300,\n rrdatas=[\"8.8.8.8\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var a = new Gcp.Dns.RecordSet(\"a\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"backend.{dnsName}\"),\n ManagedZone = prod.Name,\n Type = \"A\",\n Ttl = 300,\n Rrdatas = new[]\n {\n \"8.8.8.8\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"prod-zone\"),\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"a\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"backend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"8.8.8.8\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var a = new RecordSet(\"a\", RecordSetArgs.builder()\n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"backend.%s\", dnsName)))\n .managedZone(prod.name())\n .type(\"A\")\n .ttl(300)\n .rrdatas(\"8.8.8.8\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n a:\n type: gcp:dns:RecordSet\n properties:\n name: backend.${prod.dnsName}\n managedZone: ${prod.name}\n type: A\n ttl: 300\n rrdatas:\n - 8.8.8.8\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Adding an MX record\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst mx = new gcp.dns.RecordSet(\"mx\", {\n name: prod.dnsName,\n managedZone: prod.name,\n type: \"MX\",\n ttl: 3600,\n rrdatas: [\n \"1 aspmx.l.google.com.\",\n \"5 alt1.aspmx.l.google.com.\",\n \"5 alt2.aspmx.l.google.com.\",\n \"10 alt3.aspmx.l.google.com.\",\n \"10 alt4.aspmx.l.google.com.\",\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\nmx = gcp.dns.RecordSet(\"mx\",\n name=prod.dns_name,\n managed_zone=prod.name,\n type=\"MX\",\n ttl=3600,\n rrdatas=[\n \"1 aspmx.l.google.com.\",\n \"5 alt1.aspmx.l.google.com.\",\n \"5 alt2.aspmx.l.google.com.\",\n \"10 alt3.aspmx.l.google.com.\",\n \"10 alt4.aspmx.l.google.com.\",\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var mx = new Gcp.Dns.RecordSet(\"mx\", new()\n {\n Name = prod.DnsName,\n ManagedZone = prod.Name,\n Type = \"MX\",\n Ttl = 3600,\n Rrdatas = new[]\n {\n \"1 aspmx.l.google.com.\",\n \"5 alt1.aspmx.l.google.com.\",\n \"5 alt2.aspmx.l.google.com.\",\n \"10 alt3.aspmx.l.google.com.\",\n \"10 alt4.aspmx.l.google.com.\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"prod-zone\"),\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"mx\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName,\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"MX\"),\n\t\t\tTtl: pulumi.Int(3600),\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"1 aspmx.l.google.com.\"),\n\t\t\t\tpulumi.String(\"5 alt1.aspmx.l.google.com.\"),\n\t\t\t\tpulumi.String(\"5 alt2.aspmx.l.google.com.\"),\n\t\t\t\tpulumi.String(\"10 alt3.aspmx.l.google.com.\"),\n\t\t\t\tpulumi.String(\"10 alt4.aspmx.l.google.com.\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var mx = new RecordSet(\"mx\", RecordSetArgs.builder()\n .name(prod.dnsName())\n .managedZone(prod.name())\n .type(\"MX\")\n .ttl(3600)\n .rrdatas( \n \"1 aspmx.l.google.com.\",\n \"5 alt1.aspmx.l.google.com.\",\n \"5 alt2.aspmx.l.google.com.\",\n \"10 alt3.aspmx.l.google.com.\",\n \"10 alt4.aspmx.l.google.com.\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n mx:\n type: gcp:dns:RecordSet\n properties:\n name: ${prod.dnsName}\n managedZone: ${prod.name}\n type: MX\n ttl: 3600\n rrdatas:\n - 1 aspmx.l.google.com.\n - 5 alt1.aspmx.l.google.com.\n - 5 alt2.aspmx.l.google.com.\n - 10 alt3.aspmx.l.google.com.\n - 10 alt4.aspmx.l.google.com.\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Adding an SPF record\n\nQuotes (`\"\"`) must be added around your `rrdatas` for a SPF record. Otherwise `rrdatas` string gets split on spaces.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst spf = new gcp.dns.RecordSet(\"spf\", {\n name: pulumi.interpolate`frontend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"TXT\",\n ttl: 300,\n rrdatas: [\"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\nspf = gcp.dns.RecordSet(\"spf\",\n name=prod.dns_name.apply(lambda dns_name: f\"frontend.{dns_name}\"),\n managed_zone=prod.name,\n type=\"TXT\",\n ttl=300,\n rrdatas=[\"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var spf = new Gcp.Dns.RecordSet(\"spf\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"frontend.{dnsName}\"),\n ManagedZone = prod.Name,\n Type = \"TXT\",\n Ttl = 300,\n Rrdatas = new[]\n {\n \"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"prod-zone\"),\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"spf\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"frontend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"TXT\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var spf = new RecordSet(\"spf\", RecordSetArgs.builder()\n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"frontend.%s\", dnsName)))\n .managedZone(prod.name())\n .type(\"TXT\")\n .ttl(300)\n .rrdatas(\"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n spf:\n type: gcp:dns:RecordSet\n properties:\n name: frontend.${prod.dnsName}\n managedZone: ${prod.name}\n type: TXT\n ttl: 300\n rrdatas:\n - '\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\"'\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Adding a CNAME record\n\n The list of `rrdatas` should only contain a single string corresponding to the Canonical Name intended.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst cname = new gcp.dns.RecordSet(\"cname\", {\n name: pulumi.interpolate`frontend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"CNAME\",\n ttl: 300,\n rrdatas: [\"frontend.mydomain.com.\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\ncname = gcp.dns.RecordSet(\"cname\",\n name=prod.dns_name.apply(lambda dns_name: f\"frontend.{dns_name}\"),\n managed_zone=prod.name,\n type=\"CNAME\",\n ttl=300,\n rrdatas=[\"frontend.mydomain.com.\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var cname = new Gcp.Dns.RecordSet(\"cname\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"frontend.{dnsName}\"),\n ManagedZone = prod.Name,\n Type = \"CNAME\",\n Ttl = 300,\n Rrdatas = new[]\n {\n \"frontend.mydomain.com.\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"prod-zone\"),\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"cname\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"frontend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"CNAME\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"frontend.mydomain.com.\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var cname = new RecordSet(\"cname\", RecordSetArgs.builder()\n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"frontend.%s\", dnsName)))\n .managedZone(prod.name())\n .type(\"CNAME\")\n .ttl(300)\n .rrdatas(\"frontend.mydomain.com.\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cname:\n type: gcp:dns:RecordSet\n properties:\n name: frontend.${prod.dnsName}\n managedZone: ${prod.name}\n type: CNAME\n ttl: 300\n rrdatas:\n - frontend.mydomain.com.\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Setting Routing Policy instead of using rrdatas\n### Geolocation\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst geo = new gcp.dns.RecordSet(\"geo\", {\n name: `backend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"A\",\n ttl: 300,\n routingPolicy: {\n geos: [\n {\n location: \"asia-east1\",\n rrdatas: [\"10.128.1.1\"],\n },\n {\n location: \"us-central1\",\n rrdatas: [\"10.130.1.1\"],\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngeo = gcp.dns.RecordSet(\"geo\",\n name=f\"backend.{prod['dnsName']}\",\n managed_zone=prod[\"name\"],\n type=\"A\",\n ttl=300,\n routing_policy={\n \"geos\": [\n {\n \"location\": \"asia-east1\",\n \"rrdatas\": [\"10.128.1.1\"],\n },\n {\n \"location\": \"us-central1\",\n \"rrdatas\": [\"10.130.1.1\"],\n },\n ],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var geo = new Gcp.Dns.RecordSet(\"geo\", new()\n {\n Name = $\"backend.{prod.DnsName}\",\n ManagedZone = prod.Name,\n Type = \"A\",\n Ttl = 300,\n RoutingPolicy = new Gcp.Dns.Inputs.RecordSetRoutingPolicyArgs\n {\n Geos = new[]\n {\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyGeoArgs\n {\n Location = \"asia-east1\",\n Rrdatas = new[]\n {\n \"10.128.1.1\",\n },\n },\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyGeoArgs\n {\n Location = \"us-central1\",\n Rrdatas = new[]\n {\n \"10.130.1.1\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dns.NewRecordSet(ctx, \"geo\", \u0026dns.RecordSetArgs{\n\t\t\tName: pulumi.Sprintf(\"backend.%v\", prod.DnsName),\n\t\t\tManagedZone: pulumi.Any(prod.Name),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRoutingPolicy: \u0026dns.RecordSetRoutingPolicyArgs{\n\t\t\t\tGeos: dns.RecordSetRoutingPolicyGeoArray{\n\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyGeoArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"asia-east1\"),\n\t\t\t\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.128.1.1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyGeoArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.130.1.1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var geo = new RecordSet(\"geo\", RecordSetArgs.builder()\n .name(String.format(\"backend.%s\", prod.dnsName()))\n .managedZone(prod.name())\n .type(\"A\")\n .ttl(300)\n .routingPolicy(RecordSetRoutingPolicyArgs.builder()\n .geos( \n RecordSetRoutingPolicyGeoArgs.builder()\n .location(\"asia-east1\")\n .rrdatas(\"10.128.1.1\")\n .build(),\n RecordSetRoutingPolicyGeoArgs.builder()\n .location(\"us-central1\")\n .rrdatas(\"10.130.1.1\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n geo:\n type: gcp:dns:RecordSet\n properties:\n name: backend.${prod.dnsName}\n managedZone: ${prod.name}\n type: A\n ttl: 300\n routingPolicy:\n geos:\n - location: asia-east1\n rrdatas:\n - 10.128.1.1\n - location: us-central1\n rrdatas:\n - 10.130.1.1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Failover\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst prodRegionBackendService = new gcp.compute.RegionBackendService(\"prod\", {\n name: \"prod-backend\",\n region: \"us-central1\",\n});\nconst prodNetwork = new gcp.compute.Network(\"prod\", {name: \"prod-network\"});\nconst prodForwardingRule = new gcp.compute.ForwardingRule(\"prod\", {\n name: \"prod-ilb\",\n region: \"us-central1\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: prodRegionBackendService.id,\n allPorts: true,\n network: prodNetwork.name,\n allowGlobalAccess: true,\n});\nconst a = new gcp.dns.RecordSet(\"a\", {\n name: pulumi.interpolate`backend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"A\",\n ttl: 300,\n routingPolicy: {\n primaryBackup: {\n trickleRatio: 0.1,\n primary: {\n internalLoadBalancers: [{\n loadBalancerType: \"regionalL4ilb\",\n ipAddress: prodForwardingRule.ipAddress,\n port: \"80\",\n ipProtocol: \"tcp\",\n networkUrl: prodNetwork.id,\n project: prodForwardingRule.project,\n region: prodForwardingRule.region,\n }],\n },\n backupGeos: [\n {\n location: \"asia-east1\",\n rrdatas: [\"10.128.1.1\"],\n },\n {\n location: \"us-west1\",\n rrdatas: [\"10.130.1.1\"],\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\nprod_region_backend_service = gcp.compute.RegionBackendService(\"prod\",\n name=\"prod-backend\",\n region=\"us-central1\")\nprod_network = gcp.compute.Network(\"prod\", name=\"prod-network\")\nprod_forwarding_rule = gcp.compute.ForwardingRule(\"prod\",\n name=\"prod-ilb\",\n region=\"us-central1\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=prod_region_backend_service.id,\n all_ports=True,\n network=prod_network.name,\n allow_global_access=True)\na = gcp.dns.RecordSet(\"a\",\n name=prod.dns_name.apply(lambda dns_name: f\"backend.{dns_name}\"),\n managed_zone=prod.name,\n type=\"A\",\n ttl=300,\n routing_policy={\n \"primary_backup\": {\n \"trickle_ratio\": 0.1,\n \"primary\": {\n \"internal_load_balancers\": [{\n \"load_balancer_type\": \"regionalL4ilb\",\n \"ip_address\": prod_forwarding_rule.ip_address,\n \"port\": \"80\",\n \"ip_protocol\": \"tcp\",\n \"network_url\": prod_network.id,\n \"project\": prod_forwarding_rule.project,\n \"region\": prod_forwarding_rule.region,\n }],\n },\n \"backup_geos\": [\n {\n \"location\": \"asia-east1\",\n \"rrdatas\": [\"10.128.1.1\"],\n },\n {\n \"location\": \"us-west1\",\n \"rrdatas\": [\"10.130.1.1\"],\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var prodRegionBackendService = new Gcp.Compute.RegionBackendService(\"prod\", new()\n {\n Name = \"prod-backend\",\n Region = \"us-central1\",\n });\n\n var prodNetwork = new Gcp.Compute.Network(\"prod\", new()\n {\n Name = \"prod-network\",\n });\n\n var prodForwardingRule = new Gcp.Compute.ForwardingRule(\"prod\", new()\n {\n Name = \"prod-ilb\",\n Region = \"us-central1\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = prodRegionBackendService.Id,\n AllPorts = true,\n Network = prodNetwork.Name,\n AllowGlobalAccess = true,\n });\n\n var a = new Gcp.Dns.RecordSet(\"a\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"backend.{dnsName}\"),\n ManagedZone = prod.Name,\n Type = \"A\",\n Ttl = 300,\n RoutingPolicy = new Gcp.Dns.Inputs.RecordSetRoutingPolicyArgs\n {\n PrimaryBackup = new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupArgs\n {\n TrickleRatio = 0.1,\n Primary = new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs\n {\n InternalLoadBalancers = new[]\n {\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs\n {\n LoadBalancerType = \"regionalL4ilb\",\n IpAddress = prodForwardingRule.IpAddress,\n Port = \"80\",\n IpProtocol = \"tcp\",\n NetworkUrl = prodNetwork.Id,\n Project = prodForwardingRule.Project,\n Region = prodForwardingRule.Region,\n },\n },\n },\n BackupGeos = new[]\n {\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs\n {\n Location = \"asia-east1\",\n Rrdatas = new[]\n {\n \"10.128.1.1\",\n },\n },\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs\n {\n Location = \"us-west1\",\n Rrdatas = new[]\n {\n \"10.130.1.1\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"prod-zone\"),\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprodRegionBackendService, err := compute.NewRegionBackendService(ctx, \"prod\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"prod-backend\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprodNetwork, err := compute.NewNetwork(ctx, \"prod\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"prod-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprodForwardingRule, err := compute.NewForwardingRule(ctx, \"prod\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"prod-ilb\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: prodRegionBackendService.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: prodNetwork.Name,\n\t\t\tAllowGlobalAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"a\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"backend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRoutingPolicy: \u0026dns.RecordSetRoutingPolicyArgs{\n\t\t\t\tPrimaryBackup: \u0026dns.RecordSetRoutingPolicyPrimaryBackupArgs{\n\t\t\t\t\tTrickleRatio: pulumi.Float64(0.1),\n\t\t\t\t\tPrimary: \u0026dns.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs{\n\t\t\t\t\t\tInternalLoadBalancers: dns.RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArray{\n\t\t\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs{\n\t\t\t\t\t\t\t\tLoadBalancerType: pulumi.String(\"regionalL4ilb\"),\n\t\t\t\t\t\t\t\tIpAddress: prodForwardingRule.IpAddress,\n\t\t\t\t\t\t\t\tPort: pulumi.String(\"80\"),\n\t\t\t\t\t\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\t\t\t\tNetworkUrl: prodNetwork.ID(),\n\t\t\t\t\t\t\t\tProject: prodForwardingRule.Project,\n\t\t\t\t\t\t\t\tRegion: prodForwardingRule.Region,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tBackupGeos: dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArray{\n\t\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"asia-east1\"),\n\t\t\t\t\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.128.1.1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\t\t\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.130.1.1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyPrimaryBackupArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var prodRegionBackendService = new RegionBackendService(\"prodRegionBackendService\", RegionBackendServiceArgs.builder()\n .name(\"prod-backend\")\n .region(\"us-central1\")\n .build());\n\n var prodNetwork = new Network(\"prodNetwork\", NetworkArgs.builder()\n .name(\"prod-network\")\n .build());\n\n var prodForwardingRule = new ForwardingRule(\"prodForwardingRule\", ForwardingRuleArgs.builder()\n .name(\"prod-ilb\")\n .region(\"us-central1\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(prodRegionBackendService.id())\n .allPorts(true)\n .network(prodNetwork.name())\n .allowGlobalAccess(true)\n .build());\n\n var a = new RecordSet(\"a\", RecordSetArgs.builder()\n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"backend.%s\", dnsName)))\n .managedZone(prod.name())\n .type(\"A\")\n .ttl(300)\n .routingPolicy(RecordSetRoutingPolicyArgs.builder()\n .primaryBackup(RecordSetRoutingPolicyPrimaryBackupArgs.builder()\n .trickleRatio(0.1)\n .primary(RecordSetRoutingPolicyPrimaryBackupPrimaryArgs.builder()\n .internalLoadBalancers(RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs.builder()\n .loadBalancerType(\"regionalL4ilb\")\n .ipAddress(prodForwardingRule.ipAddress())\n .port(\"80\")\n .ipProtocol(\"tcp\")\n .networkUrl(prodNetwork.id())\n .project(prodForwardingRule.project())\n .region(prodForwardingRule.region())\n .build())\n .build())\n .backupGeos( \n RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs.builder()\n .location(\"asia-east1\")\n .rrdatas(\"10.128.1.1\")\n .build(),\n RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs.builder()\n .location(\"us-west1\")\n .rrdatas(\"10.130.1.1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n a:\n type: gcp:dns:RecordSet\n properties:\n name: backend.${prod.dnsName}\n managedZone: ${prod.name}\n type: A\n ttl: 300\n routingPolicy:\n primaryBackup:\n trickleRatio: 0.1\n primary:\n internalLoadBalancers:\n - loadBalancerType: regionalL4ilb\n ipAddress: ${prodForwardingRule.ipAddress}\n port: '80'\n ipProtocol: tcp\n networkUrl: ${prodNetwork.id}\n project: ${prodForwardingRule.project}\n region: ${prodForwardingRule.region}\n backupGeos:\n - location: asia-east1\n rrdatas:\n - 10.128.1.1\n - location: us-west1\n rrdatas:\n - 10.130.1.1\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n prodForwardingRule:\n type: gcp:compute:ForwardingRule\n name: prod\n properties:\n name: prod-ilb\n region: us-central1\n loadBalancingScheme: INTERNAL\n backendService: ${prodRegionBackendService.id}\n allPorts: true\n network: ${prodNetwork.name}\n allowGlobalAccess: true\n prodRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: prod\n properties:\n name: prod-backend\n region: us-central1\n prodNetwork:\n type: gcp:compute:Network\n name: prod\n properties:\n name: prod-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Public zone failover\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst http_health_check = new gcp.compute.HealthCheck(\"http-health-check\", {\n name: \"http-health-check\",\n description: \"Health check via http\",\n timeoutSec: 5,\n checkIntervalSec: 30,\n healthyThreshold: 4,\n unhealthyThreshold: 5,\n httpHealthCheck: {\n portSpecification: \"USE_SERVING_PORT\",\n },\n});\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst a = new gcp.dns.RecordSet(\"a\", {\n name: pulumi.interpolate`backend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"A\",\n ttl: 300,\n routingPolicy: {\n healthCheck: http_health_check.id,\n primaryBackup: {\n trickleRatio: 0.1,\n primary: {\n externalEndpoints: [\"10.128.1.1\"],\n },\n backupGeos: [{\n location: \"us-west1\",\n healthCheckedTargets: {\n externalEndpoints: [\"10.130.1.1\"],\n },\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttp_health_check = gcp.compute.HealthCheck(\"http-health-check\",\n name=\"http-health-check\",\n description=\"Health check via http\",\n timeout_sec=5,\n check_interval_sec=30,\n healthy_threshold=4,\n unhealthy_threshold=5,\n http_health_check={\n \"port_specification\": \"USE_SERVING_PORT\",\n })\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\na = gcp.dns.RecordSet(\"a\",\n name=prod.dns_name.apply(lambda dns_name: f\"backend.{dns_name}\"),\n managed_zone=prod.name,\n type=\"A\",\n ttl=300,\n routing_policy={\n \"health_check\": http_health_check.id,\n \"primary_backup\": {\n \"trickle_ratio\": 0.1,\n \"primary\": {\n \"external_endpoints\": [\"10.128.1.1\"],\n },\n \"backup_geos\": [{\n \"location\": \"us-west1\",\n \"health_checked_targets\": {\n \"external_endpoints\": [\"10.130.1.1\"],\n },\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var http_health_check = new Gcp.Compute.HealthCheck(\"http-health-check\", new()\n {\n Name = \"http-health-check\",\n Description = \"Health check via http\",\n TimeoutSec = 5,\n CheckIntervalSec = 30,\n HealthyThreshold = 4,\n UnhealthyThreshold = 5,\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n PortSpecification = \"USE_SERVING_PORT\",\n },\n });\n\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var a = new Gcp.Dns.RecordSet(\"a\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"backend.{dnsName}\"),\n ManagedZone = prod.Name,\n Type = \"A\",\n Ttl = 300,\n RoutingPolicy = new Gcp.Dns.Inputs.RecordSetRoutingPolicyArgs\n {\n HealthCheck = http_health_check.Id,\n PrimaryBackup = new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupArgs\n {\n TrickleRatio = 0.1,\n Primary = new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs\n {\n ExternalEndpoints = new[]\n {\n \"10.128.1.1\",\n },\n },\n BackupGeos = new[]\n {\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs\n {\n Location = \"us-west1\",\n HealthCheckedTargets = new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs\n {\n ExternalEndpoints = new[]\n {\n \"10.130.1.1\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewHealthCheck(ctx, \"http-health-check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tDescription: pulumi.String(\"Health check via http\"),\n\t\t\tTimeoutSec: pulumi.Int(5),\n\t\t\tCheckIntervalSec: pulumi.Int(30),\n\t\t\tHealthyThreshold: pulumi.Int(4),\n\t\t\tUnhealthyThreshold: pulumi.Int(5),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPortSpecification: pulumi.String(\"USE_SERVING_PORT\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"prod-zone\"),\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"a\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"backend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRoutingPolicy: \u0026dns.RecordSetRoutingPolicyArgs{\n\t\t\t\tHealthCheck: http_health_check.ID(),\n\t\t\t\tPrimaryBackup: \u0026dns.RecordSetRoutingPolicyPrimaryBackupArgs{\n\t\t\t\t\tTrickleRatio: pulumi.Float64(0.1),\n\t\t\t\t\tPrimary: \u0026dns.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs{\n\t\t\t\t\t\tExternalEndpoints: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.128.1.1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tBackupGeos: dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArray{\n\t\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\t\t\t\t\tHealthCheckedTargets: \u0026dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs{\n\t\t\t\t\t\t\t\tExternalEndpoints: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"10.130.1.1\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyPrimaryBackupArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var http_health_check = new HealthCheck(\"http-health-check\", HealthCheckArgs.builder()\n .name(\"http-health-check\")\n .description(\"Health check via http\")\n .timeoutSec(5)\n .checkIntervalSec(30)\n .healthyThreshold(4)\n .unhealthyThreshold(5)\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .portSpecification(\"USE_SERVING_PORT\")\n .build())\n .build());\n\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var a = new RecordSet(\"a\", RecordSetArgs.builder()\n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"backend.%s\", dnsName)))\n .managedZone(prod.name())\n .type(\"A\")\n .ttl(300)\n .routingPolicy(RecordSetRoutingPolicyArgs.builder()\n .healthCheck(http_health_check.id())\n .primaryBackup(RecordSetRoutingPolicyPrimaryBackupArgs.builder()\n .trickleRatio(0.1)\n .primary(RecordSetRoutingPolicyPrimaryBackupPrimaryArgs.builder()\n .externalEndpoints(\"10.128.1.1\")\n .build())\n .backupGeos(RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs.builder()\n .location(\"us-west1\")\n .healthCheckedTargets(RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs.builder()\n .externalEndpoints(\"10.130.1.1\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n a:\n type: gcp:dns:RecordSet\n properties:\n name: backend.${prod.dnsName}\n managedZone: ${prod.name}\n type: A\n ttl: 300\n routingPolicy:\n healthCheck: ${[\"http-health-check\"].id}\n primaryBackup:\n trickleRatio: 0.1\n primary:\n externalEndpoints:\n - 10.128.1.1\n backupGeos:\n - location: us-west1\n healthCheckedTargets:\n externalEndpoints:\n - 10.130.1.1\n http-health-check:\n type: gcp:compute:HealthCheck\n properties:\n name: http-health-check\n description: Health check via http\n timeoutSec: 5\n checkIntervalSec: 30\n healthyThreshold: 4\n unhealthyThreshold: 5\n httpHealthCheck:\n portSpecification: USE_SERVING_PORT\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDNS record sets can be imported using either of these accepted formats:\n\n* `projects/{{project}}/managedZones/{{zone}}/rrsets/{{name}}/{{type}}`\n\n* `{{project}}/{{zone}}/{{name}}/{{type}}`\n\n* `{{zone}}/{{name}}/{{type}}`\n\nWhen using the `pulumi import` command, DNS record sets can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dns/recordSet:RecordSet default projects/{{project}}/managedZones/{{zone}}/rrsets/{{name}}/{{type}}\n```\n\n```sh\n$ pulumi import gcp:dns/recordSet:RecordSet default {{project}}/{{zone}}/{{name}}/{{type}}\n```\n\n```sh\n$ pulumi import gcp:dns/recordSet:RecordSet default {{zone}}/{{name}}/{{type}}\n```\n\nNote: The record name must include the trailing dot at the end.\n\n", "properties": { "managedZone": { "type": "string", @@ -225109,6 +226165,7 @@ "uid", "updateTime", "validationChecks", + "vcenter", "vmTrackingEnabled" ], "inputProperties": { @@ -230800,7 +231857,7 @@ }, "name": { "type": "string", - "description": "The resource name of the IAP protected resource. Name can have below resources:\n* organizations/{organization_id}\n* folders/{folder_id}\n* projects/{projects_id}\n* projects/{projects_id}/iap_web\n* projects/{projects_id}/iap_web/compute\n* projects/{projects_id}/iap_web/compute-{region}\n* projects/{projects_id}/iap_web/compute/service/{service_id}\n* projects/{projects_id}/iap_web/compute-{region}/service/{service_id}\n* projects/{projects_id}/iap_web/appengine-{app_id}\n* projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}\n* projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id}\n\n\n- - -\n" + "description": "The resource name of the IAP protected resource. Name can have below resources:\n* organizations/{organization_id}\n* folders/{folder_id}\n* projects/{project_id}\n* projects/{project_id}/iap_web\n* projects/{project_id}/iap_web/compute\n* projects/{project_id}/iap_web/compute-{region}\n* projects/{project_id}/iap_web/compute/services/{service_id}\n* projects/{project_id}/iap_web/compute-{region}/services/{service_id}\n* projects/{project_id}/iap_web/appengine-{app_id}\n* projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}\n* projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id}\n\n\n- - -\n" } }, "required": [ @@ -230817,7 +231874,7 @@ }, "name": { "type": "string", - "description": "The resource name of the IAP protected resource. Name can have below resources:\n* organizations/{organization_id}\n* folders/{folder_id}\n* projects/{projects_id}\n* projects/{projects_id}/iap_web\n* projects/{projects_id}/iap_web/compute\n* projects/{projects_id}/iap_web/compute-{region}\n* projects/{projects_id}/iap_web/compute/service/{service_id}\n* projects/{projects_id}/iap_web/compute-{region}/service/{service_id}\n* projects/{projects_id}/iap_web/appengine-{app_id}\n* projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}\n* projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id}\n\n\n- - -\n", + "description": "The resource name of the IAP protected resource. Name can have below resources:\n* organizations/{organization_id}\n* folders/{folder_id}\n* projects/{project_id}\n* projects/{project_id}/iap_web\n* projects/{project_id}/iap_web/compute\n* projects/{project_id}/iap_web/compute-{region}\n* projects/{project_id}/iap_web/compute/services/{service_id}\n* projects/{project_id}/iap_web/compute-{region}/services/{service_id}\n* projects/{project_id}/iap_web/appengine-{app_id}\n* projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}\n* projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id}\n\n\n- - -\n", "willReplaceOnChanges": true } }, @@ -230834,7 +231891,7 @@ }, "name": { "type": "string", - "description": "The resource name of the IAP protected resource. Name can have below resources:\n* organizations/{organization_id}\n* folders/{folder_id}\n* projects/{projects_id}\n* projects/{projects_id}/iap_web\n* projects/{projects_id}/iap_web/compute\n* projects/{projects_id}/iap_web/compute-{region}\n* projects/{projects_id}/iap_web/compute/service/{service_id}\n* projects/{projects_id}/iap_web/compute-{region}/service/{service_id}\n* projects/{projects_id}/iap_web/appengine-{app_id}\n* projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}\n* projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id}\n\n\n- - -\n", + "description": "The resource name of the IAP protected resource. Name can have below resources:\n* organizations/{organization_id}\n* folders/{folder_id}\n* projects/{project_id}\n* projects/{project_id}/iap_web\n* projects/{project_id}/iap_web/compute\n* projects/{project_id}/iap_web/compute-{region}\n* projects/{project_id}/iap_web/compute/services/{service_id}\n* projects/{project_id}/iap_web/compute-{region}/services/{service_id}\n* projects/{project_id}/iap_web/appengine-{app_id}\n* projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}\n* projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id}\n\n\n- - -\n", "willReplaceOnChanges": true } }, @@ -273867,7 +274924,7 @@ } }, "gcp:sql/databaseInstance:DatabaseInstance": { - "description": "Creates a new Google SQL Database Instance. For more information, see the [official documentation](https://cloud.google.com/sql/),\nor the [JSON API](https://cloud.google.com/sql/docs/admin-api/v1beta4/instances).\n\n\u003e **NOTE on `gcp.sql.DatabaseInstance`:** - Second-generation instances include a\ndefault 'root'@'%' user with no password. This user will be deleted by the provider on\ninstance creation. You should use `gcp.sql.User` to define a custom user with\na restricted host and strong password.\n\n\u003e **Note**: On newer versions of the provider, you must explicitly set `deletion_protection=false`\n(and run `pulumi update` to write the field to state) in order to destroy an instance.\nIt is recommended to not set this field (or set it to true) until you're ready to destroy the instance and its databases.\n\n## Example Usage\n\n### SQL Second Generation Instance\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst main = new gcp.sql.DatabaseInstance(\"main\", {\n name: \"main-instance\",\n databaseVersion: \"POSTGRES_15\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmain = gcp.sql.DatabaseInstance(\"main\",\n name=\"main-instance\",\n database_version=\"POSTGRES_15\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var main = new Gcp.Sql.DatabaseInstance(\"main\", new()\n {\n Name = \"main-instance\",\n DatabaseVersion = \"POSTGRES_15\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\t_, err := sql.NewDatabaseInstance(ctx, \"main\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"main-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_15\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var main = new DatabaseInstance(\"main\", DatabaseInstanceArgs.builder()\n .name(\"main-instance\")\n .databaseVersion(\"POSTGRES_15\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: gcp:sql:DatabaseInstance\n properties:\n name: main-instance\n databaseVersion: POSTGRES_15\n region: us-central1\n settings:\n tier: db-f1-micro\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Private IP Instance\n\u003e **NOTE:** For private IP instance setup, note that the `gcp.sql.DatabaseInstance` does not actually interpolate values from `gcp.servicenetworking.Connection`. You must explicitly add a `depends_on`reference as shown below.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst privateNetwork = new gcp.compute.Network(\"private_network\", {name: \"private-network\"});\nconst privateIpAddress = new gcp.compute.GlobalAddress(\"private_ip_address\", {\n name: \"private-ip-address\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: privateNetwork.id,\n});\nconst privateVpcConnection = new gcp.servicenetworking.Connection(\"private_vpc_connection\", {\n network: privateNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAddress.name],\n});\nconst dbNameSuffix = new random.RandomId(\"db_name_suffix\", {byteLength: 4});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: pulumi.interpolate`private-instance-${dbNameSuffix.hex}`,\n region: \"us-central1\",\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-f1-micro\",\n ipConfiguration: {\n ipv4Enabled: false,\n privateNetwork: privateNetwork.selfLink,\n enablePrivatePathForGoogleCloudServices: true,\n },\n },\n}, {\n dependsOn: [privateVpcConnection],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\nprivate_network = gcp.compute.Network(\"private_network\", name=\"private-network\")\nprivate_ip_address = gcp.compute.GlobalAddress(\"private_ip_address\",\n name=\"private-ip-address\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=private_network.id)\nprivate_vpc_connection = gcp.servicenetworking.Connection(\"private_vpc_connection\",\n network=private_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_address.name])\ndb_name_suffix = random.RandomId(\"db_name_suffix\", byte_length=4)\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=db_name_suffix.hex.apply(lambda hex: f\"private-instance-{hex}\"),\n region=\"us-central1\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"ip_configuration\": {\n \"ipv4_enabled\": False,\n \"private_network\": private_network.self_link,\n \"enable_private_path_for_google_cloud_services\": True,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[private_vpc_connection]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var privateNetwork = new Gcp.Compute.Network(\"private_network\", new()\n {\n Name = \"private-network\",\n });\n\n var privateIpAddress = new Gcp.Compute.GlobalAddress(\"private_ip_address\", new()\n {\n Name = \"private-ip-address\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = privateNetwork.Id,\n });\n\n var privateVpcConnection = new Gcp.ServiceNetworking.Connection(\"private_vpc_connection\", new()\n {\n Network = privateNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAddress.Name,\n },\n });\n\n var dbNameSuffix = new Random.RandomId(\"db_name_suffix\", new()\n {\n ByteLength = 4,\n });\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = dbNameSuffix.Hex.Apply(hex =\u003e $\"private-instance-{hex}\"),\n Region = \"us-central1\",\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n Ipv4Enabled = false,\n PrivateNetwork = privateNetwork.SelfLink,\n EnablePrivatePathForGoogleCloudServices = true,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n privateVpcConnection,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\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\tprivateNetwork, err := compute.NewNetwork(ctx, \"private_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"private-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAddress, err := compute.NewGlobalAddress(ctx, \"private_ip_address\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"private-ip-address\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: privateNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateVpcConnection, err := servicenetworking.NewConnection(ctx, \"private_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: privateNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAddress.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdbNameSuffix, err := random.NewRandomId(ctx, \"db_name_suffix\", \u0026random.RandomIdArgs{\n\t\t\tByteLength: pulumi.Int(4),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: dbNameSuffix.Hex.ApplyT(func(hex string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"private-instance-%v\", hex), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tIpv4Enabled: pulumi.Bool(false),\n\t\t\t\t\tPrivateNetwork: privateNetwork.SelfLink,\n\t\t\t\t\tEnablePrivatePathForGoogleCloudServices: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprivateVpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.random.RandomId;\nimport com.pulumi.random.RandomIdArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var privateNetwork = new Network(\"privateNetwork\", NetworkArgs.builder()\n .name(\"private-network\")\n .build());\n\n var privateIpAddress = new GlobalAddress(\"privateIpAddress\", GlobalAddressArgs.builder()\n .name(\"private-ip-address\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(privateNetwork.id())\n .build());\n\n var privateVpcConnection = new Connection(\"privateVpcConnection\", ConnectionArgs.builder()\n .network(privateNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAddress.name())\n .build());\n\n var dbNameSuffix = new RandomId(\"dbNameSuffix\", RandomIdArgs.builder()\n .byteLength(4)\n .build());\n\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(dbNameSuffix.hex().applyValue(hex -\u003e String.format(\"private-instance-%s\", hex)))\n .region(\"us-central1\")\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .ipv4Enabled(false)\n .privateNetwork(privateNetwork.selfLink())\n .enablePrivatePathForGoogleCloudServices(true)\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(privateVpcConnection)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n privateNetwork:\n type: gcp:compute:Network\n name: private_network\n properties:\n name: private-network\n privateIpAddress:\n type: gcp:compute:GlobalAddress\n name: private_ip_address\n properties:\n name: private-ip-address\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${privateNetwork.id}\n privateVpcConnection:\n type: gcp:servicenetworking:Connection\n name: private_vpc_connection\n properties:\n network: ${privateNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAddress.name}\n dbNameSuffix:\n type: random:RandomId\n name: db_name_suffix\n properties:\n byteLength: 4\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: private-instance-${dbNameSuffix.hex}\n region: us-central1\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-f1-micro\n ipConfiguration:\n ipv4Enabled: false\n privateNetwork: ${privateNetwork.selfLink}\n enablePrivatePathForGoogleCloudServices: true\n options:\n dependsOn:\n - ${privateVpcConnection}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### ENTERPRISE_PLUS Instance with data_cache_config\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst main = new gcp.sql.DatabaseInstance(\"main\", {\n name: \"enterprise-plus-main-instance\",\n databaseVersion: \"MYSQL_8_0_31\",\n settings: {\n tier: \"db-perf-optimized-N-2\",\n edition: \"ENTERPRISE_PLUS\",\n dataCacheConfig: {\n dataCacheEnabled: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmain = gcp.sql.DatabaseInstance(\"main\",\n name=\"enterprise-plus-main-instance\",\n database_version=\"MYSQL_8_0_31\",\n settings={\n \"tier\": \"db-perf-optimized-N-2\",\n \"edition\": \"ENTERPRISE_PLUS\",\n \"data_cache_config\": {\n \"data_cache_enabled\": True,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var main = new Gcp.Sql.DatabaseInstance(\"main\", new()\n {\n Name = \"enterprise-plus-main-instance\",\n DatabaseVersion = \"MYSQL_8_0_31\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-perf-optimized-N-2\",\n Edition = \"ENTERPRISE_PLUS\",\n DataCacheConfig = new Gcp.Sql.Inputs.DatabaseInstanceSettingsDataCacheConfigArgs\n {\n DataCacheEnabled = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\t_, err := sql.NewDatabaseInstance(ctx, \"main\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"enterprise-plus-main-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_8_0_31\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-perf-optimized-N-2\"),\n\t\t\t\tEdition: pulumi.String(\"ENTERPRISE_PLUS\"),\n\t\t\t\tDataCacheConfig: \u0026sql.DatabaseInstanceSettingsDataCacheConfigArgs{\n\t\t\t\t\tDataCacheEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsDataCacheConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var main = new DatabaseInstance(\"main\", DatabaseInstanceArgs.builder()\n .name(\"enterprise-plus-main-instance\")\n .databaseVersion(\"MYSQL_8_0_31\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-perf-optimized-N-2\")\n .edition(\"ENTERPRISE_PLUS\")\n .dataCacheConfig(DatabaseInstanceSettingsDataCacheConfigArgs.builder()\n .dataCacheEnabled(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: gcp:sql:DatabaseInstance\n properties:\n name: enterprise-plus-main-instance\n databaseVersion: MYSQL_8_0_31\n settings:\n tier: db-perf-optimized-N-2\n edition: ENTERPRISE_PLUS\n dataCacheConfig:\n dataCacheEnabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Cloud SQL Instance with PSC connectivity\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst main = new gcp.sql.DatabaseInstance(\"main\", {\n name: \"psc-enabled-main-instance\",\n databaseVersion: \"MYSQL_8_0\",\n settings: {\n tier: \"db-f1-micro\",\n ipConfiguration: {\n pscConfigs: [{\n pscEnabled: true,\n allowedConsumerProjects: [\"allowed-consumer-project-name\"],\n }],\n ipv4Enabled: false,\n },\n backupConfiguration: {\n enabled: true,\n binaryLogEnabled: true,\n },\n availabilityType: \"REGIONAL\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmain = gcp.sql.DatabaseInstance(\"main\",\n name=\"psc-enabled-main-instance\",\n database_version=\"MYSQL_8_0\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"ip_configuration\": {\n \"psc_configs\": [{\n \"psc_enabled\": True,\n \"allowed_consumer_projects\": [\"allowed-consumer-project-name\"],\n }],\n \"ipv4_enabled\": False,\n },\n \"backup_configuration\": {\n \"enabled\": True,\n \"binary_log_enabled\": True,\n },\n \"availability_type\": \"REGIONAL\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var main = new Gcp.Sql.DatabaseInstance(\"main\", new()\n {\n Name = \"psc-enabled-main-instance\",\n DatabaseVersion = \"MYSQL_8_0\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n PscConfigs = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationPscConfigArgs\n {\n PscEnabled = true,\n AllowedConsumerProjects = new[]\n {\n \"allowed-consumer-project-name\",\n },\n },\n },\n Ipv4Enabled = false,\n },\n BackupConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsBackupConfigurationArgs\n {\n Enabled = true,\n BinaryLogEnabled = true,\n },\n AvailabilityType = \"REGIONAL\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\t_, err := sql.NewDatabaseInstance(ctx, \"main\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"psc-enabled-main-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_8_0\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tPscConfigs: sql.DatabaseInstanceSettingsIpConfigurationPscConfigArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationPscConfigArgs{\n\t\t\t\t\t\t\tPscEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t\tAllowedConsumerProjects: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"allowed-consumer-project-name\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tIpv4Enabled: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tBackupConfiguration: \u0026sql.DatabaseInstanceSettingsBackupConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tBinaryLogEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tAvailabilityType: pulumi.String(\"REGIONAL\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsBackupConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var main = new DatabaseInstance(\"main\", DatabaseInstanceArgs.builder()\n .name(\"psc-enabled-main-instance\")\n .databaseVersion(\"MYSQL_8_0\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .pscConfigs(DatabaseInstanceSettingsIpConfigurationPscConfigArgs.builder()\n .pscEnabled(true)\n .allowedConsumerProjects(\"allowed-consumer-project-name\")\n .build())\n .ipv4Enabled(false)\n .build())\n .backupConfiguration(DatabaseInstanceSettingsBackupConfigurationArgs.builder()\n .enabled(true)\n .binaryLogEnabled(true)\n .build())\n .availabilityType(\"REGIONAL\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: gcp:sql:DatabaseInstance\n properties:\n name: psc-enabled-main-instance\n databaseVersion: MYSQL_8_0\n settings:\n tier: db-f1-micro\n ipConfiguration:\n pscConfigs:\n - pscEnabled: true\n allowedConsumerProjects:\n - allowed-consumer-project-name\n ipv4Enabled: false\n backupConfiguration:\n enabled: true\n binaryLogEnabled: true\n availabilityType: REGIONAL\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Cloud SQL Instance with PSC auto connections\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst main = new gcp.sql.DatabaseInstance(\"main\", {\n name: \"psc-enabled-main-instance\",\n databaseVersion: \"MYSQL_8_0\",\n settings: {\n tier: \"db-f1-micro\",\n ipConfiguration: {\n pscConfigs: [{\n pscEnabled: true,\n allowedConsumerProjects: [\"allowed-consumer-project-name\"],\n pscAutoConnections: [{\n consumerNetwork: \"network-name\",\n consumerServiceProjectId: \"project-id\",\n }],\n }],\n ipv4Enabled: false,\n },\n backupConfiguration: {\n enabled: true,\n binaryLogEnabled: true,\n },\n availabilityType: \"REGIONAL\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmain = gcp.sql.DatabaseInstance(\"main\",\n name=\"psc-enabled-main-instance\",\n database_version=\"MYSQL_8_0\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"ip_configuration\": {\n \"psc_configs\": [{\n \"psc_enabled\": True,\n \"allowed_consumer_projects\": [\"allowed-consumer-project-name\"],\n \"psc_auto_connections\": [{\n \"consumer_network\": \"network-name\",\n \"consumer_service_project_id\": \"project-id\",\n }],\n }],\n \"ipv4_enabled\": False,\n },\n \"backup_configuration\": {\n \"enabled\": True,\n \"binary_log_enabled\": True,\n },\n \"availability_type\": \"REGIONAL\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var main = new Gcp.Sql.DatabaseInstance(\"main\", new()\n {\n Name = \"psc-enabled-main-instance\",\n DatabaseVersion = \"MYSQL_8_0\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n PscConfigs = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationPscConfigArgs\n {\n PscEnabled = true,\n AllowedConsumerProjects = new[]\n {\n \"allowed-consumer-project-name\",\n },\n PscAutoConnections = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationPscConfigPscAutoConnectionArgs\n {\n ConsumerNetwork = \"network-name\",\n ConsumerServiceProjectId = \"project-id\",\n },\n },\n },\n },\n Ipv4Enabled = false,\n },\n BackupConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsBackupConfigurationArgs\n {\n Enabled = true,\n BinaryLogEnabled = true,\n },\n AvailabilityType = \"REGIONAL\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\t_, err := sql.NewDatabaseInstance(ctx, \"main\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"psc-enabled-main-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_8_0\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tPscConfigs: sql.DatabaseInstanceSettingsIpConfigurationPscConfigArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationPscConfigArgs{\n\t\t\t\t\t\t\tPscEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t\tAllowedConsumerProjects: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"allowed-consumer-project-name\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPscAutoConnections: sql.DatabaseInstanceSettingsIpConfigurationPscConfigPscAutoConnectionArray{\n\t\t\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationPscConfigPscAutoConnectionArgs{\n\t\t\t\t\t\t\t\t\tConsumerNetwork: pulumi.String(\"network-name\"),\n\t\t\t\t\t\t\t\t\tConsumerServiceProjectId: pulumi.String(\"project-id\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tIpv4Enabled: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tBackupConfiguration: \u0026sql.DatabaseInstanceSettingsBackupConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tBinaryLogEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tAvailabilityType: pulumi.String(\"REGIONAL\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsBackupConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var main = new DatabaseInstance(\"main\", DatabaseInstanceArgs.builder()\n .name(\"psc-enabled-main-instance\")\n .databaseVersion(\"MYSQL_8_0\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .pscConfigs(DatabaseInstanceSettingsIpConfigurationPscConfigArgs.builder()\n .pscEnabled(true)\n .allowedConsumerProjects(\"allowed-consumer-project-name\")\n .pscAutoConnections(DatabaseInstanceSettingsIpConfigurationPscConfigPscAutoConnectionArgs.builder()\n .consumerNetwork(\"network-name\")\n .consumerServiceProjectId(\"project-id\")\n .build())\n .build())\n .ipv4Enabled(false)\n .build())\n .backupConfiguration(DatabaseInstanceSettingsBackupConfigurationArgs.builder()\n .enabled(true)\n .binaryLogEnabled(true)\n .build())\n .availabilityType(\"REGIONAL\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: gcp:sql:DatabaseInstance\n properties:\n name: psc-enabled-main-instance\n databaseVersion: MYSQL_8_0\n settings:\n tier: db-f1-micro\n ipConfiguration:\n pscConfigs:\n - pscEnabled: true\n allowedConsumerProjects:\n - allowed-consumer-project-name\n pscAutoConnections:\n - consumerNetwork: network-name\n consumerServiceProjectId: project-id\n ipv4Enabled: false\n backupConfiguration:\n enabled: true\n binaryLogEnabled: true\n availabilityType: REGIONAL\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Switchover (SQL Server Only)\n\nUsers can perform a switchover on any direct `cascadable` replica by following the steps below.\n\n ~\u003e**WARNING:** Failure to follow these steps can lead to data loss (You will be warned during plan stage). To prevent data loss during a switchover, please verify your plan with the checklist below.\n\nFor a more in-depth walkthrough with example code, see the Switchover Guide\n\n### Steps to Invoke Switchover\n\nCreate a `cascadable` replica in a different region from the primary (`cascadable_replica` is set to true in `replica_configuration`)\n\n#### Invoking switchover in the replica resource:\n1. Change instance_type from `READ_REPLICA_INSTANCE` to `CLOUD_SQL_INSTANCE`\n2. Remove `master_instance_name`\n3. Remove `replica_configuration`\n4. Add current primary's name to the replica's `replica_names` list\n\n#### Updating the primary resource:\n1. Change `instance_type` from `CLOUD_SQL_INSTANCE` to `READ_REPLICA_INSTANCE`\n2. Set `master_instance_name` to the original replica (which will be primary after switchover)\n3. Set `replica_configuration` and set `cascadable_replica` to `true`\n4. Remove original replica from `replica_names`\n\n \u003e **NOTE**: Do **not** delete the replica_names field, even if it has no replicas remaining. Set replica_names = [ ] to indicate it having no replicas.\n\n#### Plan and verify that:\n- `pulumi preview` outputs **\"0 to add, 0 to destroy\"**\n- `pulumi preview` does not say **\"must be replaced\"** for any resource\n- Every resource **\"will be updated in-place\"**\n- Only the 2 instances involved in switchover have planned changes\n- (Recommended) Use `deletion_protection` on instances as a safety measure\n\n## Import\n\nDatabase instances can be imported using one of any of these accepted formats:\n\n* `projects/{{project}}/instances/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Database instances can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:sql/databaseInstance:DatabaseInstance default projects/{{project}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:sql/databaseInstance:DatabaseInstance default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:sql/databaseInstance:DatabaseInstance default {{name}}\n```\n\nconfig and set on the server.\n\nWhen importing, double-check that your config has all the fields set that you expect- just seeing\n\nno diff isn't sufficient to know that your config could reproduce the imported resource.\n\n", + "description": "Creates a new Google SQL Database Instance. For more information, see the [official documentation](https://cloud.google.com/sql/docs/mysql/create-instance),\nor the [JSON API](https://cloud.google.com/sql/docs/admin-api/v1beta4/instances).\n\n\u003e **NOTE on `gcp.sql.DatabaseInstance`:** - Second-generation instances include a\ndefault 'root'@'%' user with no password. This user will be deleted by the provider on\ninstance creation. You should use `gcp.sql.User` to define a custom user with\na restricted host and strong password.\n\n\u003e **Note**: On newer versions of the provider, you must explicitly set `deletion_protection=false`\n(and run `pulumi update` to write the field to state) in order to destroy an instance.\nIt is recommended to not set this field (or set it to true) until you're ready to destroy the instance and its databases.\n\n## Example Usage\n\n### SQL Second Generation Instance\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst main = new gcp.sql.DatabaseInstance(\"main\", {\n name: \"main-instance\",\n databaseVersion: \"POSTGRES_15\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmain = gcp.sql.DatabaseInstance(\"main\",\n name=\"main-instance\",\n database_version=\"POSTGRES_15\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var main = new Gcp.Sql.DatabaseInstance(\"main\", new()\n {\n Name = \"main-instance\",\n DatabaseVersion = \"POSTGRES_15\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\t_, err := sql.NewDatabaseInstance(ctx, \"main\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"main-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_15\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var main = new DatabaseInstance(\"main\", DatabaseInstanceArgs.builder()\n .name(\"main-instance\")\n .databaseVersion(\"POSTGRES_15\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: gcp:sql:DatabaseInstance\n properties:\n name: main-instance\n databaseVersion: POSTGRES_15\n region: us-central1\n settings:\n tier: db-f1-micro\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Private IP Instance\n\u003e **NOTE:** For private IP instance setup, note that the `gcp.sql.DatabaseInstance` does not actually interpolate values from `gcp.servicenetworking.Connection`. You must explicitly add a `depends_on`reference as shown below.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst privateNetwork = new gcp.compute.Network(\"private_network\", {name: \"private-network\"});\nconst privateIpAddress = new gcp.compute.GlobalAddress(\"private_ip_address\", {\n name: \"private-ip-address\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: privateNetwork.id,\n});\nconst privateVpcConnection = new gcp.servicenetworking.Connection(\"private_vpc_connection\", {\n network: privateNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAddress.name],\n});\nconst dbNameSuffix = new random.RandomId(\"db_name_suffix\", {byteLength: 4});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: pulumi.interpolate`private-instance-${dbNameSuffix.hex}`,\n region: \"us-central1\",\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-f1-micro\",\n ipConfiguration: {\n ipv4Enabled: false,\n privateNetwork: privateNetwork.selfLink,\n enablePrivatePathForGoogleCloudServices: true,\n },\n },\n}, {\n dependsOn: [privateVpcConnection],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\nprivate_network = gcp.compute.Network(\"private_network\", name=\"private-network\")\nprivate_ip_address = gcp.compute.GlobalAddress(\"private_ip_address\",\n name=\"private-ip-address\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=private_network.id)\nprivate_vpc_connection = gcp.servicenetworking.Connection(\"private_vpc_connection\",\n network=private_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_address.name])\ndb_name_suffix = random.RandomId(\"db_name_suffix\", byte_length=4)\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=db_name_suffix.hex.apply(lambda hex: f\"private-instance-{hex}\"),\n region=\"us-central1\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"ip_configuration\": {\n \"ipv4_enabled\": False,\n \"private_network\": private_network.self_link,\n \"enable_private_path_for_google_cloud_services\": True,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[private_vpc_connection]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var privateNetwork = new Gcp.Compute.Network(\"private_network\", new()\n {\n Name = \"private-network\",\n });\n\n var privateIpAddress = new Gcp.Compute.GlobalAddress(\"private_ip_address\", new()\n {\n Name = \"private-ip-address\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = privateNetwork.Id,\n });\n\n var privateVpcConnection = new Gcp.ServiceNetworking.Connection(\"private_vpc_connection\", new()\n {\n Network = privateNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAddress.Name,\n },\n });\n\n var dbNameSuffix = new Random.RandomId(\"db_name_suffix\", new()\n {\n ByteLength = 4,\n });\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = dbNameSuffix.Hex.Apply(hex =\u003e $\"private-instance-{hex}\"),\n Region = \"us-central1\",\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n Ipv4Enabled = false,\n PrivateNetwork = privateNetwork.SelfLink,\n EnablePrivatePathForGoogleCloudServices = true,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n privateVpcConnection,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\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\tprivateNetwork, err := compute.NewNetwork(ctx, \"private_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"private-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAddress, err := compute.NewGlobalAddress(ctx, \"private_ip_address\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"private-ip-address\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: privateNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateVpcConnection, err := servicenetworking.NewConnection(ctx, \"private_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: privateNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAddress.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdbNameSuffix, err := random.NewRandomId(ctx, \"db_name_suffix\", \u0026random.RandomIdArgs{\n\t\t\tByteLength: pulumi.Int(4),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: dbNameSuffix.Hex.ApplyT(func(hex string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"private-instance-%v\", hex), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tIpv4Enabled: pulumi.Bool(false),\n\t\t\t\t\tPrivateNetwork: privateNetwork.SelfLink,\n\t\t\t\t\tEnablePrivatePathForGoogleCloudServices: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprivateVpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.random.RandomId;\nimport com.pulumi.random.RandomIdArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var privateNetwork = new Network(\"privateNetwork\", NetworkArgs.builder()\n .name(\"private-network\")\n .build());\n\n var privateIpAddress = new GlobalAddress(\"privateIpAddress\", GlobalAddressArgs.builder()\n .name(\"private-ip-address\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(privateNetwork.id())\n .build());\n\n var privateVpcConnection = new Connection(\"privateVpcConnection\", ConnectionArgs.builder()\n .network(privateNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAddress.name())\n .build());\n\n var dbNameSuffix = new RandomId(\"dbNameSuffix\", RandomIdArgs.builder()\n .byteLength(4)\n .build());\n\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(dbNameSuffix.hex().applyValue(hex -\u003e String.format(\"private-instance-%s\", hex)))\n .region(\"us-central1\")\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .ipv4Enabled(false)\n .privateNetwork(privateNetwork.selfLink())\n .enablePrivatePathForGoogleCloudServices(true)\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(privateVpcConnection)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n privateNetwork:\n type: gcp:compute:Network\n name: private_network\n properties:\n name: private-network\n privateIpAddress:\n type: gcp:compute:GlobalAddress\n name: private_ip_address\n properties:\n name: private-ip-address\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${privateNetwork.id}\n privateVpcConnection:\n type: gcp:servicenetworking:Connection\n name: private_vpc_connection\n properties:\n network: ${privateNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAddress.name}\n dbNameSuffix:\n type: random:RandomId\n name: db_name_suffix\n properties:\n byteLength: 4\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: private-instance-${dbNameSuffix.hex}\n region: us-central1\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-f1-micro\n ipConfiguration:\n ipv4Enabled: false\n privateNetwork: ${privateNetwork.selfLink}\n enablePrivatePathForGoogleCloudServices: true\n options:\n dependsOn:\n - ${privateVpcConnection}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### ENTERPRISE_PLUS Instance with data_cache_config\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst main = new gcp.sql.DatabaseInstance(\"main\", {\n name: \"enterprise-plus-main-instance\",\n databaseVersion: \"MYSQL_8_0_31\",\n settings: {\n tier: \"db-perf-optimized-N-2\",\n edition: \"ENTERPRISE_PLUS\",\n dataCacheConfig: {\n dataCacheEnabled: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmain = gcp.sql.DatabaseInstance(\"main\",\n name=\"enterprise-plus-main-instance\",\n database_version=\"MYSQL_8_0_31\",\n settings={\n \"tier\": \"db-perf-optimized-N-2\",\n \"edition\": \"ENTERPRISE_PLUS\",\n \"data_cache_config\": {\n \"data_cache_enabled\": True,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var main = new Gcp.Sql.DatabaseInstance(\"main\", new()\n {\n Name = \"enterprise-plus-main-instance\",\n DatabaseVersion = \"MYSQL_8_0_31\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-perf-optimized-N-2\",\n Edition = \"ENTERPRISE_PLUS\",\n DataCacheConfig = new Gcp.Sql.Inputs.DatabaseInstanceSettingsDataCacheConfigArgs\n {\n DataCacheEnabled = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\t_, err := sql.NewDatabaseInstance(ctx, \"main\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"enterprise-plus-main-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_8_0_31\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-perf-optimized-N-2\"),\n\t\t\t\tEdition: pulumi.String(\"ENTERPRISE_PLUS\"),\n\t\t\t\tDataCacheConfig: \u0026sql.DatabaseInstanceSettingsDataCacheConfigArgs{\n\t\t\t\t\tDataCacheEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsDataCacheConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var main = new DatabaseInstance(\"main\", DatabaseInstanceArgs.builder()\n .name(\"enterprise-plus-main-instance\")\n .databaseVersion(\"MYSQL_8_0_31\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-perf-optimized-N-2\")\n .edition(\"ENTERPRISE_PLUS\")\n .dataCacheConfig(DatabaseInstanceSettingsDataCacheConfigArgs.builder()\n .dataCacheEnabled(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: gcp:sql:DatabaseInstance\n properties:\n name: enterprise-plus-main-instance\n databaseVersion: MYSQL_8_0_31\n settings:\n tier: db-perf-optimized-N-2\n edition: ENTERPRISE_PLUS\n dataCacheConfig:\n dataCacheEnabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Cloud SQL Instance with PSC connectivity\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst main = new gcp.sql.DatabaseInstance(\"main\", {\n name: \"psc-enabled-main-instance\",\n databaseVersion: \"MYSQL_8_0\",\n settings: {\n tier: \"db-f1-micro\",\n ipConfiguration: {\n pscConfigs: [{\n pscEnabled: true,\n allowedConsumerProjects: [\"allowed-consumer-project-name\"],\n }],\n ipv4Enabled: false,\n },\n backupConfiguration: {\n enabled: true,\n binaryLogEnabled: true,\n },\n availabilityType: \"REGIONAL\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmain = gcp.sql.DatabaseInstance(\"main\",\n name=\"psc-enabled-main-instance\",\n database_version=\"MYSQL_8_0\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"ip_configuration\": {\n \"psc_configs\": [{\n \"psc_enabled\": True,\n \"allowed_consumer_projects\": [\"allowed-consumer-project-name\"],\n }],\n \"ipv4_enabled\": False,\n },\n \"backup_configuration\": {\n \"enabled\": True,\n \"binary_log_enabled\": True,\n },\n \"availability_type\": \"REGIONAL\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var main = new Gcp.Sql.DatabaseInstance(\"main\", new()\n {\n Name = \"psc-enabled-main-instance\",\n DatabaseVersion = \"MYSQL_8_0\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n PscConfigs = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationPscConfigArgs\n {\n PscEnabled = true,\n AllowedConsumerProjects = new[]\n {\n \"allowed-consumer-project-name\",\n },\n },\n },\n Ipv4Enabled = false,\n },\n BackupConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsBackupConfigurationArgs\n {\n Enabled = true,\n BinaryLogEnabled = true,\n },\n AvailabilityType = \"REGIONAL\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\t_, err := sql.NewDatabaseInstance(ctx, \"main\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"psc-enabled-main-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_8_0\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tPscConfigs: sql.DatabaseInstanceSettingsIpConfigurationPscConfigArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationPscConfigArgs{\n\t\t\t\t\t\t\tPscEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t\tAllowedConsumerProjects: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"allowed-consumer-project-name\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tIpv4Enabled: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tBackupConfiguration: \u0026sql.DatabaseInstanceSettingsBackupConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tBinaryLogEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tAvailabilityType: pulumi.String(\"REGIONAL\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsBackupConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var main = new DatabaseInstance(\"main\", DatabaseInstanceArgs.builder()\n .name(\"psc-enabled-main-instance\")\n .databaseVersion(\"MYSQL_8_0\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .pscConfigs(DatabaseInstanceSettingsIpConfigurationPscConfigArgs.builder()\n .pscEnabled(true)\n .allowedConsumerProjects(\"allowed-consumer-project-name\")\n .build())\n .ipv4Enabled(false)\n .build())\n .backupConfiguration(DatabaseInstanceSettingsBackupConfigurationArgs.builder()\n .enabled(true)\n .binaryLogEnabled(true)\n .build())\n .availabilityType(\"REGIONAL\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: gcp:sql:DatabaseInstance\n properties:\n name: psc-enabled-main-instance\n databaseVersion: MYSQL_8_0\n settings:\n tier: db-f1-micro\n ipConfiguration:\n pscConfigs:\n - pscEnabled: true\n allowedConsumerProjects:\n - allowed-consumer-project-name\n ipv4Enabled: false\n backupConfiguration:\n enabled: true\n binaryLogEnabled: true\n availabilityType: REGIONAL\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Cloud SQL Instance with PSC auto connections\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst main = new gcp.sql.DatabaseInstance(\"main\", {\n name: \"psc-enabled-main-instance\",\n databaseVersion: \"MYSQL_8_0\",\n settings: {\n tier: \"db-f1-micro\",\n ipConfiguration: {\n pscConfigs: [{\n pscEnabled: true,\n allowedConsumerProjects: [\"allowed-consumer-project-name\"],\n pscAutoConnections: [{\n consumerNetwork: \"network-name\",\n consumerServiceProjectId: \"project-id\",\n }],\n }],\n ipv4Enabled: false,\n },\n backupConfiguration: {\n enabled: true,\n binaryLogEnabled: true,\n },\n availabilityType: \"REGIONAL\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmain = gcp.sql.DatabaseInstance(\"main\",\n name=\"psc-enabled-main-instance\",\n database_version=\"MYSQL_8_0\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"ip_configuration\": {\n \"psc_configs\": [{\n \"psc_enabled\": True,\n \"allowed_consumer_projects\": [\"allowed-consumer-project-name\"],\n \"psc_auto_connections\": [{\n \"consumer_network\": \"network-name\",\n \"consumer_service_project_id\": \"project-id\",\n }],\n }],\n \"ipv4_enabled\": False,\n },\n \"backup_configuration\": {\n \"enabled\": True,\n \"binary_log_enabled\": True,\n },\n \"availability_type\": \"REGIONAL\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var main = new Gcp.Sql.DatabaseInstance(\"main\", new()\n {\n Name = \"psc-enabled-main-instance\",\n DatabaseVersion = \"MYSQL_8_0\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n PscConfigs = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationPscConfigArgs\n {\n PscEnabled = true,\n AllowedConsumerProjects = new[]\n {\n \"allowed-consumer-project-name\",\n },\n PscAutoConnections = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationPscConfigPscAutoConnectionArgs\n {\n ConsumerNetwork = \"network-name\",\n ConsumerServiceProjectId = \"project-id\",\n },\n },\n },\n },\n Ipv4Enabled = false,\n },\n BackupConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsBackupConfigurationArgs\n {\n Enabled = true,\n BinaryLogEnabled = true,\n },\n AvailabilityType = \"REGIONAL\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\t_, err := sql.NewDatabaseInstance(ctx, \"main\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"psc-enabled-main-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_8_0\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tPscConfigs: sql.DatabaseInstanceSettingsIpConfigurationPscConfigArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationPscConfigArgs{\n\t\t\t\t\t\t\tPscEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t\tAllowedConsumerProjects: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"allowed-consumer-project-name\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPscAutoConnections: sql.DatabaseInstanceSettingsIpConfigurationPscConfigPscAutoConnectionArray{\n\t\t\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationPscConfigPscAutoConnectionArgs{\n\t\t\t\t\t\t\t\t\tConsumerNetwork: pulumi.String(\"network-name\"),\n\t\t\t\t\t\t\t\t\tConsumerServiceProjectId: pulumi.String(\"project-id\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tIpv4Enabled: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tBackupConfiguration: \u0026sql.DatabaseInstanceSettingsBackupConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tBinaryLogEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tAvailabilityType: pulumi.String(\"REGIONAL\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsBackupConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var main = new DatabaseInstance(\"main\", DatabaseInstanceArgs.builder()\n .name(\"psc-enabled-main-instance\")\n .databaseVersion(\"MYSQL_8_0\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .pscConfigs(DatabaseInstanceSettingsIpConfigurationPscConfigArgs.builder()\n .pscEnabled(true)\n .allowedConsumerProjects(\"allowed-consumer-project-name\")\n .pscAutoConnections(DatabaseInstanceSettingsIpConfigurationPscConfigPscAutoConnectionArgs.builder()\n .consumerNetwork(\"network-name\")\n .consumerServiceProjectId(\"project-id\")\n .build())\n .build())\n .ipv4Enabled(false)\n .build())\n .backupConfiguration(DatabaseInstanceSettingsBackupConfigurationArgs.builder()\n .enabled(true)\n .binaryLogEnabled(true)\n .build())\n .availabilityType(\"REGIONAL\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: gcp:sql:DatabaseInstance\n properties:\n name: psc-enabled-main-instance\n databaseVersion: MYSQL_8_0\n settings:\n tier: db-f1-micro\n ipConfiguration:\n pscConfigs:\n - pscEnabled: true\n allowedConsumerProjects:\n - allowed-consumer-project-name\n pscAutoConnections:\n - consumerNetwork: network-name\n consumerServiceProjectId: project-id\n ipv4Enabled: false\n backupConfiguration:\n enabled: true\n binaryLogEnabled: true\n availabilityType: REGIONAL\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Switchover (SQL Server Only)\n\nUsers can perform a switchover on any direct `cascadable` replica by following the steps below.\n\n ~\u003e**WARNING:** Failure to follow these steps can lead to data loss (You will be warned during plan stage). To prevent data loss during a switchover, please verify your plan with the checklist below.\n\nFor a more in-depth walkthrough with example code, see the Switchover Guide\n\n### Steps to Invoke Switchover\n\nCreate a `cascadable` replica in a different region from the primary (`cascadable_replica` is set to true in `replica_configuration`)\n\n#### Invoking switchover in the replica resource:\n1. Change instance_type from `READ_REPLICA_INSTANCE` to `CLOUD_SQL_INSTANCE`\n2. Remove `master_instance_name`\n3. Remove `replica_configuration`\n4. Add current primary's name to the replica's `replica_names` list\n\n#### Updating the primary resource:\n1. Change `instance_type` from `CLOUD_SQL_INSTANCE` to `READ_REPLICA_INSTANCE`\n2. Set `master_instance_name` to the original replica (which will be primary after switchover)\n3. Set `replica_configuration` and set `cascadable_replica` to `true`\n4. Remove original replica from `replica_names`\n\n \u003e **NOTE**: Do **not** delete the replica_names field, even if it has no replicas remaining. Set replica_names = [ ] to indicate it having no replicas.\n\n#### Plan and verify that:\n- `pulumi preview` outputs **\"0 to add, 0 to destroy\"**\n- `pulumi preview` does not say **\"must be replaced\"** for any resource\n- Every resource **\"will be updated in-place\"**\n- Only the 2 instances involved in switchover have planned changes\n- (Recommended) Use `deletion_protection` on instances as a safety measure\n\n## Import\n\nDatabase instances can be imported using one of any of these accepted formats:\n\n* `projects/{{project}}/instances/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Database instances can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:sql/databaseInstance:DatabaseInstance default projects/{{project}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:sql/databaseInstance:DatabaseInstance default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:sql/databaseInstance:DatabaseInstance default {{name}}\n```\n\nconfig and set on the server.\n\nWhen importing, double-check that your config has all the fields set that you expect- just seeing\n\nno diff isn't sufficient to know that your config could reproduce the imported resource.\n\n", "properties": { "availableMaintenanceVersions": { "type": "array", diff --git a/provider/go.mod b/provider/go.mod index 47d4eca078..16af1ddd24 100644 --- a/provider/go.mod +++ b/provider/go.mod @@ -14,7 +14,7 @@ require ( github.com/pulumi/pulumi/pkg/v3 v3.145.0 github.com/pulumi/pulumi/sdk/v3 v3.145.0 github.com/stretchr/testify v1.10.0 - google.golang.org/api v0.206.0 + google.golang.org/api v0.214.0 sourcegraph.com/sourcegraph/appdash v0.0.0-20211028080628-e2786a622600 ) @@ -28,10 +28,10 @@ require ( bitbucket.org/creachadair/stringset v0.0.8 // indirect cel.dev/expr v0.16.0 // indirect cloud.google.com/go v0.116.0 // indirect - cloud.google.com/go/auth v0.10.2 // indirect - cloud.google.com/go/auth/oauth2adapt v0.2.5 // indirect + cloud.google.com/go/auth v0.13.0 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.6 // indirect cloud.google.com/go/bigtable v1.33.0 // indirect - cloud.google.com/go/compute/metadata v0.5.2 // indirect + cloud.google.com/go/compute/metadata v0.6.0 // indirect cloud.google.com/go/iam v1.2.2 // indirect cloud.google.com/go/kms v1.20.1 // indirect cloud.google.com/go/logging v1.12.0 // indirect @@ -272,9 +272,9 @@ require ( google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto v0.0.0-20241104194629-dd2ea8efbc28 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 // indirect google.golang.org/grpc v1.67.1 // indirect - google.golang.org/protobuf v1.35.1 // indirect + google.golang.org/protobuf v1.35.2 // indirect gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/provider/go.sum b/provider/go.sum index 0a4f85500f..9fcd090115 100644 --- a/provider/go.sum +++ b/provider/go.sum @@ -165,10 +165,10 @@ cloud.google.com/go/assuredworkloads v1.11.1/go.mod h1:+F04I52Pgn5nmPG36CWFtxmav cloud.google.com/go/assuredworkloads v1.11.2/go.mod h1:O1dfr+oZJMlE6mw0Bp0P1KZSlj5SghMBvTpZqIcUAW4= cloud.google.com/go/assuredworkloads v1.11.3/go.mod h1:vEjfTKYyRUaIeA0bsGJceFV2JKpVRgyG2op3jfa59Zs= cloud.google.com/go/assuredworkloads v1.11.4/go.mod h1:4pwwGNwy1RP0m+y12ef3Q/8PaiWrIDQ6nD2E8kvWI9U= -cloud.google.com/go/auth v0.10.2 h1:oKF7rgBfSHdp/kuhXtqU/tNDr0mZqhYbEh+6SiqzkKo= -cloud.google.com/go/auth v0.10.2/go.mod h1:xxA5AqpDrvS+Gkmo9RqrGGRh6WSNKKOXhY3zNOr38tI= -cloud.google.com/go/auth/oauth2adapt v0.2.5 h1:2p29+dePqsCHPP1bqDJcKj4qxRyYCcbzKpFyKGt3MTk= -cloud.google.com/go/auth/oauth2adapt v0.2.5/go.mod h1:AlmsELtlEBnaNTL7jCj8VQFLy6mbZv0s4Q7NGBeQ5E8= +cloud.google.com/go/auth v0.13.0 h1:8Fu8TZy167JkW8Tj3q7dIkr2v4cndv41ouecJx0PAHs= +cloud.google.com/go/auth v0.13.0/go.mod h1:COOjD9gwfKNKz+IIduatIhYJQIc0mG3H102r/EMxX6Q= +cloud.google.com/go/auth/oauth2adapt v0.2.6 h1:V6a6XDu2lTwPZWOawrAa9HUK+DB2zfJyTuciBG5hFkU= +cloud.google.com/go/auth/oauth2adapt v0.2.6/go.mod h1:AlmsELtlEBnaNTL7jCj8VQFLy6mbZv0s4Q7NGBeQ5E8= cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8= @@ -318,8 +318,8 @@ cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZ cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= -cloud.google.com/go/compute/metadata v0.5.2 h1:UxK4uu/Tn+I3p2dYWTfiX4wva7aYlKixAHn3fyqngqo= -cloud.google.com/go/compute/metadata v0.5.2/go.mod h1:C66sj2AluDcIqakBq/M8lw8/ybHgOZqin2obFxa/E5k= +cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I= +cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg= cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w= @@ -2762,8 +2762,8 @@ google.golang.org/api v0.126.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvy google.golang.org/api v0.128.0/go.mod h1:Y611qgqaE92On/7g65MQgxYul3c0rEB894kniWLY750= google.golang.org/api v0.139.0/go.mod h1:CVagp6Eekz9CjGZ718Z+sloknzkDJE7Vc1Ckj9+viBk= google.golang.org/api v0.149.0/go.mod h1:Mwn1B7JTXrzXtnvmzQE2BD6bYZQ8DShKZDZbeN9I7qI= -google.golang.org/api v0.206.0 h1:A27GClesCSheW5P2BymVHjpEeQ2XHH8DI8Srs2HI2L8= -google.golang.org/api v0.206.0/go.mod h1:BtB8bfjTYIrai3d8UyvPmV9REGgox7coh+ZRwm0b+W8= +google.golang.org/api v0.214.0 h1:h2Gkq07OYi6kusGOaT/9rnNljuXmqPnaig7WGPmKbwA= +google.golang.org/api v0.214.0/go.mod h1:bYPpLG8AyeMWwDU6NXoB00xC0DFkikVvd5MfwoxjLqE= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -2967,8 +2967,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20231012201019-e917dd12ba7a/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:swOH3j0KzcDDgGUWr+SNpyTen5YrXjS3eyPzFYKc6lc= google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405/go.mod h1:67X1fPuzjcrkymZzZV1vvkFeTn2Rvc6lYF9MYFGCcwE= google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:oQ5rr10WTTMvP4A36n8JpR1OrO1BEiV4f78CneXZxkA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 h1:8ZmaLZE4XWrtU3MyClkYqqtl6Oegr3235h7jxsDyqCY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -3042,8 +3042,8 @@ google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= -google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= +google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/sdk/dotnet/ApplicationIntegration/Inputs/AuthConfigDecryptedCredentialUsernameAndPasswordArgs.cs b/sdk/dotnet/ApplicationIntegration/Inputs/AuthConfigDecryptedCredentialUsernameAndPasswordArgs.cs index 1df663c76e..5755f55a2b 100644 --- a/sdk/dotnet/ApplicationIntegration/Inputs/AuthConfigDecryptedCredentialUsernameAndPasswordArgs.cs +++ b/sdk/dotnet/ApplicationIntegration/Inputs/AuthConfigDecryptedCredentialUsernameAndPasswordArgs.cs @@ -15,7 +15,7 @@ public sealed class AuthConfigDecryptedCredentialUsernameAndPasswordArgs : globa /// /// Password to be used. /// - /// <a name="nested_oauth2_authorization_code"></a>The `oauth2_authorization_code` block supports: + /// <a name="nested_decrypted_credential_oauth2_authorization_code"></a>The `oauth2_authorization_code` block supports: /// [Input("password")] public Input? Password { get; set; } diff --git a/sdk/dotnet/ApplicationIntegration/Inputs/AuthConfigDecryptedCredentialUsernameAndPasswordGetArgs.cs b/sdk/dotnet/ApplicationIntegration/Inputs/AuthConfigDecryptedCredentialUsernameAndPasswordGetArgs.cs index a46929e393..8e537b2d1d 100644 --- a/sdk/dotnet/ApplicationIntegration/Inputs/AuthConfigDecryptedCredentialUsernameAndPasswordGetArgs.cs +++ b/sdk/dotnet/ApplicationIntegration/Inputs/AuthConfigDecryptedCredentialUsernameAndPasswordGetArgs.cs @@ -15,7 +15,7 @@ public sealed class AuthConfigDecryptedCredentialUsernameAndPasswordGetArgs : gl /// /// Password to be used. /// - /// <a name="nested_oauth2_authorization_code"></a>The `oauth2_authorization_code` block supports: + /// <a name="nested_decrypted_credential_oauth2_authorization_code"></a>The `oauth2_authorization_code` block supports: /// [Input("password")] public Input? Password { get; set; } diff --git a/sdk/dotnet/ApplicationIntegration/Outputs/AuthConfigDecryptedCredentialUsernameAndPassword.cs b/sdk/dotnet/ApplicationIntegration/Outputs/AuthConfigDecryptedCredentialUsernameAndPassword.cs index 1f26d1a631..b589dbc8dd 100644 --- a/sdk/dotnet/ApplicationIntegration/Outputs/AuthConfigDecryptedCredentialUsernameAndPassword.cs +++ b/sdk/dotnet/ApplicationIntegration/Outputs/AuthConfigDecryptedCredentialUsernameAndPassword.cs @@ -16,7 +16,7 @@ public sealed class AuthConfigDecryptedCredentialUsernameAndPassword /// /// Password to be used. /// - /// <a name="nested_oauth2_authorization_code"></a>The `oauth2_authorization_code` block supports: + /// <a name="nested_decrypted_credential_oauth2_authorization_code"></a>The `oauth2_authorization_code` block supports: /// public readonly string? Password; /// diff --git a/sdk/dotnet/Beyondcorp/Inputs/SecurityGatewayHubArgs.cs b/sdk/dotnet/Beyondcorp/Inputs/SecurityGatewayHubArgs.cs new file mode 100644 index 0000000000..ffee0c84e6 --- /dev/null +++ b/sdk/dotnet/Beyondcorp/Inputs/SecurityGatewayHubArgs.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.Beyondcorp.Inputs +{ + + public sealed class SecurityGatewayHubArgs : global::Pulumi.ResourceArgs + { + /// + /// Internet Gateway configuration. + /// Structure is documented below. + /// + [Input("internetGateway")] + public Input? InternetGateway { get; set; } + + /// + /// The identifier for this object. Format specified above. + /// + [Input("region", required: true)] + public Input Region { get; set; } = null!; + + public SecurityGatewayHubArgs() + { + } + public static new SecurityGatewayHubArgs Empty => new SecurityGatewayHubArgs(); + } +} diff --git a/sdk/dotnet/Beyondcorp/Inputs/SecurityGatewayHubGetArgs.cs b/sdk/dotnet/Beyondcorp/Inputs/SecurityGatewayHubGetArgs.cs new file mode 100644 index 0000000000..ff02ef5432 --- /dev/null +++ b/sdk/dotnet/Beyondcorp/Inputs/SecurityGatewayHubGetArgs.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.Beyondcorp.Inputs +{ + + public sealed class SecurityGatewayHubGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Internet Gateway configuration. + /// Structure is documented below. + /// + [Input("internetGateway")] + public Input? InternetGateway { get; set; } + + /// + /// The identifier for this object. Format specified above. + /// + [Input("region", required: true)] + public Input Region { get; set; } = null!; + + public SecurityGatewayHubGetArgs() + { + } + public static new SecurityGatewayHubGetArgs Empty => new SecurityGatewayHubGetArgs(); + } +} diff --git a/sdk/dotnet/Beyondcorp/Inputs/SecurityGatewayHubInternetGatewayArgs.cs b/sdk/dotnet/Beyondcorp/Inputs/SecurityGatewayHubInternetGatewayArgs.cs new file mode 100644 index 0000000000..7f2dd3a4b4 --- /dev/null +++ b/sdk/dotnet/Beyondcorp/Inputs/SecurityGatewayHubInternetGatewayArgs.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.Beyondcorp.Inputs +{ + + public sealed class SecurityGatewayHubInternetGatewayArgs : global::Pulumi.ResourceArgs + { + [Input("assignedIps")] + private InputList? _assignedIps; + + /// + /// (Output) + /// Output only. List of IP addresses assigned to the Cloud NAT. + /// + public InputList AssignedIps + { + get => _assignedIps ?? (_assignedIps = new InputList()); + set => _assignedIps = value; + } + + public SecurityGatewayHubInternetGatewayArgs() + { + } + public static new SecurityGatewayHubInternetGatewayArgs Empty => new SecurityGatewayHubInternetGatewayArgs(); + } +} diff --git a/sdk/dotnet/Beyondcorp/Inputs/SecurityGatewayHubInternetGatewayGetArgs.cs b/sdk/dotnet/Beyondcorp/Inputs/SecurityGatewayHubInternetGatewayGetArgs.cs new file mode 100644 index 0000000000..d8b38809e4 --- /dev/null +++ b/sdk/dotnet/Beyondcorp/Inputs/SecurityGatewayHubInternetGatewayGetArgs.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.Beyondcorp.Inputs +{ + + public sealed class SecurityGatewayHubInternetGatewayGetArgs : global::Pulumi.ResourceArgs + { + [Input("assignedIps")] + private InputList? _assignedIps; + + /// + /// (Output) + /// Output only. List of IP addresses assigned to the Cloud NAT. + /// + public InputList AssignedIps + { + get => _assignedIps ?? (_assignedIps = new InputList()); + set => _assignedIps = value; + } + + public SecurityGatewayHubInternetGatewayGetArgs() + { + } + public static new SecurityGatewayHubInternetGatewayGetArgs Empty => new SecurityGatewayHubInternetGatewayGetArgs(); + } +} diff --git a/sdk/dotnet/Beyondcorp/Outputs/SecurityGatewayHub.cs b/sdk/dotnet/Beyondcorp/Outputs/SecurityGatewayHub.cs new file mode 100644 index 0000000000..34a2ba718b --- /dev/null +++ b/sdk/dotnet/Beyondcorp/Outputs/SecurityGatewayHub.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.Beyondcorp.Outputs +{ + + [OutputType] + public sealed class SecurityGatewayHub + { + /// + /// Internet Gateway configuration. + /// Structure is documented below. + /// + public readonly Outputs.SecurityGatewayHubInternetGateway? InternetGateway; + /// + /// The identifier for this object. Format specified above. + /// + public readonly string Region; + + [OutputConstructor] + private SecurityGatewayHub( + Outputs.SecurityGatewayHubInternetGateway? internetGateway, + + string region) + { + InternetGateway = internetGateway; + Region = region; + } + } +} diff --git a/sdk/dotnet/Beyondcorp/Outputs/SecurityGatewayHubInternetGateway.cs b/sdk/dotnet/Beyondcorp/Outputs/SecurityGatewayHubInternetGateway.cs new file mode 100644 index 0000000000..09ab217d4b --- /dev/null +++ b/sdk/dotnet/Beyondcorp/Outputs/SecurityGatewayHubInternetGateway.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.Beyondcorp.Outputs +{ + + [OutputType] + public sealed class SecurityGatewayHubInternetGateway + { + /// + /// (Output) + /// Output only. List of IP addresses assigned to the Cloud NAT. + /// + public readonly ImmutableArray AssignedIps; + + [OutputConstructor] + private SecurityGatewayHubInternetGateway(ImmutableArray assignedIps) + { + AssignedIps = assignedIps; + } + } +} diff --git a/sdk/dotnet/Beyondcorp/SecurityGateway.cs b/sdk/dotnet/Beyondcorp/SecurityGateway.cs new file mode 100644 index 0000000000..453f2f3078 --- /dev/null +++ b/sdk/dotnet/Beyondcorp/SecurityGateway.cs @@ -0,0 +1,346 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Beyondcorp +{ + /// + /// Deployment of Security Gateway. + /// + /// ## Example Usage + /// + /// ### Beyondcorp Security Gateway Basic + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = new Gcp.Beyondcorp.SecurityGateway("example", new() + /// { + /// SecurityGatewayId = "default", + /// Location = "global", + /// DisplayName = "My Security Gateway resource", + /// Hubs = new[] + /// { + /// new Gcp.Beyondcorp.Inputs.SecurityGatewayHubArgs + /// { + /// Region = "us-central1", + /// }, + /// }, + /// }); + /// + /// }); + /// ``` + /// + /// ## Import + /// + /// SecurityGateway can be imported using any of these accepted formats: + /// + /// * `projects/{{project}}/locations/{{location}}/securityGateways/{{security_gateway_id}}` + /// + /// * `{{project}}/{{location}}/{{security_gateway_id}}` + /// + /// * `{{location}}/{{security_gateway_id}}` + /// + /// When using the `pulumi import` command, SecurityGateway can be imported using one of the formats above. For example: + /// + /// ```sh + /// $ pulumi import gcp:beyondcorp/securityGateway:SecurityGateway default projects/{{project}}/locations/{{location}}/securityGateways/{{security_gateway_id}} + /// ``` + /// + /// ```sh + /// $ pulumi import gcp:beyondcorp/securityGateway:SecurityGateway default {{project}}/{{location}}/{{security_gateway_id}} + /// ``` + /// + /// ```sh + /// $ pulumi import gcp:beyondcorp/securityGateway:SecurityGateway default {{location}}/{{security_gateway_id}} + /// ``` + /// + [GcpResourceType("gcp:beyondcorp/securityGateway:SecurityGateway")] + public partial class SecurityGateway : global::Pulumi.CustomResource + { + /// + /// Output only. Timestamp when the resource was created. + /// + [Output("createTime")] + public Output CreateTime { get; private set; } = null!; + + /// + /// Optional. An arbitrary user-provided name for the SecurityGateway. + /// Cannot exceed 64 characters. + /// + [Output("displayName")] + public Output DisplayName { get; private set; } = null!; + + /// + /// Output only. IP addresses that will be used for establishing + /// connection to the endpoints. + /// + [Output("externalIps")] + public Output> ExternalIps { get; private set; } = null!; + + /// + /// Optional. Map of Hubs that represents regional data path deployment with GCP region + /// as a key. + /// Structure is documented below. + /// + [Output("hubs")] + public Output> Hubs { get; private set; } = null!; + + /// + /// Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + /// + [Output("location")] + public Output Location { get; private set; } = null!; + + /// + /// Identifier. Name of the resource. + /// + [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!; + + /// + /// Optional. User-settable SecurityGateway resource ID. + /// * Must start with a letter. + /// * Must contain between 4-63 characters from `/a-z-/`. + /// * Must end with a number or letter. + /// + /// + /// - - - + /// + [Output("securityGatewayId")] + public Output SecurityGatewayId { get; private set; } = null!; + + /// + /// Output only. The operational state of the SecurityGateway. + /// Possible values: + /// STATE_UNSPECIFIED + /// CREATING + /// UPDATING + /// DELETING + /// RUNNING + /// DOWN + /// ERROR + /// + [Output("state")] + public Output State { get; private set; } = null!; + + /// + /// Output only. Timestamp when the resource was last modified. + /// + [Output("updateTime")] + public Output UpdateTime { get; private set; } = null!; + + + /// + /// Create a SecurityGateway 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 SecurityGateway(string name, SecurityGatewayArgs args, CustomResourceOptions? options = null) + : base("gcp:beyondcorp/securityGateway:SecurityGateway", name, args ?? new SecurityGatewayArgs(), MakeResourceOptions(options, "")) + { + } + + private SecurityGateway(string name, Input id, SecurityGatewayState? state = null, CustomResourceOptions? options = null) + : base("gcp:beyondcorp/securityGateway:SecurityGateway", 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 SecurityGateway 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 SecurityGateway Get(string name, Input id, SecurityGatewayState? state = null, CustomResourceOptions? options = null) + { + return new SecurityGateway(name, id, state, options); + } + } + + public sealed class SecurityGatewayArgs : global::Pulumi.ResourceArgs + { + /// + /// Optional. An arbitrary user-provided name for the SecurityGateway. + /// Cannot exceed 64 characters. + /// + [Input("displayName")] + public Input? DisplayName { get; set; } + + [Input("hubs")] + private InputList? _hubs; + + /// + /// Optional. Map of Hubs that represents regional data path deployment with GCP region + /// as a key. + /// Structure is documented below. + /// + public InputList Hubs + { + get => _hubs ?? (_hubs = new InputList()); + set => _hubs = value; + } + + /// + /// Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + /// + [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; } + + /// + /// Optional. User-settable SecurityGateway resource ID. + /// * Must start with a letter. + /// * Must contain between 4-63 characters from `/a-z-/`. + /// * Must end with a number or letter. + /// + /// + /// - - - + /// + [Input("securityGatewayId", required: true)] + public Input SecurityGatewayId { get; set; } = null!; + + public SecurityGatewayArgs() + { + } + public static new SecurityGatewayArgs Empty => new SecurityGatewayArgs(); + } + + public sealed class SecurityGatewayState : global::Pulumi.ResourceArgs + { + /// + /// Output only. Timestamp when the resource was created. + /// + [Input("createTime")] + public Input? CreateTime { get; set; } + + /// + /// Optional. An arbitrary user-provided name for the SecurityGateway. + /// Cannot exceed 64 characters. + /// + [Input("displayName")] + public Input? DisplayName { get; set; } + + [Input("externalIps")] + private InputList? _externalIps; + + /// + /// Output only. IP addresses that will be used for establishing + /// connection to the endpoints. + /// + public InputList ExternalIps + { + get => _externalIps ?? (_externalIps = new InputList()); + set => _externalIps = value; + } + + [Input("hubs")] + private InputList? _hubs; + + /// + /// Optional. Map of Hubs that represents regional data path deployment with GCP region + /// as a key. + /// Structure is documented below. + /// + public InputList Hubs + { + get => _hubs ?? (_hubs = new InputList()); + set => _hubs = value; + } + + /// + /// Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + /// + [Input("location")] + public Input? Location { get; set; } + + /// + /// Identifier. Name of the resource. + /// + [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; } + + /// + /// Optional. User-settable SecurityGateway resource ID. + /// * Must start with a letter. + /// * Must contain between 4-63 characters from `/a-z-/`. + /// * Must end with a number or letter. + /// + /// + /// - - - + /// + [Input("securityGatewayId")] + public Input? SecurityGatewayId { get; set; } + + /// + /// Output only. The operational state of the SecurityGateway. + /// Possible values: + /// STATE_UNSPECIFIED + /// CREATING + /// UPDATING + /// DELETING + /// RUNNING + /// DOWN + /// ERROR + /// + [Input("state")] + public Input? State { get; set; } + + /// + /// Output only. Timestamp when the resource was last modified. + /// + [Input("updateTime")] + public Input? UpdateTime { get; set; } + + public SecurityGatewayState() + { + } + public static new SecurityGatewayState Empty => new SecurityGatewayState(); + } +} diff --git a/sdk/dotnet/BlockchainNodeEngine/Inputs/BlockchainNodesEthereumDetailsGethDetailsArgs.cs b/sdk/dotnet/BlockchainNodeEngine/Inputs/BlockchainNodesEthereumDetailsGethDetailsArgs.cs index faa28466dc..36ae85ef0c 100644 --- a/sdk/dotnet/BlockchainNodeEngine/Inputs/BlockchainNodesEthereumDetailsGethDetailsArgs.cs +++ b/sdk/dotnet/BlockchainNodeEngine/Inputs/BlockchainNodesEthereumDetailsGethDetailsArgs.cs @@ -16,7 +16,7 @@ public sealed class BlockchainNodesEthereumDetailsGethDetailsArgs : global::Pulu /// Blockchain garbage collection modes. Only applicable when NodeType is FULL or ARCHIVE. /// Possible values are: `FULL`, `ARCHIVE`. /// - /// <a name="nested_additional_endpoints"></a>The `additional_endpoints` block contains: + /// <a name="nested_ethereum_details_additional_endpoints"></a>The `additional_endpoints` block contains: /// [Input("garbageCollectionMode")] public Input? GarbageCollectionMode { get; set; } diff --git a/sdk/dotnet/BlockchainNodeEngine/Inputs/BlockchainNodesEthereumDetailsGethDetailsGetArgs.cs b/sdk/dotnet/BlockchainNodeEngine/Inputs/BlockchainNodesEthereumDetailsGethDetailsGetArgs.cs index bb0fcd5600..5038a65ca2 100644 --- a/sdk/dotnet/BlockchainNodeEngine/Inputs/BlockchainNodesEthereumDetailsGethDetailsGetArgs.cs +++ b/sdk/dotnet/BlockchainNodeEngine/Inputs/BlockchainNodesEthereumDetailsGethDetailsGetArgs.cs @@ -16,7 +16,7 @@ public sealed class BlockchainNodesEthereumDetailsGethDetailsGetArgs : global::P /// Blockchain garbage collection modes. Only applicable when NodeType is FULL or ARCHIVE. /// Possible values are: `FULL`, `ARCHIVE`. /// - /// <a name="nested_additional_endpoints"></a>The `additional_endpoints` block contains: + /// <a name="nested_ethereum_details_additional_endpoints"></a>The `additional_endpoints` block contains: /// [Input("garbageCollectionMode")] public Input? GarbageCollectionMode { get; set; } diff --git a/sdk/dotnet/BlockchainNodeEngine/Outputs/BlockchainNodesEthereumDetailsGethDetails.cs b/sdk/dotnet/BlockchainNodeEngine/Outputs/BlockchainNodesEthereumDetailsGethDetails.cs index 0cc4357ae2..682a43014c 100644 --- a/sdk/dotnet/BlockchainNodeEngine/Outputs/BlockchainNodesEthereumDetailsGethDetails.cs +++ b/sdk/dotnet/BlockchainNodeEngine/Outputs/BlockchainNodesEthereumDetailsGethDetails.cs @@ -17,7 +17,7 @@ public sealed class BlockchainNodesEthereumDetailsGethDetails /// Blockchain garbage collection modes. Only applicable when NodeType is FULL or ARCHIVE. /// Possible values are: `FULL`, `ARCHIVE`. /// - /// <a name="nested_additional_endpoints"></a>The `additional_endpoints` block contains: + /// <a name="nested_ethereum_details_additional_endpoints"></a>The `additional_endpoints` block contains: /// public readonly string? GarbageCollectionMode; diff --git a/sdk/dotnet/CertificateAuthority/Inputs/AuthorityConfigSubjectKeyIdArgs.cs b/sdk/dotnet/CertificateAuthority/Inputs/AuthorityConfigSubjectKeyIdArgs.cs index e22e6962fc..fadecf7ede 100644 --- a/sdk/dotnet/CertificateAuthority/Inputs/AuthorityConfigSubjectKeyIdArgs.cs +++ b/sdk/dotnet/CertificateAuthority/Inputs/AuthorityConfigSubjectKeyIdArgs.cs @@ -15,7 +15,7 @@ public sealed class AuthorityConfigSubjectKeyIdArgs : global::Pulumi.ResourceArg /// /// The value of the KeyId in lowercase hexadecimal. /// - /// <a name="nested_x509_config"></a>The `x509_config` block supports: + /// <a name="nested_config_x509_config"></a>The `x509_config` block supports: /// [Input("keyId")] public Input? KeyId { get; set; } diff --git a/sdk/dotnet/CertificateAuthority/Inputs/AuthorityConfigSubjectKeyIdGetArgs.cs b/sdk/dotnet/CertificateAuthority/Inputs/AuthorityConfigSubjectKeyIdGetArgs.cs index f50c011f64..ccc4572213 100644 --- a/sdk/dotnet/CertificateAuthority/Inputs/AuthorityConfigSubjectKeyIdGetArgs.cs +++ b/sdk/dotnet/CertificateAuthority/Inputs/AuthorityConfigSubjectKeyIdGetArgs.cs @@ -15,7 +15,7 @@ public sealed class AuthorityConfigSubjectKeyIdGetArgs : global::Pulumi.Resource /// /// The value of the KeyId in lowercase hexadecimal. /// - /// <a name="nested_x509_config"></a>The `x509_config` block supports: + /// <a name="nested_config_x509_config"></a>The `x509_config` block supports: /// [Input("keyId")] public Input? KeyId { get; set; } diff --git a/sdk/dotnet/CertificateAuthority/Inputs/CertificateConfigArgs.cs b/sdk/dotnet/CertificateAuthority/Inputs/CertificateConfigArgs.cs index 7a03af9048..618629a981 100644 --- a/sdk/dotnet/CertificateAuthority/Inputs/CertificateConfigArgs.cs +++ b/sdk/dotnet/CertificateAuthority/Inputs/CertificateConfigArgs.cs @@ -17,7 +17,7 @@ public sealed class CertificateConfigArgs : global::Pulumi.ResourceArgs /// Structure is documented below. /// /// - /// <a name="nested_x509_config"></a>The `x509_config` block supports: + /// <a name="nested_config_x509_config"></a>The `x509_config` block supports: /// [Input("publicKey", required: true)] public Input PublicKey { get; set; } = null!; diff --git a/sdk/dotnet/CertificateAuthority/Inputs/CertificateConfigGetArgs.cs b/sdk/dotnet/CertificateAuthority/Inputs/CertificateConfigGetArgs.cs index 0406eceaad..b47f38614c 100644 --- a/sdk/dotnet/CertificateAuthority/Inputs/CertificateConfigGetArgs.cs +++ b/sdk/dotnet/CertificateAuthority/Inputs/CertificateConfigGetArgs.cs @@ -17,7 +17,7 @@ public sealed class CertificateConfigGetArgs : global::Pulumi.ResourceArgs /// Structure is documented below. /// /// - /// <a name="nested_x509_config"></a>The `x509_config` block supports: + /// <a name="nested_config_x509_config"></a>The `x509_config` block supports: /// [Input("publicKey", required: true)] public Input PublicKey { get; set; } = null!; diff --git a/sdk/dotnet/CertificateAuthority/Outputs/AuthorityConfigSubjectKeyId.cs b/sdk/dotnet/CertificateAuthority/Outputs/AuthorityConfigSubjectKeyId.cs index 03b2895f27..b202a8b19c 100644 --- a/sdk/dotnet/CertificateAuthority/Outputs/AuthorityConfigSubjectKeyId.cs +++ b/sdk/dotnet/CertificateAuthority/Outputs/AuthorityConfigSubjectKeyId.cs @@ -16,7 +16,7 @@ public sealed class AuthorityConfigSubjectKeyId /// /// The value of the KeyId in lowercase hexadecimal. /// - /// <a name="nested_x509_config"></a>The `x509_config` block supports: + /// <a name="nested_config_x509_config"></a>The `x509_config` block supports: /// public readonly string? KeyId; diff --git a/sdk/dotnet/CertificateAuthority/Outputs/CertificateConfig.cs b/sdk/dotnet/CertificateAuthority/Outputs/CertificateConfig.cs index f3bdf4d130..c5841cf679 100644 --- a/sdk/dotnet/CertificateAuthority/Outputs/CertificateConfig.cs +++ b/sdk/dotnet/CertificateAuthority/Outputs/CertificateConfig.cs @@ -18,7 +18,7 @@ public sealed class CertificateConfig /// Structure is documented below. /// /// - /// <a name="nested_x509_config"></a>The `x509_config` block supports: + /// <a name="nested_config_x509_config"></a>The `x509_config` block supports: /// public readonly Outputs.CertificateConfigPublicKey PublicKey; /// diff --git a/sdk/dotnet/CertificateManager/Inputs/CertificateManagedArgs.cs b/sdk/dotnet/CertificateManager/Inputs/CertificateManagedArgs.cs index fa5a748322..30ed4491cf 100644 --- a/sdk/dotnet/CertificateManager/Inputs/CertificateManagedArgs.cs +++ b/sdk/dotnet/CertificateManager/Inputs/CertificateManagedArgs.cs @@ -22,7 +22,7 @@ public sealed class CertificateManagedArgs : global::Pulumi.ResourceArgs /// Structure is documented below. /// /// - /// <a name="nested_provisioning_issue"></a>The `provisioning_issue` block contains: + /// <a name="nested_managed_provisioning_issue"></a>The `provisioning_issue` block contains: /// public InputList AuthorizationAttemptInfos { diff --git a/sdk/dotnet/CertificateManager/Inputs/CertificateManagedGetArgs.cs b/sdk/dotnet/CertificateManager/Inputs/CertificateManagedGetArgs.cs index d136b09888..3f8440819d 100644 --- a/sdk/dotnet/CertificateManager/Inputs/CertificateManagedGetArgs.cs +++ b/sdk/dotnet/CertificateManager/Inputs/CertificateManagedGetArgs.cs @@ -22,7 +22,7 @@ public sealed class CertificateManagedGetArgs : global::Pulumi.ResourceArgs /// Structure is documented below. /// /// - /// <a name="nested_provisioning_issue"></a>The `provisioning_issue` block contains: + /// <a name="nested_managed_provisioning_issue"></a>The `provisioning_issue` block contains: /// public InputList AuthorizationAttemptInfos { diff --git a/sdk/dotnet/CertificateManager/Outputs/CertificateManaged.cs b/sdk/dotnet/CertificateManager/Outputs/CertificateManaged.cs index 9df15cdd2b..d1f4d6ffb9 100644 --- a/sdk/dotnet/CertificateManager/Outputs/CertificateManaged.cs +++ b/sdk/dotnet/CertificateManager/Outputs/CertificateManaged.cs @@ -20,7 +20,7 @@ public sealed class CertificateManaged /// Structure is documented below. /// /// - /// <a name="nested_provisioning_issue"></a>The `provisioning_issue` block contains: + /// <a name="nested_managed_provisioning_issue"></a>The `provisioning_issue` block contains: /// public readonly ImmutableArray AuthorizationAttemptInfos; /// diff --git a/sdk/dotnet/Chronicle/DataAccessLabel.cs b/sdk/dotnet/Chronicle/DataAccessLabel.cs new file mode 100644 index 0000000000..1acee8c539 --- /dev/null +++ b/sdk/dotnet/Chronicle/DataAccessLabel.cs @@ -0,0 +1,328 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know 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 Dataaccesslabel Basic + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = new Gcp.Chronicle.DataAccessLabel("example", new() + /// { + /// Location = "us", + /// Instance = "00000000-0000-0000-0000-000000000000", + /// DataAccessLabelId = "label-id", + /// UdmQuery = "principal.hostname=\"google.com\"", + /// Description = "label-description", + /// }); + /// + /// }); + /// ``` + /// + /// ## Import + /// + /// DataAccessLabel can be imported using any of these accepted formats: + /// + /// * `projects/{{project}}/locations/{{location}}/instances/{{instance}}/dataAccessLabels/{{data_access_label_id}}` + /// + /// * `{{project}}/{{location}}/{{instance}}/{{data_access_label_id}}` + /// + /// * `{{location}}/{{instance}}/{{data_access_label_id}}` + /// + /// When using the `pulumi import` command, DataAccessLabel can be imported using one of the formats above. For example: + /// + /// ```sh + /// $ pulumi import gcp:chronicle/dataAccessLabel:DataAccessLabel default projects/{{project}}/locations/{{location}}/instances/{{instance}}/dataAccessLabels/{{data_access_label_id}} + /// ``` + /// + /// ```sh + /// $ pulumi import gcp:chronicle/dataAccessLabel:DataAccessLabel default {{project}}/{{location}}/{{instance}}/{{data_access_label_id}} + /// ``` + /// + /// ```sh + /// $ pulumi import gcp:chronicle/dataAccessLabel:DataAccessLabel default {{location}}/{{instance}}/{{data_access_label_id}} + /// ``` + /// + [GcpResourceType("gcp:chronicle/dataAccessLabel:DataAccessLabel")] + public partial class DataAccessLabel : global::Pulumi.CustomResource + { + /// + /// Output only. The user who created the data access label. + /// + [Output("author")] + public Output Author { get; private set; } = null!; + + /// + /// Output only. The time at which the data access label was created. + /// + [Output("createTime")] + public Output CreateTime { get; private set; } = null!; + + /// + /// Required. The ID to use for the data access label, which will become the label's + /// display name and the final component of the label's resource name. It must + /// only contain ASCII lowercase letters, numbers, and dashes; it must begin + /// with a letter, and it must not exceed 1000 characters. + /// + /// + /// - - - + /// + [Output("dataAccessLabelId")] + public Output DataAccessLabelId { get; private set; } = null!; + + /// + /// Optional. A description of the data access label for a human reader. + /// + [Output("description")] + public Output Description { get; private set; } = null!; + + /// + /// Output only. The short name displayed for the label as it appears on event data. This is same as data access label id. + /// + [Output("displayName")] + public Output DisplayName { 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!; + + /// + /// Output only. The user who last updated the data access label. + /// + [Output("lastEditor")] + public Output LastEditor { 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!; + + /// + /// The unique resource name of the data access label. This unique identifier is generated using values provided for the URL parameters. + /// Format: + /// projects/{project}/locations/{location}/instances/{instance}/dataAccessLabels/{data_access_label_id} + /// + [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!; + + /// + /// A UDM query over event data. + /// + [Output("udmQuery")] + public Output UdmQuery { get; private set; } = null!; + + /// + /// Output only. The time at which the data access label was last updated. + /// + [Output("updateTime")] + public Output UpdateTime { get; private set; } = null!; + + + /// + /// Create a DataAccessLabel 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 DataAccessLabel(string name, DataAccessLabelArgs args, CustomResourceOptions? options = null) + : base("gcp:chronicle/dataAccessLabel:DataAccessLabel", name, args ?? new DataAccessLabelArgs(), MakeResourceOptions(options, "")) + { + } + + private DataAccessLabel(string name, Input id, DataAccessLabelState? state = null, CustomResourceOptions? options = null) + : base("gcp:chronicle/dataAccessLabel:DataAccessLabel", 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 DataAccessLabel 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 DataAccessLabel Get(string name, Input id, DataAccessLabelState? state = null, CustomResourceOptions? options = null) + { + return new DataAccessLabel(name, id, state, options); + } + } + + public sealed class DataAccessLabelArgs : global::Pulumi.ResourceArgs + { + /// + /// Required. The ID to use for the data access label, which will become the label's + /// display name and the final component of the label's resource name. It must + /// only contain ASCII lowercase letters, numbers, and dashes; it must begin + /// with a letter, and it must not exceed 1000 characters. + /// + /// + /// - - - + /// + [Input("dataAccessLabelId", required: true)] + public Input DataAccessLabelId { get; set; } = null!; + + /// + /// Optional. A description of the data access label for a human reader. + /// + [Input("description")] + public Input? Description { get; set; } + + /// + /// 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!; + + /// + /// 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; } + + /// + /// A UDM query over event data. + /// + [Input("udmQuery", required: true)] + public Input UdmQuery { get; set; } = null!; + + public DataAccessLabelArgs() + { + } + public static new DataAccessLabelArgs Empty => new DataAccessLabelArgs(); + } + + public sealed class DataAccessLabelState : global::Pulumi.ResourceArgs + { + /// + /// Output only. The user who created the data access label. + /// + [Input("author")] + public Input? Author { get; set; } + + /// + /// Output only. The time at which the data access label was created. + /// + [Input("createTime")] + public Input? CreateTime { get; set; } + + /// + /// Required. The ID to use for the data access label, which will become the label's + /// display name and the final component of the label's resource name. It must + /// only contain ASCII lowercase letters, numbers, and dashes; it must begin + /// with a letter, and it must not exceed 1000 characters. + /// + /// + /// - - - + /// + [Input("dataAccessLabelId")] + public Input? DataAccessLabelId { get; set; } + + /// + /// Optional. A description of the data access label for a human reader. + /// + [Input("description")] + public Input? Description { get; set; } + + /// + /// Output only. The short name displayed for the label as it appears on event data. This is same as data access label id. + /// + [Input("displayName")] + public Input? DisplayName { get; set; } + + /// + /// The unique identifier for the Chronicle instance, which is the same as the customer ID. + /// + [Input("instance")] + public Input? Instance { get; set; } + + /// + /// Output only. The user who last updated the data access label. + /// + [Input("lastEditor")] + public Input? LastEditor { 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; } + + /// + /// The unique resource name of the data access label. This unique identifier is generated using values provided for the URL parameters. + /// Format: + /// projects/{project}/locations/{location}/instances/{instance}/dataAccessLabels/{data_access_label_id} + /// + [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; } + + /// + /// A UDM query over event data. + /// + [Input("udmQuery")] + public Input? UdmQuery { get; set; } + + /// + /// Output only. The time at which the data access label was last updated. + /// + [Input("updateTime")] + public Input? UpdateTime { get; set; } + + public DataAccessLabelState() + { + } + public static new DataAccessLabelState Empty => new DataAccessLabelState(); + } +} diff --git a/sdk/dotnet/Chronicle/DataAccessScope.cs b/sdk/dotnet/Chronicle/DataAccessScope.cs new file mode 100644 index 0000000000..b72927f027 --- /dev/null +++ b/sdk/dotnet/Chronicle/DataAccessScope.cs @@ -0,0 +1,594 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know 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 Dataaccessscope With Logtype + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = new Gcp.Chronicle.DataAccessScope("example", new() + /// { + /// Location = "us", + /// Instance = "00000000-0000-0000-0000-000000000000", + /// DataAccessScopeId = "scope-id", + /// Description = "scope-description", + /// AllowedDataAccessLabels = new[] + /// { + /// new Gcp.Chronicle.Inputs.DataAccessScopeAllowedDataAccessLabelArgs + /// { + /// LogType = "GCP_CLOUDAUDIT", + /// }, + /// new Gcp.Chronicle.Inputs.DataAccessScopeAllowedDataAccessLabelArgs + /// { + /// LogType = "GITHUB", + /// }, + /// }, + /// }); + /// + /// }); + /// ``` + /// ### Chronicle Dataaccessscope With Dataaccesslabel + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var customDataAccessLabel = new Gcp.Chronicle.DataAccessLabel("custom_data_access_label", new() + /// { + /// Location = "us", + /// Instance = "00000000-0000-0000-0000-000000000000", + /// DataAccessLabelId = "label-id", + /// UdmQuery = "principal.hostname=\"google.com\"", + /// }); + /// + /// var example = new Gcp.Chronicle.DataAccessScope("example", new() + /// { + /// Location = "us", + /// Instance = "00000000-0000-0000-0000-000000000000", + /// DataAccessScopeId = "scope-id", + /// Description = "scope-description", + /// AllowedDataAccessLabels = new[] + /// { + /// new Gcp.Chronicle.Inputs.DataAccessScopeAllowedDataAccessLabelArgs + /// { + /// DataAccessLabel = googleChronicleDataAccessLabel.CustomDataAccessLabel.DataAccessLabelId, + /// }, + /// }, + /// }); + /// + /// }); + /// ``` + /// ### Chronicle Dataaccessscope With Asset Namespace + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = new Gcp.Chronicle.DataAccessScope("example", new() + /// { + /// Location = "us", + /// Instance = "00000000-0000-0000-0000-000000000000", + /// DataAccessScopeId = "scope-id", + /// Description = "scope-description", + /// AllowedDataAccessLabels = new[] + /// { + /// new Gcp.Chronicle.Inputs.DataAccessScopeAllowedDataAccessLabelArgs + /// { + /// AssetNamespace = "my-namespace", + /// }, + /// }, + /// }); + /// + /// }); + /// ``` + /// ### Chronicle Dataaccessscope With Ingestion Label + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var example = new Gcp.Chronicle.DataAccessScope("example", new() + /// { + /// Location = "us", + /// Instance = "00000000-0000-0000-0000-000000000000", + /// DataAccessScopeId = "scope-id", + /// Description = "scope-description", + /// AllowedDataAccessLabels = new[] + /// { + /// new Gcp.Chronicle.Inputs.DataAccessScopeAllowedDataAccessLabelArgs + /// { + /// IngestionLabel = new Gcp.Chronicle.Inputs.DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs + /// { + /// IngestionLabelKey = "ingestion_key", + /// IngestionLabelValue = "ingestion_value", + /// }, + /// }, + /// }, + /// }); + /// + /// }); + /// ``` + /// ### Chronicle Dataaccessscope With Denied Labels + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var customDataAccessLabel = new Gcp.Chronicle.DataAccessLabel("custom_data_access_label", new() + /// { + /// Location = "us", + /// Instance = "00000000-0000-0000-0000-000000000000", + /// DataAccessLabelId = "label-id", + /// UdmQuery = "principal.hostname=\"google.com\"", + /// }); + /// + /// var example = new Gcp.Chronicle.DataAccessScope("example", new() + /// { + /// Location = "us", + /// Instance = "00000000-0000-0000-0000-000000000000", + /// DataAccessScopeId = "scope-id", + /// Description = "scope-description", + /// AllowAll = true, + /// DeniedDataAccessLabels = new[] + /// { + /// new Gcp.Chronicle.Inputs.DataAccessScopeDeniedDataAccessLabelArgs + /// { + /// LogType = "GCP_CLOUDAUDIT", + /// }, + /// new Gcp.Chronicle.Inputs.DataAccessScopeDeniedDataAccessLabelArgs + /// { + /// DataAccessLabel = googleChronicleDataAccessLabel.CustomDataAccessLabel.DataAccessLabelId, + /// }, + /// new Gcp.Chronicle.Inputs.DataAccessScopeDeniedDataAccessLabelArgs + /// { + /// IngestionLabel = new Gcp.Chronicle.Inputs.DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs + /// { + /// IngestionLabelKey = "ingestion_key", + /// IngestionLabelValue = "ingestion_value", + /// }, + /// }, + /// new Gcp.Chronicle.Inputs.DataAccessScopeDeniedDataAccessLabelArgs + /// { + /// AssetNamespace = "my-namespace", + /// }, + /// }, + /// }); + /// + /// }); + /// ``` + /// + /// ## Import + /// + /// DataAccessScope can be imported using any of these accepted formats: + /// + /// * `projects/{{project}}/locations/{{location}}/instances/{{instance}}/dataAccessScopes/{{data_access_scope_id}}` + /// + /// * `{{project}}/{{location}}/{{instance}}/{{data_access_scope_id}}` + /// + /// * `{{location}}/{{instance}}/{{data_access_scope_id}}` + /// + /// When using the `pulumi import` command, DataAccessScope can be imported using one of the formats above. For example: + /// + /// ```sh + /// $ pulumi import gcp:chronicle/dataAccessScope:DataAccessScope default projects/{{project}}/locations/{{location}}/instances/{{instance}}/dataAccessScopes/{{data_access_scope_id}} + /// ``` + /// + /// ```sh + /// $ pulumi import gcp:chronicle/dataAccessScope:DataAccessScope default {{project}}/{{location}}/{{instance}}/{{data_access_scope_id}} + /// ``` + /// + /// ```sh + /// $ pulumi import gcp:chronicle/dataAccessScope:DataAccessScope default {{location}}/{{instance}}/{{data_access_scope_id}} + /// ``` + /// + [GcpResourceType("gcp:chronicle/dataAccessScope:DataAccessScope")] + public partial class DataAccessScope : global::Pulumi.CustomResource + { + /// + /// Optional. Whether or not the scope allows all labels, allow_all and + /// allowed_data_access_labels are mutually exclusive and one of them must be + /// present. denied_data_access_labels can still be used along with allow_all. + /// When combined with denied_data_access_labels, access will be granted to all + /// data that doesn't have labels mentioned in denied_data_access_labels. E.g.: + /// A customer with scope with denied labels A and B and allow_all will be able + /// to see all data except data labeled with A and data labeled with B and data + /// with labels A and B. + /// + [Output("allowAll")] + public Output AllowAll { get; private set; } = null!; + + /// + /// The allowed labels for the scope. There has to be at + /// least one label allowed for the scope to be valid. + /// The logical operator for evaluation of the allowed labels is OR. + /// Either allow_all or allowed_data_access_labels needs to be provided. + /// E.g.: A customer with scope with allowed labels A and B will be able + /// to see data with labeled with A or B or (A and B). + /// Structure is documented below. + /// + [Output("allowedDataAccessLabels")] + public Output> AllowedDataAccessLabels { get; private set; } = null!; + + /// + /// Output only. The user who created the data access scope. + /// + [Output("author")] + public Output Author { get; private set; } = null!; + + /// + /// Output only. The time at which the data access scope was created. + /// + [Output("createTime")] + public Output CreateTime { get; private set; } = null!; + + /// + /// Required. The user provided scope id which will become the last part of the name + /// of the scope resource. + /// Needs to be compliant with https://google.aip.dev/122 + /// + /// + /// - - - + /// + [Output("dataAccessScopeId")] + public Output DataAccessScopeId { get; private set; } = null!; + + /// + /// Optional. The denied labels for the scope. + /// The logical operator for evaluation of the denied labels is AND. + /// E.g.: A customer with scope with denied labels A and B won't be able + /// to see data labeled with A and data labeled with B + /// and data with labels A and B. + /// Structure is documented below. + /// + [Output("deniedDataAccessLabels")] + public Output> DeniedDataAccessLabels { get; private set; } = null!; + + /// + /// Optional. A description of the data access scope for a human reader. + /// + [Output("description")] + public Output Description { get; private set; } = null!; + + /// + /// Output only. The name to be used for display to customers of the data access scope. + /// + [Output("displayName")] + public Output DisplayName { 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!; + + /// + /// Output only. The user who last updated the data access scope. + /// + [Output("lastEditor")] + public Output LastEditor { 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!; + + /// + /// The unique full name of the data access scope. This unique identifier is generated using values provided for the URL parameters. + /// Format: + /// projects/{project}/locations/{location}/instances/{instance}/dataAccessScopes/{data_access_scope_id} + /// + [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!; + + /// + /// Output only. The time at which the data access scope was last updated. + /// + [Output("updateTime")] + public Output UpdateTime { get; private set; } = null!; + + + /// + /// Create a DataAccessScope 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 DataAccessScope(string name, DataAccessScopeArgs args, CustomResourceOptions? options = null) + : base("gcp:chronicle/dataAccessScope:DataAccessScope", name, args ?? new DataAccessScopeArgs(), MakeResourceOptions(options, "")) + { + } + + private DataAccessScope(string name, Input id, DataAccessScopeState? state = null, CustomResourceOptions? options = null) + : base("gcp:chronicle/dataAccessScope:DataAccessScope", 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 DataAccessScope 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 DataAccessScope Get(string name, Input id, DataAccessScopeState? state = null, CustomResourceOptions? options = null) + { + return new DataAccessScope(name, id, state, options); + } + } + + public sealed class DataAccessScopeArgs : global::Pulumi.ResourceArgs + { + /// + /// Optional. Whether or not the scope allows all labels, allow_all and + /// allowed_data_access_labels are mutually exclusive and one of them must be + /// present. denied_data_access_labels can still be used along with allow_all. + /// When combined with denied_data_access_labels, access will be granted to all + /// data that doesn't have labels mentioned in denied_data_access_labels. E.g.: + /// A customer with scope with denied labels A and B and allow_all will be able + /// to see all data except data labeled with A and data labeled with B and data + /// with labels A and B. + /// + [Input("allowAll")] + public Input? AllowAll { get; set; } + + [Input("allowedDataAccessLabels")] + private InputList? _allowedDataAccessLabels; + + /// + /// The allowed labels for the scope. There has to be at + /// least one label allowed for the scope to be valid. + /// The logical operator for evaluation of the allowed labels is OR. + /// Either allow_all or allowed_data_access_labels needs to be provided. + /// E.g.: A customer with scope with allowed labels A and B will be able + /// to see data with labeled with A or B or (A and B). + /// Structure is documented below. + /// + public InputList AllowedDataAccessLabels + { + get => _allowedDataAccessLabels ?? (_allowedDataAccessLabels = new InputList()); + set => _allowedDataAccessLabels = value; + } + + /// + /// Required. The user provided scope id which will become the last part of the name + /// of the scope resource. + /// Needs to be compliant with https://google.aip.dev/122 + /// + /// + /// - - - + /// + [Input("dataAccessScopeId", required: true)] + public Input DataAccessScopeId { get; set; } = null!; + + [Input("deniedDataAccessLabels")] + private InputList? _deniedDataAccessLabels; + + /// + /// Optional. The denied labels for the scope. + /// The logical operator for evaluation of the denied labels is AND. + /// E.g.: A customer with scope with denied labels A and B won't be able + /// to see data labeled with A and data labeled with B + /// and data with labels A and B. + /// Structure is documented below. + /// + public InputList DeniedDataAccessLabels + { + get => _deniedDataAccessLabels ?? (_deniedDataAccessLabels = new InputList()); + set => _deniedDataAccessLabels = value; + } + + /// + /// Optional. A description of the data access scope for a human reader. + /// + [Input("description")] + public Input? Description { get; set; } + + /// + /// 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!; + + /// + /// 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 DataAccessScopeArgs() + { + } + public static new DataAccessScopeArgs Empty => new DataAccessScopeArgs(); + } + + public sealed class DataAccessScopeState : global::Pulumi.ResourceArgs + { + /// + /// Optional. Whether or not the scope allows all labels, allow_all and + /// allowed_data_access_labels are mutually exclusive and one of them must be + /// present. denied_data_access_labels can still be used along with allow_all. + /// When combined with denied_data_access_labels, access will be granted to all + /// data that doesn't have labels mentioned in denied_data_access_labels. E.g.: + /// A customer with scope with denied labels A and B and allow_all will be able + /// to see all data except data labeled with A and data labeled with B and data + /// with labels A and B. + /// + [Input("allowAll")] + public Input? AllowAll { get; set; } + + [Input("allowedDataAccessLabels")] + private InputList? _allowedDataAccessLabels; + + /// + /// The allowed labels for the scope. There has to be at + /// least one label allowed for the scope to be valid. + /// The logical operator for evaluation of the allowed labels is OR. + /// Either allow_all or allowed_data_access_labels needs to be provided. + /// E.g.: A customer with scope with allowed labels A and B will be able + /// to see data with labeled with A or B or (A and B). + /// Structure is documented below. + /// + public InputList AllowedDataAccessLabels + { + get => _allowedDataAccessLabels ?? (_allowedDataAccessLabels = new InputList()); + set => _allowedDataAccessLabels = value; + } + + /// + /// Output only. The user who created the data access scope. + /// + [Input("author")] + public Input? Author { get; set; } + + /// + /// Output only. The time at which the data access scope was created. + /// + [Input("createTime")] + public Input? CreateTime { get; set; } + + /// + /// Required. The user provided scope id which will become the last part of the name + /// of the scope resource. + /// Needs to be compliant with https://google.aip.dev/122 + /// + /// + /// - - - + /// + [Input("dataAccessScopeId")] + public Input? DataAccessScopeId { get; set; } + + [Input("deniedDataAccessLabels")] + private InputList? _deniedDataAccessLabels; + + /// + /// Optional. The denied labels for the scope. + /// The logical operator for evaluation of the denied labels is AND. + /// E.g.: A customer with scope with denied labels A and B won't be able + /// to see data labeled with A and data labeled with B + /// and data with labels A and B. + /// Structure is documented below. + /// + public InputList DeniedDataAccessLabels + { + get => _deniedDataAccessLabels ?? (_deniedDataAccessLabels = new InputList()); + set => _deniedDataAccessLabels = value; + } + + /// + /// Optional. A description of the data access scope for a human reader. + /// + [Input("description")] + public Input? Description { get; set; } + + /// + /// Output only. The name to be used for display to customers of the data access scope. + /// + [Input("displayName")] + public Input? DisplayName { get; set; } + + /// + /// The unique identifier for the Chronicle instance, which is the same as the customer ID. + /// + [Input("instance")] + public Input? Instance { get; set; } + + /// + /// Output only. The user who last updated the data access scope. + /// + [Input("lastEditor")] + public Input? LastEditor { 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; } + + /// + /// The unique full name of the data access scope. This unique identifier is generated using values provided for the URL parameters. + /// Format: + /// projects/{project}/locations/{location}/instances/{instance}/dataAccessScopes/{data_access_scope_id} + /// + [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; } + + /// + /// Output only. The time at which the data access scope was last updated. + /// + [Input("updateTime")] + public Input? UpdateTime { get; set; } + + public DataAccessScopeState() + { + } + public static new DataAccessScopeState Empty => new DataAccessScopeState(); + } +} diff --git a/sdk/dotnet/Chronicle/Inputs/DataAccessScopeAllowedDataAccessLabelArgs.cs b/sdk/dotnet/Chronicle/Inputs/DataAccessScopeAllowedDataAccessLabelArgs.cs new file mode 100644 index 0000000000..68aae099d9 --- /dev/null +++ b/sdk/dotnet/Chronicle/Inputs/DataAccessScopeAllowedDataAccessLabelArgs.cs @@ -0,0 +1,57 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Chronicle.Inputs +{ + + public sealed class DataAccessScopeAllowedDataAccessLabelArgs : global::Pulumi.ResourceArgs + { + /// + /// The asset namespace configured in the forwarder + /// of the customer's events. + /// + [Input("assetNamespace")] + public Input? AssetNamespace { get; set; } + + /// + /// The name of the data access label. + /// + [Input("dataAccessLabel")] + public Input? DataAccessLabel { get; set; } + + /// + /// (Output) + /// Output only. The display name of the label. + /// Data access label and log types's name + /// will match the display name of the resource. + /// The asset namespace will match the namespace itself. + /// The ingestion key value pair will match the key of the tuple. + /// + [Input("displayName")] + public Input? DisplayName { get; set; } + + /// + /// Representation of an ingestion label type. + /// Structure is documented below. + /// + [Input("ingestionLabel")] + public Input? IngestionLabel { get; set; } + + /// + /// The name of the log type. + /// + [Input("logType")] + public Input? LogType { get; set; } + + public DataAccessScopeAllowedDataAccessLabelArgs() + { + } + public static new DataAccessScopeAllowedDataAccessLabelArgs Empty => new DataAccessScopeAllowedDataAccessLabelArgs(); + } +} diff --git a/sdk/dotnet/Chronicle/Inputs/DataAccessScopeAllowedDataAccessLabelGetArgs.cs b/sdk/dotnet/Chronicle/Inputs/DataAccessScopeAllowedDataAccessLabelGetArgs.cs new file mode 100644 index 0000000000..ae943f0d92 --- /dev/null +++ b/sdk/dotnet/Chronicle/Inputs/DataAccessScopeAllowedDataAccessLabelGetArgs.cs @@ -0,0 +1,57 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Chronicle.Inputs +{ + + public sealed class DataAccessScopeAllowedDataAccessLabelGetArgs : global::Pulumi.ResourceArgs + { + /// + /// The asset namespace configured in the forwarder + /// of the customer's events. + /// + [Input("assetNamespace")] + public Input? AssetNamespace { get; set; } + + /// + /// The name of the data access label. + /// + [Input("dataAccessLabel")] + public Input? DataAccessLabel { get; set; } + + /// + /// (Output) + /// Output only. The display name of the label. + /// Data access label and log types's name + /// will match the display name of the resource. + /// The asset namespace will match the namespace itself. + /// The ingestion key value pair will match the key of the tuple. + /// + [Input("displayName")] + public Input? DisplayName { get; set; } + + /// + /// Representation of an ingestion label type. + /// Structure is documented below. + /// + [Input("ingestionLabel")] + public Input? IngestionLabel { get; set; } + + /// + /// The name of the log type. + /// + [Input("logType")] + public Input? LogType { get; set; } + + public DataAccessScopeAllowedDataAccessLabelGetArgs() + { + } + public static new DataAccessScopeAllowedDataAccessLabelGetArgs Empty => new DataAccessScopeAllowedDataAccessLabelGetArgs(); + } +} diff --git a/sdk/dotnet/Chronicle/Inputs/DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs.cs b/sdk/dotnet/Chronicle/Inputs/DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs.cs new file mode 100644 index 0000000000..87ce385261 --- /dev/null +++ b/sdk/dotnet/Chronicle/Inputs/DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs.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 DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs : global::Pulumi.ResourceArgs + { + /// + /// Required. The key of the ingestion label. Always required. + /// + [Input("ingestionLabelKey", required: true)] + public Input IngestionLabelKey { get; set; } = null!; + + /// + /// Optional. The value of the ingestion label. Optional. An object + /// with no provided value and some key provided would match + /// against the given key and ANY value. + /// + [Input("ingestionLabelValue")] + public Input? IngestionLabelValue { get; set; } + + public DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs() + { + } + public static new DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs Empty => new DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs(); + } +} diff --git a/sdk/dotnet/Chronicle/Inputs/DataAccessScopeAllowedDataAccessLabelIngestionLabelGetArgs.cs b/sdk/dotnet/Chronicle/Inputs/DataAccessScopeAllowedDataAccessLabelIngestionLabelGetArgs.cs new file mode 100644 index 0000000000..3669803409 --- /dev/null +++ b/sdk/dotnet/Chronicle/Inputs/DataAccessScopeAllowedDataAccessLabelIngestionLabelGetArgs.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 DataAccessScopeAllowedDataAccessLabelIngestionLabelGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Required. The key of the ingestion label. Always required. + /// + [Input("ingestionLabelKey", required: true)] + public Input IngestionLabelKey { get; set; } = null!; + + /// + /// Optional. The value of the ingestion label. Optional. An object + /// with no provided value and some key provided would match + /// against the given key and ANY value. + /// + [Input("ingestionLabelValue")] + public Input? IngestionLabelValue { get; set; } + + public DataAccessScopeAllowedDataAccessLabelIngestionLabelGetArgs() + { + } + public static new DataAccessScopeAllowedDataAccessLabelIngestionLabelGetArgs Empty => new DataAccessScopeAllowedDataAccessLabelIngestionLabelGetArgs(); + } +} diff --git a/sdk/dotnet/Chronicle/Inputs/DataAccessScopeDeniedDataAccessLabelArgs.cs b/sdk/dotnet/Chronicle/Inputs/DataAccessScopeDeniedDataAccessLabelArgs.cs new file mode 100644 index 0000000000..28daa6a402 --- /dev/null +++ b/sdk/dotnet/Chronicle/Inputs/DataAccessScopeDeniedDataAccessLabelArgs.cs @@ -0,0 +1,57 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Chronicle.Inputs +{ + + public sealed class DataAccessScopeDeniedDataAccessLabelArgs : global::Pulumi.ResourceArgs + { + /// + /// The asset namespace configured in the forwarder + /// of the customer's events. + /// + [Input("assetNamespace")] + public Input? AssetNamespace { get; set; } + + /// + /// The name of the data access label. + /// + [Input("dataAccessLabel")] + public Input? DataAccessLabel { get; set; } + + /// + /// (Output) + /// Output only. The display name of the label. + /// Data access label and log types's name + /// will match the display name of the resource. + /// The asset namespace will match the namespace itself. + /// The ingestion key value pair will match the key of the tuple. + /// + [Input("displayName")] + public Input? DisplayName { get; set; } + + /// + /// Representation of an ingestion label type. + /// Structure is documented below. + /// + [Input("ingestionLabel")] + public Input? IngestionLabel { get; set; } + + /// + /// The name of the log type. + /// + [Input("logType")] + public Input? LogType { get; set; } + + public DataAccessScopeDeniedDataAccessLabelArgs() + { + } + public static new DataAccessScopeDeniedDataAccessLabelArgs Empty => new DataAccessScopeDeniedDataAccessLabelArgs(); + } +} diff --git a/sdk/dotnet/Chronicle/Inputs/DataAccessScopeDeniedDataAccessLabelGetArgs.cs b/sdk/dotnet/Chronicle/Inputs/DataAccessScopeDeniedDataAccessLabelGetArgs.cs new file mode 100644 index 0000000000..2b6b9e030f --- /dev/null +++ b/sdk/dotnet/Chronicle/Inputs/DataAccessScopeDeniedDataAccessLabelGetArgs.cs @@ -0,0 +1,57 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Chronicle.Inputs +{ + + public sealed class DataAccessScopeDeniedDataAccessLabelGetArgs : global::Pulumi.ResourceArgs + { + /// + /// The asset namespace configured in the forwarder + /// of the customer's events. + /// + [Input("assetNamespace")] + public Input? AssetNamespace { get; set; } + + /// + /// The name of the data access label. + /// + [Input("dataAccessLabel")] + public Input? DataAccessLabel { get; set; } + + /// + /// (Output) + /// Output only. The display name of the label. + /// Data access label and log types's name + /// will match the display name of the resource. + /// The asset namespace will match the namespace itself. + /// The ingestion key value pair will match the key of the tuple. + /// + [Input("displayName")] + public Input? DisplayName { get; set; } + + /// + /// Representation of an ingestion label type. + /// Structure is documented below. + /// + [Input("ingestionLabel")] + public Input? IngestionLabel { get; set; } + + /// + /// The name of the log type. + /// + [Input("logType")] + public Input? LogType { get; set; } + + public DataAccessScopeDeniedDataAccessLabelGetArgs() + { + } + public static new DataAccessScopeDeniedDataAccessLabelGetArgs Empty => new DataAccessScopeDeniedDataAccessLabelGetArgs(); + } +} diff --git a/sdk/dotnet/Chronicle/Inputs/DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs.cs b/sdk/dotnet/Chronicle/Inputs/DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs.cs new file mode 100644 index 0000000000..8550a8295c --- /dev/null +++ b/sdk/dotnet/Chronicle/Inputs/DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs.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 DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs : global::Pulumi.ResourceArgs + { + /// + /// Required. The key of the ingestion label. Always required. + /// + [Input("ingestionLabelKey", required: true)] + public Input IngestionLabelKey { get; set; } = null!; + + /// + /// Optional. The value of the ingestion label. Optional. An object + /// with no provided value and some key provided would match + /// against the given key and ANY value. + /// + [Input("ingestionLabelValue")] + public Input? IngestionLabelValue { get; set; } + + public DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs() + { + } + public static new DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs Empty => new DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs(); + } +} diff --git a/sdk/dotnet/Chronicle/Inputs/DataAccessScopeDeniedDataAccessLabelIngestionLabelGetArgs.cs b/sdk/dotnet/Chronicle/Inputs/DataAccessScopeDeniedDataAccessLabelIngestionLabelGetArgs.cs new file mode 100644 index 0000000000..723babb839 --- /dev/null +++ b/sdk/dotnet/Chronicle/Inputs/DataAccessScopeDeniedDataAccessLabelIngestionLabelGetArgs.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 DataAccessScopeDeniedDataAccessLabelIngestionLabelGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Required. The key of the ingestion label. Always required. + /// + [Input("ingestionLabelKey", required: true)] + public Input IngestionLabelKey { get; set; } = null!; + + /// + /// Optional. The value of the ingestion label. Optional. An object + /// with no provided value and some key provided would match + /// against the given key and ANY value. + /// + [Input("ingestionLabelValue")] + public Input? IngestionLabelValue { get; set; } + + public DataAccessScopeDeniedDataAccessLabelIngestionLabelGetArgs() + { + } + public static new DataAccessScopeDeniedDataAccessLabelIngestionLabelGetArgs Empty => new DataAccessScopeDeniedDataAccessLabelIngestionLabelGetArgs(); + } +} diff --git a/sdk/dotnet/Chronicle/Outputs/DataAccessScopeAllowedDataAccessLabel.cs b/sdk/dotnet/Chronicle/Outputs/DataAccessScopeAllowedDataAccessLabel.cs new file mode 100644 index 0000000000..714a98c888 --- /dev/null +++ b/sdk/dotnet/Chronicle/Outputs/DataAccessScopeAllowedDataAccessLabel.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.Chronicle.Outputs +{ + + [OutputType] + public sealed class DataAccessScopeAllowedDataAccessLabel + { + /// + /// The asset namespace configured in the forwarder + /// of the customer's events. + /// + public readonly string? AssetNamespace; + /// + /// The name of the data access label. + /// + public readonly string? DataAccessLabel; + /// + /// (Output) + /// Output only. The display name of the label. + /// Data access label and log types's name + /// will match the display name of the resource. + /// The asset namespace will match the namespace itself. + /// The ingestion key value pair will match the key of the tuple. + /// + public readonly string? DisplayName; + /// + /// Representation of an ingestion label type. + /// Structure is documented below. + /// + public readonly Outputs.DataAccessScopeAllowedDataAccessLabelIngestionLabel? IngestionLabel; + /// + /// The name of the log type. + /// + public readonly string? LogType; + + [OutputConstructor] + private DataAccessScopeAllowedDataAccessLabel( + string? assetNamespace, + + string? dataAccessLabel, + + string? displayName, + + Outputs.DataAccessScopeAllowedDataAccessLabelIngestionLabel? ingestionLabel, + + string? logType) + { + AssetNamespace = assetNamespace; + DataAccessLabel = dataAccessLabel; + DisplayName = displayName; + IngestionLabel = ingestionLabel; + LogType = logType; + } + } +} diff --git a/sdk/dotnet/Chronicle/Outputs/DataAccessScopeAllowedDataAccessLabelIngestionLabel.cs b/sdk/dotnet/Chronicle/Outputs/DataAccessScopeAllowedDataAccessLabelIngestionLabel.cs new file mode 100644 index 0000000000..01fdeda6de --- /dev/null +++ b/sdk/dotnet/Chronicle/Outputs/DataAccessScopeAllowedDataAccessLabelIngestionLabel.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 DataAccessScopeAllowedDataAccessLabelIngestionLabel + { + /// + /// Required. The key of the ingestion label. Always required. + /// + public readonly string IngestionLabelKey; + /// + /// Optional. The value of the ingestion label. Optional. An object + /// with no provided value and some key provided would match + /// against the given key and ANY value. + /// + public readonly string? IngestionLabelValue; + + [OutputConstructor] + private DataAccessScopeAllowedDataAccessLabelIngestionLabel( + string ingestionLabelKey, + + string? ingestionLabelValue) + { + IngestionLabelKey = ingestionLabelKey; + IngestionLabelValue = ingestionLabelValue; + } + } +} diff --git a/sdk/dotnet/Chronicle/Outputs/DataAccessScopeDeniedDataAccessLabel.cs b/sdk/dotnet/Chronicle/Outputs/DataAccessScopeDeniedDataAccessLabel.cs new file mode 100644 index 0000000000..6447488eb2 --- /dev/null +++ b/sdk/dotnet/Chronicle/Outputs/DataAccessScopeDeniedDataAccessLabel.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.Chronicle.Outputs +{ + + [OutputType] + public sealed class DataAccessScopeDeniedDataAccessLabel + { + /// + /// The asset namespace configured in the forwarder + /// of the customer's events. + /// + public readonly string? AssetNamespace; + /// + /// The name of the data access label. + /// + public readonly string? DataAccessLabel; + /// + /// (Output) + /// Output only. The display name of the label. + /// Data access label and log types's name + /// will match the display name of the resource. + /// The asset namespace will match the namespace itself. + /// The ingestion key value pair will match the key of the tuple. + /// + public readonly string? DisplayName; + /// + /// Representation of an ingestion label type. + /// Structure is documented below. + /// + public readonly Outputs.DataAccessScopeDeniedDataAccessLabelIngestionLabel? IngestionLabel; + /// + /// The name of the log type. + /// + public readonly string? LogType; + + [OutputConstructor] + private DataAccessScopeDeniedDataAccessLabel( + string? assetNamespace, + + string? dataAccessLabel, + + string? displayName, + + Outputs.DataAccessScopeDeniedDataAccessLabelIngestionLabel? ingestionLabel, + + string? logType) + { + AssetNamespace = assetNamespace; + DataAccessLabel = dataAccessLabel; + DisplayName = displayName; + IngestionLabel = ingestionLabel; + LogType = logType; + } + } +} diff --git a/sdk/dotnet/Chronicle/Outputs/DataAccessScopeDeniedDataAccessLabelIngestionLabel.cs b/sdk/dotnet/Chronicle/Outputs/DataAccessScopeDeniedDataAccessLabelIngestionLabel.cs new file mode 100644 index 0000000000..a24208fa22 --- /dev/null +++ b/sdk/dotnet/Chronicle/Outputs/DataAccessScopeDeniedDataAccessLabelIngestionLabel.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 DataAccessScopeDeniedDataAccessLabelIngestionLabel + { + /// + /// Required. The key of the ingestion label. Always required. + /// + public readonly string IngestionLabelKey; + /// + /// Optional. The value of the ingestion label. Optional. An object + /// with no provided value and some key provided would match + /// against the given key and ANY value. + /// + public readonly string? IngestionLabelValue; + + [OutputConstructor] + private DataAccessScopeDeniedDataAccessLabelIngestionLabel( + string ingestionLabelKey, + + string? ingestionLabelValue) + { + IngestionLabelKey = ingestionLabelKey; + IngestionLabelValue = ingestionLabelValue; + } + } +} diff --git a/sdk/dotnet/Chronicle/Watchlist.cs b/sdk/dotnet/Chronicle/Watchlist.cs index 38b8683548..5e838534af 100644 --- a/sdk/dotnet/Chronicle/Watchlist.cs +++ b/sdk/dotnet/Chronicle/Watchlist.cs @@ -26,7 +26,36 @@ namespace Pulumi.Gcp.Chronicle /// { /// Location = "us", /// Instance = "00000000-0000-0000-0000-000000000000", - /// WatchlistId = "watchlist-name", + /// WatchlistId = "watchlist-id", + /// Description = "watchlist-description", + /// DisplayName = "watchlist_name", + /// MultiplyingFactor = 1, + /// EntityPopulationMechanism = new Gcp.Chronicle.Inputs.WatchlistEntityPopulationMechanismArgs + /// { + /// Manual = null, + /// }, + /// WatchlistUserPreferences = new Gcp.Chronicle.Inputs.WatchlistWatchlistUserPreferencesArgs + /// { + /// Pinned = true, + /// }, + /// }); + /// + /// }); + /// ``` + /// ### Chronicle Watchlist Without Id + /// + /// ```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", /// Description = "watchlist-description", /// DisplayName = "watchlist-name", /// MultiplyingFactor = 1, @@ -140,10 +169,8 @@ public partial class Watchlist : global::Pulumi.CustomResource 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-/. + /// 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!; @@ -243,13 +270,11 @@ public sealed class WatchlistArgs : global::Pulumi.ResourceArgs 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-/. + /// 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!; + [Input("watchlistId")] + public Input? WatchlistId { get; set; } /// /// A collection of user preferences for watchlist UI configuration. @@ -341,10 +366,8 @@ public InputList EntityCounts 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-/. + /// 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; } diff --git a/sdk/dotnet/CloudBuild/Inputs/TriggerBuildArtifactsObjectsArgs.cs b/sdk/dotnet/CloudBuild/Inputs/TriggerBuildArtifactsObjectsArgs.cs index 9509e86e10..e35e35b188 100644 --- a/sdk/dotnet/CloudBuild/Inputs/TriggerBuildArtifactsObjectsArgs.cs +++ b/sdk/dotnet/CloudBuild/Inputs/TriggerBuildArtifactsObjectsArgs.cs @@ -41,7 +41,7 @@ public InputList Paths /// Structure is documented below. /// /// - /// <a name="nested_timing"></a>The `timing` block contains: + /// <a name="nested_build_artifacts_objects_timing"></a>The `timing` block contains: /// public InputList Timings { diff --git a/sdk/dotnet/CloudBuild/Inputs/TriggerBuildArtifactsObjectsGetArgs.cs b/sdk/dotnet/CloudBuild/Inputs/TriggerBuildArtifactsObjectsGetArgs.cs index fa5cf71441..1b5b90c8da 100644 --- a/sdk/dotnet/CloudBuild/Inputs/TriggerBuildArtifactsObjectsGetArgs.cs +++ b/sdk/dotnet/CloudBuild/Inputs/TriggerBuildArtifactsObjectsGetArgs.cs @@ -41,7 +41,7 @@ public InputList Paths /// Structure is documented below. /// /// - /// <a name="nested_timing"></a>The `timing` block contains: + /// <a name="nested_build_artifacts_objects_timing"></a>The `timing` block contains: /// public InputList Timings { diff --git a/sdk/dotnet/CloudBuild/Outputs/TriggerBuildArtifactsObjects.cs b/sdk/dotnet/CloudBuild/Outputs/TriggerBuildArtifactsObjects.cs index 0bc23a5c64..c79d2512c5 100644 --- a/sdk/dotnet/CloudBuild/Outputs/TriggerBuildArtifactsObjects.cs +++ b/sdk/dotnet/CloudBuild/Outputs/TriggerBuildArtifactsObjects.cs @@ -29,7 +29,7 @@ public sealed class TriggerBuildArtifactsObjects /// Structure is documented below. /// /// - /// <a name="nested_timing"></a>The `timing` block contains: + /// <a name="nested_build_artifacts_objects_timing"></a>The `timing` block contains: /// public readonly ImmutableArray Timings; diff --git a/sdk/dotnet/CloudQuota/SQuotaAdjusterSettings.cs b/sdk/dotnet/CloudQuota/SQuotaAdjusterSettings.cs new file mode 100644 index 0000000000..f12cd72921 --- /dev/null +++ b/sdk/dotnet/CloudQuota/SQuotaAdjusterSettings.cs @@ -0,0 +1,184 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.CloudQuota +{ + /// + /// ## Example Usage + /// + /// ### Cloudquotas Quota Adjuster Settings Basic + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var adjusterSettings = new Gcp.CloudQuota.SQuotaAdjusterSettings("adjuster_settings", new() + /// { + /// Parent = "projects/104740170505", + /// Enablement = "ENABLED", + /// }); + /// + /// }); + /// ``` + /// + /// ## Import + /// + /// QuotaAdjusterSettings can be imported using any of these accepted formats: + /// + /// * `{{parent}}/locations/global/quotaAdjusterSettings` + /// + /// When using the `pulumi import` command, QuotaAdjusterSettings can be imported using one of the formats above. For example: + /// + /// ```sh + /// $ pulumi import gcp:cloudquota/sQuotaAdjusterSettings:SQuotaAdjusterSettings default {{parent}}/locations/global/quotaAdjusterSettings + /// ``` + /// + [GcpResourceType("gcp:cloudquota/sQuotaAdjusterSettings:SQuotaAdjusterSettings")] + public partial class SQuotaAdjusterSettings : global::Pulumi.CustomResource + { + /// + /// Fields to capture the hierarchy enablement. + /// The container (org/folder/project) that determines if the quota adjuster is set for this project/folder/org. We use the nearest-ancestor to determine the effective container. + /// The nearest ancestor (including this container) with `enabled` set (either true or false) will be returned. + /// + [Output("effectiveContainer")] + public Output EffectiveContainer { get; private set; } = null!; + + /// + /// Based on the effective container`s setting above, determines Whether this container has the quota adjuster enabled. + /// + [Output("effectiveEnablement")] + public Output EffectiveEnablement { get; private set; } = null!; + + /// + /// Required. The configured value of the enablement at the given resource. + /// Possible values are: `ENABLED`, `DISABLED`. + /// + [Output("enablement")] + public Output Enablement { get; private set; } = null!; + + /// + /// The parent of the quota preference. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]". + /// + /// + /// - - - + /// + [Output("parent")] + public Output Parent { get; private set; } = null!; + + + /// + /// Create a SQuotaAdjusterSettings 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 SQuotaAdjusterSettings(string name, SQuotaAdjusterSettingsArgs args, CustomResourceOptions? options = null) + : base("gcp:cloudquota/sQuotaAdjusterSettings:SQuotaAdjusterSettings", name, args ?? new SQuotaAdjusterSettingsArgs(), MakeResourceOptions(options, "")) + { + } + + private SQuotaAdjusterSettings(string name, Input id, SQuotaAdjusterSettingsState? state = null, CustomResourceOptions? options = null) + : base("gcp:cloudquota/sQuotaAdjusterSettings:SQuotaAdjusterSettings", 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 SQuotaAdjusterSettings 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 SQuotaAdjusterSettings Get(string name, Input id, SQuotaAdjusterSettingsState? state = null, CustomResourceOptions? options = null) + { + return new SQuotaAdjusterSettings(name, id, state, options); + } + } + + public sealed class SQuotaAdjusterSettingsArgs : global::Pulumi.ResourceArgs + { + /// + /// Required. The configured value of the enablement at the given resource. + /// Possible values are: `ENABLED`, `DISABLED`. + /// + [Input("enablement", required: true)] + public Input Enablement { get; set; } = null!; + + /// + /// The parent of the quota preference. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]". + /// + /// + /// - - - + /// + [Input("parent")] + public Input? Parent { get; set; } + + public SQuotaAdjusterSettingsArgs() + { + } + public static new SQuotaAdjusterSettingsArgs Empty => new SQuotaAdjusterSettingsArgs(); + } + + public sealed class SQuotaAdjusterSettingsState : global::Pulumi.ResourceArgs + { + /// + /// Fields to capture the hierarchy enablement. + /// The container (org/folder/project) that determines if the quota adjuster is set for this project/folder/org. We use the nearest-ancestor to determine the effective container. + /// The nearest ancestor (including this container) with `enabled` set (either true or false) will be returned. + /// + [Input("effectiveContainer")] + public Input? EffectiveContainer { get; set; } + + /// + /// Based on the effective container`s setting above, determines Whether this container has the quota adjuster enabled. + /// + [Input("effectiveEnablement")] + public Input? EffectiveEnablement { get; set; } + + /// + /// Required. The configured value of the enablement at the given resource. + /// Possible values are: `ENABLED`, `DISABLED`. + /// + [Input("enablement")] + public Input? Enablement { get; set; } + + /// + /// The parent of the quota preference. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]". + /// + /// + /// - - - + /// + [Input("parent")] + public Input? Parent { get; set; } + + public SQuotaAdjusterSettingsState() + { + } + public static new SQuotaAdjusterSettingsState Empty => new SQuotaAdjusterSettingsState(); + } +} diff --git a/sdk/dotnet/Compute/Inputs/BackendServiceSecuritySettingsArgs.cs b/sdk/dotnet/Compute/Inputs/BackendServiceSecuritySettingsArgs.cs index a45a180cd3..a81a6954ef 100644 --- a/sdk/dotnet/Compute/Inputs/BackendServiceSecuritySettingsArgs.cs +++ b/sdk/dotnet/Compute/Inputs/BackendServiceSecuritySettingsArgs.cs @@ -18,7 +18,7 @@ public sealed class BackendServiceSecuritySettingsArgs : global::Pulumi.Resource /// Structure is documented below. /// /// - /// <a name="nested_aws_v4_authentication"></a>The `aws_v4_authentication` block supports: + /// <a name="nested_security_settings_aws_v4_authentication"></a>The `aws_v4_authentication` block supports: /// [Input("awsV4Authentication")] public Input? AwsV4Authentication { get; set; } diff --git a/sdk/dotnet/Compute/Inputs/BackendServiceSecuritySettingsGetArgs.cs b/sdk/dotnet/Compute/Inputs/BackendServiceSecuritySettingsGetArgs.cs index 47efec14f7..647389a133 100644 --- a/sdk/dotnet/Compute/Inputs/BackendServiceSecuritySettingsGetArgs.cs +++ b/sdk/dotnet/Compute/Inputs/BackendServiceSecuritySettingsGetArgs.cs @@ -18,7 +18,7 @@ public sealed class BackendServiceSecuritySettingsGetArgs : global::Pulumi.Resou /// Structure is documented below. /// /// - /// <a name="nested_aws_v4_authentication"></a>The `aws_v4_authentication` block supports: + /// <a name="nested_security_settings_aws_v4_authentication"></a>The `aws_v4_authentication` block supports: /// [Input("awsV4Authentication")] public Input? AwsV4Authentication { get; set; } diff --git a/sdk/dotnet/Compute/Inputs/FirewallPolicyRuleMatchArgs.cs b/sdk/dotnet/Compute/Inputs/FirewallPolicyRuleMatchArgs.cs index ea82d8e273..39fa4f5b31 100644 --- a/sdk/dotnet/Compute/Inputs/FirewallPolicyRuleMatchArgs.cs +++ b/sdk/dotnet/Compute/Inputs/FirewallPolicyRuleMatchArgs.cs @@ -140,7 +140,7 @@ public InputList SrcRegionCodes /// Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. /// /// - /// <a name="nested_layer4_configs"></a>The `layer4_configs` block supports: + /// <a name="nested_match_layer4_configs"></a>The `layer4_configs` block supports: /// public InputList SrcThreatIntelligences { diff --git a/sdk/dotnet/Compute/Inputs/FirewallPolicyRuleMatchGetArgs.cs b/sdk/dotnet/Compute/Inputs/FirewallPolicyRuleMatchGetArgs.cs index accc5cb31a..5b11d009ad 100644 --- a/sdk/dotnet/Compute/Inputs/FirewallPolicyRuleMatchGetArgs.cs +++ b/sdk/dotnet/Compute/Inputs/FirewallPolicyRuleMatchGetArgs.cs @@ -140,7 +140,7 @@ public InputList SrcRegionCodes /// Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. /// /// - /// <a name="nested_layer4_configs"></a>The `layer4_configs` block supports: + /// <a name="nested_match_layer4_configs"></a>The `layer4_configs` block supports: /// public InputList SrcThreatIntelligences { diff --git a/sdk/dotnet/Compute/Inputs/FirewallPolicyWithRulesPredefinedRuleMatchArgs.cs b/sdk/dotnet/Compute/Inputs/FirewallPolicyWithRulesPredefinedRuleMatchArgs.cs index 906b956258..eb2d865b91 100644 --- a/sdk/dotnet/Compute/Inputs/FirewallPolicyWithRulesPredefinedRuleMatchArgs.cs +++ b/sdk/dotnet/Compute/Inputs/FirewallPolicyWithRulesPredefinedRuleMatchArgs.cs @@ -87,7 +87,7 @@ public InputList DestThreatIntelligences /// Structure is documented below. /// /// - /// <a name="nested_layer4_config"></a>The `layer4_config` block supports: + /// <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports: /// public InputList Layer4Configs { diff --git a/sdk/dotnet/Compute/Inputs/FirewallPolicyWithRulesPredefinedRuleMatchGetArgs.cs b/sdk/dotnet/Compute/Inputs/FirewallPolicyWithRulesPredefinedRuleMatchGetArgs.cs index 76c2a43a9c..85118a694f 100644 --- a/sdk/dotnet/Compute/Inputs/FirewallPolicyWithRulesPredefinedRuleMatchGetArgs.cs +++ b/sdk/dotnet/Compute/Inputs/FirewallPolicyWithRulesPredefinedRuleMatchGetArgs.cs @@ -87,7 +87,7 @@ public InputList DestThreatIntelligences /// Structure is documented below. /// /// - /// <a name="nested_layer4_config"></a>The `layer4_config` block supports: + /// <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports: /// public InputList Layer4Configs { diff --git a/sdk/dotnet/Compute/Inputs/FirewallPolicyWithRulesRuleMatchArgs.cs b/sdk/dotnet/Compute/Inputs/FirewallPolicyWithRulesRuleMatchArgs.cs index c74a5346ca..30c8f8d23a 100644 --- a/sdk/dotnet/Compute/Inputs/FirewallPolicyWithRulesRuleMatchArgs.cs +++ b/sdk/dotnet/Compute/Inputs/FirewallPolicyWithRulesRuleMatchArgs.cs @@ -87,7 +87,7 @@ public InputList DestThreatIntelligences /// Structure is documented below. /// /// - /// <a name="nested_layer4_config"></a>The `layer4_config` block supports: + /// <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports: /// public InputList Layer4Configs { diff --git a/sdk/dotnet/Compute/Inputs/FirewallPolicyWithRulesRuleMatchGetArgs.cs b/sdk/dotnet/Compute/Inputs/FirewallPolicyWithRulesRuleMatchGetArgs.cs index dddac32d6d..13fd0d4e14 100644 --- a/sdk/dotnet/Compute/Inputs/FirewallPolicyWithRulesRuleMatchGetArgs.cs +++ b/sdk/dotnet/Compute/Inputs/FirewallPolicyWithRulesRuleMatchGetArgs.cs @@ -87,7 +87,7 @@ public InputList DestThreatIntelligences /// Structure is documented below. /// /// - /// <a name="nested_layer4_config"></a>The `layer4_config` block supports: + /// <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports: /// public InputList Layer4Configs { diff --git a/sdk/dotnet/Compute/Inputs/NetworkFirewallPolicyRuleMatchArgs.cs b/sdk/dotnet/Compute/Inputs/NetworkFirewallPolicyRuleMatchArgs.cs index 10eb7261fb..ab082e4fde 100644 --- a/sdk/dotnet/Compute/Inputs/NetworkFirewallPolicyRuleMatchArgs.cs +++ b/sdk/dotnet/Compute/Inputs/NetworkFirewallPolicyRuleMatchArgs.cs @@ -153,7 +153,7 @@ public InputList SrcSecur /// Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. /// /// - /// <a name="nested_layer4_configs"></a>The `layer4_configs` block supports: + /// <a name="nested_match_layer4_configs"></a>The `layer4_configs` block supports: /// public InputList SrcThreatIntelligences { diff --git a/sdk/dotnet/Compute/Inputs/NetworkFirewallPolicyRuleMatchGetArgs.cs b/sdk/dotnet/Compute/Inputs/NetworkFirewallPolicyRuleMatchGetArgs.cs index bc7881f244..e16ccc35a7 100644 --- a/sdk/dotnet/Compute/Inputs/NetworkFirewallPolicyRuleMatchGetArgs.cs +++ b/sdk/dotnet/Compute/Inputs/NetworkFirewallPolicyRuleMatchGetArgs.cs @@ -153,7 +153,7 @@ public InputList SrcSe /// Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. /// /// - /// <a name="nested_layer4_configs"></a>The `layer4_configs` block supports: + /// <a name="nested_match_layer4_configs"></a>The `layer4_configs` block supports: /// public InputList SrcThreatIntelligences { diff --git a/sdk/dotnet/Compute/Inputs/NetworkFirewallPolicyWithRulesPredefinedRuleMatchArgs.cs b/sdk/dotnet/Compute/Inputs/NetworkFirewallPolicyWithRulesPredefinedRuleMatchArgs.cs index 68cec9913c..d8f60f66c7 100644 --- a/sdk/dotnet/Compute/Inputs/NetworkFirewallPolicyWithRulesPredefinedRuleMatchArgs.cs +++ b/sdk/dotnet/Compute/Inputs/NetworkFirewallPolicyWithRulesPredefinedRuleMatchArgs.cs @@ -158,7 +158,7 @@ public InputList SrcRegionCodes /// Structure is documented below. /// /// - /// <a name="nested_layer4_config"></a>The `layer4_config` block supports: + /// <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports: /// public InputList SrcSecureTags { diff --git a/sdk/dotnet/Compute/Inputs/NetworkFirewallPolicyWithRulesPredefinedRuleMatchGetArgs.cs b/sdk/dotnet/Compute/Inputs/NetworkFirewallPolicyWithRulesPredefinedRuleMatchGetArgs.cs index 879f3f884f..6032a02a01 100644 --- a/sdk/dotnet/Compute/Inputs/NetworkFirewallPolicyWithRulesPredefinedRuleMatchGetArgs.cs +++ b/sdk/dotnet/Compute/Inputs/NetworkFirewallPolicyWithRulesPredefinedRuleMatchGetArgs.cs @@ -158,7 +158,7 @@ public InputList SrcRegionCodes /// Structure is documented below. /// /// - /// <a name="nested_layer4_config"></a>The `layer4_config` block supports: + /// <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports: /// public InputList SrcSecureTags { diff --git a/sdk/dotnet/Compute/Inputs/NetworkFirewallPolicyWithRulesRuleMatchArgs.cs b/sdk/dotnet/Compute/Inputs/NetworkFirewallPolicyWithRulesRuleMatchArgs.cs index 77b186f88c..a98d8f193b 100644 --- a/sdk/dotnet/Compute/Inputs/NetworkFirewallPolicyWithRulesRuleMatchArgs.cs +++ b/sdk/dotnet/Compute/Inputs/NetworkFirewallPolicyWithRulesRuleMatchArgs.cs @@ -158,7 +158,7 @@ public InputList SrcRegionCodes /// Structure is documented below. /// /// - /// <a name="nested_layer4_config"></a>The `layer4_config` block supports: + /// <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports: /// public InputList SrcSecureTags { diff --git a/sdk/dotnet/Compute/Inputs/NetworkFirewallPolicyWithRulesRuleMatchGetArgs.cs b/sdk/dotnet/Compute/Inputs/NetworkFirewallPolicyWithRulesRuleMatchGetArgs.cs index 264d7f1489..eeb04d05b5 100644 --- a/sdk/dotnet/Compute/Inputs/NetworkFirewallPolicyWithRulesRuleMatchGetArgs.cs +++ b/sdk/dotnet/Compute/Inputs/NetworkFirewallPolicyWithRulesRuleMatchGetArgs.cs @@ -158,7 +158,7 @@ public InputList SrcRegionCodes /// Structure is documented below. /// /// - /// <a name="nested_layer4_config"></a>The `layer4_config` block supports: + /// <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports: /// public InputList SrcSecureTags { diff --git a/sdk/dotnet/Compute/Inputs/OrganizationSecurityPolicyRuleMatchConfigArgs.cs b/sdk/dotnet/Compute/Inputs/OrganizationSecurityPolicyRuleMatchConfigArgs.cs index e9767db6e0..0a9b377d68 100644 --- a/sdk/dotnet/Compute/Inputs/OrganizationSecurityPolicyRuleMatchConfigArgs.cs +++ b/sdk/dotnet/Compute/Inputs/OrganizationSecurityPolicyRuleMatchConfigArgs.cs @@ -33,7 +33,7 @@ public InputList DestIpRanges /// Structure is documented below. /// /// - /// <a name="nested_layer4_config"></a>The `layer4_config` block supports: + /// <a name="nested_match_config_layer4_config"></a>The `layer4_config` block supports: /// public InputList Layer4Configs { diff --git a/sdk/dotnet/Compute/Inputs/OrganizationSecurityPolicyRuleMatchConfigGetArgs.cs b/sdk/dotnet/Compute/Inputs/OrganizationSecurityPolicyRuleMatchConfigGetArgs.cs index f870829351..a368277c27 100644 --- a/sdk/dotnet/Compute/Inputs/OrganizationSecurityPolicyRuleMatchConfigGetArgs.cs +++ b/sdk/dotnet/Compute/Inputs/OrganizationSecurityPolicyRuleMatchConfigGetArgs.cs @@ -33,7 +33,7 @@ public InputList DestIpRanges /// Structure is documented below. /// /// - /// <a name="nested_layer4_config"></a>The `layer4_config` block supports: + /// <a name="nested_match_config_layer4_config"></a>The `layer4_config` block supports: /// public InputList Layer4Configs { diff --git a/sdk/dotnet/Compute/Inputs/RegionNetworkFirewallPolicyRuleMatchArgs.cs b/sdk/dotnet/Compute/Inputs/RegionNetworkFirewallPolicyRuleMatchArgs.cs index e8b8fcc7d0..2bd1807479 100644 --- a/sdk/dotnet/Compute/Inputs/RegionNetworkFirewallPolicyRuleMatchArgs.cs +++ b/sdk/dotnet/Compute/Inputs/RegionNetworkFirewallPolicyRuleMatchArgs.cs @@ -153,7 +153,7 @@ public InputList Sr /// Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. /// /// - /// <a name="nested_layer4_configs"></a>The `layer4_configs` block supports: + /// <a name="nested_match_layer4_configs"></a>The `layer4_configs` block supports: /// public InputList SrcThreatIntelligences { diff --git a/sdk/dotnet/Compute/Inputs/RegionNetworkFirewallPolicyRuleMatchGetArgs.cs b/sdk/dotnet/Compute/Inputs/RegionNetworkFirewallPolicyRuleMatchGetArgs.cs index fe37c5463d..25699b2893 100644 --- a/sdk/dotnet/Compute/Inputs/RegionNetworkFirewallPolicyRuleMatchGetArgs.cs +++ b/sdk/dotnet/Compute/Inputs/RegionNetworkFirewallPolicyRuleMatchGetArgs.cs @@ -153,7 +153,7 @@ public InputList /// Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. /// /// - /// <a name="nested_layer4_configs"></a>The `layer4_configs` block supports: + /// <a name="nested_match_layer4_configs"></a>The `layer4_configs` block supports: /// public InputList SrcThreatIntelligences { diff --git a/sdk/dotnet/Compute/Inputs/RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchArgs.cs b/sdk/dotnet/Compute/Inputs/RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchArgs.cs index c741bc7386..22f1fe193e 100644 --- a/sdk/dotnet/Compute/Inputs/RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchArgs.cs +++ b/sdk/dotnet/Compute/Inputs/RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchArgs.cs @@ -158,7 +158,7 @@ public InputList SrcRegionCodes /// Structure is documented below. /// /// - /// <a name="nested_layer4_config"></a>The `layer4_config` block supports: + /// <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports: /// public InputList SrcSecureTags { diff --git a/sdk/dotnet/Compute/Inputs/RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchGetArgs.cs b/sdk/dotnet/Compute/Inputs/RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchGetArgs.cs index fcbf7a3266..41db467b77 100644 --- a/sdk/dotnet/Compute/Inputs/RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchGetArgs.cs +++ b/sdk/dotnet/Compute/Inputs/RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchGetArgs.cs @@ -158,7 +158,7 @@ public InputList SrcRegionCodes /// Structure is documented below. /// /// - /// <a name="nested_layer4_config"></a>The `layer4_config` block supports: + /// <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports: /// public InputList SrcSecureTags { diff --git a/sdk/dotnet/Compute/Inputs/RegionNetworkFirewallPolicyWithRulesRuleMatchArgs.cs b/sdk/dotnet/Compute/Inputs/RegionNetworkFirewallPolicyWithRulesRuleMatchArgs.cs index c1d1c9edb9..71cf95cd8f 100644 --- a/sdk/dotnet/Compute/Inputs/RegionNetworkFirewallPolicyWithRulesRuleMatchArgs.cs +++ b/sdk/dotnet/Compute/Inputs/RegionNetworkFirewallPolicyWithRulesRuleMatchArgs.cs @@ -158,7 +158,7 @@ public InputList SrcRegionCodes /// Structure is documented below. /// /// - /// <a name="nested_layer4_config"></a>The `layer4_config` block supports: + /// <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports: /// public InputList SrcSecureTags { diff --git a/sdk/dotnet/Compute/Inputs/RegionNetworkFirewallPolicyWithRulesRuleMatchGetArgs.cs b/sdk/dotnet/Compute/Inputs/RegionNetworkFirewallPolicyWithRulesRuleMatchGetArgs.cs index c8975a3d6d..087121e664 100644 --- a/sdk/dotnet/Compute/Inputs/RegionNetworkFirewallPolicyWithRulesRuleMatchGetArgs.cs +++ b/sdk/dotnet/Compute/Inputs/RegionNetworkFirewallPolicyWithRulesRuleMatchGetArgs.cs @@ -158,7 +158,7 @@ public InputList SrcRegionCodes /// Structure is documented below. /// /// - /// <a name="nested_layer4_config"></a>The `layer4_config` block supports: + /// <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports: /// public InputList SrcSecureTags { diff --git a/sdk/dotnet/Compute/InstanceGroupManager.cs b/sdk/dotnet/Compute/InstanceGroupManager.cs index 075337511e..ccfe84aec5 100644 --- a/sdk/dotnet/Compute/InstanceGroupManager.cs +++ b/sdk/dotnet/Compute/InstanceGroupManager.cs @@ -126,7 +126,7 @@ namespace Pulumi.Gcp.Compute /// }); /// ``` /// - /// ### With Standby Policy (`Google-Beta` Provider) + /// ### With Standby Policy (`Google` Provider) /// ```csharp /// using System.Collections.Generic; /// using System.Linq; @@ -309,7 +309,7 @@ public partial class InstanceGroupManager : global::Pulumi.CustomResource public Output SelfLink { get; private set; } = null!; /// - /// The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + /// The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). /// [Output("standbyPolicy")] public Output StandbyPolicy { get; private set; } = null!; @@ -539,7 +539,7 @@ public InputList NamedPorts public Input? Project { get; set; } /// - /// The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + /// The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). /// [Input("standbyPolicy")] public Input? StandbyPolicy { get; set; } @@ -788,7 +788,7 @@ public InputList NamedPorts public Input? SelfLink { get; set; } /// - /// The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + /// The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). /// [Input("standbyPolicy")] public Input? StandbyPolicy { get; set; } diff --git a/sdk/dotnet/Compute/Outputs/BackendServiceSecuritySettings.cs b/sdk/dotnet/Compute/Outputs/BackendServiceSecuritySettings.cs index ba36c689c3..3e042ae8c3 100644 --- a/sdk/dotnet/Compute/Outputs/BackendServiceSecuritySettings.cs +++ b/sdk/dotnet/Compute/Outputs/BackendServiceSecuritySettings.cs @@ -19,7 +19,7 @@ public sealed class BackendServiceSecuritySettings /// Structure is documented below. /// /// - /// <a name="nested_aws_v4_authentication"></a>The `aws_v4_authentication` block supports: + /// <a name="nested_security_settings_aws_v4_authentication"></a>The `aws_v4_authentication` block supports: /// public readonly Outputs.BackendServiceSecuritySettingsAwsV4Authentication? AwsV4Authentication; /// diff --git a/sdk/dotnet/Compute/Outputs/FirewallPolicyRuleMatch.cs b/sdk/dotnet/Compute/Outputs/FirewallPolicyRuleMatch.cs index df75011418..fb08dc6f65 100644 --- a/sdk/dotnet/Compute/Outputs/FirewallPolicyRuleMatch.cs +++ b/sdk/dotnet/Compute/Outputs/FirewallPolicyRuleMatch.cs @@ -58,7 +58,7 @@ public sealed class FirewallPolicyRuleMatch /// Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. /// /// - /// <a name="nested_layer4_configs"></a>The `layer4_configs` block supports: + /// <a name="nested_match_layer4_configs"></a>The `layer4_configs` block supports: /// public readonly ImmutableArray SrcThreatIntelligences; diff --git a/sdk/dotnet/Compute/Outputs/FirewallPolicyWithRulesPredefinedRuleMatch.cs b/sdk/dotnet/Compute/Outputs/FirewallPolicyWithRulesPredefinedRuleMatch.cs index df76f06cea..bd955b56f2 100644 --- a/sdk/dotnet/Compute/Outputs/FirewallPolicyWithRulesPredefinedRuleMatch.cs +++ b/sdk/dotnet/Compute/Outputs/FirewallPolicyWithRulesPredefinedRuleMatch.cs @@ -45,7 +45,7 @@ public sealed class FirewallPolicyWithRulesPredefinedRuleMatch /// Structure is documented below. /// /// - /// <a name="nested_layer4_config"></a>The `layer4_config` block supports: + /// <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports: /// public readonly ImmutableArray Layer4Configs; /// diff --git a/sdk/dotnet/Compute/Outputs/FirewallPolicyWithRulesRuleMatch.cs b/sdk/dotnet/Compute/Outputs/FirewallPolicyWithRulesRuleMatch.cs index 72fc963707..09e53fd647 100644 --- a/sdk/dotnet/Compute/Outputs/FirewallPolicyWithRulesRuleMatch.cs +++ b/sdk/dotnet/Compute/Outputs/FirewallPolicyWithRulesRuleMatch.cs @@ -45,7 +45,7 @@ public sealed class FirewallPolicyWithRulesRuleMatch /// Structure is documented below. /// /// - /// <a name="nested_layer4_config"></a>The `layer4_config` block supports: + /// <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports: /// public readonly ImmutableArray Layer4Configs; /// diff --git a/sdk/dotnet/Compute/Outputs/NetworkFirewallPolicyRuleMatch.cs b/sdk/dotnet/Compute/Outputs/NetworkFirewallPolicyRuleMatch.cs index 03438caa19..32fb5956f6 100644 --- a/sdk/dotnet/Compute/Outputs/NetworkFirewallPolicyRuleMatch.cs +++ b/sdk/dotnet/Compute/Outputs/NetworkFirewallPolicyRuleMatch.cs @@ -63,7 +63,7 @@ public sealed class NetworkFirewallPolicyRuleMatch /// Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. /// /// - /// <a name="nested_layer4_configs"></a>The `layer4_configs` block supports: + /// <a name="nested_match_layer4_configs"></a>The `layer4_configs` block supports: /// public readonly ImmutableArray SrcThreatIntelligences; diff --git a/sdk/dotnet/Compute/Outputs/NetworkFirewallPolicyWithRulesPredefinedRuleMatch.cs b/sdk/dotnet/Compute/Outputs/NetworkFirewallPolicyWithRulesPredefinedRuleMatch.cs index 1ff77859f1..1d35defac7 100644 --- a/sdk/dotnet/Compute/Outputs/NetworkFirewallPolicyWithRulesPredefinedRuleMatch.cs +++ b/sdk/dotnet/Compute/Outputs/NetworkFirewallPolicyWithRulesPredefinedRuleMatch.cs @@ -76,7 +76,7 @@ public sealed class NetworkFirewallPolicyWithRulesPredefinedRuleMatch /// Structure is documented below. /// /// - /// <a name="nested_layer4_config"></a>The `layer4_config` block supports: + /// <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports: /// public readonly ImmutableArray SrcSecureTags; /// diff --git a/sdk/dotnet/Compute/Outputs/NetworkFirewallPolicyWithRulesRuleMatch.cs b/sdk/dotnet/Compute/Outputs/NetworkFirewallPolicyWithRulesRuleMatch.cs index 985dfac23e..b1cdd851d5 100644 --- a/sdk/dotnet/Compute/Outputs/NetworkFirewallPolicyWithRulesRuleMatch.cs +++ b/sdk/dotnet/Compute/Outputs/NetworkFirewallPolicyWithRulesRuleMatch.cs @@ -76,7 +76,7 @@ public sealed class NetworkFirewallPolicyWithRulesRuleMatch /// Structure is documented below. /// /// - /// <a name="nested_layer4_config"></a>The `layer4_config` block supports: + /// <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports: /// public readonly ImmutableArray SrcSecureTags; /// diff --git a/sdk/dotnet/Compute/Outputs/OrganizationSecurityPolicyRuleMatchConfig.cs b/sdk/dotnet/Compute/Outputs/OrganizationSecurityPolicyRuleMatchConfig.cs index 6d7d8dd95d..cf10868f70 100644 --- a/sdk/dotnet/Compute/Outputs/OrganizationSecurityPolicyRuleMatchConfig.cs +++ b/sdk/dotnet/Compute/Outputs/OrganizationSecurityPolicyRuleMatchConfig.cs @@ -23,7 +23,7 @@ public sealed class OrganizationSecurityPolicyRuleMatchConfig /// Structure is documented below. /// /// - /// <a name="nested_layer4_config"></a>The `layer4_config` block supports: + /// <a name="nested_match_config_layer4_config"></a>The `layer4_config` block supports: /// public readonly ImmutableArray Layer4Configs; /// diff --git a/sdk/dotnet/Compute/Outputs/RegionNetworkFirewallPolicyRuleMatch.cs b/sdk/dotnet/Compute/Outputs/RegionNetworkFirewallPolicyRuleMatch.cs index 8ee87b2e0e..1a21306f0f 100644 --- a/sdk/dotnet/Compute/Outputs/RegionNetworkFirewallPolicyRuleMatch.cs +++ b/sdk/dotnet/Compute/Outputs/RegionNetworkFirewallPolicyRuleMatch.cs @@ -63,7 +63,7 @@ public sealed class RegionNetworkFirewallPolicyRuleMatch /// Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. /// /// - /// <a name="nested_layer4_configs"></a>The `layer4_configs` block supports: + /// <a name="nested_match_layer4_configs"></a>The `layer4_configs` block supports: /// public readonly ImmutableArray SrcThreatIntelligences; diff --git a/sdk/dotnet/Compute/Outputs/RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatch.cs b/sdk/dotnet/Compute/Outputs/RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatch.cs index 0a925c5f67..801d39953e 100644 --- a/sdk/dotnet/Compute/Outputs/RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatch.cs +++ b/sdk/dotnet/Compute/Outputs/RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatch.cs @@ -76,7 +76,7 @@ public sealed class RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatch /// Structure is documented below. /// /// - /// <a name="nested_layer4_config"></a>The `layer4_config` block supports: + /// <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports: /// public readonly ImmutableArray SrcSecureTags; /// diff --git a/sdk/dotnet/Compute/Outputs/RegionNetworkFirewallPolicyWithRulesRuleMatch.cs b/sdk/dotnet/Compute/Outputs/RegionNetworkFirewallPolicyWithRulesRuleMatch.cs index ebf4f8c153..2629889f32 100644 --- a/sdk/dotnet/Compute/Outputs/RegionNetworkFirewallPolicyWithRulesRuleMatch.cs +++ b/sdk/dotnet/Compute/Outputs/RegionNetworkFirewallPolicyWithRulesRuleMatch.cs @@ -76,7 +76,7 @@ public sealed class RegionNetworkFirewallPolicyWithRulesRuleMatch /// Structure is documented below. /// /// - /// <a name="nested_layer4_config"></a>The `layer4_config` block supports: + /// <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports: /// public readonly ImmutableArray SrcSecureTags; /// diff --git a/sdk/dotnet/Compute/RegionInstanceGroupManager.cs b/sdk/dotnet/Compute/RegionInstanceGroupManager.cs index 0ada0c4c2c..32547eb0fe 100644 --- a/sdk/dotnet/Compute/RegionInstanceGroupManager.cs +++ b/sdk/dotnet/Compute/RegionInstanceGroupManager.cs @@ -134,7 +134,7 @@ namespace Pulumi.Gcp.Compute /// }); /// ``` /// - /// ### With Standby Policy (`Google-Beta` Provider) + /// ### With Standby Policy (`Google` Provider) /// ```csharp /// using System.Collections.Generic; /// using System.Linq; @@ -322,7 +322,7 @@ public partial class RegionInstanceGroupManager : global::Pulumi.CustomResource public Output SelfLink { get; private set; } = null!; /// - /// The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + /// The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). /// [Output("standbyPolicy")] public Output StandbyPolicy { get; private set; } = null!; @@ -575,7 +575,7 @@ public InputList NamedPorts public Input? Region { get; set; } /// - /// The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + /// The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). /// [Input("standbyPolicy")] public Input? StandbyPolicy { get; set; } @@ -844,7 +844,7 @@ public InputList NamedPorts public Input? SelfLink { get; set; } /// - /// The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + /// The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). /// [Input("standbyPolicy")] public Input? StandbyPolicy { get; set; } diff --git a/sdk/dotnet/DataCatalog/Inputs/EntryGcsFilesetSpecArgs.cs b/sdk/dotnet/DataCatalog/Inputs/EntryGcsFilesetSpecArgs.cs index 8e751ffe13..20aa1fe332 100644 --- a/sdk/dotnet/DataCatalog/Inputs/EntryGcsFilesetSpecArgs.cs +++ b/sdk/dotnet/DataCatalog/Inputs/EntryGcsFilesetSpecArgs.cs @@ -43,7 +43,7 @@ public InputList FilePatterns /// Structure is documented below. /// /// - /// <a name="nested_sample_gcs_file_specs"></a>The `sample_gcs_file_specs` block contains: + /// <a name="nested_gcs_fileset_spec_sample_gcs_file_specs"></a>The `sample_gcs_file_specs` block contains: /// public InputList SampleGcsFileSpecs { diff --git a/sdk/dotnet/DataCatalog/Inputs/EntryGcsFilesetSpecGetArgs.cs b/sdk/dotnet/DataCatalog/Inputs/EntryGcsFilesetSpecGetArgs.cs index 270ab6ae5e..157c02a499 100644 --- a/sdk/dotnet/DataCatalog/Inputs/EntryGcsFilesetSpecGetArgs.cs +++ b/sdk/dotnet/DataCatalog/Inputs/EntryGcsFilesetSpecGetArgs.cs @@ -43,7 +43,7 @@ public InputList FilePatterns /// Structure is documented below. /// /// - /// <a name="nested_sample_gcs_file_specs"></a>The `sample_gcs_file_specs` block contains: + /// <a name="nested_gcs_fileset_spec_sample_gcs_file_specs"></a>The `sample_gcs_file_specs` block contains: /// public InputList SampleGcsFileSpecs { diff --git a/sdk/dotnet/DataCatalog/Outputs/EntryGcsFilesetSpec.cs b/sdk/dotnet/DataCatalog/Outputs/EntryGcsFilesetSpec.cs index 8735e5403c..898d385873 100644 --- a/sdk/dotnet/DataCatalog/Outputs/EntryGcsFilesetSpec.cs +++ b/sdk/dotnet/DataCatalog/Outputs/EntryGcsFilesetSpec.cs @@ -33,7 +33,7 @@ public sealed class EntryGcsFilesetSpec /// Structure is documented below. /// /// - /// <a name="nested_sample_gcs_file_specs"></a>The `sample_gcs_file_specs` block contains: + /// <a name="nested_gcs_fileset_spec_sample_gcs_file_specs"></a>The `sample_gcs_file_specs` block contains: /// public readonly ImmutableArray SampleGcsFileSpecs; diff --git a/sdk/dotnet/DeveloperConnect/Connection.cs b/sdk/dotnet/DeveloperConnect/Connection.cs index ebbc0972cb..9eaf71ee58 100644 --- a/sdk/dotnet/DeveloperConnect/Connection.cs +++ b/sdk/dotnet/DeveloperConnect/Connection.cs @@ -10,6 +10,8 @@ namespace Pulumi.Gcp.DeveloperConnect { /// + /// A connection for GitHub, GitHub Enterprise, GitLab, and GitLab Enterprise. + /// /// ## Example Usage /// /// ### Developer Connect Connection New @@ -159,7 +161,280 @@ namespace Pulumi.Gcp.DeveloperConnect /// /// }); /// ``` + /// ### Developer Connect Connection Github + /// + /// ```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", + /// 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", + /// }, + /// }, + /// }); + /// + /// }); + /// ``` + /// ### Developer Connect Connection Github Doc + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var github_token_secret = new Gcp.SecretManager.Secret("github-token-secret", new() + /// { + /// SecretId = "github-token-secret", + /// Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs + /// { + /// Auto = null, + /// }, + /// }); + /// + /// var github_token_secret_version = new Gcp.SecretManager.SecretVersion("github-token-secret-version", new() + /// { + /// Secret = github_token_secret.Id, + /// SecretData = Std.File.Invoke(new() + /// { + /// Input = "my-github-token.txt", + /// }).Apply(invoke => invoke.Result), + /// }); + /// + /// var p4sa_secretAccessor = Gcp.Organizations.GetIAMPolicy.Invoke(new() + /// { + /// Bindings = new[] + /// { + /// new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs + /// { + /// Role = "roles/secretmanager.secretAccessor", + /// Members = new[] + /// { + /// "serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com", + /// }, + /// }, + /// }, + /// }); + /// + /// var policy = new Gcp.SecretManager.SecretIamPolicy("policy", new() + /// { + /// SecretId = github_token_secret.SecretId, + /// PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor => p4sa_secretAccessor.Apply(getIAMPolicyResult => getIAMPolicyResult.PolicyData)), + /// }); + /// + /// var my_connection = new Gcp.DeveloperConnect.Connection("my-connection", new() + /// { + /// Location = "us-central1", + /// ConnectionId = "my-connection", + /// GithubConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigArgs + /// { + /// GithubApp = "DEVELOPER_CONNECT", + /// AppInstallationId = "123123", + /// AuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs + /// { + /// OauthTokenSecretVersion = github_token_secret_version.Id, + /// }, + /// }, + /// }); + /// + /// }); + /// ``` + /// ### Developer Connect Connection Github Enterprise + /// + /// ```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", + /// GithubEnterpriseConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubEnterpriseConfigArgs + /// { + /// HostUri = "https://ghe.proctor-staging-test.com", + /// AppId = "864434", + /// PrivateKeySecretVersion = "projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-private-key-f522d2/versions/latest", + /// WebhookSecretSecretVersion = "projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-webhook-secret-3c806f/versions/latest", + /// AppInstallationId = "837537", + /// }, + /// }); /// + /// }); + /// ``` + /// ### Developer Connect Connection Github Enterprise Doc + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// using Std = Pulumi.Std; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var private_key_secret = new Gcp.SecretManager.Secret("private-key-secret", new() + /// { + /// SecretId = "ghe-pk-secret", + /// Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs + /// { + /// Auto = null, + /// }, + /// }); + /// + /// var private_key_secret_version = new Gcp.SecretManager.SecretVersion("private-key-secret-version", new() + /// { + /// Secret = private_key_secret.Id, + /// SecretData = Std.File.Invoke(new() + /// { + /// Input = "private-key.pem", + /// }).Apply(invoke => invoke.Result), + /// }); + /// + /// var webhook_secret_secret = new Gcp.SecretManager.Secret("webhook-secret-secret", new() + /// { + /// SecretId = "ghe-token-secret", + /// Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs + /// { + /// Auto = null, + /// }, + /// }); + /// + /// var webhook_secret_secret_version = new Gcp.SecretManager.SecretVersion("webhook-secret-secret-version", new() + /// { + /// Secret = webhook_secret_secret.Id, + /// SecretData = "<webhook-secret-data>", + /// }); + /// + /// var p4sa_secretAccessor = Gcp.Organizations.GetIAMPolicy.Invoke(new() + /// { + /// Bindings = new[] + /// { + /// new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs + /// { + /// Role = "roles/secretmanager.secretAccessor", + /// Members = new[] + /// { + /// "serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com", + /// }, + /// }, + /// }, + /// }); + /// + /// var policy_pk = new Gcp.SecretManager.SecretIamPolicy("policy-pk", new() + /// { + /// SecretId = private_key_secret.SecretId, + /// PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor => p4sa_secretAccessor.Apply(getIAMPolicyResult => getIAMPolicyResult.PolicyData)), + /// }); + /// + /// var policy_whs = new Gcp.SecretManager.SecretIamPolicy("policy-whs", new() + /// { + /// SecretId = webhook_secret_secret.SecretId, + /// PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor => p4sa_secretAccessor.Apply(getIAMPolicyResult => getIAMPolicyResult.PolicyData)), + /// }); + /// + /// var my_connection = new Gcp.DeveloperConnect.Connection("my-connection", new() + /// { + /// Location = "us-central1", + /// ConnectionId = "my-connection", + /// GithubEnterpriseConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubEnterpriseConfigArgs + /// { + /// HostUri = "https://ghe.com", + /// PrivateKeySecretVersion = private_key_secret_version.Id, + /// WebhookSecretSecretVersion = webhook_secret_secret_version.Id, + /// AppId = "100", + /// AppInstallationId = "123123", + /// }, + /// }, new CustomResourceOptions + /// { + /// DependsOn = + /// { + /// policy_pk, + /// policy_whs, + /// }, + /// }); + /// + /// }); + /// ``` + /// ### Developer Connect Connection Gitlab + /// + /// ```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", + /// GitlabConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGitlabConfigArgs + /// { + /// WebhookSecretSecretVersion = "projects/devconnect-terraform-creds/secrets/gitlab-webhook/versions/latest", + /// ReadAuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGitlabConfigReadAuthorizerCredentialArgs + /// { + /// UserTokenSecretVersion = "projects/devconnect-terraform-creds/secrets/gitlab-read-cred/versions/latest", + /// }, + /// AuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGitlabConfigAuthorizerCredentialArgs + /// { + /// UserTokenSecretVersion = "projects/devconnect-terraform-creds/secrets/gitlab-auth-cred/versions/latest", + /// }, + /// }, + /// }); + /// + /// }); + /// ``` + /// ### Developer Connect Connection Gitlab Enterprise + /// + /// ```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", + /// GitlabEnterpriseConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGitlabEnterpriseConfigArgs + /// { + /// HostUri = "https://gle-us-central1.gcb-test.com", + /// WebhookSecretSecretVersion = "projects/devconnect-terraform-creds/secrets/gitlab-enterprise-webhook/versions/latest", + /// ReadAuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs + /// { + /// UserTokenSecretVersion = "projects/devconnect-terraform-creds/secrets/gitlab-enterprise-read-cred/versions/latest", + /// }, + /// AuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs + /// { + /// UserTokenSecretVersion = "projects/devconnect-terraform-creds/secrets/gitlab-enterprise-auth-cred/versions/latest", + /// }, + /// }, + /// }); + /// + /// }); + /// ``` /// ## Import /// /// Connection can be imported using any of these accepted formats: @@ -189,7 +464,6 @@ public partial class Connection : global::Pulumi.CustomResource { /// /// Optional. Allows clients to store small amounts of arbitrary data. - /// /// **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. /// @@ -197,8 +471,9 @@ public partial class Connection : global::Pulumi.CustomResource public Output?> Annotations { get; private set; } = null!; /// - /// Required. Id of the requesting object. If auto-generating Id server-side, - /// remove this field and connection_id from the method_signature of Create RPC. + /// Required. Id of the requesting object + /// If auto-generating Id server-side, remove this field and + /// connection_id from the method_signature of Create RPC /// /// /// - - - @@ -212,6 +487,14 @@ public partial class Connection : global::Pulumi.CustomResource [Output("createTime")] public Output CreateTime { get; private set; } = null!; + /// + /// The crypto key configuration. This field is used by the Customer-managed + /// encryption keys (CMEK) feature. + /// Structure is documented below. + /// + [Output("cryptoKeyConfig")] + public Output CryptoKeyConfig { get; private set; } = null!; + /// /// Output only. [Output only] Delete timestamp /// @@ -219,7 +502,9 @@ public partial class Connection : global::Pulumi.CustomResource public Output DeleteTime { get; private set; } = null!; /// - /// Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled. + /// Optional. If disabled is set to true, functionality is disabled for this connection. + /// Repository based API methods and webhooks processing for repositories in + /// this connection will be disabled. /// [Output("disabled")] public Output Disabled { get; private set; } = null!; @@ -234,8 +519,8 @@ public partial class Connection : global::Pulumi.CustomResource public Output> EffectiveLabels { get; private set; } = null!; /// - /// Optional. 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 + /// Optional. 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. /// [Output("etag")] @@ -249,8 +534,30 @@ public partial class Connection : global::Pulumi.CustomResource public Output GithubConfig { get; private set; } = null!; /// - /// Describes stage and necessary actions to be taken by the user to complete the installation. - /// Used for GitHub and GitHub Enterprise based connections. + /// Configuration for connections to an instance of GitHub Enterprise. + /// Structure is documented below. + /// + [Output("githubEnterpriseConfig")] + public Output GithubEnterpriseConfig { get; private set; } = null!; + + /// + /// Configuration for connections to gitlab.com. + /// Structure is documented below. + /// + [Output("gitlabConfig")] + public Output GitlabConfig { get; private set; } = null!; + + /// + /// Configuration for connections to an instance of GitLab Enterprise. + /// Structure is documented below. + /// + [Output("gitlabEnterpriseConfig")] + public Output GitlabEnterpriseConfig { get; private set; } = null!; + + /// + /// Describes stage and necessary actions to be taken by the + /// user to complete the installation. Used for GitHub and GitHub Enterprise + /// based connections. /// Structure is documented below. /// [Output("installationStates")] @@ -258,7 +565,6 @@ public partial class Connection : global::Pulumi.CustomResource /// /// 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. /// @@ -266,9 +572,7 @@ public partial class Connection : global::Pulumi.CustomResource public Output?> Labels { get; private set; } = null!; /// - /// Resource ID segment making up resource `name`. It identifies the resource - /// within its parent collection as described in https://google.aip.dev/122. See documentation - /// for resource type `developerconnect.googleapis.com/GitRepositoryLink`. + /// Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. /// [Output("location")] public Output Location { get; private set; } = null!; @@ -295,8 +599,8 @@ public partial class Connection : global::Pulumi.CustomResource public Output> PulumiLabels { get; private set; } = null!; /// - /// Output only. Set to true when the connection is being set up or updated - /// in the background. + /// Output only. Set to true when the connection is being set up or updated in the + /// background. /// [Output("reconciling")] public Output Reconciling { get; private set; } = null!; @@ -369,7 +673,6 @@ public sealed class ConnectionArgs : global::Pulumi.ResourceArgs /// /// Optional. Allows clients to store small amounts of arbitrary data. - /// /// **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. /// @@ -380,8 +683,9 @@ public InputMap Annotations } /// - /// Required. Id of the requesting object. If auto-generating Id server-side, - /// remove this field and connection_id from the method_signature of Create RPC. + /// Required. Id of the requesting object + /// If auto-generating Id server-side, remove this field and + /// connection_id from the method_signature of Create RPC /// /// /// - - - @@ -390,14 +694,24 @@ public InputMap Annotations public Input ConnectionId { get; set; } = null!; /// - /// Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled. + /// The crypto key configuration. This field is used by the Customer-managed + /// encryption keys (CMEK) feature. + /// Structure is documented below. + /// + [Input("cryptoKeyConfig")] + public Input? CryptoKeyConfig { get; set; } + + /// + /// Optional. If disabled is set to true, functionality is disabled for this connection. + /// Repository based API methods and webhooks processing for repositories in + /// this connection will be disabled. /// [Input("disabled")] public Input? Disabled { get; set; } /// - /// Optional. 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 + /// Optional. 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. /// [Input("etag")] @@ -410,12 +724,32 @@ public InputMap Annotations [Input("githubConfig")] public Input? GithubConfig { get; set; } + /// + /// Configuration for connections to an instance of GitHub Enterprise. + /// Structure is documented below. + /// + [Input("githubEnterpriseConfig")] + public Input? GithubEnterpriseConfig { get; set; } + + /// + /// Configuration for connections to gitlab.com. + /// Structure is documented below. + /// + [Input("gitlabConfig")] + public Input? GitlabConfig { get; set; } + + /// + /// Configuration for connections to an instance of GitLab Enterprise. + /// Structure is documented below. + /// + [Input("gitlabEnterpriseConfig")] + public Input? GitlabEnterpriseConfig { 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. /// @@ -426,9 +760,7 @@ public InputMap Labels } /// - /// Resource ID segment making up resource `name`. It identifies the resource - /// within its parent collection as described in https://google.aip.dev/122. See documentation - /// for resource type `developerconnect.googleapis.com/GitRepositoryLink`. + /// Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. /// [Input("location", required: true)] public Input Location { get; set; } = null!; @@ -453,7 +785,6 @@ public sealed class ConnectionState : global::Pulumi.ResourceArgs /// /// Optional. Allows clients to store small amounts of arbitrary data. - /// /// **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. /// @@ -464,8 +795,9 @@ public InputMap Annotations } /// - /// Required. Id of the requesting object. If auto-generating Id server-side, - /// remove this field and connection_id from the method_signature of Create RPC. + /// Required. Id of the requesting object + /// If auto-generating Id server-side, remove this field and + /// connection_id from the method_signature of Create RPC /// /// /// - - - @@ -479,6 +811,14 @@ public InputMap Annotations [Input("createTime")] public Input? CreateTime { get; set; } + /// + /// The crypto key configuration. This field is used by the Customer-managed + /// encryption keys (CMEK) feature. + /// Structure is documented below. + /// + [Input("cryptoKeyConfig")] + public Input? CryptoKeyConfig { get; set; } + /// /// Output only. [Output only] Delete timestamp /// @@ -486,7 +826,9 @@ public InputMap Annotations public Input? DeleteTime { get; set; } /// - /// Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled. + /// Optional. If disabled is set to true, functionality is disabled for this connection. + /// Repository based API methods and webhooks processing for repositories in + /// this connection will be disabled. /// [Input("disabled")] public Input? Disabled { get; set; } @@ -516,8 +858,8 @@ public InputMap EffectiveLabels } /// - /// Optional. 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 + /// Optional. 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. /// [Input("etag")] @@ -530,12 +872,34 @@ public InputMap EffectiveLabels [Input("githubConfig")] public Input? GithubConfig { get; set; } + /// + /// Configuration for connections to an instance of GitHub Enterprise. + /// Structure is documented below. + /// + [Input("githubEnterpriseConfig")] + public Input? GithubEnterpriseConfig { get; set; } + + /// + /// Configuration for connections to gitlab.com. + /// Structure is documented below. + /// + [Input("gitlabConfig")] + public Input? GitlabConfig { get; set; } + + /// + /// Configuration for connections to an instance of GitLab Enterprise. + /// Structure is documented below. + /// + [Input("gitlabEnterpriseConfig")] + public Input? GitlabEnterpriseConfig { get; set; } + [Input("installationStates")] private InputList? _installationStates; /// - /// Describes stage and necessary actions to be taken by the user to complete the installation. - /// Used for GitHub and GitHub Enterprise based connections. + /// Describes stage and necessary actions to be taken by the + /// user to complete the installation. Used for GitHub and GitHub Enterprise + /// based connections. /// Structure is documented below. /// public InputList InstallationStates @@ -549,7 +913,6 @@ public InputList InstallationStates /// /// 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. /// @@ -560,9 +923,7 @@ public InputMap Labels } /// - /// Resource ID segment making up resource `name`. It identifies the resource - /// within its parent collection as described in https://google.aip.dev/122. See documentation - /// for resource type `developerconnect.googleapis.com/GitRepositoryLink`. + /// Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. /// [Input("location")] public Input? Location { get; set; } @@ -599,8 +960,8 @@ public InputMap PulumiLabels } /// - /// Output only. Set to true when the connection is being set up or updated - /// in the background. + /// Output only. Set to true when the connection is being set up or updated in the + /// background. /// [Input("reconciling")] public Input? Reconciling { get; set; } diff --git a/sdk/dotnet/DeveloperConnect/GitRepositoryLink.cs b/sdk/dotnet/DeveloperConnect/GitRepositoryLink.cs index 508b78038b..0f173b4f4b 100644 --- a/sdk/dotnet/DeveloperConnect/GitRepositoryLink.cs +++ b/sdk/dotnet/DeveloperConnect/GitRepositoryLink.cs @@ -10,6 +10,8 @@ namespace Pulumi.Gcp.DeveloperConnect { /// + /// A git repository link to a parent connection. + /// /// ## Example Usage /// /// ## Import diff --git a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionCryptoKeyConfigArgs.cs b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionCryptoKeyConfigArgs.cs new file mode 100644 index 0000000000..5704b41051 --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionCryptoKeyConfigArgs.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.DeveloperConnect.Inputs +{ + + public sealed class ConnectionCryptoKeyConfigArgs : global::Pulumi.ResourceArgs + { + /// + /// Required. The name of the key which is used to encrypt/decrypt customer data. For key + /// in Cloud KMS, the key should be in the format of + /// `projects/*/locations/*/keyRings/*/cryptoKeys/*`. + /// + [Input("keyReference", required: true)] + public Input KeyReference { get; set; } = null!; + + public ConnectionCryptoKeyConfigArgs() + { + } + public static new ConnectionCryptoKeyConfigArgs Empty => new ConnectionCryptoKeyConfigArgs(); + } +} diff --git a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionCryptoKeyConfigGetArgs.cs b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionCryptoKeyConfigGetArgs.cs new file mode 100644 index 0000000000..99a0c4b274 --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionCryptoKeyConfigGetArgs.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.DeveloperConnect.Inputs +{ + + public sealed class ConnectionCryptoKeyConfigGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Required. The name of the key which is used to encrypt/decrypt customer data. For key + /// in Cloud KMS, the key should be in the format of + /// `projects/*/locations/*/keyRings/*/cryptoKeys/*`. + /// + [Input("keyReference", required: true)] + public Input KeyReference { get; set; } = null!; + + public ConnectionCryptoKeyConfigGetArgs() + { + } + public static new ConnectionCryptoKeyConfigGetArgs Empty => new ConnectionCryptoKeyConfigGetArgs(); + } +} diff --git a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGithubConfigArgs.cs b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGithubConfigArgs.cs index 5d076afbaa..9090dff8c9 100644 --- a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGithubConfigArgs.cs +++ b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGithubConfigArgs.cs @@ -19,28 +19,28 @@ public sealed class ConnectionGithubConfigArgs : global::Pulumi.ResourceArgs public Input? AppInstallationId { get; set; } /// - /// Represents an OAuth token of the account that authorized the Connection,and - /// associated metadata. + /// Represents an OAuth token of the account that authorized the Connection, + /// and associated metadata. /// Structure is documented below. /// [Input("authorizerCredential")] public Input? AuthorizerCredential { get; set; } /// - /// Required. Immutable. The GitHub Application that was installed to - /// the GitHub user or organization. + /// Required. Immutable. The GitHub Application that was installed to the GitHub user or + /// organization. /// Possible values: /// GIT_HUB_APP_UNSPECIFIED /// DEVELOPER_CONNECT - /// FIREBASE" + /// FIREBASE /// [Input("githubApp", required: true)] public Input GithubApp { get; set; } = null!; /// /// (Output) - /// Output only. The URI to navigate to in order to manage the installation - /// associated with this GitHubConfig. + /// Output only. The URI to navigate to in order to manage the installation associated + /// with this GitHubConfig. /// [Input("installationUri")] public Input? InstallationUri { get; set; } diff --git a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGithubConfigAuthorizerCredentialArgs.cs b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGithubConfigAuthorizerCredentialArgs.cs index a069f5234b..82e3b7f1e1 100644 --- a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGithubConfigAuthorizerCredentialArgs.cs +++ b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGithubConfigAuthorizerCredentialArgs.cs @@ -13,9 +13,8 @@ namespace Pulumi.Gcp.DeveloperConnect.Inputs public sealed class ConnectionGithubConfigAuthorizerCredentialArgs : global::Pulumi.ResourceArgs { /// - /// Required. A SecretManager resource containing the OAuth token - /// that authorizes the connection. - /// Format: `projects/*/secrets/*/versions/*`. + /// Required. A SecretManager resource containing the OAuth token that authorizes + /// the connection. Format: `projects/*/secrets/*/versions/*`. /// [Input("oauthTokenSecretVersion", required: true)] public Input OauthTokenSecretVersion { get; set; } = null!; diff --git a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGithubConfigAuthorizerCredentialGetArgs.cs b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGithubConfigAuthorizerCredentialGetArgs.cs index 9bce8f22cf..5f2fe69d20 100644 --- a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGithubConfigAuthorizerCredentialGetArgs.cs +++ b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGithubConfigAuthorizerCredentialGetArgs.cs @@ -13,9 +13,8 @@ namespace Pulumi.Gcp.DeveloperConnect.Inputs public sealed class ConnectionGithubConfigAuthorizerCredentialGetArgs : global::Pulumi.ResourceArgs { /// - /// Required. A SecretManager resource containing the OAuth token - /// that authorizes the connection. - /// Format: `projects/*/secrets/*/versions/*`. + /// Required. A SecretManager resource containing the OAuth token that authorizes + /// the connection. Format: `projects/*/secrets/*/versions/*`. /// [Input("oauthTokenSecretVersion", required: true)] public Input OauthTokenSecretVersion { get; set; } = null!; diff --git a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGithubConfigGetArgs.cs b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGithubConfigGetArgs.cs index 94a4520970..ec36967e1b 100644 --- a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGithubConfigGetArgs.cs +++ b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGithubConfigGetArgs.cs @@ -19,28 +19,28 @@ public sealed class ConnectionGithubConfigGetArgs : global::Pulumi.ResourceArgs public Input? AppInstallationId { get; set; } /// - /// Represents an OAuth token of the account that authorized the Connection,and - /// associated metadata. + /// Represents an OAuth token of the account that authorized the Connection, + /// and associated metadata. /// Structure is documented below. /// [Input("authorizerCredential")] public Input? AuthorizerCredential { get; set; } /// - /// Required. Immutable. The GitHub Application that was installed to - /// the GitHub user or organization. + /// Required. Immutable. The GitHub Application that was installed to the GitHub user or + /// organization. /// Possible values: /// GIT_HUB_APP_UNSPECIFIED /// DEVELOPER_CONNECT - /// FIREBASE" + /// FIREBASE /// [Input("githubApp", required: true)] public Input GithubApp { get; set; } = null!; /// /// (Output) - /// Output only. The URI to navigate to in order to manage the installation - /// associated with this GitHubConfig. + /// Output only. The URI to navigate to in order to manage the installation associated + /// with this GitHubConfig. /// [Input("installationUri")] public Input? InstallationUri { get; set; } diff --git a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGithubEnterpriseConfigArgs.cs b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGithubEnterpriseConfigArgs.cs new file mode 100644 index 0000000000..fa51de25d4 --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGithubEnterpriseConfigArgs.cs @@ -0,0 +1,88 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.DeveloperConnect.Inputs +{ + + public sealed class ConnectionGithubEnterpriseConfigArgs : global::Pulumi.ResourceArgs + { + /// + /// Optional. ID of the GitHub App created from the manifest. + /// + [Input("appId")] + public Input? AppId { get; set; } + + /// + /// Optional. ID of the installation of the GitHub App. + /// + [Input("appInstallationId")] + public Input? AppInstallationId { get; set; } + + /// + /// (Output) + /// Output only. The URL-friendly name of the GitHub App. + /// + [Input("appSlug")] + public Input? AppSlug { get; set; } + + /// + /// Required. The URI of the GitHub Enterprise host this connection is for. + /// + [Input("hostUri", required: true)] + public Input HostUri { get; set; } = null!; + + /// + /// (Output) + /// Output only. The URI to navigate to in order to manage the installation associated + /// with this GitHubEnterpriseConfig. + /// + [Input("installationUri")] + public Input? InstallationUri { get; set; } + + /// + /// Optional. SecretManager resource containing the private key of the GitHub App, + /// formatted as `projects/*/secrets/*/versions/*`. + /// + [Input("privateKeySecretVersion")] + public Input? PrivateKeySecretVersion { get; set; } + + /// + /// (Output) + /// Output only. GitHub Enterprise version installed at the host_uri. + /// + [Input("serverVersion")] + public Input? ServerVersion { get; set; } + + /// + /// ServiceDirectoryConfig represents Service Directory configuration for a + /// connection. + /// Structure is documented below. + /// + [Input("serviceDirectoryConfig")] + public Input? ServiceDirectoryConfig { get; set; } + + /// + /// Optional. SSL certificate to use for requests to GitHub Enterprise. + /// + [Input("sslCaCertificate")] + public Input? SslCaCertificate { get; set; } + + /// + /// Optional. SecretManager resource containing the webhook secret of the GitHub App, + /// formatted as `projects/*/secrets/*/versions/*`. + /// + [Input("webhookSecretSecretVersion")] + public Input? WebhookSecretSecretVersion { get; set; } + + public ConnectionGithubEnterpriseConfigArgs() + { + } + public static new ConnectionGithubEnterpriseConfigArgs Empty => new ConnectionGithubEnterpriseConfigArgs(); + } +} diff --git a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGithubEnterpriseConfigGetArgs.cs b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGithubEnterpriseConfigGetArgs.cs new file mode 100644 index 0000000000..4ba1709489 --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGithubEnterpriseConfigGetArgs.cs @@ -0,0 +1,88 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.DeveloperConnect.Inputs +{ + + public sealed class ConnectionGithubEnterpriseConfigGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Optional. ID of the GitHub App created from the manifest. + /// + [Input("appId")] + public Input? AppId { get; set; } + + /// + /// Optional. ID of the installation of the GitHub App. + /// + [Input("appInstallationId")] + public Input? AppInstallationId { get; set; } + + /// + /// (Output) + /// Output only. The URL-friendly name of the GitHub App. + /// + [Input("appSlug")] + public Input? AppSlug { get; set; } + + /// + /// Required. The URI of the GitHub Enterprise host this connection is for. + /// + [Input("hostUri", required: true)] + public Input HostUri { get; set; } = null!; + + /// + /// (Output) + /// Output only. The URI to navigate to in order to manage the installation associated + /// with this GitHubEnterpriseConfig. + /// + [Input("installationUri")] + public Input? InstallationUri { get; set; } + + /// + /// Optional. SecretManager resource containing the private key of the GitHub App, + /// formatted as `projects/*/secrets/*/versions/*`. + /// + [Input("privateKeySecretVersion")] + public Input? PrivateKeySecretVersion { get; set; } + + /// + /// (Output) + /// Output only. GitHub Enterprise version installed at the host_uri. + /// + [Input("serverVersion")] + public Input? ServerVersion { get; set; } + + /// + /// ServiceDirectoryConfig represents Service Directory configuration for a + /// connection. + /// Structure is documented below. + /// + [Input("serviceDirectoryConfig")] + public Input? ServiceDirectoryConfig { get; set; } + + /// + /// Optional. SSL certificate to use for requests to GitHub Enterprise. + /// + [Input("sslCaCertificate")] + public Input? SslCaCertificate { get; set; } + + /// + /// Optional. SecretManager resource containing the webhook secret of the GitHub App, + /// formatted as `projects/*/secrets/*/versions/*`. + /// + [Input("webhookSecretSecretVersion")] + public Input? WebhookSecretSecretVersion { get; set; } + + public ConnectionGithubEnterpriseConfigGetArgs() + { + } + public static new ConnectionGithubEnterpriseConfigGetArgs Empty => new ConnectionGithubEnterpriseConfigGetArgs(); + } +} diff --git a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs.cs b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs.cs new file mode 100644 index 0000000000..c7fadaf261 --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs.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.DeveloperConnect.Inputs +{ + + public sealed class ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs : global::Pulumi.ResourceArgs + { + /// + /// Required. The Service Directory service name. + /// Format: + /// projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + /// + [Input("service", required: true)] + public Input Service { get; set; } = null!; + + public ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs() + { + } + public static new ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs Empty => new ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs(); + } +} diff --git a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGithubEnterpriseConfigServiceDirectoryConfigGetArgs.cs b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGithubEnterpriseConfigServiceDirectoryConfigGetArgs.cs new file mode 100644 index 0000000000..da2cfcb6b9 --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGithubEnterpriseConfigServiceDirectoryConfigGetArgs.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.DeveloperConnect.Inputs +{ + + public sealed class ConnectionGithubEnterpriseConfigServiceDirectoryConfigGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Required. The Service Directory service name. + /// Format: + /// projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + /// + [Input("service", required: true)] + public Input Service { get; set; } = null!; + + public ConnectionGithubEnterpriseConfigServiceDirectoryConfigGetArgs() + { + } + public static new ConnectionGithubEnterpriseConfigServiceDirectoryConfigGetArgs Empty => new ConnectionGithubEnterpriseConfigServiceDirectoryConfigGetArgs(); + } +} diff --git a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabConfigArgs.cs b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabConfigArgs.cs new file mode 100644 index 0000000000..3e13ca6cf4 --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabConfigArgs.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.DeveloperConnect.Inputs +{ + + public sealed class ConnectionGitlabConfigArgs : global::Pulumi.ResourceArgs + { + /// + /// Represents a personal access token that authorized the Connection, + /// and associated metadata. + /// Structure is documented below. + /// + [Input("authorizerCredential", required: true)] + public Input AuthorizerCredential { get; set; } = null!; + + /// + /// Represents a personal access token that authorized the Connection, + /// and associated metadata. + /// Structure is documented below. + /// + [Input("readAuthorizerCredential", required: true)] + public Input ReadAuthorizerCredential { get; set; } = null!; + + /// + /// Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + /// formatted as `projects/*/secrets/*/versions/*`. This is used to validate + /// webhooks. + /// + [Input("webhookSecretSecretVersion", required: true)] + public Input WebhookSecretSecretVersion { get; set; } = null!; + + public ConnectionGitlabConfigArgs() + { + } + public static new ConnectionGitlabConfigArgs Empty => new ConnectionGitlabConfigArgs(); + } +} diff --git a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabConfigAuthorizerCredentialArgs.cs b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabConfigAuthorizerCredentialArgs.cs new file mode 100644 index 0000000000..e6ed099ed6 --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabConfigAuthorizerCredentialArgs.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.DeveloperConnect.Inputs +{ + + public sealed class ConnectionGitlabConfigAuthorizerCredentialArgs : global::Pulumi.ResourceArgs + { + /// + /// Required. A SecretManager resource containing the user token that authorizes + /// the Developer Connect connection. Format: + /// `projects/*/secrets/*/versions/*`. + /// + [Input("userTokenSecretVersion", required: true)] + public Input UserTokenSecretVersion { get; set; } = null!; + + /// + /// (Output) + /// Output only. The username associated with this token. + /// + [Input("username")] + public Input? Username { get; set; } + + public ConnectionGitlabConfigAuthorizerCredentialArgs() + { + } + public static new ConnectionGitlabConfigAuthorizerCredentialArgs Empty => new ConnectionGitlabConfigAuthorizerCredentialArgs(); + } +} diff --git a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabConfigAuthorizerCredentialGetArgs.cs b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabConfigAuthorizerCredentialGetArgs.cs new file mode 100644 index 0000000000..f2fc5f771c --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabConfigAuthorizerCredentialGetArgs.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.DeveloperConnect.Inputs +{ + + public sealed class ConnectionGitlabConfigAuthorizerCredentialGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Required. A SecretManager resource containing the user token that authorizes + /// the Developer Connect connection. Format: + /// `projects/*/secrets/*/versions/*`. + /// + [Input("userTokenSecretVersion", required: true)] + public Input UserTokenSecretVersion { get; set; } = null!; + + /// + /// (Output) + /// Output only. The username associated with this token. + /// + [Input("username")] + public Input? Username { get; set; } + + public ConnectionGitlabConfigAuthorizerCredentialGetArgs() + { + } + public static new ConnectionGitlabConfigAuthorizerCredentialGetArgs Empty => new ConnectionGitlabConfigAuthorizerCredentialGetArgs(); + } +} diff --git a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabConfigGetArgs.cs b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabConfigGetArgs.cs new file mode 100644 index 0000000000..1c98999d5c --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabConfigGetArgs.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.DeveloperConnect.Inputs +{ + + public sealed class ConnectionGitlabConfigGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Represents a personal access token that authorized the Connection, + /// and associated metadata. + /// Structure is documented below. + /// + [Input("authorizerCredential", required: true)] + public Input AuthorizerCredential { get; set; } = null!; + + /// + /// Represents a personal access token that authorized the Connection, + /// and associated metadata. + /// Structure is documented below. + /// + [Input("readAuthorizerCredential", required: true)] + public Input ReadAuthorizerCredential { get; set; } = null!; + + /// + /// Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + /// formatted as `projects/*/secrets/*/versions/*`. This is used to validate + /// webhooks. + /// + [Input("webhookSecretSecretVersion", required: true)] + public Input WebhookSecretSecretVersion { get; set; } = null!; + + public ConnectionGitlabConfigGetArgs() + { + } + public static new ConnectionGitlabConfigGetArgs Empty => new ConnectionGitlabConfigGetArgs(); + } +} diff --git a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabConfigReadAuthorizerCredentialArgs.cs b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabConfigReadAuthorizerCredentialArgs.cs new file mode 100644 index 0000000000..8790052a76 --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabConfigReadAuthorizerCredentialArgs.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.DeveloperConnect.Inputs +{ + + public sealed class ConnectionGitlabConfigReadAuthorizerCredentialArgs : global::Pulumi.ResourceArgs + { + /// + /// Required. A SecretManager resource containing the user token that authorizes + /// the Developer Connect connection. Format: + /// `projects/*/secrets/*/versions/*`. + /// + [Input("userTokenSecretVersion", required: true)] + public Input UserTokenSecretVersion { get; set; } = null!; + + /// + /// (Output) + /// Output only. The username associated with this token. + /// + [Input("username")] + public Input? Username { get; set; } + + public ConnectionGitlabConfigReadAuthorizerCredentialArgs() + { + } + public static new ConnectionGitlabConfigReadAuthorizerCredentialArgs Empty => new ConnectionGitlabConfigReadAuthorizerCredentialArgs(); + } +} diff --git a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabConfigReadAuthorizerCredentialGetArgs.cs b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabConfigReadAuthorizerCredentialGetArgs.cs new file mode 100644 index 0000000000..1241f16c0e --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabConfigReadAuthorizerCredentialGetArgs.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.DeveloperConnect.Inputs +{ + + public sealed class ConnectionGitlabConfigReadAuthorizerCredentialGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Required. A SecretManager resource containing the user token that authorizes + /// the Developer Connect connection. Format: + /// `projects/*/secrets/*/versions/*`. + /// + [Input("userTokenSecretVersion", required: true)] + public Input UserTokenSecretVersion { get; set; } = null!; + + /// + /// (Output) + /// Output only. The username associated with this token. + /// + [Input("username")] + public Input? Username { get; set; } + + public ConnectionGitlabConfigReadAuthorizerCredentialGetArgs() + { + } + public static new ConnectionGitlabConfigReadAuthorizerCredentialGetArgs Empty => new ConnectionGitlabConfigReadAuthorizerCredentialGetArgs(); + } +} diff --git a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabEnterpriseConfigArgs.cs b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabEnterpriseConfigArgs.cs new file mode 100644 index 0000000000..4525155d1c --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabEnterpriseConfigArgs.cs @@ -0,0 +1,72 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.DeveloperConnect.Inputs +{ + + public sealed class ConnectionGitlabEnterpriseConfigArgs : global::Pulumi.ResourceArgs + { + /// + /// Represents a personal access token that authorized the Connection, + /// and associated metadata. + /// Structure is documented below. + /// + [Input("authorizerCredential", required: true)] + public Input AuthorizerCredential { get; set; } = null!; + + /// + /// Required. The URI of the GitLab Enterprise host this connection is for. + /// + [Input("hostUri", required: true)] + public Input HostUri { get; set; } = null!; + + /// + /// Represents a personal access token that authorized the Connection, + /// and associated metadata. + /// Structure is documented below. + /// + [Input("readAuthorizerCredential", required: true)] + public Input ReadAuthorizerCredential { get; set; } = null!; + + /// + /// (Output) + /// Output only. Version of the GitLab Enterprise server running on the `host_uri`. + /// + [Input("serverVersion")] + public Input? ServerVersion { get; set; } + + /// + /// ServiceDirectoryConfig represents Service Directory configuration for a + /// connection. + /// Structure is documented below. + /// + [Input("serviceDirectoryConfig")] + public Input? ServiceDirectoryConfig { get; set; } + + /// + /// Optional. SSL Certificate Authority certificate to use for requests to GitLab + /// Enterprise instance. + /// + [Input("sslCaCertificate")] + public Input? SslCaCertificate { get; set; } + + /// + /// Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + /// formatted as `projects/*/secrets/*/versions/*`. This is used to validate + /// webhooks. + /// + [Input("webhookSecretSecretVersion", required: true)] + public Input WebhookSecretSecretVersion { get; set; } = null!; + + public ConnectionGitlabEnterpriseConfigArgs() + { + } + public static new ConnectionGitlabEnterpriseConfigArgs Empty => new ConnectionGitlabEnterpriseConfigArgs(); + } +} diff --git a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs.cs b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs.cs new file mode 100644 index 0000000000..e21e91af7c --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs.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.DeveloperConnect.Inputs +{ + + public sealed class ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs : global::Pulumi.ResourceArgs + { + /// + /// Required. A SecretManager resource containing the user token that authorizes + /// the Developer Connect connection. Format: + /// `projects/*/secrets/*/versions/*`. + /// + [Input("userTokenSecretVersion", required: true)] + public Input UserTokenSecretVersion { get; set; } = null!; + + /// + /// (Output) + /// Output only. The username associated with this token. + /// + [Input("username")] + public Input? Username { get; set; } + + public ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs() + { + } + public static new ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs Empty => new ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs(); + } +} diff --git a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabEnterpriseConfigAuthorizerCredentialGetArgs.cs b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabEnterpriseConfigAuthorizerCredentialGetArgs.cs new file mode 100644 index 0000000000..3fb96c33bf --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabEnterpriseConfigAuthorizerCredentialGetArgs.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.DeveloperConnect.Inputs +{ + + public sealed class ConnectionGitlabEnterpriseConfigAuthorizerCredentialGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Required. A SecretManager resource containing the user token that authorizes + /// the Developer Connect connection. Format: + /// `projects/*/secrets/*/versions/*`. + /// + [Input("userTokenSecretVersion", required: true)] + public Input UserTokenSecretVersion { get; set; } = null!; + + /// + /// (Output) + /// Output only. The username associated with this token. + /// + [Input("username")] + public Input? Username { get; set; } + + public ConnectionGitlabEnterpriseConfigAuthorizerCredentialGetArgs() + { + } + public static new ConnectionGitlabEnterpriseConfigAuthorizerCredentialGetArgs Empty => new ConnectionGitlabEnterpriseConfigAuthorizerCredentialGetArgs(); + } +} diff --git a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabEnterpriseConfigGetArgs.cs b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabEnterpriseConfigGetArgs.cs new file mode 100644 index 0000000000..bf86ac8bc2 --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabEnterpriseConfigGetArgs.cs @@ -0,0 +1,72 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.DeveloperConnect.Inputs +{ + + public sealed class ConnectionGitlabEnterpriseConfigGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Represents a personal access token that authorized the Connection, + /// and associated metadata. + /// Structure is documented below. + /// + [Input("authorizerCredential", required: true)] + public Input AuthorizerCredential { get; set; } = null!; + + /// + /// Required. The URI of the GitLab Enterprise host this connection is for. + /// + [Input("hostUri", required: true)] + public Input HostUri { get; set; } = null!; + + /// + /// Represents a personal access token that authorized the Connection, + /// and associated metadata. + /// Structure is documented below. + /// + [Input("readAuthorizerCredential", required: true)] + public Input ReadAuthorizerCredential { get; set; } = null!; + + /// + /// (Output) + /// Output only. Version of the GitLab Enterprise server running on the `host_uri`. + /// + [Input("serverVersion")] + public Input? ServerVersion { get; set; } + + /// + /// ServiceDirectoryConfig represents Service Directory configuration for a + /// connection. + /// Structure is documented below. + /// + [Input("serviceDirectoryConfig")] + public Input? ServiceDirectoryConfig { get; set; } + + /// + /// Optional. SSL Certificate Authority certificate to use for requests to GitLab + /// Enterprise instance. + /// + [Input("sslCaCertificate")] + public Input? SslCaCertificate { get; set; } + + /// + /// Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + /// formatted as `projects/*/secrets/*/versions/*`. This is used to validate + /// webhooks. + /// + [Input("webhookSecretSecretVersion", required: true)] + public Input WebhookSecretSecretVersion { get; set; } = null!; + + public ConnectionGitlabEnterpriseConfigGetArgs() + { + } + public static new ConnectionGitlabEnterpriseConfigGetArgs Empty => new ConnectionGitlabEnterpriseConfigGetArgs(); + } +} diff --git a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs.cs b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs.cs new file mode 100644 index 0000000000..82399df266 --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs.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.DeveloperConnect.Inputs +{ + + public sealed class ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs : global::Pulumi.ResourceArgs + { + /// + /// Required. A SecretManager resource containing the user token that authorizes + /// the Developer Connect connection. Format: + /// `projects/*/secrets/*/versions/*`. + /// + [Input("userTokenSecretVersion", required: true)] + public Input UserTokenSecretVersion { get; set; } = null!; + + /// + /// (Output) + /// Output only. The username associated with this token. + /// + [Input("username")] + public Input? Username { get; set; } + + public ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs() + { + } + public static new ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs Empty => new ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs(); + } +} diff --git a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialGetArgs.cs b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialGetArgs.cs new file mode 100644 index 0000000000..bd768e1541 --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialGetArgs.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.DeveloperConnect.Inputs +{ + + public sealed class ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Required. A SecretManager resource containing the user token that authorizes + /// the Developer Connect connection. Format: + /// `projects/*/secrets/*/versions/*`. + /// + [Input("userTokenSecretVersion", required: true)] + public Input UserTokenSecretVersion { get; set; } = null!; + + /// + /// (Output) + /// Output only. The username associated with this token. + /// + [Input("username")] + public Input? Username { get; set; } + + public ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialGetArgs() + { + } + public static new ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialGetArgs Empty => new ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialGetArgs(); + } +} diff --git a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs.cs b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs.cs new file mode 100644 index 0000000000..29cd387d18 --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs.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.DeveloperConnect.Inputs +{ + + public sealed class ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs : global::Pulumi.ResourceArgs + { + /// + /// Required. The Service Directory service name. + /// Format: + /// projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + /// + [Input("service", required: true)] + public Input Service { get; set; } = null!; + + public ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs() + { + } + public static new ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs Empty => new ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs(); + } +} diff --git a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabEnterpriseConfigServiceDirectoryConfigGetArgs.cs b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabEnterpriseConfigServiceDirectoryConfigGetArgs.cs new file mode 100644 index 0000000000..98d49a5f68 --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionGitlabEnterpriseConfigServiceDirectoryConfigGetArgs.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.DeveloperConnect.Inputs +{ + + public sealed class ConnectionGitlabEnterpriseConfigServiceDirectoryConfigGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Required. The Service Directory service name. + /// Format: + /// projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + /// + [Input("service", required: true)] + public Input Service { get; set; } = null!; + + public ConnectionGitlabEnterpriseConfigServiceDirectoryConfigGetArgs() + { + } + public static new ConnectionGitlabEnterpriseConfigServiceDirectoryConfigGetArgs Empty => new ConnectionGitlabEnterpriseConfigServiceDirectoryConfigGetArgs(); + } +} diff --git a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionInstallationStateArgs.cs b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionInstallationStateArgs.cs index cf33bb5a9c..9de04d3a86 100644 --- a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionInstallationStateArgs.cs +++ b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionInstallationStateArgs.cs @@ -13,15 +13,15 @@ namespace Pulumi.Gcp.DeveloperConnect.Inputs public sealed class ConnectionInstallationStateArgs : global::Pulumi.ResourceArgs { /// - /// Output only. Link to follow for next action. Empty string if the - /// installation is already complete. + /// Output only. Link to follow for next action. Empty string if the installation is already + /// complete. /// [Input("actionUri")] public Input? ActionUri { get; set; } /// - /// Output only. Message of what the user should do next to continue - /// the installation.Empty string if the installation is already complete. + /// Output only. Message of what the user should do next to continue the installation. + /// Empty string if the installation is already complete. /// [Input("message")] public Input? Message { get; set; } diff --git a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionInstallationStateGetArgs.cs b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionInstallationStateGetArgs.cs index 16718f5f9d..45d4378d22 100644 --- a/sdk/dotnet/DeveloperConnect/Inputs/ConnectionInstallationStateGetArgs.cs +++ b/sdk/dotnet/DeveloperConnect/Inputs/ConnectionInstallationStateGetArgs.cs @@ -13,15 +13,15 @@ namespace Pulumi.Gcp.DeveloperConnect.Inputs public sealed class ConnectionInstallationStateGetArgs : global::Pulumi.ResourceArgs { /// - /// Output only. Link to follow for next action. Empty string if the - /// installation is already complete. + /// Output only. Link to follow for next action. Empty string if the installation is already + /// complete. /// [Input("actionUri")] public Input? ActionUri { get; set; } /// - /// Output only. Message of what the user should do next to continue - /// the installation.Empty string if the installation is already complete. + /// Output only. Message of what the user should do next to continue the installation. + /// Empty string if the installation is already complete. /// [Input("message")] public Input? Message { get; set; } diff --git a/sdk/dotnet/DeveloperConnect/Outputs/ConnectionCryptoKeyConfig.cs b/sdk/dotnet/DeveloperConnect/Outputs/ConnectionCryptoKeyConfig.cs new file mode 100644 index 0000000000..a7f8f74889 --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Outputs/ConnectionCryptoKeyConfig.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.DeveloperConnect.Outputs +{ + + [OutputType] + public sealed class ConnectionCryptoKeyConfig + { + /// + /// Required. The name of the key which is used to encrypt/decrypt customer data. For key + /// in Cloud KMS, the key should be in the format of + /// `projects/*/locations/*/keyRings/*/cryptoKeys/*`. + /// + public readonly string KeyReference; + + [OutputConstructor] + private ConnectionCryptoKeyConfig(string keyReference) + { + KeyReference = keyReference; + } + } +} diff --git a/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGithubConfig.cs b/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGithubConfig.cs index ab998ce336..8b019d2862 100644 --- a/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGithubConfig.cs +++ b/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGithubConfig.cs @@ -18,24 +18,24 @@ public sealed class ConnectionGithubConfig /// public readonly string? AppInstallationId; /// - /// Represents an OAuth token of the account that authorized the Connection,and - /// associated metadata. + /// Represents an OAuth token of the account that authorized the Connection, + /// and associated metadata. /// Structure is documented below. /// public readonly Outputs.ConnectionGithubConfigAuthorizerCredential? AuthorizerCredential; /// - /// Required. Immutable. The GitHub Application that was installed to - /// the GitHub user or organization. + /// Required. Immutable. The GitHub Application that was installed to the GitHub user or + /// organization. /// Possible values: /// GIT_HUB_APP_UNSPECIFIED /// DEVELOPER_CONNECT - /// FIREBASE" + /// FIREBASE /// public readonly string GithubApp; /// /// (Output) - /// Output only. The URI to navigate to in order to manage the installation - /// associated with this GitHubConfig. + /// Output only. The URI to navigate to in order to manage the installation associated + /// with this GitHubConfig. /// public readonly string? InstallationUri; diff --git a/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGithubConfigAuthorizerCredential.cs b/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGithubConfigAuthorizerCredential.cs index c74b5aac2c..09aaf222d1 100644 --- a/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGithubConfigAuthorizerCredential.cs +++ b/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGithubConfigAuthorizerCredential.cs @@ -14,9 +14,8 @@ namespace Pulumi.Gcp.DeveloperConnect.Outputs public sealed class ConnectionGithubConfigAuthorizerCredential { /// - /// Required. A SecretManager resource containing the OAuth token - /// that authorizes the connection. - /// Format: `projects/*/secrets/*/versions/*`. + /// Required. A SecretManager resource containing the OAuth token that authorizes + /// the connection. Format: `projects/*/secrets/*/versions/*`. /// public readonly string OauthTokenSecretVersion; /// diff --git a/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGithubEnterpriseConfig.cs b/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGithubEnterpriseConfig.cs new file mode 100644 index 0000000000..1218581d20 --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGithubEnterpriseConfig.cs @@ -0,0 +1,99 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.DeveloperConnect.Outputs +{ + + [OutputType] + public sealed class ConnectionGithubEnterpriseConfig + { + /// + /// Optional. ID of the GitHub App created from the manifest. + /// + public readonly string? AppId; + /// + /// Optional. ID of the installation of the GitHub App. + /// + public readonly string? AppInstallationId; + /// + /// (Output) + /// Output only. The URL-friendly name of the GitHub App. + /// + public readonly string? AppSlug; + /// + /// Required. The URI of the GitHub Enterprise host this connection is for. + /// + public readonly string HostUri; + /// + /// (Output) + /// Output only. The URI to navigate to in order to manage the installation associated + /// with this GitHubEnterpriseConfig. + /// + public readonly string? InstallationUri; + /// + /// Optional. SecretManager resource containing the private key of the GitHub App, + /// formatted as `projects/*/secrets/*/versions/*`. + /// + public readonly string? PrivateKeySecretVersion; + /// + /// (Output) + /// Output only. GitHub Enterprise version installed at the host_uri. + /// + public readonly string? ServerVersion; + /// + /// ServiceDirectoryConfig represents Service Directory configuration for a + /// connection. + /// Structure is documented below. + /// + public readonly Outputs.ConnectionGithubEnterpriseConfigServiceDirectoryConfig? ServiceDirectoryConfig; + /// + /// Optional. SSL certificate to use for requests to GitHub Enterprise. + /// + public readonly string? SslCaCertificate; + /// + /// Optional. SecretManager resource containing the webhook secret of the GitHub App, + /// formatted as `projects/*/secrets/*/versions/*`. + /// + public readonly string? WebhookSecretSecretVersion; + + [OutputConstructor] + private ConnectionGithubEnterpriseConfig( + string? appId, + + string? appInstallationId, + + string? appSlug, + + string hostUri, + + string? installationUri, + + string? privateKeySecretVersion, + + string? serverVersion, + + Outputs.ConnectionGithubEnterpriseConfigServiceDirectoryConfig? serviceDirectoryConfig, + + string? sslCaCertificate, + + string? webhookSecretSecretVersion) + { + AppId = appId; + AppInstallationId = appInstallationId; + AppSlug = appSlug; + HostUri = hostUri; + InstallationUri = installationUri; + PrivateKeySecretVersion = privateKeySecretVersion; + ServerVersion = serverVersion; + ServiceDirectoryConfig = serviceDirectoryConfig; + SslCaCertificate = sslCaCertificate; + WebhookSecretSecretVersion = webhookSecretSecretVersion; + } + } +} diff --git a/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGithubEnterpriseConfigServiceDirectoryConfig.cs b/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGithubEnterpriseConfigServiceDirectoryConfig.cs new file mode 100644 index 0000000000..11512f6b17 --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGithubEnterpriseConfigServiceDirectoryConfig.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.DeveloperConnect.Outputs +{ + + [OutputType] + public sealed class ConnectionGithubEnterpriseConfigServiceDirectoryConfig + { + /// + /// Required. The Service Directory service name. + /// Format: + /// projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + /// + public readonly string Service; + + [OutputConstructor] + private ConnectionGithubEnterpriseConfigServiceDirectoryConfig(string service) + { + Service = service; + } + } +} diff --git a/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGitlabConfig.cs b/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGitlabConfig.cs new file mode 100644 index 0000000000..efd16f237a --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGitlabConfig.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.DeveloperConnect.Outputs +{ + + [OutputType] + public sealed class ConnectionGitlabConfig + { + /// + /// Represents a personal access token that authorized the Connection, + /// and associated metadata. + /// Structure is documented below. + /// + public readonly Outputs.ConnectionGitlabConfigAuthorizerCredential AuthorizerCredential; + /// + /// Represents a personal access token that authorized the Connection, + /// and associated metadata. + /// Structure is documented below. + /// + public readonly Outputs.ConnectionGitlabConfigReadAuthorizerCredential ReadAuthorizerCredential; + /// + /// Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + /// formatted as `projects/*/secrets/*/versions/*`. This is used to validate + /// webhooks. + /// + public readonly string WebhookSecretSecretVersion; + + [OutputConstructor] + private ConnectionGitlabConfig( + Outputs.ConnectionGitlabConfigAuthorizerCredential authorizerCredential, + + Outputs.ConnectionGitlabConfigReadAuthorizerCredential readAuthorizerCredential, + + string webhookSecretSecretVersion) + { + AuthorizerCredential = authorizerCredential; + ReadAuthorizerCredential = readAuthorizerCredential; + WebhookSecretSecretVersion = webhookSecretSecretVersion; + } + } +} diff --git a/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGitlabConfigAuthorizerCredential.cs b/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGitlabConfigAuthorizerCredential.cs new file mode 100644 index 0000000000..7a84917dae --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGitlabConfigAuthorizerCredential.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.DeveloperConnect.Outputs +{ + + [OutputType] + public sealed class ConnectionGitlabConfigAuthorizerCredential + { + /// + /// Required. A SecretManager resource containing the user token that authorizes + /// the Developer Connect connection. Format: + /// `projects/*/secrets/*/versions/*`. + /// + public readonly string UserTokenSecretVersion; + /// + /// (Output) + /// Output only. The username associated with this token. + /// + public readonly string? Username; + + [OutputConstructor] + private ConnectionGitlabConfigAuthorizerCredential( + string userTokenSecretVersion, + + string? username) + { + UserTokenSecretVersion = userTokenSecretVersion; + Username = username; + } + } +} diff --git a/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGitlabConfigReadAuthorizerCredential.cs b/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGitlabConfigReadAuthorizerCredential.cs new file mode 100644 index 0000000000..d8f61994b2 --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGitlabConfigReadAuthorizerCredential.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.DeveloperConnect.Outputs +{ + + [OutputType] + public sealed class ConnectionGitlabConfigReadAuthorizerCredential + { + /// + /// Required. A SecretManager resource containing the user token that authorizes + /// the Developer Connect connection. Format: + /// `projects/*/secrets/*/versions/*`. + /// + public readonly string UserTokenSecretVersion; + /// + /// (Output) + /// Output only. The username associated with this token. + /// + public readonly string? Username; + + [OutputConstructor] + private ConnectionGitlabConfigReadAuthorizerCredential( + string userTokenSecretVersion, + + string? username) + { + UserTokenSecretVersion = userTokenSecretVersion; + Username = username; + } + } +} diff --git a/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGitlabEnterpriseConfig.cs b/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGitlabEnterpriseConfig.cs new file mode 100644 index 0000000000..d611bcb4b5 --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGitlabEnterpriseConfig.cs @@ -0,0 +1,80 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.DeveloperConnect.Outputs +{ + + [OutputType] + public sealed class ConnectionGitlabEnterpriseConfig + { + /// + /// Represents a personal access token that authorized the Connection, + /// and associated metadata. + /// Structure is documented below. + /// + public readonly Outputs.ConnectionGitlabEnterpriseConfigAuthorizerCredential AuthorizerCredential; + /// + /// Required. The URI of the GitLab Enterprise host this connection is for. + /// + public readonly string HostUri; + /// + /// Represents a personal access token that authorized the Connection, + /// and associated metadata. + /// Structure is documented below. + /// + public readonly Outputs.ConnectionGitlabEnterpriseConfigReadAuthorizerCredential ReadAuthorizerCredential; + /// + /// (Output) + /// Output only. Version of the GitLab Enterprise server running on the `host_uri`. + /// + public readonly string? ServerVersion; + /// + /// ServiceDirectoryConfig represents Service Directory configuration for a + /// connection. + /// Structure is documented below. + /// + public readonly Outputs.ConnectionGitlabEnterpriseConfigServiceDirectoryConfig? ServiceDirectoryConfig; + /// + /// Optional. SSL Certificate Authority certificate to use for requests to GitLab + /// Enterprise instance. + /// + public readonly string? SslCaCertificate; + /// + /// Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + /// formatted as `projects/*/secrets/*/versions/*`. This is used to validate + /// webhooks. + /// + public readonly string WebhookSecretSecretVersion; + + [OutputConstructor] + private ConnectionGitlabEnterpriseConfig( + Outputs.ConnectionGitlabEnterpriseConfigAuthorizerCredential authorizerCredential, + + string hostUri, + + Outputs.ConnectionGitlabEnterpriseConfigReadAuthorizerCredential readAuthorizerCredential, + + string? serverVersion, + + Outputs.ConnectionGitlabEnterpriseConfigServiceDirectoryConfig? serviceDirectoryConfig, + + string? sslCaCertificate, + + string webhookSecretSecretVersion) + { + AuthorizerCredential = authorizerCredential; + HostUri = hostUri; + ReadAuthorizerCredential = readAuthorizerCredential; + ServerVersion = serverVersion; + ServiceDirectoryConfig = serviceDirectoryConfig; + SslCaCertificate = sslCaCertificate; + WebhookSecretSecretVersion = webhookSecretSecretVersion; + } + } +} diff --git a/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGitlabEnterpriseConfigAuthorizerCredential.cs b/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGitlabEnterpriseConfigAuthorizerCredential.cs new file mode 100644 index 0000000000..315e3f4880 --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGitlabEnterpriseConfigAuthorizerCredential.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.DeveloperConnect.Outputs +{ + + [OutputType] + public sealed class ConnectionGitlabEnterpriseConfigAuthorizerCredential + { + /// + /// Required. A SecretManager resource containing the user token that authorizes + /// the Developer Connect connection. Format: + /// `projects/*/secrets/*/versions/*`. + /// + public readonly string UserTokenSecretVersion; + /// + /// (Output) + /// Output only. The username associated with this token. + /// + public readonly string? Username; + + [OutputConstructor] + private ConnectionGitlabEnterpriseConfigAuthorizerCredential( + string userTokenSecretVersion, + + string? username) + { + UserTokenSecretVersion = userTokenSecretVersion; + Username = username; + } + } +} diff --git a/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGitlabEnterpriseConfigReadAuthorizerCredential.cs b/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGitlabEnterpriseConfigReadAuthorizerCredential.cs new file mode 100644 index 0000000000..61435f937d --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGitlabEnterpriseConfigReadAuthorizerCredential.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.DeveloperConnect.Outputs +{ + + [OutputType] + public sealed class ConnectionGitlabEnterpriseConfigReadAuthorizerCredential + { + /// + /// Required. A SecretManager resource containing the user token that authorizes + /// the Developer Connect connection. Format: + /// `projects/*/secrets/*/versions/*`. + /// + public readonly string UserTokenSecretVersion; + /// + /// (Output) + /// Output only. The username associated with this token. + /// + public readonly string? Username; + + [OutputConstructor] + private ConnectionGitlabEnterpriseConfigReadAuthorizerCredential( + string userTokenSecretVersion, + + string? username) + { + UserTokenSecretVersion = userTokenSecretVersion; + Username = username; + } + } +} diff --git a/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGitlabEnterpriseConfigServiceDirectoryConfig.cs b/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGitlabEnterpriseConfigServiceDirectoryConfig.cs new file mode 100644 index 0000000000..38edf93371 --- /dev/null +++ b/sdk/dotnet/DeveloperConnect/Outputs/ConnectionGitlabEnterpriseConfigServiceDirectoryConfig.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.DeveloperConnect.Outputs +{ + + [OutputType] + public sealed class ConnectionGitlabEnterpriseConfigServiceDirectoryConfig + { + /// + /// Required. The Service Directory service name. + /// Format: + /// projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + /// + public readonly string Service; + + [OutputConstructor] + private ConnectionGitlabEnterpriseConfigServiceDirectoryConfig(string service) + { + Service = service; + } + } +} diff --git a/sdk/dotnet/DeveloperConnect/Outputs/ConnectionInstallationState.cs b/sdk/dotnet/DeveloperConnect/Outputs/ConnectionInstallationState.cs index aafe371d7a..4f3111f95f 100644 --- a/sdk/dotnet/DeveloperConnect/Outputs/ConnectionInstallationState.cs +++ b/sdk/dotnet/DeveloperConnect/Outputs/ConnectionInstallationState.cs @@ -14,13 +14,13 @@ namespace Pulumi.Gcp.DeveloperConnect.Outputs public sealed class ConnectionInstallationState { /// - /// Output only. Link to follow for next action. Empty string if the - /// installation is already complete. + /// Output only. Link to follow for next action. Empty string if the installation is already + /// complete. /// public readonly string? ActionUri; /// - /// Output only. Message of what the user should do next to continue - /// the installation.Empty string if the installation is already complete. + /// Output only. Message of what the user should do next to continue the installation. + /// Empty string if the installation is already complete. /// public readonly string? Message; /// diff --git a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyArgs.cs b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyArgs.cs index 5f01e780e2..0dc75218b0 100644 --- a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyArgs.cs +++ b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyArgs.cs @@ -31,6 +31,12 @@ public InputList Geos set => _geos = value; } + /// + /// Specifies the health check (used with external endpoints). + /// + [Input("healthCheck")] + public Input? HealthCheck { get; set; } + /// /// The configuration for a failover policy with global to regional failover. Queries are responded to with the global primary targets, but if none of the primary targets are healthy, then we fallback to a regional failover policy. /// Structure is documented below. diff --git a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyGeoHealthCheckedTargetsArgs.cs b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyGeoHealthCheckedTargetsArgs.cs index e78f4c5d8e..1d6662632b 100644 --- a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyGeoHealthCheckedTargetsArgs.cs +++ b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyGeoHealthCheckedTargetsArgs.cs @@ -12,7 +12,19 @@ namespace Pulumi.Gcp.Dns.Inputs public sealed class RecordSetRoutingPolicyGeoHealthCheckedTargetsArgs : global::Pulumi.ResourceArgs { - [Input("internalLoadBalancers", required: true)] + [Input("externalEndpoints")] + private InputList? _externalEndpoints; + + /// + /// The list of external endpoint addresses to health check. + /// + public InputList ExternalEndpoints + { + get => _externalEndpoints ?? (_externalEndpoints = new InputList()); + set => _externalEndpoints = value; + } + + [Input("internalLoadBalancers")] private InputList? _internalLoadBalancers; /// diff --git a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyGeoHealthCheckedTargetsGetArgs.cs b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyGeoHealthCheckedTargetsGetArgs.cs index 1651b1a1ca..8696f64943 100644 --- a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyGeoHealthCheckedTargetsGetArgs.cs +++ b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyGeoHealthCheckedTargetsGetArgs.cs @@ -12,7 +12,19 @@ namespace Pulumi.Gcp.Dns.Inputs public sealed class RecordSetRoutingPolicyGeoHealthCheckedTargetsGetArgs : global::Pulumi.ResourceArgs { - [Input("internalLoadBalancers", required: true)] + [Input("externalEndpoints")] + private InputList? _externalEndpoints; + + /// + /// The list of external endpoint addresses to health check. + /// + public InputList ExternalEndpoints + { + get => _externalEndpoints ?? (_externalEndpoints = new InputList()); + set => _externalEndpoints = value; + } + + [Input("internalLoadBalancers")] private InputList? _internalLoadBalancers; /// diff --git a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyGetArgs.cs b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyGetArgs.cs index d1069c803b..3eb7a10e68 100644 --- a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyGetArgs.cs +++ b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyGetArgs.cs @@ -31,6 +31,12 @@ public InputList Geos set => _geos = value; } + /// + /// Specifies the health check (used with external endpoints). + /// + [Input("healthCheck")] + public Input? HealthCheck { get; set; } + /// /// The configuration for a failover policy with global to regional failover. Queries are responded to with the global primary targets, but if none of the primary targets are healthy, then we fallback to a regional failover policy. /// Structure is documented below. diff --git a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs.cs b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs.cs index 7e8d2cfebf..efcc9e2c0a 100644 --- a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs.cs +++ b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs.cs @@ -12,7 +12,19 @@ namespace Pulumi.Gcp.Dns.Inputs public sealed class RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs : global::Pulumi.ResourceArgs { - [Input("internalLoadBalancers", required: true)] + [Input("externalEndpoints")] + private InputList? _externalEndpoints; + + /// + /// The list of external endpoint addresses to health check. + /// + public InputList ExternalEndpoints + { + get => _externalEndpoints ?? (_externalEndpoints = new InputList()); + set => _externalEndpoints = value; + } + + [Input("internalLoadBalancers")] private InputList? _internalLoadBalancers; /// diff --git a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsGetArgs.cs b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsGetArgs.cs index 00401ffe38..7a4de41273 100644 --- a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsGetArgs.cs +++ b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsGetArgs.cs @@ -12,7 +12,19 @@ namespace Pulumi.Gcp.Dns.Inputs public sealed class RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsGetArgs : global::Pulumi.ResourceArgs { - [Input("internalLoadBalancers", required: true)] + [Input("externalEndpoints")] + private InputList? _externalEndpoints; + + /// + /// The list of external endpoint addresses to health check. + /// + public InputList ExternalEndpoints + { + get => _externalEndpoints ?? (_externalEndpoints = new InputList()); + set => _externalEndpoints = value; + } + + [Input("internalLoadBalancers")] private InputList? _internalLoadBalancers; /// diff --git a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupPrimaryArgs.cs b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupPrimaryArgs.cs index 39d8f805cc..3b5d57ef1f 100644 --- a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupPrimaryArgs.cs +++ b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupPrimaryArgs.cs @@ -12,7 +12,19 @@ namespace Pulumi.Gcp.Dns.Inputs public sealed class RecordSetRoutingPolicyPrimaryBackupPrimaryArgs : global::Pulumi.ResourceArgs { - [Input("internalLoadBalancers", required: true)] + [Input("externalEndpoints")] + private InputList? _externalEndpoints; + + /// + /// The Internet IP addresses to be health checked. + /// + public InputList ExternalEndpoints + { + get => _externalEndpoints ?? (_externalEndpoints = new InputList()); + set => _externalEndpoints = value; + } + + [Input("internalLoadBalancers")] private InputList? _internalLoadBalancers; /// diff --git a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupPrimaryGetArgs.cs b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupPrimaryGetArgs.cs index 9cbdb5c21f..e1db421689 100644 --- a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupPrimaryGetArgs.cs +++ b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupPrimaryGetArgs.cs @@ -12,7 +12,19 @@ namespace Pulumi.Gcp.Dns.Inputs public sealed class RecordSetRoutingPolicyPrimaryBackupPrimaryGetArgs : global::Pulumi.ResourceArgs { - [Input("internalLoadBalancers", required: true)] + [Input("externalEndpoints")] + private InputList? _externalEndpoints; + + /// + /// The Internet IP addresses to be health checked. + /// + public InputList ExternalEndpoints + { + get => _externalEndpoints ?? (_externalEndpoints = new InputList()); + set => _externalEndpoints = value; + } + + [Input("internalLoadBalancers")] private InputList? _internalLoadBalancers; /// diff --git a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsArgs.cs b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsArgs.cs index d90a30e7b4..12447bc544 100644 --- a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsArgs.cs +++ b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsArgs.cs @@ -12,7 +12,19 @@ namespace Pulumi.Gcp.Dns.Inputs public sealed class RecordSetRoutingPolicyWrrHealthCheckedTargetsArgs : global::Pulumi.ResourceArgs { - [Input("internalLoadBalancers", required: true)] + [Input("externalEndpoints")] + private InputList? _externalEndpoints; + + /// + /// The list of external endpoint addresses to health check. + /// + public InputList ExternalEndpoints + { + get => _externalEndpoints ?? (_externalEndpoints = new InputList()); + set => _externalEndpoints = value; + } + + [Input("internalLoadBalancers")] private InputList? _internalLoadBalancers; /// diff --git a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsGetArgs.cs b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsGetArgs.cs index 0fce6eda4e..c1078d91d1 100644 --- a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsGetArgs.cs +++ b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsGetArgs.cs @@ -12,7 +12,19 @@ namespace Pulumi.Gcp.Dns.Inputs public sealed class RecordSetRoutingPolicyWrrHealthCheckedTargetsGetArgs : global::Pulumi.ResourceArgs { - [Input("internalLoadBalancers", required: true)] + [Input("externalEndpoints")] + private InputList? _externalEndpoints; + + /// + /// The list of external endpoint addresses to health check. + /// + public InputList ExternalEndpoints + { + get => _externalEndpoints ?? (_externalEndpoints = new InputList()); + set => _externalEndpoints = value; + } + + [Input("internalLoadBalancers")] private InputList? _internalLoadBalancers; /// diff --git a/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicy.cs b/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicy.cs index fa148cce8d..692d21fe88 100644 --- a/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicy.cs +++ b/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicy.cs @@ -23,6 +23,10 @@ public sealed class RecordSetRoutingPolicy /// public readonly ImmutableArray Geos; /// + /// Specifies the health check (used with external endpoints). + /// + public readonly string? HealthCheck; + /// /// The configuration for a failover policy with global to regional failover. Queries are responded to with the global primary targets, but if none of the primary targets are healthy, then we fallback to a regional failover policy. /// Structure is documented below. /// @@ -39,12 +43,15 @@ private RecordSetRoutingPolicy( ImmutableArray geos, + string? healthCheck, + Outputs.RecordSetRoutingPolicyPrimaryBackup? primaryBackup, ImmutableArray wrrs) { EnableGeoFencing = enableGeoFencing; Geos = geos; + HealthCheck = healthCheck; PrimaryBackup = primaryBackup; Wrrs = wrrs; } diff --git a/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyGeoHealthCheckedTargets.cs b/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyGeoHealthCheckedTargets.cs index c0dda76c33..54ab50b71c 100644 --- a/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyGeoHealthCheckedTargets.cs +++ b/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyGeoHealthCheckedTargets.cs @@ -13,6 +13,10 @@ namespace Pulumi.Gcp.Dns.Outputs [OutputType] public sealed class RecordSetRoutingPolicyGeoHealthCheckedTargets { + /// + /// The list of external endpoint addresses to health check. + /// + public readonly ImmutableArray ExternalEndpoints; /// /// The list of internal load balancers to health check. /// Structure is documented below. @@ -20,8 +24,12 @@ public sealed class RecordSetRoutingPolicyGeoHealthCheckedTargets public readonly ImmutableArray InternalLoadBalancers; [OutputConstructor] - private RecordSetRoutingPolicyGeoHealthCheckedTargets(ImmutableArray internalLoadBalancers) + private RecordSetRoutingPolicyGeoHealthCheckedTargets( + ImmutableArray externalEndpoints, + + ImmutableArray internalLoadBalancers) { + ExternalEndpoints = externalEndpoints; InternalLoadBalancers = internalLoadBalancers; } } diff --git a/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargets.cs b/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargets.cs index ef76bc64d6..7a25921dc4 100644 --- a/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargets.cs +++ b/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargets.cs @@ -13,6 +13,10 @@ namespace Pulumi.Gcp.Dns.Outputs [OutputType] public sealed class RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargets { + /// + /// The list of external endpoint addresses to health check. + /// + public readonly ImmutableArray ExternalEndpoints; /// /// The list of internal load balancers to health check. /// Structure is documented below. @@ -20,8 +24,12 @@ public sealed class RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTar public readonly ImmutableArray InternalLoadBalancers; [OutputConstructor] - private RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargets(ImmutableArray internalLoadBalancers) + private RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargets( + ImmutableArray externalEndpoints, + + ImmutableArray internalLoadBalancers) { + ExternalEndpoints = externalEndpoints; InternalLoadBalancers = internalLoadBalancers; } } diff --git a/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyPrimaryBackupPrimary.cs b/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyPrimaryBackupPrimary.cs index cae246a4c2..07dc8568bf 100644 --- a/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyPrimaryBackupPrimary.cs +++ b/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyPrimaryBackupPrimary.cs @@ -13,14 +13,22 @@ namespace Pulumi.Gcp.Dns.Outputs [OutputType] public sealed class RecordSetRoutingPolicyPrimaryBackupPrimary { + /// + /// The Internet IP addresses to be health checked. + /// + public readonly ImmutableArray ExternalEndpoints; /// /// The list of internal load balancers to health check. /// public readonly ImmutableArray InternalLoadBalancers; [OutputConstructor] - private RecordSetRoutingPolicyPrimaryBackupPrimary(ImmutableArray internalLoadBalancers) + private RecordSetRoutingPolicyPrimaryBackupPrimary( + ImmutableArray externalEndpoints, + + ImmutableArray internalLoadBalancers) { + ExternalEndpoints = externalEndpoints; InternalLoadBalancers = internalLoadBalancers; } } diff --git a/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyWrrHealthCheckedTargets.cs b/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyWrrHealthCheckedTargets.cs index 36da0d28e1..408fad393a 100644 --- a/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyWrrHealthCheckedTargets.cs +++ b/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyWrrHealthCheckedTargets.cs @@ -13,6 +13,10 @@ namespace Pulumi.Gcp.Dns.Outputs [OutputType] public sealed class RecordSetRoutingPolicyWrrHealthCheckedTargets { + /// + /// The list of external endpoint addresses to health check. + /// + public readonly ImmutableArray ExternalEndpoints; /// /// The list of internal load balancers to health check. /// Structure is documented below. @@ -20,8 +24,12 @@ public sealed class RecordSetRoutingPolicyWrrHealthCheckedTargets public readonly ImmutableArray InternalLoadBalancers; [OutputConstructor] - private RecordSetRoutingPolicyWrrHealthCheckedTargets(ImmutableArray internalLoadBalancers) + private RecordSetRoutingPolicyWrrHealthCheckedTargets( + ImmutableArray externalEndpoints, + + ImmutableArray internalLoadBalancers) { + ExternalEndpoints = externalEndpoints; InternalLoadBalancers = internalLoadBalancers; } } diff --git a/sdk/dotnet/Dns/RecordSet.cs b/sdk/dotnet/Dns/RecordSet.cs index 50fca54404..37ce23236a 100644 --- a/sdk/dotnet/Dns/RecordSet.cs +++ b/sdk/dotnet/Dns/RecordSet.cs @@ -335,6 +335,76 @@ namespace Pulumi.Gcp.Dns /// }); /// ``` /// + /// ### Public zone failover + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var http_health_check = new Gcp.Compute.HealthCheck("http-health-check", new() + /// { + /// Name = "http-health-check", + /// Description = "Health check via http", + /// TimeoutSec = 5, + /// CheckIntervalSec = 30, + /// HealthyThreshold = 4, + /// UnhealthyThreshold = 5, + /// HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs + /// { + /// PortSpecification = "USE_SERVING_PORT", + /// }, + /// }); + /// + /// var prod = new Gcp.Dns.ManagedZone("prod", new() + /// { + /// Name = "prod-zone", + /// DnsName = "prod.mydomain.com.", + /// }); + /// + /// var a = new Gcp.Dns.RecordSet("a", new() + /// { + /// Name = prod.DnsName.Apply(dnsName => $"backend.{dnsName}"), + /// ManagedZone = prod.Name, + /// Type = "A", + /// Ttl = 300, + /// RoutingPolicy = new Gcp.Dns.Inputs.RecordSetRoutingPolicyArgs + /// { + /// HealthCheck = http_health_check.Id, + /// PrimaryBackup = new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupArgs + /// { + /// TrickleRatio = 0.1, + /// Primary = new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs + /// { + /// ExternalEndpoints = new[] + /// { + /// "10.128.1.1", + /// }, + /// }, + /// BackupGeos = new[] + /// { + /// new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs + /// { + /// Location = "us-west1", + /// HealthCheckedTargets = new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs + /// { + /// ExternalEndpoints = new[] + /// { + /// "10.130.1.1", + /// }, + /// }, + /// }, + /// }, + /// }, + /// }, + /// }); + /// + /// }); + /// ``` + /// /// ## Import /// /// DNS record sets can be imported using either of these accepted formats: diff --git a/sdk/dotnet/EdgeContainer/Inputs/ClusterControlPlaneEncryptionArgs.cs b/sdk/dotnet/EdgeContainer/Inputs/ClusterControlPlaneEncryptionArgs.cs index 647812aae3..9fa729c5eb 100644 --- a/sdk/dotnet/EdgeContainer/Inputs/ClusterControlPlaneEncryptionArgs.cs +++ b/sdk/dotnet/EdgeContainer/Inputs/ClusterControlPlaneEncryptionArgs.cs @@ -50,7 +50,7 @@ public sealed class ClusterControlPlaneEncryptionArgs : global::Pulumi.ResourceA /// Structure is documented below. /// /// - /// <a name="nested_kms_status"></a>The `kms_status` block contains: + /// <a name="nested_control_plane_encryption_kms_status"></a>The `kms_status` block contains: /// public InputList KmsStatuses { diff --git a/sdk/dotnet/EdgeContainer/Inputs/ClusterControlPlaneEncryptionGetArgs.cs b/sdk/dotnet/EdgeContainer/Inputs/ClusterControlPlaneEncryptionGetArgs.cs index 337833d243..f83c39d960 100644 --- a/sdk/dotnet/EdgeContainer/Inputs/ClusterControlPlaneEncryptionGetArgs.cs +++ b/sdk/dotnet/EdgeContainer/Inputs/ClusterControlPlaneEncryptionGetArgs.cs @@ -50,7 +50,7 @@ public sealed class ClusterControlPlaneEncryptionGetArgs : global::Pulumi.Resour /// Structure is documented below. /// /// - /// <a name="nested_kms_status"></a>The `kms_status` block contains: + /// <a name="nested_control_plane_encryption_kms_status"></a>The `kms_status` block contains: /// public InputList KmsStatuses { diff --git a/sdk/dotnet/EdgeContainer/Outputs/ClusterControlPlaneEncryption.cs b/sdk/dotnet/EdgeContainer/Outputs/ClusterControlPlaneEncryption.cs index 5a1a1be88e..2d0ee3e639 100644 --- a/sdk/dotnet/EdgeContainer/Outputs/ClusterControlPlaneEncryption.cs +++ b/sdk/dotnet/EdgeContainer/Outputs/ClusterControlPlaneEncryption.cs @@ -42,7 +42,7 @@ public sealed class ClusterControlPlaneEncryption /// Structure is documented below. /// /// - /// <a name="nested_kms_status"></a>The `kms_status` block contains: + /// <a name="nested_control_plane_encryption_kms_status"></a>The `kms_status` block contains: /// public readonly ImmutableArray KmsStatuses; diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterControlPlaneNodeAutoResizeConfigArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterControlPlaneNodeAutoResizeConfigArgs.cs index a4c865fe8d..b22f69455a 100644 --- a/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterControlPlaneNodeAutoResizeConfigArgs.cs +++ b/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterControlPlaneNodeAutoResizeConfigArgs.cs @@ -15,7 +15,7 @@ public sealed class VMwareClusterControlPlaneNodeAutoResizeConfigArgs : global:: /// /// Whether to enable control plane node auto resizing. /// - /// <a name="nested_vsphere_config"></a>The `vsphere_config` block contains: + /// <a name="nested_control_plane_node_vsphere_config"></a>The `vsphere_config` block contains: /// [Input("enabled", required: true)] public Input Enabled { get; set; } = null!; diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterControlPlaneNodeAutoResizeConfigGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterControlPlaneNodeAutoResizeConfigGetArgs.cs index ac4c6634c2..f5d60ea56b 100644 --- a/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterControlPlaneNodeAutoResizeConfigGetArgs.cs +++ b/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterControlPlaneNodeAutoResizeConfigGetArgs.cs @@ -15,7 +15,7 @@ public sealed class VMwareClusterControlPlaneNodeAutoResizeConfigGetArgs : globa /// /// Whether to enable control plane node auto resizing. /// - /// <a name="nested_vsphere_config"></a>The `vsphere_config` block contains: + /// <a name="nested_control_plane_node_vsphere_config"></a>The `vsphere_config` block contains: /// [Input("enabled", required: true)] public Input Enabled { get; set; } = null!; diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterLoadBalancerVipConfigArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterLoadBalancerVipConfigArgs.cs index 805c90cfb6..e0c5057171 100644 --- a/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterLoadBalancerVipConfigArgs.cs +++ b/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterLoadBalancerVipConfigArgs.cs @@ -21,7 +21,7 @@ public sealed class VMwareClusterLoadBalancerVipConfigArgs : global::Pulumi.Reso /// /// The VIP which you previously set aside for ingress traffic into this cluster. /// - /// <a name="nested_f5_config"></a>The `f5_config` block supports: + /// <a name="nested_load_balancer_f5_config"></a>The `f5_config` block supports: /// [Input("ingressVip")] public Input? IngressVip { get; set; } diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterLoadBalancerVipConfigGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterLoadBalancerVipConfigGetArgs.cs index ef9e0925ab..8bf7aae93b 100644 --- a/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterLoadBalancerVipConfigGetArgs.cs +++ b/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterLoadBalancerVipConfigGetArgs.cs @@ -21,7 +21,7 @@ public sealed class VMwareClusterLoadBalancerVipConfigGetArgs : global::Pulumi.R /// /// The VIP which you previously set aside for ingress traffic into this cluster. /// - /// <a name="nested_f5_config"></a>The `f5_config` block supports: + /// <a name="nested_load_balancer_f5_config"></a>The `f5_config` block supports: /// [Input("ingressVip")] public Input? IngressVip { get; set; } diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterNetworkConfigHostConfigArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterNetworkConfigHostConfigArgs.cs index 003a4c8243..3d8bca7162 100644 --- a/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterNetworkConfigHostConfigArgs.cs +++ b/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterNetworkConfigHostConfigArgs.cs @@ -18,7 +18,7 @@ public sealed class VMwareClusterNetworkConfigHostConfigArgs : global::Pulumi.Re /// /// DNS search domains. /// - /// <a name="nested_control_plane_v2_config"></a>The `control_plane_v2_config` block supports: + /// <a name="nested_network_config_control_plane_v2_config"></a>The `control_plane_v2_config` block supports: /// public InputList DnsSearchDomains { diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterNetworkConfigHostConfigGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterNetworkConfigHostConfigGetArgs.cs index d36efb4f82..72ffb92e47 100644 --- a/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterNetworkConfigHostConfigGetArgs.cs +++ b/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterNetworkConfigHostConfigGetArgs.cs @@ -18,7 +18,7 @@ public sealed class VMwareClusterNetworkConfigHostConfigGetArgs : global::Pulumi /// /// DNS search domains. /// - /// <a name="nested_control_plane_v2_config"></a>The `control_plane_v2_config` block supports: + /// <a name="nested_network_config_control_plane_v2_config"></a>The `control_plane_v2_config` block supports: /// public InputList DnsSearchDomains { diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerVipConfigArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerVipConfigArgs.cs index 719baba648..14dd6ed6d6 100644 --- a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerVipConfigArgs.cs +++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerVipConfigArgs.cs @@ -15,7 +15,7 @@ public sealed class VmwareAdminClusterLoadBalancerVipConfigArgs : global::Pulumi /// /// The VIP to configure the load balancer for add-ons. /// - /// <a name="nested_f5_config"></a>The `f5_config` block supports: + /// <a name="nested_load_balancer_f5_config"></a>The `f5_config` block supports: /// [Input("addonsVip")] public Input? AddonsVip { get; set; } diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerVipConfigGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerVipConfigGetArgs.cs index 49d5a8e170..e03149fdac 100644 --- a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerVipConfigGetArgs.cs +++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterLoadBalancerVipConfigGetArgs.cs @@ -15,7 +15,7 @@ public sealed class VmwareAdminClusterLoadBalancerVipConfigGetArgs : global::Pul /// /// The VIP to configure the load balancer for add-ons. /// - /// <a name="nested_f5_config"></a>The `f5_config` block supports: + /// <a name="nested_load_balancer_f5_config"></a>The `f5_config` block supports: /// [Input("addonsVip")] public Input? AddonsVip { get; set; } diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigArgs.cs index c3125c6da3..aebef7439c 100644 --- a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigArgs.cs +++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigArgs.cs @@ -52,7 +52,7 @@ public InputList Bundles /// Structure is documented below. /// /// - /// <a name="nested_status"></a>The `status` block contains: + /// <a name="nested_platform_config_bundles_bundles_status"></a>The `status` block contains: /// public InputList Statuses { diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigGetArgs.cs index d11f2e20ad..02c1b98ce2 100644 --- a/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigGetArgs.cs +++ b/sdk/dotnet/GkeOnPrem/Inputs/VmwareAdminClusterPlatformConfigGetArgs.cs @@ -52,7 +52,7 @@ public InputList Bundles /// Structure is documented below. /// /// - /// <a name="nested_status"></a>The `status` block contains: + /// <a name="nested_platform_config_bundles_bundles_status"></a>The `status` block contains: /// public InputList Statuses { diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VMwareClusterControlPlaneNodeAutoResizeConfig.cs b/sdk/dotnet/GkeOnPrem/Outputs/VMwareClusterControlPlaneNodeAutoResizeConfig.cs index 6364a3044b..6e10bc1c3c 100644 --- a/sdk/dotnet/GkeOnPrem/Outputs/VMwareClusterControlPlaneNodeAutoResizeConfig.cs +++ b/sdk/dotnet/GkeOnPrem/Outputs/VMwareClusterControlPlaneNodeAutoResizeConfig.cs @@ -16,7 +16,7 @@ public sealed class VMwareClusterControlPlaneNodeAutoResizeConfig /// /// Whether to enable control plane node auto resizing. /// - /// <a name="nested_vsphere_config"></a>The `vsphere_config` block contains: + /// <a name="nested_control_plane_node_vsphere_config"></a>The `vsphere_config` block contains: /// public readonly bool Enabled; diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VMwareClusterLoadBalancerVipConfig.cs b/sdk/dotnet/GkeOnPrem/Outputs/VMwareClusterLoadBalancerVipConfig.cs index 4a191d6908..cf995675d8 100644 --- a/sdk/dotnet/GkeOnPrem/Outputs/VMwareClusterLoadBalancerVipConfig.cs +++ b/sdk/dotnet/GkeOnPrem/Outputs/VMwareClusterLoadBalancerVipConfig.cs @@ -20,7 +20,7 @@ public sealed class VMwareClusterLoadBalancerVipConfig /// /// The VIP which you previously set aside for ingress traffic into this cluster. /// - /// <a name="nested_f5_config"></a>The `f5_config` block supports: + /// <a name="nested_load_balancer_f5_config"></a>The `f5_config` block supports: /// public readonly string? IngressVip; diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VMwareClusterNetworkConfigHostConfig.cs b/sdk/dotnet/GkeOnPrem/Outputs/VMwareClusterNetworkConfigHostConfig.cs index d69b88672f..50a55f530f 100644 --- a/sdk/dotnet/GkeOnPrem/Outputs/VMwareClusterNetworkConfigHostConfig.cs +++ b/sdk/dotnet/GkeOnPrem/Outputs/VMwareClusterNetworkConfigHostConfig.cs @@ -16,7 +16,7 @@ public sealed class VMwareClusterNetworkConfigHostConfig /// /// DNS search domains. /// - /// <a name="nested_control_plane_v2_config"></a>The `control_plane_v2_config` block supports: + /// <a name="nested_network_config_control_plane_v2_config"></a>The `control_plane_v2_config` block supports: /// public readonly ImmutableArray DnsSearchDomains; /// diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterLoadBalancerVipConfig.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterLoadBalancerVipConfig.cs index e4a811a151..125ada67f1 100644 --- a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterLoadBalancerVipConfig.cs +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterLoadBalancerVipConfig.cs @@ -16,7 +16,7 @@ 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: + /// <a name="nested_load_balancer_f5_config"></a>The `f5_config` block supports: /// public readonly string? AddonsVip; /// diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterPlatformConfig.cs b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterPlatformConfig.cs index f4a542cff0..3f86423c3f 100644 --- a/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterPlatformConfig.cs +++ b/sdk/dotnet/GkeOnPrem/Outputs/VmwareAdminClusterPlatformConfig.cs @@ -38,7 +38,7 @@ public sealed class VmwareAdminClusterPlatformConfig /// Structure is documented below. /// /// - /// <a name="nested_status"></a>The `status` block contains: + /// <a name="nested_platform_config_bundles_bundles_status"></a>The `status` block contains: /// public readonly ImmutableArray Statuses; diff --git a/sdk/dotnet/GkeOnPrem/VMwareCluster.cs b/sdk/dotnet/GkeOnPrem/VMwareCluster.cs index 447036f096..381a14e056 100644 --- a/sdk/dotnet/GkeOnPrem/VMwareCluster.cs +++ b/sdk/dotnet/GkeOnPrem/VMwareCluster.cs @@ -587,7 +587,7 @@ public partial class VMwareCluster : global::Pulumi.CustomResource /// VmwareVCenterConfig specifies vCenter config for the user cluster. Inherited from the admin cluster. /// [Output("vcenter")] - public Output Vcenter { get; private set; } = null!; + public Output Vcenter { get; private set; } = null!; /// /// Enable VM tracking. diff --git a/sdk/dotnet/Iap/Inputs/SettingsAccessSettingsArgs.cs b/sdk/dotnet/Iap/Inputs/SettingsAccessSettingsArgs.cs index d120c760c1..b512a4525f 100644 --- a/sdk/dotnet/Iap/Inputs/SettingsAccessSettingsArgs.cs +++ b/sdk/dotnet/Iap/Inputs/SettingsAccessSettingsArgs.cs @@ -28,6 +28,7 @@ public sealed class SettingsAccessSettingsArgs : global::Pulumi.ResourceArgs /// /// GCIP claims and endpoint configurations for 3p identity providers. + /// * Enabling gcipSetting significantly changes the way IAP authenticates users. Identity Platform does not support IAM, so IAP will not enforce any IAM policies for requests to your application. /// Structure is documented below. /// [Input("gcipSettings")] diff --git a/sdk/dotnet/Iap/Inputs/SettingsAccessSettingsGetArgs.cs b/sdk/dotnet/Iap/Inputs/SettingsAccessSettingsGetArgs.cs index 1ff42c0539..cd188e19d0 100644 --- a/sdk/dotnet/Iap/Inputs/SettingsAccessSettingsGetArgs.cs +++ b/sdk/dotnet/Iap/Inputs/SettingsAccessSettingsGetArgs.cs @@ -28,6 +28,7 @@ public sealed class SettingsAccessSettingsGetArgs : global::Pulumi.ResourceArgs /// /// GCIP claims and endpoint configurations for 3p identity providers. + /// * Enabling gcipSetting significantly changes the way IAP authenticates users. Identity Platform does not support IAM, so IAP will not enforce any IAM policies for requests to your application. /// Structure is documented below. /// [Input("gcipSettings")] diff --git a/sdk/dotnet/Iap/Inputs/SettingsAccessSettingsOauthSettingsArgs.cs b/sdk/dotnet/Iap/Inputs/SettingsAccessSettingsOauthSettingsArgs.cs index 6ab8ff4d49..b8bcd7214d 100644 --- a/sdk/dotnet/Iap/Inputs/SettingsAccessSettingsOauthSettingsArgs.cs +++ b/sdk/dotnet/Iap/Inputs/SettingsAccessSettingsOauthSettingsArgs.cs @@ -18,6 +18,7 @@ public sealed class SettingsAccessSettingsOauthSettingsArgs : global::Pulumi.Res /// (https://developers.google.com/identity/protocols/OpenIDConnect#hd-param) /// Note: IAP does not verify that the id token's hd claim matches this value /// since access behavior is managed by IAM policies. + /// * loginHint setting is not a replacement for access control. Always enforce an appropriate access policy if you want to restrict access to users outside your domain. /// [Input("loginHint")] public Input? LoginHint { get; set; } diff --git a/sdk/dotnet/Iap/Inputs/SettingsAccessSettingsOauthSettingsGetArgs.cs b/sdk/dotnet/Iap/Inputs/SettingsAccessSettingsOauthSettingsGetArgs.cs index 28a171fd60..5dd4a708e3 100644 --- a/sdk/dotnet/Iap/Inputs/SettingsAccessSettingsOauthSettingsGetArgs.cs +++ b/sdk/dotnet/Iap/Inputs/SettingsAccessSettingsOauthSettingsGetArgs.cs @@ -18,6 +18,7 @@ public sealed class SettingsAccessSettingsOauthSettingsGetArgs : global::Pulumi. /// (https://developers.google.com/identity/protocols/OpenIDConnect#hd-param) /// Note: IAP does not verify that the id token's hd claim matches this value /// since access behavior is managed by IAM policies. + /// * loginHint setting is not a replacement for access control. Always enforce an appropriate access policy if you want to restrict access to users outside your domain. /// [Input("loginHint")] public Input? LoginHint { get; set; } diff --git a/sdk/dotnet/Iap/Inputs/SettingsAccessSettingsWorkforceIdentitySettingsArgs.cs b/sdk/dotnet/Iap/Inputs/SettingsAccessSettingsWorkforceIdentitySettingsArgs.cs index 96c27b381a..6c2c7f6f56 100644 --- a/sdk/dotnet/Iap/Inputs/SettingsAccessSettingsWorkforceIdentitySettingsArgs.cs +++ b/sdk/dotnet/Iap/Inputs/SettingsAccessSettingsWorkforceIdentitySettingsArgs.cs @@ -18,7 +18,7 @@ public sealed class SettingsAccessSettingsWorkforceIdentitySettingsArgs : global /// Structure is documented below. /// /// - /// <a name="nested_oauth2"></a>The `oauth2` block supports: + /// <a name="nested_access_settings_workforce_identity_settings_oauth2"></a>The `oauth2` block supports: /// [Input("oauth2")] public Input? Oauth2 { get; set; } diff --git a/sdk/dotnet/Iap/Inputs/SettingsAccessSettingsWorkforceIdentitySettingsGetArgs.cs b/sdk/dotnet/Iap/Inputs/SettingsAccessSettingsWorkforceIdentitySettingsGetArgs.cs index 1ef605dfd8..4c94555758 100644 --- a/sdk/dotnet/Iap/Inputs/SettingsAccessSettingsWorkforceIdentitySettingsGetArgs.cs +++ b/sdk/dotnet/Iap/Inputs/SettingsAccessSettingsWorkforceIdentitySettingsGetArgs.cs @@ -18,7 +18,7 @@ public sealed class SettingsAccessSettingsWorkforceIdentitySettingsGetArgs : glo /// Structure is documented below. /// /// - /// <a name="nested_oauth2"></a>The `oauth2` block supports: + /// <a name="nested_access_settings_workforce_identity_settings_oauth2"></a>The `oauth2` block supports: /// [Input("oauth2")] public Input? Oauth2 { get; set; } diff --git a/sdk/dotnet/Iap/Outputs/SettingsAccessSettings.cs b/sdk/dotnet/Iap/Outputs/SettingsAccessSettings.cs index 4854bbd1bc..4378612b2e 100644 --- a/sdk/dotnet/Iap/Outputs/SettingsAccessSettings.cs +++ b/sdk/dotnet/Iap/Outputs/SettingsAccessSettings.cs @@ -25,6 +25,7 @@ public sealed class SettingsAccessSettings public readonly Outputs.SettingsAccessSettingsCorsSettings? CorsSettings; /// /// GCIP claims and endpoint configurations for 3p identity providers. + /// * Enabling gcipSetting significantly changes the way IAP authenticates users. Identity Platform does not support IAM, so IAP will not enforce any IAM policies for requests to your application. /// Structure is documented below. /// public readonly Outputs.SettingsAccessSettingsGcipSettings? GcipSettings; diff --git a/sdk/dotnet/Iap/Outputs/SettingsAccessSettingsOauthSettings.cs b/sdk/dotnet/Iap/Outputs/SettingsAccessSettingsOauthSettings.cs index 2b17bb0540..1eec42a21c 100644 --- a/sdk/dotnet/Iap/Outputs/SettingsAccessSettingsOauthSettings.cs +++ b/sdk/dotnet/Iap/Outputs/SettingsAccessSettingsOauthSettings.cs @@ -19,6 +19,7 @@ public sealed class SettingsAccessSettingsOauthSettings /// (https://developers.google.com/identity/protocols/OpenIDConnect#hd-param) /// Note: IAP does not verify that the id token's hd claim matches this value /// since access behavior is managed by IAM policies. + /// * loginHint setting is not a replacement for access control. Always enforce an appropriate access policy if you want to restrict access to users outside your domain. /// public readonly string? LoginHint; /// diff --git a/sdk/dotnet/Iap/Outputs/SettingsAccessSettingsWorkforceIdentitySettings.cs b/sdk/dotnet/Iap/Outputs/SettingsAccessSettingsWorkforceIdentitySettings.cs index 21aad7e919..9b982948a7 100644 --- a/sdk/dotnet/Iap/Outputs/SettingsAccessSettingsWorkforceIdentitySettings.cs +++ b/sdk/dotnet/Iap/Outputs/SettingsAccessSettingsWorkforceIdentitySettings.cs @@ -19,7 +19,7 @@ public sealed class SettingsAccessSettingsWorkforceIdentitySettings /// Structure is documented below. /// /// - /// <a name="nested_oauth2"></a>The `oauth2` block supports: + /// <a name="nested_access_settings_workforce_identity_settings_oauth2"></a>The `oauth2` block supports: /// public readonly Outputs.SettingsAccessSettingsWorkforceIdentitySettingsOauth2? Oauth2; /// diff --git a/sdk/dotnet/Iap/Settings.cs b/sdk/dotnet/Iap/Settings.cs index 4c2c6ae98e..a5e6139067 100644 --- a/sdk/dotnet/Iap/Settings.cs +++ b/sdk/dotnet/Iap/Settings.cs @@ -169,15 +169,15 @@ public partial class Settings : global::Pulumi.CustomResource /// The resource name of the IAP protected resource. Name can have below resources: /// * organizations/{organization_id} /// * folders/{folder_id} - /// * projects/{projects_id} - /// * projects/{projects_id}/iap_web - /// * projects/{projects_id}/iap_web/compute - /// * projects/{projects_id}/iap_web/compute-{region} - /// * projects/{projects_id}/iap_web/compute/service/{service_id} - /// * projects/{projects_id}/iap_web/compute-{region}/service/{service_id} - /// * projects/{projects_id}/iap_web/appengine-{app_id} - /// * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id} - /// * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id} + /// * projects/{project_id} + /// * projects/{project_id}/iap_web + /// * projects/{project_id}/iap_web/compute + /// * projects/{project_id}/iap_web/compute-{region} + /// * projects/{project_id}/iap_web/compute/services/{service_id} + /// * projects/{project_id}/iap_web/compute-{region}/services/{service_id} + /// * projects/{project_id}/iap_web/appengine-{app_id} + /// * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id} + /// * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id} /// /// /// - - - @@ -249,15 +249,15 @@ public sealed class SettingsArgs : global::Pulumi.ResourceArgs /// The resource name of the IAP protected resource. Name can have below resources: /// * organizations/{organization_id} /// * folders/{folder_id} - /// * projects/{projects_id} - /// * projects/{projects_id}/iap_web - /// * projects/{projects_id}/iap_web/compute - /// * projects/{projects_id}/iap_web/compute-{region} - /// * projects/{projects_id}/iap_web/compute/service/{service_id} - /// * projects/{projects_id}/iap_web/compute-{region}/service/{service_id} - /// * projects/{projects_id}/iap_web/appengine-{app_id} - /// * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id} - /// * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id} + /// * projects/{project_id} + /// * projects/{project_id}/iap_web + /// * projects/{project_id}/iap_web/compute + /// * projects/{project_id}/iap_web/compute-{region} + /// * projects/{project_id}/iap_web/compute/services/{service_id} + /// * projects/{project_id}/iap_web/compute-{region}/services/{service_id} + /// * projects/{project_id}/iap_web/appengine-{app_id} + /// * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id} + /// * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id} /// /// /// - - - @@ -291,15 +291,15 @@ public sealed class SettingsState : global::Pulumi.ResourceArgs /// The resource name of the IAP protected resource. Name can have below resources: /// * organizations/{organization_id} /// * folders/{folder_id} - /// * projects/{projects_id} - /// * projects/{projects_id}/iap_web - /// * projects/{projects_id}/iap_web/compute - /// * projects/{projects_id}/iap_web/compute-{region} - /// * projects/{projects_id}/iap_web/compute/service/{service_id} - /// * projects/{projects_id}/iap_web/compute-{region}/service/{service_id} - /// * projects/{projects_id}/iap_web/appengine-{app_id} - /// * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id} - /// * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id} + /// * projects/{project_id} + /// * projects/{project_id}/iap_web + /// * projects/{project_id}/iap_web/compute + /// * projects/{project_id}/iap_web/compute-{region} + /// * projects/{project_id}/iap_web/compute/services/{service_id} + /// * projects/{project_id}/iap_web/compute-{region}/services/{service_id} + /// * projects/{project_id}/iap_web/appengine-{app_id} + /// * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id} + /// * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id} /// /// /// - - - diff --git a/sdk/dotnet/IdentityPlatform/Inputs/ConfigSignInAnonymousArgs.cs b/sdk/dotnet/IdentityPlatform/Inputs/ConfigSignInAnonymousArgs.cs index 3b01a9db1a..d9bef403fc 100644 --- a/sdk/dotnet/IdentityPlatform/Inputs/ConfigSignInAnonymousArgs.cs +++ b/sdk/dotnet/IdentityPlatform/Inputs/ConfigSignInAnonymousArgs.cs @@ -15,7 +15,7 @@ public sealed class ConfigSignInAnonymousArgs : global::Pulumi.ResourceArgs /// /// Whether anonymous user auth is enabled for the project or not. /// - /// <a name="nested_hash_config"></a>The `hash_config` block contains: + /// <a name="nested_sign_in_hash_config"></a>The `hash_config` block contains: /// [Input("enabled", required: true)] public Input Enabled { get; set; } = null!; diff --git a/sdk/dotnet/IdentityPlatform/Inputs/ConfigSignInAnonymousGetArgs.cs b/sdk/dotnet/IdentityPlatform/Inputs/ConfigSignInAnonymousGetArgs.cs index 5d4c7907f9..5c302fc04a 100644 --- a/sdk/dotnet/IdentityPlatform/Inputs/ConfigSignInAnonymousGetArgs.cs +++ b/sdk/dotnet/IdentityPlatform/Inputs/ConfigSignInAnonymousGetArgs.cs @@ -15,7 +15,7 @@ public sealed class ConfigSignInAnonymousGetArgs : global::Pulumi.ResourceArgs /// /// Whether anonymous user auth is enabled for the project or not. /// - /// <a name="nested_hash_config"></a>The `hash_config` block contains: + /// <a name="nested_sign_in_hash_config"></a>The `hash_config` block contains: /// [Input("enabled", required: true)] public Input Enabled { get; set; } = null!; diff --git a/sdk/dotnet/IdentityPlatform/Inputs/InboundSamlConfigSpConfigArgs.cs b/sdk/dotnet/IdentityPlatform/Inputs/InboundSamlConfigSpConfigArgs.cs index 0341d5de0a..db86e2d725 100644 --- a/sdk/dotnet/IdentityPlatform/Inputs/InboundSamlConfigSpConfigArgs.cs +++ b/sdk/dotnet/IdentityPlatform/Inputs/InboundSamlConfigSpConfigArgs.cs @@ -27,7 +27,7 @@ public sealed class InboundSamlConfigSpConfigArgs : global::Pulumi.ResourceArgs /// Structure is documented below. /// /// - /// <a name="nested_sp_certificates"></a>The `sp_certificates` block contains: + /// <a name="nested_sp_config_sp_certificates"></a>The `sp_certificates` block contains: /// public InputList SpCertificates { diff --git a/sdk/dotnet/IdentityPlatform/Inputs/InboundSamlConfigSpConfigGetArgs.cs b/sdk/dotnet/IdentityPlatform/Inputs/InboundSamlConfigSpConfigGetArgs.cs index fa1b7184dc..5b109d4f63 100644 --- a/sdk/dotnet/IdentityPlatform/Inputs/InboundSamlConfigSpConfigGetArgs.cs +++ b/sdk/dotnet/IdentityPlatform/Inputs/InboundSamlConfigSpConfigGetArgs.cs @@ -27,7 +27,7 @@ public sealed class InboundSamlConfigSpConfigGetArgs : global::Pulumi.ResourceAr /// Structure is documented below. /// /// - /// <a name="nested_sp_certificates"></a>The `sp_certificates` block contains: + /// <a name="nested_sp_config_sp_certificates"></a>The `sp_certificates` block contains: /// public InputList SpCertificates { diff --git a/sdk/dotnet/IdentityPlatform/Inputs/TenantInboundSamlConfigSpConfigArgs.cs b/sdk/dotnet/IdentityPlatform/Inputs/TenantInboundSamlConfigSpConfigArgs.cs index becb872580..7118c1ec04 100644 --- a/sdk/dotnet/IdentityPlatform/Inputs/TenantInboundSamlConfigSpConfigArgs.cs +++ b/sdk/dotnet/IdentityPlatform/Inputs/TenantInboundSamlConfigSpConfigArgs.cs @@ -27,7 +27,7 @@ public sealed class TenantInboundSamlConfigSpConfigArgs : global::Pulumi.Resourc /// Structure is documented below. /// /// - /// <a name="nested_sp_certificates"></a>The `sp_certificates` block contains: + /// <a name="nested_sp_config_sp_certificates"></a>The `sp_certificates` block contains: /// public InputList SpCertificates { diff --git a/sdk/dotnet/IdentityPlatform/Inputs/TenantInboundSamlConfigSpConfigGetArgs.cs b/sdk/dotnet/IdentityPlatform/Inputs/TenantInboundSamlConfigSpConfigGetArgs.cs index 70bfc2d175..2882c83a62 100644 --- a/sdk/dotnet/IdentityPlatform/Inputs/TenantInboundSamlConfigSpConfigGetArgs.cs +++ b/sdk/dotnet/IdentityPlatform/Inputs/TenantInboundSamlConfigSpConfigGetArgs.cs @@ -27,7 +27,7 @@ public sealed class TenantInboundSamlConfigSpConfigGetArgs : global::Pulumi.Reso /// Structure is documented below. /// /// - /// <a name="nested_sp_certificates"></a>The `sp_certificates` block contains: + /// <a name="nested_sp_config_sp_certificates"></a>The `sp_certificates` block contains: /// public InputList SpCertificates { diff --git a/sdk/dotnet/IdentityPlatform/Outputs/ConfigSignInAnonymous.cs b/sdk/dotnet/IdentityPlatform/Outputs/ConfigSignInAnonymous.cs index 12652c5502..d787e77ea2 100644 --- a/sdk/dotnet/IdentityPlatform/Outputs/ConfigSignInAnonymous.cs +++ b/sdk/dotnet/IdentityPlatform/Outputs/ConfigSignInAnonymous.cs @@ -16,7 +16,7 @@ public sealed class ConfigSignInAnonymous /// /// Whether anonymous user auth is enabled for the project or not. /// - /// <a name="nested_hash_config"></a>The `hash_config` block contains: + /// <a name="nested_sign_in_hash_config"></a>The `hash_config` block contains: /// public readonly bool Enabled; diff --git a/sdk/dotnet/IdentityPlatform/Outputs/InboundSamlConfigSpConfig.cs b/sdk/dotnet/IdentityPlatform/Outputs/InboundSamlConfigSpConfig.cs index c008a77140..1eab701acf 100644 --- a/sdk/dotnet/IdentityPlatform/Outputs/InboundSamlConfigSpConfig.cs +++ b/sdk/dotnet/IdentityPlatform/Outputs/InboundSamlConfigSpConfig.cs @@ -23,7 +23,7 @@ public sealed class InboundSamlConfigSpConfig /// Structure is documented below. /// /// - /// <a name="nested_sp_certificates"></a>The `sp_certificates` block contains: + /// <a name="nested_sp_config_sp_certificates"></a>The `sp_certificates` block contains: /// public readonly ImmutableArray SpCertificates; /// diff --git a/sdk/dotnet/IdentityPlatform/Outputs/TenantInboundSamlConfigSpConfig.cs b/sdk/dotnet/IdentityPlatform/Outputs/TenantInboundSamlConfigSpConfig.cs index 43a857c2f0..225ba07c4c 100644 --- a/sdk/dotnet/IdentityPlatform/Outputs/TenantInboundSamlConfigSpConfig.cs +++ b/sdk/dotnet/IdentityPlatform/Outputs/TenantInboundSamlConfigSpConfig.cs @@ -23,7 +23,7 @@ public sealed class TenantInboundSamlConfigSpConfig /// Structure is documented below. /// /// - /// <a name="nested_sp_certificates"></a>The `sp_certificates` block contains: + /// <a name="nested_sp_config_sp_certificates"></a>The `sp_certificates` block contains: /// public readonly ImmutableArray SpCertificates; /// diff --git a/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionAuthConfigOauth2JwtBearerJwtClaimsArgs.cs b/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionAuthConfigOauth2JwtBearerJwtClaimsArgs.cs index 64cde9480d..99dcd91881 100644 --- a/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionAuthConfigOauth2JwtBearerJwtClaimsArgs.cs +++ b/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionAuthConfigOauth2JwtBearerJwtClaimsArgs.cs @@ -15,7 +15,7 @@ public sealed class ConnectionAuthConfigOauth2JwtBearerJwtClaimsArgs : global::P /// /// Value for the "aud" claim. /// - /// <a name="nested_oauth2_client_credentials"></a>The `oauth2_client_credentials` block supports: + /// <a name="nested_auth_config_oauth2_client_credentials"></a>The `oauth2_client_credentials` block supports: /// [Input("audience")] public Input? Audience { get; set; } diff --git a/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionAuthConfigOauth2JwtBearerJwtClaimsGetArgs.cs b/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionAuthConfigOauth2JwtBearerJwtClaimsGetArgs.cs index 25ea8508f8..58ff79de67 100644 --- a/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionAuthConfigOauth2JwtBearerJwtClaimsGetArgs.cs +++ b/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionAuthConfigOauth2JwtBearerJwtClaimsGetArgs.cs @@ -15,7 +15,7 @@ public sealed class ConnectionAuthConfigOauth2JwtBearerJwtClaimsGetArgs : global /// /// Value for the "aud" claim. /// - /// <a name="nested_oauth2_client_credentials"></a>The `oauth2_client_credentials` block supports: + /// <a name="nested_auth_config_oauth2_client_credentials"></a>The `oauth2_client_credentials` block supports: /// [Input("audience")] public Input? Audience { get; set; } diff --git a/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionAuthConfigSshPublicKeySshClientCertPassArgs.cs b/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionAuthConfigSshPublicKeySshClientCertPassArgs.cs index 5c3131938d..42d404275e 100644 --- a/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionAuthConfigSshPublicKeySshClientCertPassArgs.cs +++ b/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionAuthConfigSshPublicKeySshClientCertPassArgs.cs @@ -16,7 +16,7 @@ public sealed class ConnectionAuthConfigSshPublicKeySshClientCertPassArgs : glob /// The resource name of the secret version in the format, /// format as: projects/*/secrets/*/versions/*. /// - /// <a name="nested_oauth2_auth_code_flow"></a>The `oauth2_auth_code_flow` block supports: + /// <a name="nested_auth_config_oauth2_auth_code_flow"></a>The `oauth2_auth_code_flow` block supports: /// [Input("secretVersion", required: true)] public Input SecretVersion { get; set; } = null!; diff --git a/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionAuthConfigSshPublicKeySshClientCertPassGetArgs.cs b/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionAuthConfigSshPublicKeySshClientCertPassGetArgs.cs index 00b6f304e1..f562973ea0 100644 --- a/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionAuthConfigSshPublicKeySshClientCertPassGetArgs.cs +++ b/sdk/dotnet/IntegrationConnectors/Inputs/ConnectionAuthConfigSshPublicKeySshClientCertPassGetArgs.cs @@ -16,7 +16,7 @@ public sealed class ConnectionAuthConfigSshPublicKeySshClientCertPassGetArgs : g /// The resource name of the secret version in the format, /// format as: projects/*/secrets/*/versions/*. /// - /// <a name="nested_oauth2_auth_code_flow"></a>The `oauth2_auth_code_flow` block supports: + /// <a name="nested_auth_config_oauth2_auth_code_flow"></a>The `oauth2_auth_code_flow` block supports: /// [Input("secretVersion", required: true)] public Input SecretVersion { get; set; } = null!; diff --git a/sdk/dotnet/IntegrationConnectors/Outputs/ConnectionAuthConfigOauth2JwtBearerJwtClaims.cs b/sdk/dotnet/IntegrationConnectors/Outputs/ConnectionAuthConfigOauth2JwtBearerJwtClaims.cs index 1ce49d01dc..845e426034 100644 --- a/sdk/dotnet/IntegrationConnectors/Outputs/ConnectionAuthConfigOauth2JwtBearerJwtClaims.cs +++ b/sdk/dotnet/IntegrationConnectors/Outputs/ConnectionAuthConfigOauth2JwtBearerJwtClaims.cs @@ -16,7 +16,7 @@ public sealed class ConnectionAuthConfigOauth2JwtBearerJwtClaims /// /// Value for the "aud" claim. /// - /// <a name="nested_oauth2_client_credentials"></a>The `oauth2_client_credentials` block supports: + /// <a name="nested_auth_config_oauth2_client_credentials"></a>The `oauth2_client_credentials` block supports: /// public readonly string? Audience; /// diff --git a/sdk/dotnet/IntegrationConnectors/Outputs/ConnectionAuthConfigSshPublicKeySshClientCertPass.cs b/sdk/dotnet/IntegrationConnectors/Outputs/ConnectionAuthConfigSshPublicKeySshClientCertPass.cs index 0d0b5c5f69..b18192aa55 100644 --- a/sdk/dotnet/IntegrationConnectors/Outputs/ConnectionAuthConfigSshPublicKeySshClientCertPass.cs +++ b/sdk/dotnet/IntegrationConnectors/Outputs/ConnectionAuthConfigSshPublicKeySshClientCertPass.cs @@ -17,7 +17,7 @@ public sealed class ConnectionAuthConfigSshPublicKeySshClientCertPass /// The resource name of the secret version in the format, /// format as: projects/*/secrets/*/versions/*. /// - /// <a name="nested_oauth2_auth_code_flow"></a>The `oauth2_auth_code_flow` block supports: + /// <a name="nested_auth_config_oauth2_auth_code_flow"></a>The `oauth2_auth_code_flow` block supports: /// public readonly string SecretVersion; diff --git a/sdk/dotnet/Monitoring/Inputs/UptimeCheckConfigSyntheticMonitorArgs.cs b/sdk/dotnet/Monitoring/Inputs/UptimeCheckConfigSyntheticMonitorArgs.cs index 393cc19aa4..30505ecee8 100644 --- a/sdk/dotnet/Monitoring/Inputs/UptimeCheckConfigSyntheticMonitorArgs.cs +++ b/sdk/dotnet/Monitoring/Inputs/UptimeCheckConfigSyntheticMonitorArgs.cs @@ -17,7 +17,7 @@ public sealed class UptimeCheckConfigSyntheticMonitorArgs : global::Pulumi.Resou /// Structure is documented below. /// /// - /// <a name="nested_cloud_function_v2"></a>The `cloud_function_v2` block supports: + /// <a name="nested_synthetic_monitor_cloud_function_v2"></a>The `cloud_function_v2` block supports: /// [Input("cloudFunctionV2", required: true)] public Input CloudFunctionV2 { get; set; } = null!; diff --git a/sdk/dotnet/Monitoring/Inputs/UptimeCheckConfigSyntheticMonitorGetArgs.cs b/sdk/dotnet/Monitoring/Inputs/UptimeCheckConfigSyntheticMonitorGetArgs.cs index e737404da4..35f07e1c59 100644 --- a/sdk/dotnet/Monitoring/Inputs/UptimeCheckConfigSyntheticMonitorGetArgs.cs +++ b/sdk/dotnet/Monitoring/Inputs/UptimeCheckConfigSyntheticMonitorGetArgs.cs @@ -17,7 +17,7 @@ public sealed class UptimeCheckConfigSyntheticMonitorGetArgs : global::Pulumi.Re /// Structure is documented below. /// /// - /// <a name="nested_cloud_function_v2"></a>The `cloud_function_v2` block supports: + /// <a name="nested_synthetic_monitor_cloud_function_v2"></a>The `cloud_function_v2` block supports: /// [Input("cloudFunctionV2", required: true)] public Input CloudFunctionV2 { get; set; } = null!; diff --git a/sdk/dotnet/Monitoring/Outputs/UptimeCheckConfigSyntheticMonitor.cs b/sdk/dotnet/Monitoring/Outputs/UptimeCheckConfigSyntheticMonitor.cs index 20c260a297..be13f88dfd 100644 --- a/sdk/dotnet/Monitoring/Outputs/UptimeCheckConfigSyntheticMonitor.cs +++ b/sdk/dotnet/Monitoring/Outputs/UptimeCheckConfigSyntheticMonitor.cs @@ -18,7 +18,7 @@ public sealed class UptimeCheckConfigSyntheticMonitor /// Structure is documented below. /// /// - /// <a name="nested_cloud_function_v2"></a>The `cloud_function_v2` block supports: + /// <a name="nested_synthetic_monitor_cloud_function_v2"></a>The `cloud_function_v2` block supports: /// public readonly Outputs.UptimeCheckConfigSyntheticMonitorCloudFunctionV2 CloudFunctionV2; diff --git a/sdk/dotnet/OracleDatabase/Inputs/AutonomousDatabasePropertiesCustomerContactArgs.cs b/sdk/dotnet/OracleDatabase/Inputs/AutonomousDatabasePropertiesCustomerContactArgs.cs index 77c1123416..bc211cc789 100644 --- a/sdk/dotnet/OracleDatabase/Inputs/AutonomousDatabasePropertiesCustomerContactArgs.cs +++ b/sdk/dotnet/OracleDatabase/Inputs/AutonomousDatabasePropertiesCustomerContactArgs.cs @@ -16,7 +16,7 @@ public sealed class AutonomousDatabasePropertiesCustomerContactArgs : global::Pu /// The email address used by Oracle to send notifications regarding databases /// and infrastructure. /// - /// <a name="nested_apex_details"></a>The `apex_details` block contains: + /// <a name="nested_properties_apex_details"></a>The `apex_details` block contains: /// [Input("email", required: true)] public Input Email { get; set; } = null!; diff --git a/sdk/dotnet/OracleDatabase/Inputs/AutonomousDatabasePropertiesCustomerContactGetArgs.cs b/sdk/dotnet/OracleDatabase/Inputs/AutonomousDatabasePropertiesCustomerContactGetArgs.cs index 1500739196..880d18911e 100644 --- a/sdk/dotnet/OracleDatabase/Inputs/AutonomousDatabasePropertiesCustomerContactGetArgs.cs +++ b/sdk/dotnet/OracleDatabase/Inputs/AutonomousDatabasePropertiesCustomerContactGetArgs.cs @@ -16,7 +16,7 @@ public sealed class AutonomousDatabasePropertiesCustomerContactGetArgs : global: /// The email address used by Oracle to send notifications regarding databases /// and infrastructure. /// - /// <a name="nested_apex_details"></a>The `apex_details` block contains: + /// <a name="nested_properties_apex_details"></a>The `apex_details` block contains: /// [Input("email", required: true)] public Input Email { get; set; } = null!; diff --git a/sdk/dotnet/OracleDatabase/Outputs/AutonomousDatabasePropertiesCustomerContact.cs b/sdk/dotnet/OracleDatabase/Outputs/AutonomousDatabasePropertiesCustomerContact.cs index 01444ce9ff..4f431a82f7 100644 --- a/sdk/dotnet/OracleDatabase/Outputs/AutonomousDatabasePropertiesCustomerContact.cs +++ b/sdk/dotnet/OracleDatabase/Outputs/AutonomousDatabasePropertiesCustomerContact.cs @@ -17,7 +17,7 @@ public sealed class AutonomousDatabasePropertiesCustomerContact /// The email address used by Oracle to send notifications regarding databases /// and infrastructure. /// - /// <a name="nested_apex_details"></a>The `apex_details` block contains: + /// <a name="nested_properties_apex_details"></a>The `apex_details` block contains: /// public readonly string Email; diff --git a/sdk/dotnet/Sql/DatabaseInstance.cs b/sdk/dotnet/Sql/DatabaseInstance.cs index 0aeae5ba5a..6ddef6b66c 100644 --- a/sdk/dotnet/Sql/DatabaseInstance.cs +++ b/sdk/dotnet/Sql/DatabaseInstance.cs @@ -10,7 +10,7 @@ namespace Pulumi.Gcp.Sql { /// - /// Creates a new Google SQL Database Instance. For more information, see the [official documentation](https://cloud.google.com/sql/), + /// Creates a new Google SQL Database Instance. For more information, see the [official documentation](https://cloud.google.com/sql/docs/mysql/create-instance), /// or the [JSON API](https://cloud.google.com/sql/docs/admin-api/v1beta4/instances). /// /// > **NOTE on `gcp.sql.DatabaseInstance`:** - Second-generation instances include a diff --git a/sdk/dotnet/Sql/Inputs/DatabaseInstanceSettingsIpConfigurationArgs.cs b/sdk/dotnet/Sql/Inputs/DatabaseInstanceSettingsIpConfigurationArgs.cs index f27325adaf..c5b7ecce15 100644 --- a/sdk/dotnet/Sql/Inputs/DatabaseInstanceSettingsIpConfigurationArgs.cs +++ b/sdk/dotnet/Sql/Inputs/DatabaseInstanceSettingsIpConfigurationArgs.cs @@ -68,6 +68,12 @@ public InputList Ps [Input("serverCaMode")] public Input? ServerCaMode { get; set; } + /// + /// The resource name of the server CA pool for an instance with `CUSTOMER_MANAGED_CAS_CA` as the `server_ca_mode`. + /// + [Input("serverCaPool")] + public Input? ServerCaPool { get; set; } + /// /// Specify how SSL connection should be enforced in DB connections. Supported values are `ALLOW_UNENCRYPTED_AND_ENCRYPTED`, `ENCRYPTED_ONLY`, and `TRUSTED_CLIENT_CERTIFICATE_REQUIRED` (not supported for SQL Server). See [API reference doc](https://cloud.google.com/sql/docs/postgres/admin-api/rest/v1/instances#ipconfiguration) for details. /// diff --git a/sdk/dotnet/Sql/Inputs/DatabaseInstanceSettingsIpConfigurationGetArgs.cs b/sdk/dotnet/Sql/Inputs/DatabaseInstanceSettingsIpConfigurationGetArgs.cs index 1137d32fd1..8f7926202d 100644 --- a/sdk/dotnet/Sql/Inputs/DatabaseInstanceSettingsIpConfigurationGetArgs.cs +++ b/sdk/dotnet/Sql/Inputs/DatabaseInstanceSettingsIpConfigurationGetArgs.cs @@ -68,6 +68,12 @@ public InputList [Input("serverCaMode")] public Input? ServerCaMode { get; set; } + /// + /// The resource name of the server CA pool for an instance with `CUSTOMER_MANAGED_CAS_CA` as the `server_ca_mode`. + /// + [Input("serverCaPool")] + public Input? ServerCaPool { get; set; } + /// /// Specify how SSL connection should be enforced in DB connections. Supported values are `ALLOW_UNENCRYPTED_AND_ENCRYPTED`, `ENCRYPTED_ONLY`, and `TRUSTED_CLIENT_CERTIFICATE_REQUIRED` (not supported for SQL Server). See [API reference doc](https://cloud.google.com/sql/docs/postgres/admin-api/rest/v1/instances#ipconfiguration) for details. /// diff --git a/sdk/dotnet/Sql/Outputs/DatabaseInstanceSettingsIpConfiguration.cs b/sdk/dotnet/Sql/Outputs/DatabaseInstanceSettingsIpConfiguration.cs index e9864970e9..e38930018c 100644 --- a/sdk/dotnet/Sql/Outputs/DatabaseInstanceSettingsIpConfiguration.cs +++ b/sdk/dotnet/Sql/Outputs/DatabaseInstanceSettingsIpConfiguration.cs @@ -45,6 +45,10 @@ public sealed class DatabaseInstanceSettingsIpConfiguration /// public readonly string? ServerCaMode; /// + /// The resource name of the server CA pool for an instance with `CUSTOMER_MANAGED_CAS_CA` as the `server_ca_mode`. + /// + public readonly string? ServerCaPool; + /// /// Specify how SSL connection should be enforced in DB connections. Supported values are `ALLOW_UNENCRYPTED_AND_ENCRYPTED`, `ENCRYPTED_ONLY`, and `TRUSTED_CLIENT_CERTIFICATE_REQUIRED` (not supported for SQL Server). See [API reference doc](https://cloud.google.com/sql/docs/postgres/admin-api/rest/v1/instances#ipconfiguration) for details. /// public readonly string? SslMode; @@ -65,6 +69,8 @@ private DatabaseInstanceSettingsIpConfiguration( string? serverCaMode, + string? serverCaPool, + string? sslMode) { AllocatedIpRange = allocatedIpRange; @@ -74,6 +80,7 @@ private DatabaseInstanceSettingsIpConfiguration( PrivateNetwork = privateNetwork; PscConfigs = pscConfigs; ServerCaMode = serverCaMode; + ServerCaPool = serverCaPool; SslMode = sslMode; } } diff --git a/sdk/dotnet/Sql/Outputs/GetDatabaseInstanceSettingIpConfigurationResult.cs b/sdk/dotnet/Sql/Outputs/GetDatabaseInstanceSettingIpConfigurationResult.cs index 4b4d6dc8bb..2aeb35068d 100644 --- a/sdk/dotnet/Sql/Outputs/GetDatabaseInstanceSettingIpConfigurationResult.cs +++ b/sdk/dotnet/Sql/Outputs/GetDatabaseInstanceSettingIpConfigurationResult.cs @@ -39,6 +39,10 @@ public sealed class GetDatabaseInstanceSettingIpConfigurationResult /// public readonly string ServerCaMode; /// + /// The resource name of the server CA pool for an instance with "CUSTOMER_MANAGED_CAS_CA" as the "server_ca_mode". + /// + public readonly string ServerCaPool; + /// /// Specify how SSL connection should be enforced in DB connections. /// public readonly string SslMode; @@ -59,6 +63,8 @@ private GetDatabaseInstanceSettingIpConfigurationResult( string serverCaMode, + string serverCaPool, + string sslMode) { AllocatedIpRange = allocatedIpRange; @@ -68,6 +74,7 @@ private GetDatabaseInstanceSettingIpConfigurationResult( PrivateNetwork = privateNetwork; PscConfigs = pscConfigs; ServerCaMode = serverCaMode; + ServerCaPool = serverCaPool; SslMode = sslMode; } } diff --git a/sdk/dotnet/Sql/Outputs/GetDatabaseInstancesInstanceSettingIpConfigurationResult.cs b/sdk/dotnet/Sql/Outputs/GetDatabaseInstancesInstanceSettingIpConfigurationResult.cs index a9800b1b2f..36358a4709 100644 --- a/sdk/dotnet/Sql/Outputs/GetDatabaseInstancesInstanceSettingIpConfigurationResult.cs +++ b/sdk/dotnet/Sql/Outputs/GetDatabaseInstancesInstanceSettingIpConfigurationResult.cs @@ -39,6 +39,10 @@ public sealed class GetDatabaseInstancesInstanceSettingIpConfigurationResult /// public readonly string ServerCaMode; /// + /// The resource name of the server CA pool for an instance with "CUSTOMER_MANAGED_CAS_CA" as the "server_ca_mode". + /// + public readonly string ServerCaPool; + /// /// Specify how SSL connection should be enforced in DB connections. /// public readonly string SslMode; @@ -59,6 +63,8 @@ private GetDatabaseInstancesInstanceSettingIpConfigurationResult( string serverCaMode, + string serverCaPool, + string sslMode) { AllocatedIpRange = allocatedIpRange; @@ -68,6 +74,7 @@ private GetDatabaseInstancesInstanceSettingIpConfigurationResult( PrivateNetwork = privateNetwork; PscConfigs = pscConfigs; ServerCaMode = serverCaMode; + ServerCaPool = serverCaPool; SslMode = sslMode; } } diff --git a/sdk/dotnet/Transcoder/Inputs/JobConfigElementaryStreamVideoStreamArgs.cs b/sdk/dotnet/Transcoder/Inputs/JobConfigElementaryStreamVideoStreamArgs.cs index a0ccad8e40..c7235baf99 100644 --- a/sdk/dotnet/Transcoder/Inputs/JobConfigElementaryStreamVideoStreamArgs.cs +++ b/sdk/dotnet/Transcoder/Inputs/JobConfigElementaryStreamVideoStreamArgs.cs @@ -17,7 +17,7 @@ public sealed class JobConfigElementaryStreamVideoStreamArgs : global::Pulumi.Re /// Structure is documented below. /// /// - /// <a name="nested_h264"></a>The `h264` block supports: + /// <a name="nested_config_elementary_streams_elementary_streams_video_stream_h264"></a>The `h264` block supports: /// [Input("h264")] public Input? H264 { get; set; } diff --git a/sdk/dotnet/Transcoder/Inputs/JobConfigElementaryStreamVideoStreamGetArgs.cs b/sdk/dotnet/Transcoder/Inputs/JobConfigElementaryStreamVideoStreamGetArgs.cs index a22f6dbe87..9743884e9b 100644 --- a/sdk/dotnet/Transcoder/Inputs/JobConfigElementaryStreamVideoStreamGetArgs.cs +++ b/sdk/dotnet/Transcoder/Inputs/JobConfigElementaryStreamVideoStreamGetArgs.cs @@ -17,7 +17,7 @@ public sealed class JobConfigElementaryStreamVideoStreamGetArgs : global::Pulumi /// Structure is documented below. /// /// - /// <a name="nested_h264"></a>The `h264` block supports: + /// <a name="nested_config_elementary_streams_elementary_streams_video_stream_h264"></a>The `h264` block supports: /// [Input("h264")] public Input? H264 { get; set; } diff --git a/sdk/dotnet/Transcoder/Inputs/JobTemplateConfigElementaryStreamVideoStreamArgs.cs b/sdk/dotnet/Transcoder/Inputs/JobTemplateConfigElementaryStreamVideoStreamArgs.cs index a0d94c5ab0..81e475fece 100644 --- a/sdk/dotnet/Transcoder/Inputs/JobTemplateConfigElementaryStreamVideoStreamArgs.cs +++ b/sdk/dotnet/Transcoder/Inputs/JobTemplateConfigElementaryStreamVideoStreamArgs.cs @@ -17,7 +17,7 @@ public sealed class JobTemplateConfigElementaryStreamVideoStreamArgs : global::P /// Structure is documented below. /// /// - /// <a name="nested_h264"></a>The `h264` block supports: + /// <a name="nested_config_elementary_streams_elementary_streams_video_stream_h264"></a>The `h264` block supports: /// [Input("h264")] public Input? H264 { get; set; } diff --git a/sdk/dotnet/Transcoder/Inputs/JobTemplateConfigElementaryStreamVideoStreamGetArgs.cs b/sdk/dotnet/Transcoder/Inputs/JobTemplateConfigElementaryStreamVideoStreamGetArgs.cs index e09b4b70ad..addfb43956 100644 --- a/sdk/dotnet/Transcoder/Inputs/JobTemplateConfigElementaryStreamVideoStreamGetArgs.cs +++ b/sdk/dotnet/Transcoder/Inputs/JobTemplateConfigElementaryStreamVideoStreamGetArgs.cs @@ -17,7 +17,7 @@ public sealed class JobTemplateConfigElementaryStreamVideoStreamGetArgs : global /// Structure is documented below. /// /// - /// <a name="nested_h264"></a>The `h264` block supports: + /// <a name="nested_config_elementary_streams_elementary_streams_video_stream_h264"></a>The `h264` block supports: /// [Input("h264")] public Input? H264 { get; set; } diff --git a/sdk/dotnet/Transcoder/Outputs/JobConfigElementaryStreamVideoStream.cs b/sdk/dotnet/Transcoder/Outputs/JobConfigElementaryStreamVideoStream.cs index 071acb8444..4b130df81b 100644 --- a/sdk/dotnet/Transcoder/Outputs/JobConfigElementaryStreamVideoStream.cs +++ b/sdk/dotnet/Transcoder/Outputs/JobConfigElementaryStreamVideoStream.cs @@ -18,7 +18,7 @@ public sealed class JobConfigElementaryStreamVideoStream /// Structure is documented below. /// /// - /// <a name="nested_h264"></a>The `h264` block supports: + /// <a name="nested_config_elementary_streams_elementary_streams_video_stream_h264"></a>The `h264` block supports: /// public readonly Outputs.JobConfigElementaryStreamVideoStreamH264? H264; diff --git a/sdk/dotnet/Transcoder/Outputs/JobTemplateConfigElementaryStreamVideoStream.cs b/sdk/dotnet/Transcoder/Outputs/JobTemplateConfigElementaryStreamVideoStream.cs index ea2f8a886a..d283baf603 100644 --- a/sdk/dotnet/Transcoder/Outputs/JobTemplateConfigElementaryStreamVideoStream.cs +++ b/sdk/dotnet/Transcoder/Outputs/JobTemplateConfigElementaryStreamVideoStream.cs @@ -18,7 +18,7 @@ public sealed class JobTemplateConfigElementaryStreamVideoStream /// Structure is documented below. /// /// - /// <a name="nested_h264"></a>The `h264` block supports: + /// <a name="nested_config_elementary_streams_elementary_streams_video_stream_h264"></a>The `h264` block supports: /// public readonly Outputs.JobTemplateConfigElementaryStreamVideoStreamH264? H264; diff --git a/sdk/go/gcp/applicationintegration/pulumiTypes.go b/sdk/go/gcp/applicationintegration/pulumiTypes.go index 783efef161..eb7fdf7137 100644 --- a/sdk/go/gcp/applicationintegration/pulumiTypes.go +++ b/sdk/go/gcp/applicationintegration/pulumiTypes.go @@ -2487,7 +2487,7 @@ func (o AuthConfigDecryptedCredentialServiceAccountCredentialsPtrOutput) Service type AuthConfigDecryptedCredentialUsernameAndPassword struct { // Password to be used. // - // The `oauth2AuthorizationCode` block supports: + // The `oauth2AuthorizationCode` block supports: Password *string `pulumi:"password"` // Username to be used. Username *string `pulumi:"username"` @@ -2507,7 +2507,7 @@ type AuthConfigDecryptedCredentialUsernameAndPasswordInput interface { type AuthConfigDecryptedCredentialUsernameAndPasswordArgs struct { // Password to be used. // - // The `oauth2AuthorizationCode` block supports: + // The `oauth2AuthorizationCode` block supports: Password pulumi.StringPtrInput `pulumi:"password"` // Username to be used. Username pulumi.StringPtrInput `pulumi:"username"` @@ -2592,7 +2592,7 @@ func (o AuthConfigDecryptedCredentialUsernameAndPasswordOutput) ToAuthConfigDecr // Password to be used. // -// The `oauth2AuthorizationCode` block supports: +// The `oauth2AuthorizationCode` block supports: func (o AuthConfigDecryptedCredentialUsernameAndPasswordOutput) Password() pulumi.StringPtrOutput { return o.ApplyT(func(v AuthConfigDecryptedCredentialUsernameAndPassword) *string { return v.Password }).(pulumi.StringPtrOutput) } @@ -2628,7 +2628,7 @@ func (o AuthConfigDecryptedCredentialUsernameAndPasswordPtrOutput) Elem() AuthCo // Password to be used. // -// The `oauth2AuthorizationCode` block supports: +// The `oauth2AuthorizationCode` block supports: func (o AuthConfigDecryptedCredentialUsernameAndPasswordPtrOutput) Password() pulumi.StringPtrOutput { return o.ApplyT(func(v *AuthConfigDecryptedCredentialUsernameAndPassword) *string { if v == nil { diff --git a/sdk/go/gcp/beyondcorp/init.go b/sdk/go/gcp/beyondcorp/init.go index 5f4e14f8e2..a6e0d0a7bd 100644 --- a/sdk/go/gcp/beyondcorp/init.go +++ b/sdk/go/gcp/beyondcorp/init.go @@ -27,6 +27,8 @@ func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi r = &AppConnector{} case "gcp:beyondcorp/appGateway:AppGateway": r = &AppGateway{} + case "gcp:beyondcorp/securityGateway:SecurityGateway": + r = &SecurityGateway{} default: return nil, fmt.Errorf("unknown resource type: %s", typ) } @@ -55,4 +57,9 @@ func init() { "beyondcorp/appGateway", &module{version}, ) + pulumi.RegisterResourceModule( + "gcp", + "beyondcorp/securityGateway", + &module{version}, + ) } diff --git a/sdk/go/gcp/beyondcorp/pulumiTypes.go b/sdk/go/gcp/beyondcorp/pulumiTypes.go index 04d24c4dad..ef6c711824 100644 --- a/sdk/go/gcp/beyondcorp/pulumiTypes.go +++ b/sdk/go/gcp/beyondcorp/pulumiTypes.go @@ -779,6 +779,256 @@ func (o AppGatewayAllocatedConnectionArrayOutput) Index(i pulumi.IntInput) AppGa }).(AppGatewayAllocatedConnectionOutput) } +type SecurityGatewayHub struct { + // Internet Gateway configuration. + // Structure is documented below. + InternetGateway *SecurityGatewayHubInternetGateway `pulumi:"internetGateway"` + // The identifier for this object. Format specified above. + Region string `pulumi:"region"` +} + +// SecurityGatewayHubInput is an input type that accepts SecurityGatewayHubArgs and SecurityGatewayHubOutput values. +// You can construct a concrete instance of `SecurityGatewayHubInput` via: +// +// SecurityGatewayHubArgs{...} +type SecurityGatewayHubInput interface { + pulumi.Input + + ToSecurityGatewayHubOutput() SecurityGatewayHubOutput + ToSecurityGatewayHubOutputWithContext(context.Context) SecurityGatewayHubOutput +} + +type SecurityGatewayHubArgs struct { + // Internet Gateway configuration. + // Structure is documented below. + InternetGateway SecurityGatewayHubInternetGatewayPtrInput `pulumi:"internetGateway"` + // The identifier for this object. Format specified above. + Region pulumi.StringInput `pulumi:"region"` +} + +func (SecurityGatewayHubArgs) ElementType() reflect.Type { + return reflect.TypeOf((*SecurityGatewayHub)(nil)).Elem() +} + +func (i SecurityGatewayHubArgs) ToSecurityGatewayHubOutput() SecurityGatewayHubOutput { + return i.ToSecurityGatewayHubOutputWithContext(context.Background()) +} + +func (i SecurityGatewayHubArgs) ToSecurityGatewayHubOutputWithContext(ctx context.Context) SecurityGatewayHubOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecurityGatewayHubOutput) +} + +// SecurityGatewayHubArrayInput is an input type that accepts SecurityGatewayHubArray and SecurityGatewayHubArrayOutput values. +// You can construct a concrete instance of `SecurityGatewayHubArrayInput` via: +// +// SecurityGatewayHubArray{ SecurityGatewayHubArgs{...} } +type SecurityGatewayHubArrayInput interface { + pulumi.Input + + ToSecurityGatewayHubArrayOutput() SecurityGatewayHubArrayOutput + ToSecurityGatewayHubArrayOutputWithContext(context.Context) SecurityGatewayHubArrayOutput +} + +type SecurityGatewayHubArray []SecurityGatewayHubInput + +func (SecurityGatewayHubArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]SecurityGatewayHub)(nil)).Elem() +} + +func (i SecurityGatewayHubArray) ToSecurityGatewayHubArrayOutput() SecurityGatewayHubArrayOutput { + return i.ToSecurityGatewayHubArrayOutputWithContext(context.Background()) +} + +func (i SecurityGatewayHubArray) ToSecurityGatewayHubArrayOutputWithContext(ctx context.Context) SecurityGatewayHubArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecurityGatewayHubArrayOutput) +} + +type SecurityGatewayHubOutput struct{ *pulumi.OutputState } + +func (SecurityGatewayHubOutput) ElementType() reflect.Type { + return reflect.TypeOf((*SecurityGatewayHub)(nil)).Elem() +} + +func (o SecurityGatewayHubOutput) ToSecurityGatewayHubOutput() SecurityGatewayHubOutput { + return o +} + +func (o SecurityGatewayHubOutput) ToSecurityGatewayHubOutputWithContext(ctx context.Context) SecurityGatewayHubOutput { + return o +} + +// Internet Gateway configuration. +// Structure is documented below. +func (o SecurityGatewayHubOutput) InternetGateway() SecurityGatewayHubInternetGatewayPtrOutput { + return o.ApplyT(func(v SecurityGatewayHub) *SecurityGatewayHubInternetGateway { return v.InternetGateway }).(SecurityGatewayHubInternetGatewayPtrOutput) +} + +// The identifier for this object. Format specified above. +func (o SecurityGatewayHubOutput) Region() pulumi.StringOutput { + return o.ApplyT(func(v SecurityGatewayHub) string { return v.Region }).(pulumi.StringOutput) +} + +type SecurityGatewayHubArrayOutput struct{ *pulumi.OutputState } + +func (SecurityGatewayHubArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]SecurityGatewayHub)(nil)).Elem() +} + +func (o SecurityGatewayHubArrayOutput) ToSecurityGatewayHubArrayOutput() SecurityGatewayHubArrayOutput { + return o +} + +func (o SecurityGatewayHubArrayOutput) ToSecurityGatewayHubArrayOutputWithContext(ctx context.Context) SecurityGatewayHubArrayOutput { + return o +} + +func (o SecurityGatewayHubArrayOutput) Index(i pulumi.IntInput) SecurityGatewayHubOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) SecurityGatewayHub { + return vs[0].([]SecurityGatewayHub)[vs[1].(int)] + }).(SecurityGatewayHubOutput) +} + +type SecurityGatewayHubInternetGateway struct { + // (Output) + // Output only. List of IP addresses assigned to the Cloud NAT. + AssignedIps []string `pulumi:"assignedIps"` +} + +// SecurityGatewayHubInternetGatewayInput is an input type that accepts SecurityGatewayHubInternetGatewayArgs and SecurityGatewayHubInternetGatewayOutput values. +// You can construct a concrete instance of `SecurityGatewayHubInternetGatewayInput` via: +// +// SecurityGatewayHubInternetGatewayArgs{...} +type SecurityGatewayHubInternetGatewayInput interface { + pulumi.Input + + ToSecurityGatewayHubInternetGatewayOutput() SecurityGatewayHubInternetGatewayOutput + ToSecurityGatewayHubInternetGatewayOutputWithContext(context.Context) SecurityGatewayHubInternetGatewayOutput +} + +type SecurityGatewayHubInternetGatewayArgs struct { + // (Output) + // Output only. List of IP addresses assigned to the Cloud NAT. + AssignedIps pulumi.StringArrayInput `pulumi:"assignedIps"` +} + +func (SecurityGatewayHubInternetGatewayArgs) ElementType() reflect.Type { + return reflect.TypeOf((*SecurityGatewayHubInternetGateway)(nil)).Elem() +} + +func (i SecurityGatewayHubInternetGatewayArgs) ToSecurityGatewayHubInternetGatewayOutput() SecurityGatewayHubInternetGatewayOutput { + return i.ToSecurityGatewayHubInternetGatewayOutputWithContext(context.Background()) +} + +func (i SecurityGatewayHubInternetGatewayArgs) ToSecurityGatewayHubInternetGatewayOutputWithContext(ctx context.Context) SecurityGatewayHubInternetGatewayOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecurityGatewayHubInternetGatewayOutput) +} + +func (i SecurityGatewayHubInternetGatewayArgs) ToSecurityGatewayHubInternetGatewayPtrOutput() SecurityGatewayHubInternetGatewayPtrOutput { + return i.ToSecurityGatewayHubInternetGatewayPtrOutputWithContext(context.Background()) +} + +func (i SecurityGatewayHubInternetGatewayArgs) ToSecurityGatewayHubInternetGatewayPtrOutputWithContext(ctx context.Context) SecurityGatewayHubInternetGatewayPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecurityGatewayHubInternetGatewayOutput).ToSecurityGatewayHubInternetGatewayPtrOutputWithContext(ctx) +} + +// SecurityGatewayHubInternetGatewayPtrInput is an input type that accepts SecurityGatewayHubInternetGatewayArgs, SecurityGatewayHubInternetGatewayPtr and SecurityGatewayHubInternetGatewayPtrOutput values. +// You can construct a concrete instance of `SecurityGatewayHubInternetGatewayPtrInput` via: +// +// SecurityGatewayHubInternetGatewayArgs{...} +// +// or: +// +// nil +type SecurityGatewayHubInternetGatewayPtrInput interface { + pulumi.Input + + ToSecurityGatewayHubInternetGatewayPtrOutput() SecurityGatewayHubInternetGatewayPtrOutput + ToSecurityGatewayHubInternetGatewayPtrOutputWithContext(context.Context) SecurityGatewayHubInternetGatewayPtrOutput +} + +type securityGatewayHubInternetGatewayPtrType SecurityGatewayHubInternetGatewayArgs + +func SecurityGatewayHubInternetGatewayPtr(v *SecurityGatewayHubInternetGatewayArgs) SecurityGatewayHubInternetGatewayPtrInput { + return (*securityGatewayHubInternetGatewayPtrType)(v) +} + +func (*securityGatewayHubInternetGatewayPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**SecurityGatewayHubInternetGateway)(nil)).Elem() +} + +func (i *securityGatewayHubInternetGatewayPtrType) ToSecurityGatewayHubInternetGatewayPtrOutput() SecurityGatewayHubInternetGatewayPtrOutput { + return i.ToSecurityGatewayHubInternetGatewayPtrOutputWithContext(context.Background()) +} + +func (i *securityGatewayHubInternetGatewayPtrType) ToSecurityGatewayHubInternetGatewayPtrOutputWithContext(ctx context.Context) SecurityGatewayHubInternetGatewayPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecurityGatewayHubInternetGatewayPtrOutput) +} + +type SecurityGatewayHubInternetGatewayOutput struct{ *pulumi.OutputState } + +func (SecurityGatewayHubInternetGatewayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*SecurityGatewayHubInternetGateway)(nil)).Elem() +} + +func (o SecurityGatewayHubInternetGatewayOutput) ToSecurityGatewayHubInternetGatewayOutput() SecurityGatewayHubInternetGatewayOutput { + return o +} + +func (o SecurityGatewayHubInternetGatewayOutput) ToSecurityGatewayHubInternetGatewayOutputWithContext(ctx context.Context) SecurityGatewayHubInternetGatewayOutput { + return o +} + +func (o SecurityGatewayHubInternetGatewayOutput) ToSecurityGatewayHubInternetGatewayPtrOutput() SecurityGatewayHubInternetGatewayPtrOutput { + return o.ToSecurityGatewayHubInternetGatewayPtrOutputWithContext(context.Background()) +} + +func (o SecurityGatewayHubInternetGatewayOutput) ToSecurityGatewayHubInternetGatewayPtrOutputWithContext(ctx context.Context) SecurityGatewayHubInternetGatewayPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v SecurityGatewayHubInternetGateway) *SecurityGatewayHubInternetGateway { + return &v + }).(SecurityGatewayHubInternetGatewayPtrOutput) +} + +// (Output) +// Output only. List of IP addresses assigned to the Cloud NAT. +func (o SecurityGatewayHubInternetGatewayOutput) AssignedIps() pulumi.StringArrayOutput { + return o.ApplyT(func(v SecurityGatewayHubInternetGateway) []string { return v.AssignedIps }).(pulumi.StringArrayOutput) +} + +type SecurityGatewayHubInternetGatewayPtrOutput struct{ *pulumi.OutputState } + +func (SecurityGatewayHubInternetGatewayPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**SecurityGatewayHubInternetGateway)(nil)).Elem() +} + +func (o SecurityGatewayHubInternetGatewayPtrOutput) ToSecurityGatewayHubInternetGatewayPtrOutput() SecurityGatewayHubInternetGatewayPtrOutput { + return o +} + +func (o SecurityGatewayHubInternetGatewayPtrOutput) ToSecurityGatewayHubInternetGatewayPtrOutputWithContext(ctx context.Context) SecurityGatewayHubInternetGatewayPtrOutput { + return o +} + +func (o SecurityGatewayHubInternetGatewayPtrOutput) Elem() SecurityGatewayHubInternetGatewayOutput { + return o.ApplyT(func(v *SecurityGatewayHubInternetGateway) SecurityGatewayHubInternetGateway { + if v != nil { + return *v + } + var ret SecurityGatewayHubInternetGateway + return ret + }).(SecurityGatewayHubInternetGatewayOutput) +} + +// (Output) +// Output only. List of IP addresses assigned to the Cloud NAT. +func (o SecurityGatewayHubInternetGatewayPtrOutput) AssignedIps() pulumi.StringArrayOutput { + return o.ApplyT(func(v *SecurityGatewayHubInternetGateway) []string { + if v == nil { + return nil + } + return v.AssignedIps + }).(pulumi.StringArrayOutput) +} + type GetAppConnectionApplicationEndpoint struct { // Hostname or IP address of the remote application endpoint. Host string `pulumi:"host"` @@ -1328,6 +1578,10 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*AppConnectorPrincipalInfoServiceAccountPtrInput)(nil)).Elem(), AppConnectorPrincipalInfoServiceAccountArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*AppGatewayAllocatedConnectionInput)(nil)).Elem(), AppGatewayAllocatedConnectionArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*AppGatewayAllocatedConnectionArrayInput)(nil)).Elem(), AppGatewayAllocatedConnectionArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*SecurityGatewayHubInput)(nil)).Elem(), SecurityGatewayHubArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*SecurityGatewayHubArrayInput)(nil)).Elem(), SecurityGatewayHubArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*SecurityGatewayHubInternetGatewayInput)(nil)).Elem(), SecurityGatewayHubInternetGatewayArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*SecurityGatewayHubInternetGatewayPtrInput)(nil)).Elem(), SecurityGatewayHubInternetGatewayArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetAppConnectionApplicationEndpointInput)(nil)).Elem(), GetAppConnectionApplicationEndpointArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetAppConnectionApplicationEndpointArrayInput)(nil)).Elem(), GetAppConnectionApplicationEndpointArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetAppConnectionGatewayInput)(nil)).Elem(), GetAppConnectionGatewayArgs{}) @@ -1348,6 +1602,10 @@ func init() { pulumi.RegisterOutputType(AppConnectorPrincipalInfoServiceAccountPtrOutput{}) pulumi.RegisterOutputType(AppGatewayAllocatedConnectionOutput{}) pulumi.RegisterOutputType(AppGatewayAllocatedConnectionArrayOutput{}) + pulumi.RegisterOutputType(SecurityGatewayHubOutput{}) + pulumi.RegisterOutputType(SecurityGatewayHubArrayOutput{}) + pulumi.RegisterOutputType(SecurityGatewayHubInternetGatewayOutput{}) + pulumi.RegisterOutputType(SecurityGatewayHubInternetGatewayPtrOutput{}) pulumi.RegisterOutputType(GetAppConnectionApplicationEndpointOutput{}) pulumi.RegisterOutputType(GetAppConnectionApplicationEndpointArrayOutput{}) pulumi.RegisterOutputType(GetAppConnectionGatewayOutput{}) diff --git a/sdk/go/gcp/beyondcorp/securityGateway.go b/sdk/go/gcp/beyondcorp/securityGateway.go new file mode 100644 index 0000000000..8c6306facf --- /dev/null +++ b/sdk/go/gcp/beyondcorp/securityGateway.go @@ -0,0 +1,486 @@ +// 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 beyondcorp + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Deployment of Security Gateway. +// +// ## Example Usage +// +// ### Beyondcorp Security Gateway Basic +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/beyondcorp" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := beyondcorp.NewSecurityGateway(ctx, "example", &beyondcorp.SecurityGatewayArgs{ +// SecurityGatewayId: pulumi.String("default"), +// Location: pulumi.String("global"), +// DisplayName: pulumi.String("My Security Gateway resource"), +// Hubs: beyondcorp.SecurityGatewayHubArray{ +// &beyondcorp.SecurityGatewayHubArgs{ +// Region: pulumi.String("us-central1"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// SecurityGateway can be imported using any of these accepted formats: +// +// * `projects/{{project}}/locations/{{location}}/securityGateways/{{security_gateway_id}}` +// +// * `{{project}}/{{location}}/{{security_gateway_id}}` +// +// * `{{location}}/{{security_gateway_id}}` +// +// When using the `pulumi import` command, SecurityGateway can be imported using one of the formats above. For example: +// +// ```sh +// $ pulumi import gcp:beyondcorp/securityGateway:SecurityGateway default projects/{{project}}/locations/{{location}}/securityGateways/{{security_gateway_id}} +// ``` +// +// ```sh +// $ pulumi import gcp:beyondcorp/securityGateway:SecurityGateway default {{project}}/{{location}}/{{security_gateway_id}} +// ``` +// +// ```sh +// $ pulumi import gcp:beyondcorp/securityGateway:SecurityGateway default {{location}}/{{security_gateway_id}} +// ``` +type SecurityGateway struct { + pulumi.CustomResourceState + + // Output only. Timestamp when the resource was created. + CreateTime pulumi.StringOutput `pulumi:"createTime"` + // Optional. An arbitrary user-provided name for the SecurityGateway. + // Cannot exceed 64 characters. + DisplayName pulumi.StringPtrOutput `pulumi:"displayName"` + // Output only. IP addresses that will be used for establishing + // connection to the endpoints. + ExternalIps pulumi.StringArrayOutput `pulumi:"externalIps"` + // Optional. Map of Hubs that represents regional data path deployment with GCP region + // as a key. + // Structure is documented below. + Hubs SecurityGatewayHubArrayOutput `pulumi:"hubs"` + // Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + Location pulumi.StringOutput `pulumi:"location"` + // Identifier. Name of the resource. + 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"` + // Optional. User-settable SecurityGateway resource ID. + // * Must start with a letter. + // * Must contain between 4-63 characters from `/a-z-/`. + // * Must end with a number or letter. + // + // *** + SecurityGatewayId pulumi.StringOutput `pulumi:"securityGatewayId"` + // Output only. The operational state of the SecurityGateway. + // Possible values: + // STATE_UNSPECIFIED + // CREATING + // UPDATING + // DELETING + // RUNNING + // DOWN + // ERROR + State pulumi.StringOutput `pulumi:"state"` + // Output only. Timestamp when the resource was last modified. + UpdateTime pulumi.StringOutput `pulumi:"updateTime"` +} + +// NewSecurityGateway registers a new resource with the given unique name, arguments, and options. +func NewSecurityGateway(ctx *pulumi.Context, + name string, args *SecurityGatewayArgs, opts ...pulumi.ResourceOption) (*SecurityGateway, 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.SecurityGatewayId == nil { + return nil, errors.New("invalid value for required argument 'SecurityGatewayId'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource SecurityGateway + err := ctx.RegisterResource("gcp:beyondcorp/securityGateway:SecurityGateway", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetSecurityGateway gets an existing SecurityGateway 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 GetSecurityGateway(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *SecurityGatewayState, opts ...pulumi.ResourceOption) (*SecurityGateway, error) { + var resource SecurityGateway + err := ctx.ReadResource("gcp:beyondcorp/securityGateway:SecurityGateway", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering SecurityGateway resources. +type securityGatewayState struct { + // Output only. Timestamp when the resource was created. + CreateTime *string `pulumi:"createTime"` + // Optional. An arbitrary user-provided name for the SecurityGateway. + // Cannot exceed 64 characters. + DisplayName *string `pulumi:"displayName"` + // Output only. IP addresses that will be used for establishing + // connection to the endpoints. + ExternalIps []string `pulumi:"externalIps"` + // Optional. Map of Hubs that represents regional data path deployment with GCP region + // as a key. + // Structure is documented below. + Hubs []SecurityGatewayHub `pulumi:"hubs"` + // Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + Location *string `pulumi:"location"` + // Identifier. Name of the resource. + 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"` + // Optional. User-settable SecurityGateway resource ID. + // * Must start with a letter. + // * Must contain between 4-63 characters from `/a-z-/`. + // * Must end with a number or letter. + // + // *** + SecurityGatewayId *string `pulumi:"securityGatewayId"` + // Output only. The operational state of the SecurityGateway. + // Possible values: + // STATE_UNSPECIFIED + // CREATING + // UPDATING + // DELETING + // RUNNING + // DOWN + // ERROR + State *string `pulumi:"state"` + // Output only. Timestamp when the resource was last modified. + UpdateTime *string `pulumi:"updateTime"` +} + +type SecurityGatewayState struct { + // Output only. Timestamp when the resource was created. + CreateTime pulumi.StringPtrInput + // Optional. An arbitrary user-provided name for the SecurityGateway. + // Cannot exceed 64 characters. + DisplayName pulumi.StringPtrInput + // Output only. IP addresses that will be used for establishing + // connection to the endpoints. + ExternalIps pulumi.StringArrayInput + // Optional. Map of Hubs that represents regional data path deployment with GCP region + // as a key. + // Structure is documented below. + Hubs SecurityGatewayHubArrayInput + // Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + Location pulumi.StringPtrInput + // Identifier. Name of the resource. + 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 + // Optional. User-settable SecurityGateway resource ID. + // * Must start with a letter. + // * Must contain between 4-63 characters from `/a-z-/`. + // * Must end with a number or letter. + // + // *** + SecurityGatewayId pulumi.StringPtrInput + // Output only. The operational state of the SecurityGateway. + // Possible values: + // STATE_UNSPECIFIED + // CREATING + // UPDATING + // DELETING + // RUNNING + // DOWN + // ERROR + State pulumi.StringPtrInput + // Output only. Timestamp when the resource was last modified. + UpdateTime pulumi.StringPtrInput +} + +func (SecurityGatewayState) ElementType() reflect.Type { + return reflect.TypeOf((*securityGatewayState)(nil)).Elem() +} + +type securityGatewayArgs struct { + // Optional. An arbitrary user-provided name for the SecurityGateway. + // Cannot exceed 64 characters. + DisplayName *string `pulumi:"displayName"` + // Optional. Map of Hubs that represents regional data path deployment with GCP region + // as a key. + // Structure is documented below. + Hubs []SecurityGatewayHub `pulumi:"hubs"` + // Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + 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"` + // Optional. User-settable SecurityGateway resource ID. + // * Must start with a letter. + // * Must contain between 4-63 characters from `/a-z-/`. + // * Must end with a number or letter. + // + // *** + SecurityGatewayId string `pulumi:"securityGatewayId"` +} + +// The set of arguments for constructing a SecurityGateway resource. +type SecurityGatewayArgs struct { + // Optional. An arbitrary user-provided name for the SecurityGateway. + // Cannot exceed 64 characters. + DisplayName pulumi.StringPtrInput + // Optional. Map of Hubs that represents regional data path deployment with GCP region + // as a key. + // Structure is documented below. + Hubs SecurityGatewayHubArrayInput + // Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + 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 + // Optional. User-settable SecurityGateway resource ID. + // * Must start with a letter. + // * Must contain between 4-63 characters from `/a-z-/`. + // * Must end with a number or letter. + // + // *** + SecurityGatewayId pulumi.StringInput +} + +func (SecurityGatewayArgs) ElementType() reflect.Type { + return reflect.TypeOf((*securityGatewayArgs)(nil)).Elem() +} + +type SecurityGatewayInput interface { + pulumi.Input + + ToSecurityGatewayOutput() SecurityGatewayOutput + ToSecurityGatewayOutputWithContext(ctx context.Context) SecurityGatewayOutput +} + +func (*SecurityGateway) ElementType() reflect.Type { + return reflect.TypeOf((**SecurityGateway)(nil)).Elem() +} + +func (i *SecurityGateway) ToSecurityGatewayOutput() SecurityGatewayOutput { + return i.ToSecurityGatewayOutputWithContext(context.Background()) +} + +func (i *SecurityGateway) ToSecurityGatewayOutputWithContext(ctx context.Context) SecurityGatewayOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecurityGatewayOutput) +} + +// SecurityGatewayArrayInput is an input type that accepts SecurityGatewayArray and SecurityGatewayArrayOutput values. +// You can construct a concrete instance of `SecurityGatewayArrayInput` via: +// +// SecurityGatewayArray{ SecurityGatewayArgs{...} } +type SecurityGatewayArrayInput interface { + pulumi.Input + + ToSecurityGatewayArrayOutput() SecurityGatewayArrayOutput + ToSecurityGatewayArrayOutputWithContext(context.Context) SecurityGatewayArrayOutput +} + +type SecurityGatewayArray []SecurityGatewayInput + +func (SecurityGatewayArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*SecurityGateway)(nil)).Elem() +} + +func (i SecurityGatewayArray) ToSecurityGatewayArrayOutput() SecurityGatewayArrayOutput { + return i.ToSecurityGatewayArrayOutputWithContext(context.Background()) +} + +func (i SecurityGatewayArray) ToSecurityGatewayArrayOutputWithContext(ctx context.Context) SecurityGatewayArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecurityGatewayArrayOutput) +} + +// SecurityGatewayMapInput is an input type that accepts SecurityGatewayMap and SecurityGatewayMapOutput values. +// You can construct a concrete instance of `SecurityGatewayMapInput` via: +// +// SecurityGatewayMap{ "key": SecurityGatewayArgs{...} } +type SecurityGatewayMapInput interface { + pulumi.Input + + ToSecurityGatewayMapOutput() SecurityGatewayMapOutput + ToSecurityGatewayMapOutputWithContext(context.Context) SecurityGatewayMapOutput +} + +type SecurityGatewayMap map[string]SecurityGatewayInput + +func (SecurityGatewayMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*SecurityGateway)(nil)).Elem() +} + +func (i SecurityGatewayMap) ToSecurityGatewayMapOutput() SecurityGatewayMapOutput { + return i.ToSecurityGatewayMapOutputWithContext(context.Background()) +} + +func (i SecurityGatewayMap) ToSecurityGatewayMapOutputWithContext(ctx context.Context) SecurityGatewayMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecurityGatewayMapOutput) +} + +type SecurityGatewayOutput struct{ *pulumi.OutputState } + +func (SecurityGatewayOutput) ElementType() reflect.Type { + return reflect.TypeOf((**SecurityGateway)(nil)).Elem() +} + +func (o SecurityGatewayOutput) ToSecurityGatewayOutput() SecurityGatewayOutput { + return o +} + +func (o SecurityGatewayOutput) ToSecurityGatewayOutputWithContext(ctx context.Context) SecurityGatewayOutput { + return o +} + +// Output only. Timestamp when the resource was created. +func (o SecurityGatewayOutput) CreateTime() pulumi.StringOutput { + return o.ApplyT(func(v *SecurityGateway) pulumi.StringOutput { return v.CreateTime }).(pulumi.StringOutput) +} + +// Optional. An arbitrary user-provided name for the SecurityGateway. +// Cannot exceed 64 characters. +func (o SecurityGatewayOutput) DisplayName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *SecurityGateway) pulumi.StringPtrOutput { return v.DisplayName }).(pulumi.StringPtrOutput) +} + +// Output only. IP addresses that will be used for establishing +// connection to the endpoints. +func (o SecurityGatewayOutput) ExternalIps() pulumi.StringArrayOutput { + return o.ApplyT(func(v *SecurityGateway) pulumi.StringArrayOutput { return v.ExternalIps }).(pulumi.StringArrayOutput) +} + +// Optional. Map of Hubs that represents regional data path deployment with GCP region +// as a key. +// Structure is documented below. +func (o SecurityGatewayOutput) Hubs() SecurityGatewayHubArrayOutput { + return o.ApplyT(func(v *SecurityGateway) SecurityGatewayHubArrayOutput { return v.Hubs }).(SecurityGatewayHubArrayOutput) +} + +// Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. +func (o SecurityGatewayOutput) Location() pulumi.StringOutput { + return o.ApplyT(func(v *SecurityGateway) pulumi.StringOutput { return v.Location }).(pulumi.StringOutput) +} + +// Identifier. Name of the resource. +func (o SecurityGatewayOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *SecurityGateway) 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 SecurityGatewayOutput) Project() pulumi.StringOutput { + return o.ApplyT(func(v *SecurityGateway) pulumi.StringOutput { return v.Project }).(pulumi.StringOutput) +} + +// Optional. User-settable SecurityGateway resource ID. +// * Must start with a letter. +// * Must contain between 4-63 characters from `/a-z-/`. +// * Must end with a number or letter. +// +// *** +func (o SecurityGatewayOutput) SecurityGatewayId() pulumi.StringOutput { + return o.ApplyT(func(v *SecurityGateway) pulumi.StringOutput { return v.SecurityGatewayId }).(pulumi.StringOutput) +} + +// Output only. The operational state of the SecurityGateway. +// Possible values: +// STATE_UNSPECIFIED +// CREATING +// UPDATING +// DELETING +// RUNNING +// DOWN +// ERROR +func (o SecurityGatewayOutput) State() pulumi.StringOutput { + return o.ApplyT(func(v *SecurityGateway) pulumi.StringOutput { return v.State }).(pulumi.StringOutput) +} + +// Output only. Timestamp when the resource was last modified. +func (o SecurityGatewayOutput) UpdateTime() pulumi.StringOutput { + return o.ApplyT(func(v *SecurityGateway) pulumi.StringOutput { return v.UpdateTime }).(pulumi.StringOutput) +} + +type SecurityGatewayArrayOutput struct{ *pulumi.OutputState } + +func (SecurityGatewayArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*SecurityGateway)(nil)).Elem() +} + +func (o SecurityGatewayArrayOutput) ToSecurityGatewayArrayOutput() SecurityGatewayArrayOutput { + return o +} + +func (o SecurityGatewayArrayOutput) ToSecurityGatewayArrayOutputWithContext(ctx context.Context) SecurityGatewayArrayOutput { + return o +} + +func (o SecurityGatewayArrayOutput) Index(i pulumi.IntInput) SecurityGatewayOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *SecurityGateway { + return vs[0].([]*SecurityGateway)[vs[1].(int)] + }).(SecurityGatewayOutput) +} + +type SecurityGatewayMapOutput struct{ *pulumi.OutputState } + +func (SecurityGatewayMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*SecurityGateway)(nil)).Elem() +} + +func (o SecurityGatewayMapOutput) ToSecurityGatewayMapOutput() SecurityGatewayMapOutput { + return o +} + +func (o SecurityGatewayMapOutput) ToSecurityGatewayMapOutputWithContext(ctx context.Context) SecurityGatewayMapOutput { + return o +} + +func (o SecurityGatewayMapOutput) MapIndex(k pulumi.StringInput) SecurityGatewayOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *SecurityGateway { + return vs[0].(map[string]*SecurityGateway)[vs[1].(string)] + }).(SecurityGatewayOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*SecurityGatewayInput)(nil)).Elem(), &SecurityGateway{}) + pulumi.RegisterInputType(reflect.TypeOf((*SecurityGatewayArrayInput)(nil)).Elem(), SecurityGatewayArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*SecurityGatewayMapInput)(nil)).Elem(), SecurityGatewayMap{}) + pulumi.RegisterOutputType(SecurityGatewayOutput{}) + pulumi.RegisterOutputType(SecurityGatewayArrayOutput{}) + pulumi.RegisterOutputType(SecurityGatewayMapOutput{}) +} diff --git a/sdk/go/gcp/blockchainnodeengine/pulumiTypes.go b/sdk/go/gcp/blockchainnodeengine/pulumiTypes.go index 75f11c8d91..21edb25192 100644 --- a/sdk/go/gcp/blockchainnodeengine/pulumiTypes.go +++ b/sdk/go/gcp/blockchainnodeengine/pulumiTypes.go @@ -692,7 +692,7 @@ type BlockchainNodesEthereumDetailsGethDetails struct { // Blockchain garbage collection modes. Only applicable when NodeType is FULL or ARCHIVE. // Possible values are: `FULL`, `ARCHIVE`. // - // The `additionalEndpoints` block contains: + // The `additionalEndpoints` block contains: GarbageCollectionMode *string `pulumi:"garbageCollectionMode"` } @@ -711,7 +711,7 @@ type BlockchainNodesEthereumDetailsGethDetailsArgs struct { // Blockchain garbage collection modes. Only applicable when NodeType is FULL or ARCHIVE. // Possible values are: `FULL`, `ARCHIVE`. // - // The `additionalEndpoints` block contains: + // The `additionalEndpoints` block contains: GarbageCollectionMode pulumi.StringPtrInput `pulumi:"garbageCollectionMode"` } @@ -795,7 +795,7 @@ func (o BlockchainNodesEthereumDetailsGethDetailsOutput) ToBlockchainNodesEthere // Blockchain garbage collection modes. Only applicable when NodeType is FULL or ARCHIVE. // Possible values are: `FULL`, `ARCHIVE`. // -// The `additionalEndpoints` block contains: +// The `additionalEndpoints` block contains: func (o BlockchainNodesEthereumDetailsGethDetailsOutput) GarbageCollectionMode() pulumi.StringPtrOutput { return o.ApplyT(func(v BlockchainNodesEthereumDetailsGethDetails) *string { return v.GarbageCollectionMode }).(pulumi.StringPtrOutput) } @@ -827,7 +827,7 @@ func (o BlockchainNodesEthereumDetailsGethDetailsPtrOutput) Elem() BlockchainNod // Blockchain garbage collection modes. Only applicable when NodeType is FULL or ARCHIVE. // Possible values are: `FULL`, `ARCHIVE`. // -// The `additionalEndpoints` block contains: +// The `additionalEndpoints` block contains: func (o BlockchainNodesEthereumDetailsGethDetailsPtrOutput) GarbageCollectionMode() pulumi.StringPtrOutput { return o.ApplyT(func(v *BlockchainNodesEthereumDetailsGethDetails) *string { if v == nil { diff --git a/sdk/go/gcp/certificateauthority/pulumiTypes.go b/sdk/go/gcp/certificateauthority/pulumiTypes.go index 9b5275ee30..4620c2d548 100644 --- a/sdk/go/gcp/certificateauthority/pulumiTypes.go +++ b/sdk/go/gcp/certificateauthority/pulumiTypes.go @@ -951,7 +951,7 @@ func (o AuthorityConfigSubjectConfigSubjectAltNamePtrOutput) Uris() pulumi.Strin type AuthorityConfigSubjectKeyId struct { // The value of the KeyId in lowercase hexadecimal. // - // The `x509Config` block supports: + // The `x509Config` block supports: KeyId *string `pulumi:"keyId"` } @@ -969,7 +969,7 @@ type AuthorityConfigSubjectKeyIdInput interface { type AuthorityConfigSubjectKeyIdArgs struct { // The value of the KeyId in lowercase hexadecimal. // - // The `x509Config` block supports: + // The `x509Config` block supports: KeyId pulumi.StringPtrInput `pulumi:"keyId"` } @@ -1052,7 +1052,7 @@ func (o AuthorityConfigSubjectKeyIdOutput) ToAuthorityConfigSubjectKeyIdPtrOutpu // The value of the KeyId in lowercase hexadecimal. // -// The `x509Config` block supports: +// The `x509Config` block supports: func (o AuthorityConfigSubjectKeyIdOutput) KeyId() pulumi.StringPtrOutput { return o.ApplyT(func(v AuthorityConfigSubjectKeyId) *string { return v.KeyId }).(pulumi.StringPtrOutput) } @@ -1083,7 +1083,7 @@ func (o AuthorityConfigSubjectKeyIdPtrOutput) Elem() AuthorityConfigSubjectKeyId // The value of the KeyId in lowercase hexadecimal. // -// The `x509Config` block supports: +// The `x509Config` block supports: func (o AuthorityConfigSubjectKeyIdPtrOutput) KeyId() pulumi.StringPtrOutput { return o.ApplyT(func(v *AuthorityConfigSubjectKeyId) *string { if v == nil { @@ -9989,7 +9989,7 @@ type CertificateConfig struct { // A PublicKey describes a public key. // Structure is documented below. // - // The `x509Config` block supports: + // The `x509Config` block supports: PublicKey CertificateConfigPublicKey `pulumi:"publicKey"` // Specifies some of the values in a certificate that are related to the subject. // Structure is documented below. @@ -10017,7 +10017,7 @@ type CertificateConfigArgs struct { // A PublicKey describes a public key. // Structure is documented below. // - // The `x509Config` block supports: + // The `x509Config` block supports: PublicKey CertificateConfigPublicKeyInput `pulumi:"publicKey"` // Specifies some of the values in a certificate that are related to the subject. // Structure is documented below. @@ -10110,7 +10110,7 @@ func (o CertificateConfigOutput) ToCertificateConfigPtrOutputWithContext(ctx con // A PublicKey describes a public key. // Structure is documented below. // -// The `x509Config` block supports: +// The `x509Config` block supports: func (o CertificateConfigOutput) PublicKey() CertificateConfigPublicKeyOutput { return o.ApplyT(func(v CertificateConfig) CertificateConfigPublicKey { return v.PublicKey }).(CertificateConfigPublicKeyOutput) } @@ -10160,7 +10160,7 @@ func (o CertificateConfigPtrOutput) Elem() CertificateConfigOutput { // A PublicKey describes a public key. // Structure is documented below. // -// The `x509Config` block supports: +// The `x509Config` block supports: func (o CertificateConfigPtrOutput) PublicKey() CertificateConfigPublicKeyPtrOutput { return o.ApplyT(func(v *CertificateConfig) *CertificateConfigPublicKey { if v == nil { diff --git a/sdk/go/gcp/certificatemanager/pulumiTypes.go b/sdk/go/gcp/certificatemanager/pulumiTypes.go index 811f2f5fed..7569488bb7 100644 --- a/sdk/go/gcp/certificatemanager/pulumiTypes.go +++ b/sdk/go/gcp/certificatemanager/pulumiTypes.go @@ -317,7 +317,7 @@ type CertificateManaged struct { // specified for this Managed Certificate. // Structure is documented below. // - // The `provisioningIssue` block contains: + // The `provisioningIssue` block contains: AuthorizationAttemptInfos []CertificateManagedAuthorizationAttemptInfo `pulumi:"authorizationAttemptInfos"` // Authorizations that will be used for performing domain authorization. Either issuanceConfig or dnsAuthorizations should be specificed, but not both. DnsAuthorizations []string `pulumi:"dnsAuthorizations"` @@ -354,7 +354,7 @@ type CertificateManagedArgs struct { // specified for this Managed Certificate. // Structure is documented below. // - // The `provisioningIssue` block contains: + // The `provisioningIssue` block contains: AuthorizationAttemptInfos CertificateManagedAuthorizationAttemptInfoArrayInput `pulumi:"authorizationAttemptInfos"` // Authorizations that will be used for performing domain authorization. Either issuanceConfig or dnsAuthorizations should be specificed, but not both. DnsAuthorizations pulumi.StringArrayInput `pulumi:"dnsAuthorizations"` @@ -456,7 +456,7 @@ func (o CertificateManagedOutput) ToCertificateManagedPtrOutputWithContext(ctx c // specified for this Managed Certificate. // Structure is documented below. // -// The `provisioningIssue` block contains: +// The `provisioningIssue` block contains: func (o CertificateManagedOutput) AuthorizationAttemptInfos() CertificateManagedAuthorizationAttemptInfoArrayOutput { return o.ApplyT(func(v CertificateManaged) []CertificateManagedAuthorizationAttemptInfo { return v.AuthorizationAttemptInfos @@ -523,7 +523,7 @@ func (o CertificateManagedPtrOutput) Elem() CertificateManagedOutput { // specified for this Managed Certificate. // Structure is documented below. // -// The `provisioningIssue` block contains: +// The `provisioningIssue` block contains: func (o CertificateManagedPtrOutput) AuthorizationAttemptInfos() CertificateManagedAuthorizationAttemptInfoArrayOutput { return o.ApplyT(func(v *CertificateManaged) []CertificateManagedAuthorizationAttemptInfo { if v == nil { diff --git a/sdk/go/gcp/chronicle/dataAccessLabel.go b/sdk/go/gcp/chronicle/dataAccessLabel.go new file mode 100644 index 0000000000..79ce09c4c1 --- /dev/null +++ b/sdk/go/gcp/chronicle/dataAccessLabel.go @@ -0,0 +1,467 @@ +// 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 Dataaccesslabel 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.NewDataAccessLabel(ctx, "example", &chronicle.DataAccessLabelArgs{ +// Location: pulumi.String("us"), +// Instance: pulumi.String("00000000-0000-0000-0000-000000000000"), +// DataAccessLabelId: pulumi.String("label-id"), +// UdmQuery: pulumi.String("principal.hostname=\"google.com\""), +// Description: pulumi.String("label-description"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// DataAccessLabel can be imported using any of these accepted formats: +// +// * `projects/{{project}}/locations/{{location}}/instances/{{instance}}/dataAccessLabels/{{data_access_label_id}}` +// +// * `{{project}}/{{location}}/{{instance}}/{{data_access_label_id}}` +// +// * `{{location}}/{{instance}}/{{data_access_label_id}}` +// +// When using the `pulumi import` command, DataAccessLabel can be imported using one of the formats above. For example: +// +// ```sh +// $ pulumi import gcp:chronicle/dataAccessLabel:DataAccessLabel default projects/{{project}}/locations/{{location}}/instances/{{instance}}/dataAccessLabels/{{data_access_label_id}} +// ``` +// +// ```sh +// $ pulumi import gcp:chronicle/dataAccessLabel:DataAccessLabel default {{project}}/{{location}}/{{instance}}/{{data_access_label_id}} +// ``` +// +// ```sh +// $ pulumi import gcp:chronicle/dataAccessLabel:DataAccessLabel default {{location}}/{{instance}}/{{data_access_label_id}} +// ``` +type DataAccessLabel struct { + pulumi.CustomResourceState + + // Output only. The user who created the data access label. + Author pulumi.StringOutput `pulumi:"author"` + // Output only. The time at which the data access label was created. + CreateTime pulumi.StringOutput `pulumi:"createTime"` + // Required. The ID to use for the data access label, which will become the label's + // display name and the final component of the label's resource name. It must + // only contain ASCII lowercase letters, numbers, and dashes; it must begin + // with a letter, and it must not exceed 1000 characters. + // + // *** + DataAccessLabelId pulumi.StringOutput `pulumi:"dataAccessLabelId"` + // Optional. A description of the data access label for a human reader. + Description pulumi.StringPtrOutput `pulumi:"description"` + // Output only. The short name displayed for the label as it appears on event data. This is same as data access label id. + DisplayName pulumi.StringOutput `pulumi:"displayName"` + // The unique identifier for the Chronicle instance, which is the same as the customer ID. + Instance pulumi.StringOutput `pulumi:"instance"` + // Output only. The user who last updated the data access label. + LastEditor pulumi.StringOutput `pulumi:"lastEditor"` + // 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"` + // The unique resource name of the data access label. This unique identifier is generated using values provided for the URL parameters. + // Format: + // projects/{project}/locations/{location}/instances/{instance}/dataAccessLabels/{data_access_label_id} + 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"` + // A UDM query over event data. + UdmQuery pulumi.StringOutput `pulumi:"udmQuery"` + // Output only. The time at which the data access label was last updated. + UpdateTime pulumi.StringOutput `pulumi:"updateTime"` +} + +// NewDataAccessLabel registers a new resource with the given unique name, arguments, and options. +func NewDataAccessLabel(ctx *pulumi.Context, + name string, args *DataAccessLabelArgs, opts ...pulumi.ResourceOption) (*DataAccessLabel, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.DataAccessLabelId == nil { + return nil, errors.New("invalid value for required argument 'DataAccessLabelId'") + } + 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.UdmQuery == nil { + return nil, errors.New("invalid value for required argument 'UdmQuery'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource DataAccessLabel + err := ctx.RegisterResource("gcp:chronicle/dataAccessLabel:DataAccessLabel", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetDataAccessLabel gets an existing DataAccessLabel 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 GetDataAccessLabel(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *DataAccessLabelState, opts ...pulumi.ResourceOption) (*DataAccessLabel, error) { + var resource DataAccessLabel + err := ctx.ReadResource("gcp:chronicle/dataAccessLabel:DataAccessLabel", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering DataAccessLabel resources. +type dataAccessLabelState struct { + // Output only. The user who created the data access label. + Author *string `pulumi:"author"` + // Output only. The time at which the data access label was created. + CreateTime *string `pulumi:"createTime"` + // Required. The ID to use for the data access label, which will become the label's + // display name and the final component of the label's resource name. It must + // only contain ASCII lowercase letters, numbers, and dashes; it must begin + // with a letter, and it must not exceed 1000 characters. + // + // *** + DataAccessLabelId *string `pulumi:"dataAccessLabelId"` + // Optional. A description of the data access label for a human reader. + Description *string `pulumi:"description"` + // Output only. The short name displayed for the label as it appears on event data. This is same as data access label id. + DisplayName *string `pulumi:"displayName"` + // The unique identifier for the Chronicle instance, which is the same as the customer ID. + Instance *string `pulumi:"instance"` + // Output only. The user who last updated the data access label. + LastEditor *string `pulumi:"lastEditor"` + // 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"` + // The unique resource name of the data access label. This unique identifier is generated using values provided for the URL parameters. + // Format: + // projects/{project}/locations/{location}/instances/{instance}/dataAccessLabels/{data_access_label_id} + 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"` + // A UDM query over event data. + UdmQuery *string `pulumi:"udmQuery"` + // Output only. The time at which the data access label was last updated. + UpdateTime *string `pulumi:"updateTime"` +} + +type DataAccessLabelState struct { + // Output only. The user who created the data access label. + Author pulumi.StringPtrInput + // Output only. The time at which the data access label was created. + CreateTime pulumi.StringPtrInput + // Required. The ID to use for the data access label, which will become the label's + // display name and the final component of the label's resource name. It must + // only contain ASCII lowercase letters, numbers, and dashes; it must begin + // with a letter, and it must not exceed 1000 characters. + // + // *** + DataAccessLabelId pulumi.StringPtrInput + // Optional. A description of the data access label for a human reader. + Description pulumi.StringPtrInput + // Output only. The short name displayed for the label as it appears on event data. This is same as data access label id. + DisplayName pulumi.StringPtrInput + // The unique identifier for the Chronicle instance, which is the same as the customer ID. + Instance pulumi.StringPtrInput + // Output only. The user who last updated the data access label. + LastEditor 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 + // The unique resource name of the data access label. This unique identifier is generated using values provided for the URL parameters. + // Format: + // projects/{project}/locations/{location}/instances/{instance}/dataAccessLabels/{data_access_label_id} + 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 + // A UDM query over event data. + UdmQuery pulumi.StringPtrInput + // Output only. The time at which the data access label was last updated. + UpdateTime pulumi.StringPtrInput +} + +func (DataAccessLabelState) ElementType() reflect.Type { + return reflect.TypeOf((*dataAccessLabelState)(nil)).Elem() +} + +type dataAccessLabelArgs struct { + // Required. The ID to use for the data access label, which will become the label's + // display name and the final component of the label's resource name. It must + // only contain ASCII lowercase letters, numbers, and dashes; it must begin + // with a letter, and it must not exceed 1000 characters. + // + // *** + DataAccessLabelId string `pulumi:"dataAccessLabelId"` + // Optional. A description of the data access label for a human reader. + Description *string `pulumi:"description"` + // 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"` + // The ID of the project in which the resource belongs. + // If it is not provided, the provider project is used. + Project *string `pulumi:"project"` + // A UDM query over event data. + UdmQuery string `pulumi:"udmQuery"` +} + +// The set of arguments for constructing a DataAccessLabel resource. +type DataAccessLabelArgs struct { + // Required. The ID to use for the data access label, which will become the label's + // display name and the final component of the label's resource name. It must + // only contain ASCII lowercase letters, numbers, and dashes; it must begin + // with a letter, and it must not exceed 1000 characters. + // + // *** + DataAccessLabelId pulumi.StringInput + // Optional. A description of the data access label for a human reader. + Description pulumi.StringPtrInput + // 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 + // The ID of the project in which the resource belongs. + // If it is not provided, the provider project is used. + Project pulumi.StringPtrInput + // A UDM query over event data. + UdmQuery pulumi.StringInput +} + +func (DataAccessLabelArgs) ElementType() reflect.Type { + return reflect.TypeOf((*dataAccessLabelArgs)(nil)).Elem() +} + +type DataAccessLabelInput interface { + pulumi.Input + + ToDataAccessLabelOutput() DataAccessLabelOutput + ToDataAccessLabelOutputWithContext(ctx context.Context) DataAccessLabelOutput +} + +func (*DataAccessLabel) ElementType() reflect.Type { + return reflect.TypeOf((**DataAccessLabel)(nil)).Elem() +} + +func (i *DataAccessLabel) ToDataAccessLabelOutput() DataAccessLabelOutput { + return i.ToDataAccessLabelOutputWithContext(context.Background()) +} + +func (i *DataAccessLabel) ToDataAccessLabelOutputWithContext(ctx context.Context) DataAccessLabelOutput { + return pulumi.ToOutputWithContext(ctx, i).(DataAccessLabelOutput) +} + +// DataAccessLabelArrayInput is an input type that accepts DataAccessLabelArray and DataAccessLabelArrayOutput values. +// You can construct a concrete instance of `DataAccessLabelArrayInput` via: +// +// DataAccessLabelArray{ DataAccessLabelArgs{...} } +type DataAccessLabelArrayInput interface { + pulumi.Input + + ToDataAccessLabelArrayOutput() DataAccessLabelArrayOutput + ToDataAccessLabelArrayOutputWithContext(context.Context) DataAccessLabelArrayOutput +} + +type DataAccessLabelArray []DataAccessLabelInput + +func (DataAccessLabelArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*DataAccessLabel)(nil)).Elem() +} + +func (i DataAccessLabelArray) ToDataAccessLabelArrayOutput() DataAccessLabelArrayOutput { + return i.ToDataAccessLabelArrayOutputWithContext(context.Background()) +} + +func (i DataAccessLabelArray) ToDataAccessLabelArrayOutputWithContext(ctx context.Context) DataAccessLabelArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(DataAccessLabelArrayOutput) +} + +// DataAccessLabelMapInput is an input type that accepts DataAccessLabelMap and DataAccessLabelMapOutput values. +// You can construct a concrete instance of `DataAccessLabelMapInput` via: +// +// DataAccessLabelMap{ "key": DataAccessLabelArgs{...} } +type DataAccessLabelMapInput interface { + pulumi.Input + + ToDataAccessLabelMapOutput() DataAccessLabelMapOutput + ToDataAccessLabelMapOutputWithContext(context.Context) DataAccessLabelMapOutput +} + +type DataAccessLabelMap map[string]DataAccessLabelInput + +func (DataAccessLabelMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*DataAccessLabel)(nil)).Elem() +} + +func (i DataAccessLabelMap) ToDataAccessLabelMapOutput() DataAccessLabelMapOutput { + return i.ToDataAccessLabelMapOutputWithContext(context.Background()) +} + +func (i DataAccessLabelMap) ToDataAccessLabelMapOutputWithContext(ctx context.Context) DataAccessLabelMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(DataAccessLabelMapOutput) +} + +type DataAccessLabelOutput struct{ *pulumi.OutputState } + +func (DataAccessLabelOutput) ElementType() reflect.Type { + return reflect.TypeOf((**DataAccessLabel)(nil)).Elem() +} + +func (o DataAccessLabelOutput) ToDataAccessLabelOutput() DataAccessLabelOutput { + return o +} + +func (o DataAccessLabelOutput) ToDataAccessLabelOutputWithContext(ctx context.Context) DataAccessLabelOutput { + return o +} + +// Output only. The user who created the data access label. +func (o DataAccessLabelOutput) Author() pulumi.StringOutput { + return o.ApplyT(func(v *DataAccessLabel) pulumi.StringOutput { return v.Author }).(pulumi.StringOutput) +} + +// Output only. The time at which the data access label was created. +func (o DataAccessLabelOutput) CreateTime() pulumi.StringOutput { + return o.ApplyT(func(v *DataAccessLabel) pulumi.StringOutput { return v.CreateTime }).(pulumi.StringOutput) +} + +// Required. The ID to use for the data access label, which will become the label's +// display name and the final component of the label's resource name. It must +// only contain ASCII lowercase letters, numbers, and dashes; it must begin +// with a letter, and it must not exceed 1000 characters. +// +// *** +func (o DataAccessLabelOutput) DataAccessLabelId() pulumi.StringOutput { + return o.ApplyT(func(v *DataAccessLabel) pulumi.StringOutput { return v.DataAccessLabelId }).(pulumi.StringOutput) +} + +// Optional. A description of the data access label for a human reader. +func (o DataAccessLabelOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v *DataAccessLabel) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) +} + +// Output only. The short name displayed for the label as it appears on event data. This is same as data access label id. +func (o DataAccessLabelOutput) DisplayName() pulumi.StringOutput { + return o.ApplyT(func(v *DataAccessLabel) pulumi.StringOutput { return v.DisplayName }).(pulumi.StringOutput) +} + +// The unique identifier for the Chronicle instance, which is the same as the customer ID. +func (o DataAccessLabelOutput) Instance() pulumi.StringOutput { + return o.ApplyT(func(v *DataAccessLabel) pulumi.StringOutput { return v.Instance }).(pulumi.StringOutput) +} + +// Output only. The user who last updated the data access label. +func (o DataAccessLabelOutput) LastEditor() pulumi.StringOutput { + return o.ApplyT(func(v *DataAccessLabel) pulumi.StringOutput { return v.LastEditor }).(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 DataAccessLabelOutput) Location() pulumi.StringOutput { + return o.ApplyT(func(v *DataAccessLabel) pulumi.StringOutput { return v.Location }).(pulumi.StringOutput) +} + +// The unique resource name of the data access label. This unique identifier is generated using values provided for the URL parameters. +// Format: +// projects/{project}/locations/{location}/instances/{instance}/dataAccessLabels/{data_access_label_id} +func (o DataAccessLabelOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *DataAccessLabel) 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 DataAccessLabelOutput) Project() pulumi.StringOutput { + return o.ApplyT(func(v *DataAccessLabel) pulumi.StringOutput { return v.Project }).(pulumi.StringOutput) +} + +// A UDM query over event data. +func (o DataAccessLabelOutput) UdmQuery() pulumi.StringOutput { + return o.ApplyT(func(v *DataAccessLabel) pulumi.StringOutput { return v.UdmQuery }).(pulumi.StringOutput) +} + +// Output only. The time at which the data access label was last updated. +func (o DataAccessLabelOutput) UpdateTime() pulumi.StringOutput { + return o.ApplyT(func(v *DataAccessLabel) pulumi.StringOutput { return v.UpdateTime }).(pulumi.StringOutput) +} + +type DataAccessLabelArrayOutput struct{ *pulumi.OutputState } + +func (DataAccessLabelArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*DataAccessLabel)(nil)).Elem() +} + +func (o DataAccessLabelArrayOutput) ToDataAccessLabelArrayOutput() DataAccessLabelArrayOutput { + return o +} + +func (o DataAccessLabelArrayOutput) ToDataAccessLabelArrayOutputWithContext(ctx context.Context) DataAccessLabelArrayOutput { + return o +} + +func (o DataAccessLabelArrayOutput) Index(i pulumi.IntInput) DataAccessLabelOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *DataAccessLabel { + return vs[0].([]*DataAccessLabel)[vs[1].(int)] + }).(DataAccessLabelOutput) +} + +type DataAccessLabelMapOutput struct{ *pulumi.OutputState } + +func (DataAccessLabelMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*DataAccessLabel)(nil)).Elem() +} + +func (o DataAccessLabelMapOutput) ToDataAccessLabelMapOutput() DataAccessLabelMapOutput { + return o +} + +func (o DataAccessLabelMapOutput) ToDataAccessLabelMapOutputWithContext(ctx context.Context) DataAccessLabelMapOutput { + return o +} + +func (o DataAccessLabelMapOutput) MapIndex(k pulumi.StringInput) DataAccessLabelOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *DataAccessLabel { + return vs[0].(map[string]*DataAccessLabel)[vs[1].(string)] + }).(DataAccessLabelOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*DataAccessLabelInput)(nil)).Elem(), &DataAccessLabel{}) + pulumi.RegisterInputType(reflect.TypeOf((*DataAccessLabelArrayInput)(nil)).Elem(), DataAccessLabelArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*DataAccessLabelMapInput)(nil)).Elem(), DataAccessLabelMap{}) + pulumi.RegisterOutputType(DataAccessLabelOutput{}) + pulumi.RegisterOutputType(DataAccessLabelArrayOutput{}) + pulumi.RegisterOutputType(DataAccessLabelMapOutput{}) +} diff --git a/sdk/go/gcp/chronicle/dataAccessScope.go b/sdk/go/gcp/chronicle/dataAccessScope.go new file mode 100644 index 0000000000..1809de7891 --- /dev/null +++ b/sdk/go/gcp/chronicle/dataAccessScope.go @@ -0,0 +1,773 @@ +// 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 Dataaccessscope With Logtype +// +// ```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.NewDataAccessScope(ctx, "example", &chronicle.DataAccessScopeArgs{ +// Location: pulumi.String("us"), +// Instance: pulumi.String("00000000-0000-0000-0000-000000000000"), +// DataAccessScopeId: pulumi.String("scope-id"), +// Description: pulumi.String("scope-description"), +// AllowedDataAccessLabels: chronicle.DataAccessScopeAllowedDataAccessLabelArray{ +// &chronicle.DataAccessScopeAllowedDataAccessLabelArgs{ +// LogType: pulumi.String("GCP_CLOUDAUDIT"), +// }, +// &chronicle.DataAccessScopeAllowedDataAccessLabelArgs{ +// LogType: pulumi.String("GITHUB"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// ### Chronicle Dataaccessscope With Dataaccesslabel +// +// ```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.NewDataAccessLabel(ctx, "custom_data_access_label", &chronicle.DataAccessLabelArgs{ +// Location: pulumi.String("us"), +// Instance: pulumi.String("00000000-0000-0000-0000-000000000000"), +// DataAccessLabelId: pulumi.String("label-id"), +// UdmQuery: pulumi.String("principal.hostname=\"google.com\""), +// }) +// if err != nil { +// return err +// } +// _, err = chronicle.NewDataAccessScope(ctx, "example", &chronicle.DataAccessScopeArgs{ +// Location: pulumi.String("us"), +// Instance: pulumi.String("00000000-0000-0000-0000-000000000000"), +// DataAccessScopeId: pulumi.String("scope-id"), +// Description: pulumi.String("scope-description"), +// AllowedDataAccessLabels: chronicle.DataAccessScopeAllowedDataAccessLabelArray{ +// &chronicle.DataAccessScopeAllowedDataAccessLabelArgs{ +// DataAccessLabel: pulumi.Any(googleChronicleDataAccessLabel.CustomDataAccessLabel.DataAccessLabelId), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// ### Chronicle Dataaccessscope With Asset Namespace +// +// ```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.NewDataAccessScope(ctx, "example", &chronicle.DataAccessScopeArgs{ +// Location: pulumi.String("us"), +// Instance: pulumi.String("00000000-0000-0000-0000-000000000000"), +// DataAccessScopeId: pulumi.String("scope-id"), +// Description: pulumi.String("scope-description"), +// AllowedDataAccessLabels: chronicle.DataAccessScopeAllowedDataAccessLabelArray{ +// &chronicle.DataAccessScopeAllowedDataAccessLabelArgs{ +// AssetNamespace: pulumi.String("my-namespace"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// ### Chronicle Dataaccessscope With Ingestion Label +// +// ```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.NewDataAccessScope(ctx, "example", &chronicle.DataAccessScopeArgs{ +// Location: pulumi.String("us"), +// Instance: pulumi.String("00000000-0000-0000-0000-000000000000"), +// DataAccessScopeId: pulumi.String("scope-id"), +// Description: pulumi.String("scope-description"), +// AllowedDataAccessLabels: chronicle.DataAccessScopeAllowedDataAccessLabelArray{ +// &chronicle.DataAccessScopeAllowedDataAccessLabelArgs{ +// IngestionLabel: &chronicle.DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs{ +// IngestionLabelKey: pulumi.String("ingestion_key"), +// IngestionLabelValue: pulumi.String("ingestion_value"), +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// ### Chronicle Dataaccessscope With Denied Labels +// +// ```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.NewDataAccessLabel(ctx, "custom_data_access_label", &chronicle.DataAccessLabelArgs{ +// Location: pulumi.String("us"), +// Instance: pulumi.String("00000000-0000-0000-0000-000000000000"), +// DataAccessLabelId: pulumi.String("label-id"), +// UdmQuery: pulumi.String("principal.hostname=\"google.com\""), +// }) +// if err != nil { +// return err +// } +// _, err = chronicle.NewDataAccessScope(ctx, "example", &chronicle.DataAccessScopeArgs{ +// Location: pulumi.String("us"), +// Instance: pulumi.String("00000000-0000-0000-0000-000000000000"), +// DataAccessScopeId: pulumi.String("scope-id"), +// Description: pulumi.String("scope-description"), +// AllowAll: pulumi.Bool(true), +// DeniedDataAccessLabels: chronicle.DataAccessScopeDeniedDataAccessLabelArray{ +// &chronicle.DataAccessScopeDeniedDataAccessLabelArgs{ +// LogType: pulumi.String("GCP_CLOUDAUDIT"), +// }, +// &chronicle.DataAccessScopeDeniedDataAccessLabelArgs{ +// DataAccessLabel: pulumi.Any(googleChronicleDataAccessLabel.CustomDataAccessLabel.DataAccessLabelId), +// }, +// &chronicle.DataAccessScopeDeniedDataAccessLabelArgs{ +// IngestionLabel: &chronicle.DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs{ +// IngestionLabelKey: pulumi.String("ingestion_key"), +// IngestionLabelValue: pulumi.String("ingestion_value"), +// }, +// }, +// &chronicle.DataAccessScopeDeniedDataAccessLabelArgs{ +// AssetNamespace: pulumi.String("my-namespace"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// DataAccessScope can be imported using any of these accepted formats: +// +// * `projects/{{project}}/locations/{{location}}/instances/{{instance}}/dataAccessScopes/{{data_access_scope_id}}` +// +// * `{{project}}/{{location}}/{{instance}}/{{data_access_scope_id}}` +// +// * `{{location}}/{{instance}}/{{data_access_scope_id}}` +// +// When using the `pulumi import` command, DataAccessScope can be imported using one of the formats above. For example: +// +// ```sh +// $ pulumi import gcp:chronicle/dataAccessScope:DataAccessScope default projects/{{project}}/locations/{{location}}/instances/{{instance}}/dataAccessScopes/{{data_access_scope_id}} +// ``` +// +// ```sh +// $ pulumi import gcp:chronicle/dataAccessScope:DataAccessScope default {{project}}/{{location}}/{{instance}}/{{data_access_scope_id}} +// ``` +// +// ```sh +// $ pulumi import gcp:chronicle/dataAccessScope:DataAccessScope default {{location}}/{{instance}}/{{data_access_scope_id}} +// ``` +type DataAccessScope struct { + pulumi.CustomResourceState + + // Optional. Whether or not the scope allows all labels, allowAll and + // allowedDataAccessLabels are mutually exclusive and one of them must be + // present. deniedDataAccessLabels can still be used along with allow_all. + // When combined with denied_data_access_labels, access will be granted to all + // data that doesn't have labels mentioned in denied_data_access_labels. E.g.: + // A customer with scope with denied labels A and B and allowAll will be able + // to see all data except data labeled with A and data labeled with B and data + // with labels A and B. + AllowAll pulumi.BoolPtrOutput `pulumi:"allowAll"` + // The allowed labels for the scope. There has to be at + // least one label allowed for the scope to be valid. + // The logical operator for evaluation of the allowed labels is OR. + // Either allowAll or allowedDataAccessLabels needs to be provided. + // E.g.: A customer with scope with allowed labels A and B will be able + // to see data with labeled with A or B or (A and B). + // Structure is documented below. + AllowedDataAccessLabels DataAccessScopeAllowedDataAccessLabelArrayOutput `pulumi:"allowedDataAccessLabels"` + // Output only. The user who created the data access scope. + Author pulumi.StringOutput `pulumi:"author"` + // Output only. The time at which the data access scope was created. + CreateTime pulumi.StringOutput `pulumi:"createTime"` + // Required. The user provided scope id which will become the last part of the name + // of the scope resource. + // Needs to be compliant with https://google.aip.dev/122 + // + // *** + DataAccessScopeId pulumi.StringOutput `pulumi:"dataAccessScopeId"` + // Optional. The denied labels for the scope. + // The logical operator for evaluation of the denied labels is AND. + // E.g.: A customer with scope with denied labels A and B won't be able + // to see data labeled with A and data labeled with B + // and data with labels A and B. + // Structure is documented below. + DeniedDataAccessLabels DataAccessScopeDeniedDataAccessLabelArrayOutput `pulumi:"deniedDataAccessLabels"` + // Optional. A description of the data access scope for a human reader. + Description pulumi.StringPtrOutput `pulumi:"description"` + // Output only. The name to be used for display to customers of the data access scope. + DisplayName pulumi.StringOutput `pulumi:"displayName"` + // The unique identifier for the Chronicle instance, which is the same as the customer ID. + Instance pulumi.StringOutput `pulumi:"instance"` + // Output only. The user who last updated the data access scope. + LastEditor pulumi.StringOutput `pulumi:"lastEditor"` + // 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"` + // The unique full name of the data access scope. This unique identifier is generated using values provided for the URL parameters. + // Format: + // projects/{project}/locations/{location}/instances/{instance}/dataAccessScopes/{data_access_scope_id} + 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"` + // Output only. The time at which the data access scope was last updated. + UpdateTime pulumi.StringOutput `pulumi:"updateTime"` +} + +// NewDataAccessScope registers a new resource with the given unique name, arguments, and options. +func NewDataAccessScope(ctx *pulumi.Context, + name string, args *DataAccessScopeArgs, opts ...pulumi.ResourceOption) (*DataAccessScope, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.DataAccessScopeId == nil { + return nil, errors.New("invalid value for required argument 'DataAccessScopeId'") + } + 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'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource DataAccessScope + err := ctx.RegisterResource("gcp:chronicle/dataAccessScope:DataAccessScope", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetDataAccessScope gets an existing DataAccessScope 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 GetDataAccessScope(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *DataAccessScopeState, opts ...pulumi.ResourceOption) (*DataAccessScope, error) { + var resource DataAccessScope + err := ctx.ReadResource("gcp:chronicle/dataAccessScope:DataAccessScope", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering DataAccessScope resources. +type dataAccessScopeState struct { + // Optional. Whether or not the scope allows all labels, allowAll and + // allowedDataAccessLabels are mutually exclusive and one of them must be + // present. deniedDataAccessLabels can still be used along with allow_all. + // When combined with denied_data_access_labels, access will be granted to all + // data that doesn't have labels mentioned in denied_data_access_labels. E.g.: + // A customer with scope with denied labels A and B and allowAll will be able + // to see all data except data labeled with A and data labeled with B and data + // with labels A and B. + AllowAll *bool `pulumi:"allowAll"` + // The allowed labels for the scope. There has to be at + // least one label allowed for the scope to be valid. + // The logical operator for evaluation of the allowed labels is OR. + // Either allowAll or allowedDataAccessLabels needs to be provided. + // E.g.: A customer with scope with allowed labels A and B will be able + // to see data with labeled with A or B or (A and B). + // Structure is documented below. + AllowedDataAccessLabels []DataAccessScopeAllowedDataAccessLabel `pulumi:"allowedDataAccessLabels"` + // Output only. The user who created the data access scope. + Author *string `pulumi:"author"` + // Output only. The time at which the data access scope was created. + CreateTime *string `pulumi:"createTime"` + // Required. The user provided scope id which will become the last part of the name + // of the scope resource. + // Needs to be compliant with https://google.aip.dev/122 + // + // *** + DataAccessScopeId *string `pulumi:"dataAccessScopeId"` + // Optional. The denied labels for the scope. + // The logical operator for evaluation of the denied labels is AND. + // E.g.: A customer with scope with denied labels A and B won't be able + // to see data labeled with A and data labeled with B + // and data with labels A and B. + // Structure is documented below. + DeniedDataAccessLabels []DataAccessScopeDeniedDataAccessLabel `pulumi:"deniedDataAccessLabels"` + // Optional. A description of the data access scope for a human reader. + Description *string `pulumi:"description"` + // Output only. The name to be used for display to customers of the data access scope. + DisplayName *string `pulumi:"displayName"` + // The unique identifier for the Chronicle instance, which is the same as the customer ID. + Instance *string `pulumi:"instance"` + // Output only. The user who last updated the data access scope. + LastEditor *string `pulumi:"lastEditor"` + // 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"` + // The unique full name of the data access scope. This unique identifier is generated using values provided for the URL parameters. + // Format: + // projects/{project}/locations/{location}/instances/{instance}/dataAccessScopes/{data_access_scope_id} + 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"` + // Output only. The time at which the data access scope was last updated. + UpdateTime *string `pulumi:"updateTime"` +} + +type DataAccessScopeState struct { + // Optional. Whether or not the scope allows all labels, allowAll and + // allowedDataAccessLabels are mutually exclusive and one of them must be + // present. deniedDataAccessLabels can still be used along with allow_all. + // When combined with denied_data_access_labels, access will be granted to all + // data that doesn't have labels mentioned in denied_data_access_labels. E.g.: + // A customer with scope with denied labels A and B and allowAll will be able + // to see all data except data labeled with A and data labeled with B and data + // with labels A and B. + AllowAll pulumi.BoolPtrInput + // The allowed labels for the scope. There has to be at + // least one label allowed for the scope to be valid. + // The logical operator for evaluation of the allowed labels is OR. + // Either allowAll or allowedDataAccessLabels needs to be provided. + // E.g.: A customer with scope with allowed labels A and B will be able + // to see data with labeled with A or B or (A and B). + // Structure is documented below. + AllowedDataAccessLabels DataAccessScopeAllowedDataAccessLabelArrayInput + // Output only. The user who created the data access scope. + Author pulumi.StringPtrInput + // Output only. The time at which the data access scope was created. + CreateTime pulumi.StringPtrInput + // Required. The user provided scope id which will become the last part of the name + // of the scope resource. + // Needs to be compliant with https://google.aip.dev/122 + // + // *** + DataAccessScopeId pulumi.StringPtrInput + // Optional. The denied labels for the scope. + // The logical operator for evaluation of the denied labels is AND. + // E.g.: A customer with scope with denied labels A and B won't be able + // to see data labeled with A and data labeled with B + // and data with labels A and B. + // Structure is documented below. + DeniedDataAccessLabels DataAccessScopeDeniedDataAccessLabelArrayInput + // Optional. A description of the data access scope for a human reader. + Description pulumi.StringPtrInput + // Output only. The name to be used for display to customers of the data access scope. + DisplayName pulumi.StringPtrInput + // The unique identifier for the Chronicle instance, which is the same as the customer ID. + Instance pulumi.StringPtrInput + // Output only. The user who last updated the data access scope. + LastEditor 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 + // The unique full name of the data access scope. This unique identifier is generated using values provided for the URL parameters. + // Format: + // projects/{project}/locations/{location}/instances/{instance}/dataAccessScopes/{data_access_scope_id} + 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 + // Output only. The time at which the data access scope was last updated. + UpdateTime pulumi.StringPtrInput +} + +func (DataAccessScopeState) ElementType() reflect.Type { + return reflect.TypeOf((*dataAccessScopeState)(nil)).Elem() +} + +type dataAccessScopeArgs struct { + // Optional. Whether or not the scope allows all labels, allowAll and + // allowedDataAccessLabels are mutually exclusive and one of them must be + // present. deniedDataAccessLabels can still be used along with allow_all. + // When combined with denied_data_access_labels, access will be granted to all + // data that doesn't have labels mentioned in denied_data_access_labels. E.g.: + // A customer with scope with denied labels A and B and allowAll will be able + // to see all data except data labeled with A and data labeled with B and data + // with labels A and B. + AllowAll *bool `pulumi:"allowAll"` + // The allowed labels for the scope. There has to be at + // least one label allowed for the scope to be valid. + // The logical operator for evaluation of the allowed labels is OR. + // Either allowAll or allowedDataAccessLabels needs to be provided. + // E.g.: A customer with scope with allowed labels A and B will be able + // to see data with labeled with A or B or (A and B). + // Structure is documented below. + AllowedDataAccessLabels []DataAccessScopeAllowedDataAccessLabel `pulumi:"allowedDataAccessLabels"` + // Required. The user provided scope id which will become the last part of the name + // of the scope resource. + // Needs to be compliant with https://google.aip.dev/122 + // + // *** + DataAccessScopeId string `pulumi:"dataAccessScopeId"` + // Optional. The denied labels for the scope. + // The logical operator for evaluation of the denied labels is AND. + // E.g.: A customer with scope with denied labels A and B won't be able + // to see data labeled with A and data labeled with B + // and data with labels A and B. + // Structure is documented below. + DeniedDataAccessLabels []DataAccessScopeDeniedDataAccessLabel `pulumi:"deniedDataAccessLabels"` + // Optional. A description of the data access scope for a human reader. + Description *string `pulumi:"description"` + // 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"` + // 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 DataAccessScope resource. +type DataAccessScopeArgs struct { + // Optional. Whether or not the scope allows all labels, allowAll and + // allowedDataAccessLabels are mutually exclusive and one of them must be + // present. deniedDataAccessLabels can still be used along with allow_all. + // When combined with denied_data_access_labels, access will be granted to all + // data that doesn't have labels mentioned in denied_data_access_labels. E.g.: + // A customer with scope with denied labels A and B and allowAll will be able + // to see all data except data labeled with A and data labeled with B and data + // with labels A and B. + AllowAll pulumi.BoolPtrInput + // The allowed labels for the scope. There has to be at + // least one label allowed for the scope to be valid. + // The logical operator for evaluation of the allowed labels is OR. + // Either allowAll or allowedDataAccessLabels needs to be provided. + // E.g.: A customer with scope with allowed labels A and B will be able + // to see data with labeled with A or B or (A and B). + // Structure is documented below. + AllowedDataAccessLabels DataAccessScopeAllowedDataAccessLabelArrayInput + // Required. The user provided scope id which will become the last part of the name + // of the scope resource. + // Needs to be compliant with https://google.aip.dev/122 + // + // *** + DataAccessScopeId pulumi.StringInput + // Optional. The denied labels for the scope. + // The logical operator for evaluation of the denied labels is AND. + // E.g.: A customer with scope with denied labels A and B won't be able + // to see data labeled with A and data labeled with B + // and data with labels A and B. + // Structure is documented below. + DeniedDataAccessLabels DataAccessScopeDeniedDataAccessLabelArrayInput + // Optional. A description of the data access scope for a human reader. + Description pulumi.StringPtrInput + // 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 + // The ID of the project in which the resource belongs. + // If it is not provided, the provider project is used. + Project pulumi.StringPtrInput +} + +func (DataAccessScopeArgs) ElementType() reflect.Type { + return reflect.TypeOf((*dataAccessScopeArgs)(nil)).Elem() +} + +type DataAccessScopeInput interface { + pulumi.Input + + ToDataAccessScopeOutput() DataAccessScopeOutput + ToDataAccessScopeOutputWithContext(ctx context.Context) DataAccessScopeOutput +} + +func (*DataAccessScope) ElementType() reflect.Type { + return reflect.TypeOf((**DataAccessScope)(nil)).Elem() +} + +func (i *DataAccessScope) ToDataAccessScopeOutput() DataAccessScopeOutput { + return i.ToDataAccessScopeOutputWithContext(context.Background()) +} + +func (i *DataAccessScope) ToDataAccessScopeOutputWithContext(ctx context.Context) DataAccessScopeOutput { + return pulumi.ToOutputWithContext(ctx, i).(DataAccessScopeOutput) +} + +// DataAccessScopeArrayInput is an input type that accepts DataAccessScopeArray and DataAccessScopeArrayOutput values. +// You can construct a concrete instance of `DataAccessScopeArrayInput` via: +// +// DataAccessScopeArray{ DataAccessScopeArgs{...} } +type DataAccessScopeArrayInput interface { + pulumi.Input + + ToDataAccessScopeArrayOutput() DataAccessScopeArrayOutput + ToDataAccessScopeArrayOutputWithContext(context.Context) DataAccessScopeArrayOutput +} + +type DataAccessScopeArray []DataAccessScopeInput + +func (DataAccessScopeArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*DataAccessScope)(nil)).Elem() +} + +func (i DataAccessScopeArray) ToDataAccessScopeArrayOutput() DataAccessScopeArrayOutput { + return i.ToDataAccessScopeArrayOutputWithContext(context.Background()) +} + +func (i DataAccessScopeArray) ToDataAccessScopeArrayOutputWithContext(ctx context.Context) DataAccessScopeArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(DataAccessScopeArrayOutput) +} + +// DataAccessScopeMapInput is an input type that accepts DataAccessScopeMap and DataAccessScopeMapOutput values. +// You can construct a concrete instance of `DataAccessScopeMapInput` via: +// +// DataAccessScopeMap{ "key": DataAccessScopeArgs{...} } +type DataAccessScopeMapInput interface { + pulumi.Input + + ToDataAccessScopeMapOutput() DataAccessScopeMapOutput + ToDataAccessScopeMapOutputWithContext(context.Context) DataAccessScopeMapOutput +} + +type DataAccessScopeMap map[string]DataAccessScopeInput + +func (DataAccessScopeMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*DataAccessScope)(nil)).Elem() +} + +func (i DataAccessScopeMap) ToDataAccessScopeMapOutput() DataAccessScopeMapOutput { + return i.ToDataAccessScopeMapOutputWithContext(context.Background()) +} + +func (i DataAccessScopeMap) ToDataAccessScopeMapOutputWithContext(ctx context.Context) DataAccessScopeMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(DataAccessScopeMapOutput) +} + +type DataAccessScopeOutput struct{ *pulumi.OutputState } + +func (DataAccessScopeOutput) ElementType() reflect.Type { + return reflect.TypeOf((**DataAccessScope)(nil)).Elem() +} + +func (o DataAccessScopeOutput) ToDataAccessScopeOutput() DataAccessScopeOutput { + return o +} + +func (o DataAccessScopeOutput) ToDataAccessScopeOutputWithContext(ctx context.Context) DataAccessScopeOutput { + return o +} + +// Optional. Whether or not the scope allows all labels, allowAll and +// allowedDataAccessLabels are mutually exclusive and one of them must be +// present. deniedDataAccessLabels can still be used along with allow_all. +// When combined with denied_data_access_labels, access will be granted to all +// data that doesn't have labels mentioned in denied_data_access_labels. E.g.: +// A customer with scope with denied labels A and B and allowAll will be able +// to see all data except data labeled with A and data labeled with B and data +// with labels A and B. +func (o DataAccessScopeOutput) AllowAll() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *DataAccessScope) pulumi.BoolPtrOutput { return v.AllowAll }).(pulumi.BoolPtrOutput) +} + +// The allowed labels for the scope. There has to be at +// least one label allowed for the scope to be valid. +// The logical operator for evaluation of the allowed labels is OR. +// Either allowAll or allowedDataAccessLabels needs to be provided. +// E.g.: A customer with scope with allowed labels A and B will be able +// to see data with labeled with A or B or (A and B). +// Structure is documented below. +func (o DataAccessScopeOutput) AllowedDataAccessLabels() DataAccessScopeAllowedDataAccessLabelArrayOutput { + return o.ApplyT(func(v *DataAccessScope) DataAccessScopeAllowedDataAccessLabelArrayOutput { + return v.AllowedDataAccessLabels + }).(DataAccessScopeAllowedDataAccessLabelArrayOutput) +} + +// Output only. The user who created the data access scope. +func (o DataAccessScopeOutput) Author() pulumi.StringOutput { + return o.ApplyT(func(v *DataAccessScope) pulumi.StringOutput { return v.Author }).(pulumi.StringOutput) +} + +// Output only. The time at which the data access scope was created. +func (o DataAccessScopeOutput) CreateTime() pulumi.StringOutput { + return o.ApplyT(func(v *DataAccessScope) pulumi.StringOutput { return v.CreateTime }).(pulumi.StringOutput) +} + +// Required. The user provided scope id which will become the last part of the name +// of the scope resource. +// Needs to be compliant with https://google.aip.dev/122 +// +// *** +func (o DataAccessScopeOutput) DataAccessScopeId() pulumi.StringOutput { + return o.ApplyT(func(v *DataAccessScope) pulumi.StringOutput { return v.DataAccessScopeId }).(pulumi.StringOutput) +} + +// Optional. The denied labels for the scope. +// The logical operator for evaluation of the denied labels is AND. +// E.g.: A customer with scope with denied labels A and B won't be able +// to see data labeled with A and data labeled with B +// and data with labels A and B. +// Structure is documented below. +func (o DataAccessScopeOutput) DeniedDataAccessLabels() DataAccessScopeDeniedDataAccessLabelArrayOutput { + return o.ApplyT(func(v *DataAccessScope) DataAccessScopeDeniedDataAccessLabelArrayOutput { + return v.DeniedDataAccessLabels + }).(DataAccessScopeDeniedDataAccessLabelArrayOutput) +} + +// Optional. A description of the data access scope for a human reader. +func (o DataAccessScopeOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v *DataAccessScope) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) +} + +// Output only. The name to be used for display to customers of the data access scope. +func (o DataAccessScopeOutput) DisplayName() pulumi.StringOutput { + return o.ApplyT(func(v *DataAccessScope) pulumi.StringOutput { return v.DisplayName }).(pulumi.StringOutput) +} + +// The unique identifier for the Chronicle instance, which is the same as the customer ID. +func (o DataAccessScopeOutput) Instance() pulumi.StringOutput { + return o.ApplyT(func(v *DataAccessScope) pulumi.StringOutput { return v.Instance }).(pulumi.StringOutput) +} + +// Output only. The user who last updated the data access scope. +func (o DataAccessScopeOutput) LastEditor() pulumi.StringOutput { + return o.ApplyT(func(v *DataAccessScope) pulumi.StringOutput { return v.LastEditor }).(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 DataAccessScopeOutput) Location() pulumi.StringOutput { + return o.ApplyT(func(v *DataAccessScope) pulumi.StringOutput { return v.Location }).(pulumi.StringOutput) +} + +// The unique full name of the data access scope. This unique identifier is generated using values provided for the URL parameters. +// Format: +// projects/{project}/locations/{location}/instances/{instance}/dataAccessScopes/{data_access_scope_id} +func (o DataAccessScopeOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *DataAccessScope) 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 DataAccessScopeOutput) Project() pulumi.StringOutput { + return o.ApplyT(func(v *DataAccessScope) pulumi.StringOutput { return v.Project }).(pulumi.StringOutput) +} + +// Output only. The time at which the data access scope was last updated. +func (o DataAccessScopeOutput) UpdateTime() pulumi.StringOutput { + return o.ApplyT(func(v *DataAccessScope) pulumi.StringOutput { return v.UpdateTime }).(pulumi.StringOutput) +} + +type DataAccessScopeArrayOutput struct{ *pulumi.OutputState } + +func (DataAccessScopeArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*DataAccessScope)(nil)).Elem() +} + +func (o DataAccessScopeArrayOutput) ToDataAccessScopeArrayOutput() DataAccessScopeArrayOutput { + return o +} + +func (o DataAccessScopeArrayOutput) ToDataAccessScopeArrayOutputWithContext(ctx context.Context) DataAccessScopeArrayOutput { + return o +} + +func (o DataAccessScopeArrayOutput) Index(i pulumi.IntInput) DataAccessScopeOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *DataAccessScope { + return vs[0].([]*DataAccessScope)[vs[1].(int)] + }).(DataAccessScopeOutput) +} + +type DataAccessScopeMapOutput struct{ *pulumi.OutputState } + +func (DataAccessScopeMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*DataAccessScope)(nil)).Elem() +} + +func (o DataAccessScopeMapOutput) ToDataAccessScopeMapOutput() DataAccessScopeMapOutput { + return o +} + +func (o DataAccessScopeMapOutput) ToDataAccessScopeMapOutputWithContext(ctx context.Context) DataAccessScopeMapOutput { + return o +} + +func (o DataAccessScopeMapOutput) MapIndex(k pulumi.StringInput) DataAccessScopeOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *DataAccessScope { + return vs[0].(map[string]*DataAccessScope)[vs[1].(string)] + }).(DataAccessScopeOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*DataAccessScopeInput)(nil)).Elem(), &DataAccessScope{}) + pulumi.RegisterInputType(reflect.TypeOf((*DataAccessScopeArrayInput)(nil)).Elem(), DataAccessScopeArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*DataAccessScopeMapInput)(nil)).Elem(), DataAccessScopeMap{}) + pulumi.RegisterOutputType(DataAccessScopeOutput{}) + pulumi.RegisterOutputType(DataAccessScopeArrayOutput{}) + pulumi.RegisterOutputType(DataAccessScopeMapOutput{}) +} diff --git a/sdk/go/gcp/chronicle/init.go b/sdk/go/gcp/chronicle/init.go index 0f5f4c67a4..8c2381ca66 100644 --- a/sdk/go/gcp/chronicle/init.go +++ b/sdk/go/gcp/chronicle/init.go @@ -21,6 +21,10 @@ func (m *module) Version() semver.Version { func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi.Resource, err error) { switch typ { + case "gcp:chronicle/dataAccessLabel:DataAccessLabel": + r = &DataAccessLabel{} + case "gcp:chronicle/dataAccessScope:DataAccessScope": + r = &DataAccessScope{} case "gcp:chronicle/watchlist:Watchlist": r = &Watchlist{} default: @@ -36,6 +40,16 @@ func init() { if err != nil { version = semver.Version{Major: 1} } + pulumi.RegisterResourceModule( + "gcp", + "chronicle/dataAccessLabel", + &module{version}, + ) + pulumi.RegisterResourceModule( + "gcp", + "chronicle/dataAccessScope", + &module{version}, + ) pulumi.RegisterResourceModule( "gcp", "chronicle/watchlist", diff --git a/sdk/go/gcp/chronicle/pulumiTypes.go b/sdk/go/gcp/chronicle/pulumiTypes.go index 0e874e58ba..6359ad8ff8 100644 --- a/sdk/go/gcp/chronicle/pulumiTypes.go +++ b/sdk/go/gcp/chronicle/pulumiTypes.go @@ -13,6 +13,646 @@ import ( var _ = internal.GetEnvOrDefault +type DataAccessScopeAllowedDataAccessLabel struct { + // The asset namespace configured in the forwarder + // of the customer's events. + AssetNamespace *string `pulumi:"assetNamespace"` + // The name of the data access label. + DataAccessLabel *string `pulumi:"dataAccessLabel"` + // (Output) + // Output only. The display name of the label. + // Data access label and log types's name + // will match the display name of the resource. + // The asset namespace will match the namespace itself. + // The ingestion key value pair will match the key of the tuple. + DisplayName *string `pulumi:"displayName"` + // Representation of an ingestion label type. + // Structure is documented below. + IngestionLabel *DataAccessScopeAllowedDataAccessLabelIngestionLabel `pulumi:"ingestionLabel"` + // The name of the log type. + LogType *string `pulumi:"logType"` +} + +// DataAccessScopeAllowedDataAccessLabelInput is an input type that accepts DataAccessScopeAllowedDataAccessLabelArgs and DataAccessScopeAllowedDataAccessLabelOutput values. +// You can construct a concrete instance of `DataAccessScopeAllowedDataAccessLabelInput` via: +// +// DataAccessScopeAllowedDataAccessLabelArgs{...} +type DataAccessScopeAllowedDataAccessLabelInput interface { + pulumi.Input + + ToDataAccessScopeAllowedDataAccessLabelOutput() DataAccessScopeAllowedDataAccessLabelOutput + ToDataAccessScopeAllowedDataAccessLabelOutputWithContext(context.Context) DataAccessScopeAllowedDataAccessLabelOutput +} + +type DataAccessScopeAllowedDataAccessLabelArgs struct { + // The asset namespace configured in the forwarder + // of the customer's events. + AssetNamespace pulumi.StringPtrInput `pulumi:"assetNamespace"` + // The name of the data access label. + DataAccessLabel pulumi.StringPtrInput `pulumi:"dataAccessLabel"` + // (Output) + // Output only. The display name of the label. + // Data access label and log types's name + // will match the display name of the resource. + // The asset namespace will match the namespace itself. + // The ingestion key value pair will match the key of the tuple. + DisplayName pulumi.StringPtrInput `pulumi:"displayName"` + // Representation of an ingestion label type. + // Structure is documented below. + IngestionLabel DataAccessScopeAllowedDataAccessLabelIngestionLabelPtrInput `pulumi:"ingestionLabel"` + // The name of the log type. + LogType pulumi.StringPtrInput `pulumi:"logType"` +} + +func (DataAccessScopeAllowedDataAccessLabelArgs) ElementType() reflect.Type { + return reflect.TypeOf((*DataAccessScopeAllowedDataAccessLabel)(nil)).Elem() +} + +func (i DataAccessScopeAllowedDataAccessLabelArgs) ToDataAccessScopeAllowedDataAccessLabelOutput() DataAccessScopeAllowedDataAccessLabelOutput { + return i.ToDataAccessScopeAllowedDataAccessLabelOutputWithContext(context.Background()) +} + +func (i DataAccessScopeAllowedDataAccessLabelArgs) ToDataAccessScopeAllowedDataAccessLabelOutputWithContext(ctx context.Context) DataAccessScopeAllowedDataAccessLabelOutput { + return pulumi.ToOutputWithContext(ctx, i).(DataAccessScopeAllowedDataAccessLabelOutput) +} + +// DataAccessScopeAllowedDataAccessLabelArrayInput is an input type that accepts DataAccessScopeAllowedDataAccessLabelArray and DataAccessScopeAllowedDataAccessLabelArrayOutput values. +// You can construct a concrete instance of `DataAccessScopeAllowedDataAccessLabelArrayInput` via: +// +// DataAccessScopeAllowedDataAccessLabelArray{ DataAccessScopeAllowedDataAccessLabelArgs{...} } +type DataAccessScopeAllowedDataAccessLabelArrayInput interface { + pulumi.Input + + ToDataAccessScopeAllowedDataAccessLabelArrayOutput() DataAccessScopeAllowedDataAccessLabelArrayOutput + ToDataAccessScopeAllowedDataAccessLabelArrayOutputWithContext(context.Context) DataAccessScopeAllowedDataAccessLabelArrayOutput +} + +type DataAccessScopeAllowedDataAccessLabelArray []DataAccessScopeAllowedDataAccessLabelInput + +func (DataAccessScopeAllowedDataAccessLabelArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]DataAccessScopeAllowedDataAccessLabel)(nil)).Elem() +} + +func (i DataAccessScopeAllowedDataAccessLabelArray) ToDataAccessScopeAllowedDataAccessLabelArrayOutput() DataAccessScopeAllowedDataAccessLabelArrayOutput { + return i.ToDataAccessScopeAllowedDataAccessLabelArrayOutputWithContext(context.Background()) +} + +func (i DataAccessScopeAllowedDataAccessLabelArray) ToDataAccessScopeAllowedDataAccessLabelArrayOutputWithContext(ctx context.Context) DataAccessScopeAllowedDataAccessLabelArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(DataAccessScopeAllowedDataAccessLabelArrayOutput) +} + +type DataAccessScopeAllowedDataAccessLabelOutput struct{ *pulumi.OutputState } + +func (DataAccessScopeAllowedDataAccessLabelOutput) ElementType() reflect.Type { + return reflect.TypeOf((*DataAccessScopeAllowedDataAccessLabel)(nil)).Elem() +} + +func (o DataAccessScopeAllowedDataAccessLabelOutput) ToDataAccessScopeAllowedDataAccessLabelOutput() DataAccessScopeAllowedDataAccessLabelOutput { + return o +} + +func (o DataAccessScopeAllowedDataAccessLabelOutput) ToDataAccessScopeAllowedDataAccessLabelOutputWithContext(ctx context.Context) DataAccessScopeAllowedDataAccessLabelOutput { + return o +} + +// The asset namespace configured in the forwarder +// of the customer's events. +func (o DataAccessScopeAllowedDataAccessLabelOutput) AssetNamespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v DataAccessScopeAllowedDataAccessLabel) *string { return v.AssetNamespace }).(pulumi.StringPtrOutput) +} + +// The name of the data access label. +func (o DataAccessScopeAllowedDataAccessLabelOutput) DataAccessLabel() pulumi.StringPtrOutput { + return o.ApplyT(func(v DataAccessScopeAllowedDataAccessLabel) *string { return v.DataAccessLabel }).(pulumi.StringPtrOutput) +} + +// (Output) +// Output only. The display name of the label. +// Data access label and log types's name +// will match the display name of the resource. +// The asset namespace will match the namespace itself. +// The ingestion key value pair will match the key of the tuple. +func (o DataAccessScopeAllowedDataAccessLabelOutput) DisplayName() pulumi.StringPtrOutput { + return o.ApplyT(func(v DataAccessScopeAllowedDataAccessLabel) *string { return v.DisplayName }).(pulumi.StringPtrOutput) +} + +// Representation of an ingestion label type. +// Structure is documented below. +func (o DataAccessScopeAllowedDataAccessLabelOutput) IngestionLabel() DataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutput { + return o.ApplyT(func(v DataAccessScopeAllowedDataAccessLabel) *DataAccessScopeAllowedDataAccessLabelIngestionLabel { + return v.IngestionLabel + }).(DataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutput) +} + +// The name of the log type. +func (o DataAccessScopeAllowedDataAccessLabelOutput) LogType() pulumi.StringPtrOutput { + return o.ApplyT(func(v DataAccessScopeAllowedDataAccessLabel) *string { return v.LogType }).(pulumi.StringPtrOutput) +} + +type DataAccessScopeAllowedDataAccessLabelArrayOutput struct{ *pulumi.OutputState } + +func (DataAccessScopeAllowedDataAccessLabelArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]DataAccessScopeAllowedDataAccessLabel)(nil)).Elem() +} + +func (o DataAccessScopeAllowedDataAccessLabelArrayOutput) ToDataAccessScopeAllowedDataAccessLabelArrayOutput() DataAccessScopeAllowedDataAccessLabelArrayOutput { + return o +} + +func (o DataAccessScopeAllowedDataAccessLabelArrayOutput) ToDataAccessScopeAllowedDataAccessLabelArrayOutputWithContext(ctx context.Context) DataAccessScopeAllowedDataAccessLabelArrayOutput { + return o +} + +func (o DataAccessScopeAllowedDataAccessLabelArrayOutput) Index(i pulumi.IntInput) DataAccessScopeAllowedDataAccessLabelOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) DataAccessScopeAllowedDataAccessLabel { + return vs[0].([]DataAccessScopeAllowedDataAccessLabel)[vs[1].(int)] + }).(DataAccessScopeAllowedDataAccessLabelOutput) +} + +type DataAccessScopeAllowedDataAccessLabelIngestionLabel struct { + // Required. The key of the ingestion label. Always required. + IngestionLabelKey string `pulumi:"ingestionLabelKey"` + // Optional. The value of the ingestion label. Optional. An object + // with no provided value and some key provided would match + // against the given key and ANY value. + IngestionLabelValue *string `pulumi:"ingestionLabelValue"` +} + +// DataAccessScopeAllowedDataAccessLabelIngestionLabelInput is an input type that accepts DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs and DataAccessScopeAllowedDataAccessLabelIngestionLabelOutput values. +// You can construct a concrete instance of `DataAccessScopeAllowedDataAccessLabelIngestionLabelInput` via: +// +// DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs{...} +type DataAccessScopeAllowedDataAccessLabelIngestionLabelInput interface { + pulumi.Input + + ToDataAccessScopeAllowedDataAccessLabelIngestionLabelOutput() DataAccessScopeAllowedDataAccessLabelIngestionLabelOutput + ToDataAccessScopeAllowedDataAccessLabelIngestionLabelOutputWithContext(context.Context) DataAccessScopeAllowedDataAccessLabelIngestionLabelOutput +} + +type DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs struct { + // Required. The key of the ingestion label. Always required. + IngestionLabelKey pulumi.StringInput `pulumi:"ingestionLabelKey"` + // Optional. The value of the ingestion label. Optional. An object + // with no provided value and some key provided would match + // against the given key and ANY value. + IngestionLabelValue pulumi.StringPtrInput `pulumi:"ingestionLabelValue"` +} + +func (DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs) ElementType() reflect.Type { + return reflect.TypeOf((*DataAccessScopeAllowedDataAccessLabelIngestionLabel)(nil)).Elem() +} + +func (i DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs) ToDataAccessScopeAllowedDataAccessLabelIngestionLabelOutput() DataAccessScopeAllowedDataAccessLabelIngestionLabelOutput { + return i.ToDataAccessScopeAllowedDataAccessLabelIngestionLabelOutputWithContext(context.Background()) +} + +func (i DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs) ToDataAccessScopeAllowedDataAccessLabelIngestionLabelOutputWithContext(ctx context.Context) DataAccessScopeAllowedDataAccessLabelIngestionLabelOutput { + return pulumi.ToOutputWithContext(ctx, i).(DataAccessScopeAllowedDataAccessLabelIngestionLabelOutput) +} + +func (i DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs) ToDataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutput() DataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutput { + return i.ToDataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutputWithContext(context.Background()) +} + +func (i DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs) ToDataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutputWithContext(ctx context.Context) DataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(DataAccessScopeAllowedDataAccessLabelIngestionLabelOutput).ToDataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutputWithContext(ctx) +} + +// DataAccessScopeAllowedDataAccessLabelIngestionLabelPtrInput is an input type that accepts DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs, DataAccessScopeAllowedDataAccessLabelIngestionLabelPtr and DataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutput values. +// You can construct a concrete instance of `DataAccessScopeAllowedDataAccessLabelIngestionLabelPtrInput` via: +// +// DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs{...} +// +// or: +// +// nil +type DataAccessScopeAllowedDataAccessLabelIngestionLabelPtrInput interface { + pulumi.Input + + ToDataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutput() DataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutput + ToDataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutputWithContext(context.Context) DataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutput +} + +type dataAccessScopeAllowedDataAccessLabelIngestionLabelPtrType DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs + +func DataAccessScopeAllowedDataAccessLabelIngestionLabelPtr(v *DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs) DataAccessScopeAllowedDataAccessLabelIngestionLabelPtrInput { + return (*dataAccessScopeAllowedDataAccessLabelIngestionLabelPtrType)(v) +} + +func (*dataAccessScopeAllowedDataAccessLabelIngestionLabelPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**DataAccessScopeAllowedDataAccessLabelIngestionLabel)(nil)).Elem() +} + +func (i *dataAccessScopeAllowedDataAccessLabelIngestionLabelPtrType) ToDataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutput() DataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutput { + return i.ToDataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutputWithContext(context.Background()) +} + +func (i *dataAccessScopeAllowedDataAccessLabelIngestionLabelPtrType) ToDataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutputWithContext(ctx context.Context) DataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(DataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutput) +} + +type DataAccessScopeAllowedDataAccessLabelIngestionLabelOutput struct{ *pulumi.OutputState } + +func (DataAccessScopeAllowedDataAccessLabelIngestionLabelOutput) ElementType() reflect.Type { + return reflect.TypeOf((*DataAccessScopeAllowedDataAccessLabelIngestionLabel)(nil)).Elem() +} + +func (o DataAccessScopeAllowedDataAccessLabelIngestionLabelOutput) ToDataAccessScopeAllowedDataAccessLabelIngestionLabelOutput() DataAccessScopeAllowedDataAccessLabelIngestionLabelOutput { + return o +} + +func (o DataAccessScopeAllowedDataAccessLabelIngestionLabelOutput) ToDataAccessScopeAllowedDataAccessLabelIngestionLabelOutputWithContext(ctx context.Context) DataAccessScopeAllowedDataAccessLabelIngestionLabelOutput { + return o +} + +func (o DataAccessScopeAllowedDataAccessLabelIngestionLabelOutput) ToDataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutput() DataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutput { + return o.ToDataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutputWithContext(context.Background()) +} + +func (o DataAccessScopeAllowedDataAccessLabelIngestionLabelOutput) ToDataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutputWithContext(ctx context.Context) DataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v DataAccessScopeAllowedDataAccessLabelIngestionLabel) *DataAccessScopeAllowedDataAccessLabelIngestionLabel { + return &v + }).(DataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutput) +} + +// Required. The key of the ingestion label. Always required. +func (o DataAccessScopeAllowedDataAccessLabelIngestionLabelOutput) IngestionLabelKey() pulumi.StringOutput { + return o.ApplyT(func(v DataAccessScopeAllowedDataAccessLabelIngestionLabel) string { return v.IngestionLabelKey }).(pulumi.StringOutput) +} + +// Optional. The value of the ingestion label. Optional. An object +// with no provided value and some key provided would match +// against the given key and ANY value. +func (o DataAccessScopeAllowedDataAccessLabelIngestionLabelOutput) IngestionLabelValue() pulumi.StringPtrOutput { + return o.ApplyT(func(v DataAccessScopeAllowedDataAccessLabelIngestionLabel) *string { return v.IngestionLabelValue }).(pulumi.StringPtrOutput) +} + +type DataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutput struct{ *pulumi.OutputState } + +func (DataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**DataAccessScopeAllowedDataAccessLabelIngestionLabel)(nil)).Elem() +} + +func (o DataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutput) ToDataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutput() DataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutput { + return o +} + +func (o DataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutput) ToDataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutputWithContext(ctx context.Context) DataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutput { + return o +} + +func (o DataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutput) Elem() DataAccessScopeAllowedDataAccessLabelIngestionLabelOutput { + return o.ApplyT(func(v *DataAccessScopeAllowedDataAccessLabelIngestionLabel) DataAccessScopeAllowedDataAccessLabelIngestionLabel { + if v != nil { + return *v + } + var ret DataAccessScopeAllowedDataAccessLabelIngestionLabel + return ret + }).(DataAccessScopeAllowedDataAccessLabelIngestionLabelOutput) +} + +// Required. The key of the ingestion label. Always required. +func (o DataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutput) IngestionLabelKey() pulumi.StringPtrOutput { + return o.ApplyT(func(v *DataAccessScopeAllowedDataAccessLabelIngestionLabel) *string { + if v == nil { + return nil + } + return &v.IngestionLabelKey + }).(pulumi.StringPtrOutput) +} + +// Optional. The value of the ingestion label. Optional. An object +// with no provided value and some key provided would match +// against the given key and ANY value. +func (o DataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutput) IngestionLabelValue() pulumi.StringPtrOutput { + return o.ApplyT(func(v *DataAccessScopeAllowedDataAccessLabelIngestionLabel) *string { + if v == nil { + return nil + } + return v.IngestionLabelValue + }).(pulumi.StringPtrOutput) +} + +type DataAccessScopeDeniedDataAccessLabel struct { + // The asset namespace configured in the forwarder + // of the customer's events. + AssetNamespace *string `pulumi:"assetNamespace"` + // The name of the data access label. + DataAccessLabel *string `pulumi:"dataAccessLabel"` + // (Output) + // Output only. The display name of the label. + // Data access label and log types's name + // will match the display name of the resource. + // The asset namespace will match the namespace itself. + // The ingestion key value pair will match the key of the tuple. + DisplayName *string `pulumi:"displayName"` + // Representation of an ingestion label type. + // Structure is documented below. + IngestionLabel *DataAccessScopeDeniedDataAccessLabelIngestionLabel `pulumi:"ingestionLabel"` + // The name of the log type. + LogType *string `pulumi:"logType"` +} + +// DataAccessScopeDeniedDataAccessLabelInput is an input type that accepts DataAccessScopeDeniedDataAccessLabelArgs and DataAccessScopeDeniedDataAccessLabelOutput values. +// You can construct a concrete instance of `DataAccessScopeDeniedDataAccessLabelInput` via: +// +// DataAccessScopeDeniedDataAccessLabelArgs{...} +type DataAccessScopeDeniedDataAccessLabelInput interface { + pulumi.Input + + ToDataAccessScopeDeniedDataAccessLabelOutput() DataAccessScopeDeniedDataAccessLabelOutput + ToDataAccessScopeDeniedDataAccessLabelOutputWithContext(context.Context) DataAccessScopeDeniedDataAccessLabelOutput +} + +type DataAccessScopeDeniedDataAccessLabelArgs struct { + // The asset namespace configured in the forwarder + // of the customer's events. + AssetNamespace pulumi.StringPtrInput `pulumi:"assetNamespace"` + // The name of the data access label. + DataAccessLabel pulumi.StringPtrInput `pulumi:"dataAccessLabel"` + // (Output) + // Output only. The display name of the label. + // Data access label and log types's name + // will match the display name of the resource. + // The asset namespace will match the namespace itself. + // The ingestion key value pair will match the key of the tuple. + DisplayName pulumi.StringPtrInput `pulumi:"displayName"` + // Representation of an ingestion label type. + // Structure is documented below. + IngestionLabel DataAccessScopeDeniedDataAccessLabelIngestionLabelPtrInput `pulumi:"ingestionLabel"` + // The name of the log type. + LogType pulumi.StringPtrInput `pulumi:"logType"` +} + +func (DataAccessScopeDeniedDataAccessLabelArgs) ElementType() reflect.Type { + return reflect.TypeOf((*DataAccessScopeDeniedDataAccessLabel)(nil)).Elem() +} + +func (i DataAccessScopeDeniedDataAccessLabelArgs) ToDataAccessScopeDeniedDataAccessLabelOutput() DataAccessScopeDeniedDataAccessLabelOutput { + return i.ToDataAccessScopeDeniedDataAccessLabelOutputWithContext(context.Background()) +} + +func (i DataAccessScopeDeniedDataAccessLabelArgs) ToDataAccessScopeDeniedDataAccessLabelOutputWithContext(ctx context.Context) DataAccessScopeDeniedDataAccessLabelOutput { + return pulumi.ToOutputWithContext(ctx, i).(DataAccessScopeDeniedDataAccessLabelOutput) +} + +// DataAccessScopeDeniedDataAccessLabelArrayInput is an input type that accepts DataAccessScopeDeniedDataAccessLabelArray and DataAccessScopeDeniedDataAccessLabelArrayOutput values. +// You can construct a concrete instance of `DataAccessScopeDeniedDataAccessLabelArrayInput` via: +// +// DataAccessScopeDeniedDataAccessLabelArray{ DataAccessScopeDeniedDataAccessLabelArgs{...} } +type DataAccessScopeDeniedDataAccessLabelArrayInput interface { + pulumi.Input + + ToDataAccessScopeDeniedDataAccessLabelArrayOutput() DataAccessScopeDeniedDataAccessLabelArrayOutput + ToDataAccessScopeDeniedDataAccessLabelArrayOutputWithContext(context.Context) DataAccessScopeDeniedDataAccessLabelArrayOutput +} + +type DataAccessScopeDeniedDataAccessLabelArray []DataAccessScopeDeniedDataAccessLabelInput + +func (DataAccessScopeDeniedDataAccessLabelArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]DataAccessScopeDeniedDataAccessLabel)(nil)).Elem() +} + +func (i DataAccessScopeDeniedDataAccessLabelArray) ToDataAccessScopeDeniedDataAccessLabelArrayOutput() DataAccessScopeDeniedDataAccessLabelArrayOutput { + return i.ToDataAccessScopeDeniedDataAccessLabelArrayOutputWithContext(context.Background()) +} + +func (i DataAccessScopeDeniedDataAccessLabelArray) ToDataAccessScopeDeniedDataAccessLabelArrayOutputWithContext(ctx context.Context) DataAccessScopeDeniedDataAccessLabelArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(DataAccessScopeDeniedDataAccessLabelArrayOutput) +} + +type DataAccessScopeDeniedDataAccessLabelOutput struct{ *pulumi.OutputState } + +func (DataAccessScopeDeniedDataAccessLabelOutput) ElementType() reflect.Type { + return reflect.TypeOf((*DataAccessScopeDeniedDataAccessLabel)(nil)).Elem() +} + +func (o DataAccessScopeDeniedDataAccessLabelOutput) ToDataAccessScopeDeniedDataAccessLabelOutput() DataAccessScopeDeniedDataAccessLabelOutput { + return o +} + +func (o DataAccessScopeDeniedDataAccessLabelOutput) ToDataAccessScopeDeniedDataAccessLabelOutputWithContext(ctx context.Context) DataAccessScopeDeniedDataAccessLabelOutput { + return o +} + +// The asset namespace configured in the forwarder +// of the customer's events. +func (o DataAccessScopeDeniedDataAccessLabelOutput) AssetNamespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v DataAccessScopeDeniedDataAccessLabel) *string { return v.AssetNamespace }).(pulumi.StringPtrOutput) +} + +// The name of the data access label. +func (o DataAccessScopeDeniedDataAccessLabelOutput) DataAccessLabel() pulumi.StringPtrOutput { + return o.ApplyT(func(v DataAccessScopeDeniedDataAccessLabel) *string { return v.DataAccessLabel }).(pulumi.StringPtrOutput) +} + +// (Output) +// Output only. The display name of the label. +// Data access label and log types's name +// will match the display name of the resource. +// The asset namespace will match the namespace itself. +// The ingestion key value pair will match the key of the tuple. +func (o DataAccessScopeDeniedDataAccessLabelOutput) DisplayName() pulumi.StringPtrOutput { + return o.ApplyT(func(v DataAccessScopeDeniedDataAccessLabel) *string { return v.DisplayName }).(pulumi.StringPtrOutput) +} + +// Representation of an ingestion label type. +// Structure is documented below. +func (o DataAccessScopeDeniedDataAccessLabelOutput) IngestionLabel() DataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutput { + return o.ApplyT(func(v DataAccessScopeDeniedDataAccessLabel) *DataAccessScopeDeniedDataAccessLabelIngestionLabel { + return v.IngestionLabel + }).(DataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutput) +} + +// The name of the log type. +func (o DataAccessScopeDeniedDataAccessLabelOutput) LogType() pulumi.StringPtrOutput { + return o.ApplyT(func(v DataAccessScopeDeniedDataAccessLabel) *string { return v.LogType }).(pulumi.StringPtrOutput) +} + +type DataAccessScopeDeniedDataAccessLabelArrayOutput struct{ *pulumi.OutputState } + +func (DataAccessScopeDeniedDataAccessLabelArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]DataAccessScopeDeniedDataAccessLabel)(nil)).Elem() +} + +func (o DataAccessScopeDeniedDataAccessLabelArrayOutput) ToDataAccessScopeDeniedDataAccessLabelArrayOutput() DataAccessScopeDeniedDataAccessLabelArrayOutput { + return o +} + +func (o DataAccessScopeDeniedDataAccessLabelArrayOutput) ToDataAccessScopeDeniedDataAccessLabelArrayOutputWithContext(ctx context.Context) DataAccessScopeDeniedDataAccessLabelArrayOutput { + return o +} + +func (o DataAccessScopeDeniedDataAccessLabelArrayOutput) Index(i pulumi.IntInput) DataAccessScopeDeniedDataAccessLabelOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) DataAccessScopeDeniedDataAccessLabel { + return vs[0].([]DataAccessScopeDeniedDataAccessLabel)[vs[1].(int)] + }).(DataAccessScopeDeniedDataAccessLabelOutput) +} + +type DataAccessScopeDeniedDataAccessLabelIngestionLabel struct { + // Required. The key of the ingestion label. Always required. + IngestionLabelKey string `pulumi:"ingestionLabelKey"` + // Optional. The value of the ingestion label. Optional. An object + // with no provided value and some key provided would match + // against the given key and ANY value. + IngestionLabelValue *string `pulumi:"ingestionLabelValue"` +} + +// DataAccessScopeDeniedDataAccessLabelIngestionLabelInput is an input type that accepts DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs and DataAccessScopeDeniedDataAccessLabelIngestionLabelOutput values. +// You can construct a concrete instance of `DataAccessScopeDeniedDataAccessLabelIngestionLabelInput` via: +// +// DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs{...} +type DataAccessScopeDeniedDataAccessLabelIngestionLabelInput interface { + pulumi.Input + + ToDataAccessScopeDeniedDataAccessLabelIngestionLabelOutput() DataAccessScopeDeniedDataAccessLabelIngestionLabelOutput + ToDataAccessScopeDeniedDataAccessLabelIngestionLabelOutputWithContext(context.Context) DataAccessScopeDeniedDataAccessLabelIngestionLabelOutput +} + +type DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs struct { + // Required. The key of the ingestion label. Always required. + IngestionLabelKey pulumi.StringInput `pulumi:"ingestionLabelKey"` + // Optional. The value of the ingestion label. Optional. An object + // with no provided value and some key provided would match + // against the given key and ANY value. + IngestionLabelValue pulumi.StringPtrInput `pulumi:"ingestionLabelValue"` +} + +func (DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs) ElementType() reflect.Type { + return reflect.TypeOf((*DataAccessScopeDeniedDataAccessLabelIngestionLabel)(nil)).Elem() +} + +func (i DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs) ToDataAccessScopeDeniedDataAccessLabelIngestionLabelOutput() DataAccessScopeDeniedDataAccessLabelIngestionLabelOutput { + return i.ToDataAccessScopeDeniedDataAccessLabelIngestionLabelOutputWithContext(context.Background()) +} + +func (i DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs) ToDataAccessScopeDeniedDataAccessLabelIngestionLabelOutputWithContext(ctx context.Context) DataAccessScopeDeniedDataAccessLabelIngestionLabelOutput { + return pulumi.ToOutputWithContext(ctx, i).(DataAccessScopeDeniedDataAccessLabelIngestionLabelOutput) +} + +func (i DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs) ToDataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutput() DataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutput { + return i.ToDataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutputWithContext(context.Background()) +} + +func (i DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs) ToDataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutputWithContext(ctx context.Context) DataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(DataAccessScopeDeniedDataAccessLabelIngestionLabelOutput).ToDataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutputWithContext(ctx) +} + +// DataAccessScopeDeniedDataAccessLabelIngestionLabelPtrInput is an input type that accepts DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs, DataAccessScopeDeniedDataAccessLabelIngestionLabelPtr and DataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutput values. +// You can construct a concrete instance of `DataAccessScopeDeniedDataAccessLabelIngestionLabelPtrInput` via: +// +// DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs{...} +// +// or: +// +// nil +type DataAccessScopeDeniedDataAccessLabelIngestionLabelPtrInput interface { + pulumi.Input + + ToDataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutput() DataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutput + ToDataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutputWithContext(context.Context) DataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutput +} + +type dataAccessScopeDeniedDataAccessLabelIngestionLabelPtrType DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs + +func DataAccessScopeDeniedDataAccessLabelIngestionLabelPtr(v *DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs) DataAccessScopeDeniedDataAccessLabelIngestionLabelPtrInput { + return (*dataAccessScopeDeniedDataAccessLabelIngestionLabelPtrType)(v) +} + +func (*dataAccessScopeDeniedDataAccessLabelIngestionLabelPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**DataAccessScopeDeniedDataAccessLabelIngestionLabel)(nil)).Elem() +} + +func (i *dataAccessScopeDeniedDataAccessLabelIngestionLabelPtrType) ToDataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutput() DataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutput { + return i.ToDataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutputWithContext(context.Background()) +} + +func (i *dataAccessScopeDeniedDataAccessLabelIngestionLabelPtrType) ToDataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutputWithContext(ctx context.Context) DataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(DataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutput) +} + +type DataAccessScopeDeniedDataAccessLabelIngestionLabelOutput struct{ *pulumi.OutputState } + +func (DataAccessScopeDeniedDataAccessLabelIngestionLabelOutput) ElementType() reflect.Type { + return reflect.TypeOf((*DataAccessScopeDeniedDataAccessLabelIngestionLabel)(nil)).Elem() +} + +func (o DataAccessScopeDeniedDataAccessLabelIngestionLabelOutput) ToDataAccessScopeDeniedDataAccessLabelIngestionLabelOutput() DataAccessScopeDeniedDataAccessLabelIngestionLabelOutput { + return o +} + +func (o DataAccessScopeDeniedDataAccessLabelIngestionLabelOutput) ToDataAccessScopeDeniedDataAccessLabelIngestionLabelOutputWithContext(ctx context.Context) DataAccessScopeDeniedDataAccessLabelIngestionLabelOutput { + return o +} + +func (o DataAccessScopeDeniedDataAccessLabelIngestionLabelOutput) ToDataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutput() DataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutput { + return o.ToDataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutputWithContext(context.Background()) +} + +func (o DataAccessScopeDeniedDataAccessLabelIngestionLabelOutput) ToDataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutputWithContext(ctx context.Context) DataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v DataAccessScopeDeniedDataAccessLabelIngestionLabel) *DataAccessScopeDeniedDataAccessLabelIngestionLabel { + return &v + }).(DataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutput) +} + +// Required. The key of the ingestion label. Always required. +func (o DataAccessScopeDeniedDataAccessLabelIngestionLabelOutput) IngestionLabelKey() pulumi.StringOutput { + return o.ApplyT(func(v DataAccessScopeDeniedDataAccessLabelIngestionLabel) string { return v.IngestionLabelKey }).(pulumi.StringOutput) +} + +// Optional. The value of the ingestion label. Optional. An object +// with no provided value and some key provided would match +// against the given key and ANY value. +func (o DataAccessScopeDeniedDataAccessLabelIngestionLabelOutput) IngestionLabelValue() pulumi.StringPtrOutput { + return o.ApplyT(func(v DataAccessScopeDeniedDataAccessLabelIngestionLabel) *string { return v.IngestionLabelValue }).(pulumi.StringPtrOutput) +} + +type DataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutput struct{ *pulumi.OutputState } + +func (DataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**DataAccessScopeDeniedDataAccessLabelIngestionLabel)(nil)).Elem() +} + +func (o DataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutput) ToDataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutput() DataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutput { + return o +} + +func (o DataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutput) ToDataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutputWithContext(ctx context.Context) DataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutput { + return o +} + +func (o DataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutput) Elem() DataAccessScopeDeniedDataAccessLabelIngestionLabelOutput { + return o.ApplyT(func(v *DataAccessScopeDeniedDataAccessLabelIngestionLabel) DataAccessScopeDeniedDataAccessLabelIngestionLabel { + if v != nil { + return *v + } + var ret DataAccessScopeDeniedDataAccessLabelIngestionLabel + return ret + }).(DataAccessScopeDeniedDataAccessLabelIngestionLabelOutput) +} + +// Required. The key of the ingestion label. Always required. +func (o DataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutput) IngestionLabelKey() pulumi.StringPtrOutput { + return o.ApplyT(func(v *DataAccessScopeDeniedDataAccessLabelIngestionLabel) *string { + if v == nil { + return nil + } + return &v.IngestionLabelKey + }).(pulumi.StringPtrOutput) +} + +// Optional. The value of the ingestion label. Optional. An object +// with no provided value and some key provided would match +// against the given key and ANY value. +func (o DataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutput) IngestionLabelValue() pulumi.StringPtrOutput { + return o.ApplyT(func(v *DataAccessScopeDeniedDataAccessLabelIngestionLabel) *string { + if v == nil { + return nil + } + return v.IngestionLabelValue + }).(pulumi.StringPtrOutput) +} + type WatchlistEntityCount struct { // (Output) // Output only. Count of asset type entities in the watchlist. @@ -526,6 +1166,14 @@ func (o WatchlistWatchlistUserPreferencesPtrOutput) Pinned() pulumi.BoolPtrOutpu } func init() { + pulumi.RegisterInputType(reflect.TypeOf((*DataAccessScopeAllowedDataAccessLabelInput)(nil)).Elem(), DataAccessScopeAllowedDataAccessLabelArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*DataAccessScopeAllowedDataAccessLabelArrayInput)(nil)).Elem(), DataAccessScopeAllowedDataAccessLabelArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*DataAccessScopeAllowedDataAccessLabelIngestionLabelInput)(nil)).Elem(), DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*DataAccessScopeAllowedDataAccessLabelIngestionLabelPtrInput)(nil)).Elem(), DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*DataAccessScopeDeniedDataAccessLabelInput)(nil)).Elem(), DataAccessScopeDeniedDataAccessLabelArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*DataAccessScopeDeniedDataAccessLabelArrayInput)(nil)).Elem(), DataAccessScopeDeniedDataAccessLabelArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*DataAccessScopeDeniedDataAccessLabelIngestionLabelInput)(nil)).Elem(), DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*DataAccessScopeDeniedDataAccessLabelIngestionLabelPtrInput)(nil)).Elem(), DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*WatchlistEntityCountInput)(nil)).Elem(), WatchlistEntityCountArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*WatchlistEntityCountArrayInput)(nil)).Elem(), WatchlistEntityCountArray{}) pulumi.RegisterInputType(reflect.TypeOf((*WatchlistEntityPopulationMechanismInput)(nil)).Elem(), WatchlistEntityPopulationMechanismArgs{}) @@ -534,6 +1182,14 @@ func init() { 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(DataAccessScopeAllowedDataAccessLabelOutput{}) + pulumi.RegisterOutputType(DataAccessScopeAllowedDataAccessLabelArrayOutput{}) + pulumi.RegisterOutputType(DataAccessScopeAllowedDataAccessLabelIngestionLabelOutput{}) + pulumi.RegisterOutputType(DataAccessScopeAllowedDataAccessLabelIngestionLabelPtrOutput{}) + pulumi.RegisterOutputType(DataAccessScopeDeniedDataAccessLabelOutput{}) + pulumi.RegisterOutputType(DataAccessScopeDeniedDataAccessLabelArrayOutput{}) + pulumi.RegisterOutputType(DataAccessScopeDeniedDataAccessLabelIngestionLabelOutput{}) + pulumi.RegisterOutputType(DataAccessScopeDeniedDataAccessLabelIngestionLabelPtrOutput{}) pulumi.RegisterOutputType(WatchlistEntityCountOutput{}) pulumi.RegisterOutputType(WatchlistEntityCountArrayOutput{}) pulumi.RegisterOutputType(WatchlistEntityPopulationMechanismOutput{}) diff --git a/sdk/go/gcp/chronicle/watchlist.go b/sdk/go/gcp/chronicle/watchlist.go index d9fb2e808e..466660b0df 100644 --- a/sdk/go/gcp/chronicle/watchlist.go +++ b/sdk/go/gcp/chronicle/watchlist.go @@ -31,7 +31,42 @@ import ( // _, err := chronicle.NewWatchlist(ctx, "example", &chronicle.WatchlistArgs{ // Location: pulumi.String("us"), // Instance: pulumi.String("00000000-0000-0000-0000-000000000000"), -// WatchlistId: pulumi.String("watchlist-name"), +// WatchlistId: pulumi.String("watchlist-id"), +// 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 +// }) +// } +// +// ``` +// ### Chronicle Watchlist Without Id +// +// ```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"), // Description: pulumi.String("watchlist-description"), // DisplayName: pulumi.String("watchlist-name"), // MultiplyingFactor: pulumi.Float64(1), @@ -104,10 +139,8 @@ type Watchlist struct { 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-/. + // 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"` @@ -132,9 +165,6 @@ func NewWatchlist(ctx *pulumi.Context, 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...) @@ -185,10 +215,8 @@ type watchlistState struct { 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-/. + // 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"` @@ -222,10 +250,8 @@ type WatchlistState struct { 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-/. + // 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 @@ -252,11 +278,9 @@ type watchlistArgs struct { // 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"` + // 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"` } @@ -279,11 +303,9 @@ type WatchlistArgs struct { // 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 + // 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 } @@ -435,10 +457,8 @@ 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-/. +// 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) } diff --git a/sdk/go/gcp/cloudbuild/pulumiTypes.go b/sdk/go/gcp/cloudbuild/pulumiTypes.go index ba85dbd91c..464e167fe2 100644 --- a/sdk/go/gcp/cloudbuild/pulumiTypes.go +++ b/sdk/go/gcp/cloudbuild/pulumiTypes.go @@ -1987,7 +1987,7 @@ type TriggerBuildArtifactsObjects struct { // Output only. Stores timing information for pushing all artifact objects. // Structure is documented below. // - // The `timing` block contains: + // The `timing` block contains: Timings []TriggerBuildArtifactsObjectsTiming `pulumi:"timings"` } @@ -2013,7 +2013,7 @@ type TriggerBuildArtifactsObjectsArgs struct { // Output only. Stores timing information for pushing all artifact objects. // Structure is documented below. // - // The `timing` block contains: + // The `timing` block contains: Timings TriggerBuildArtifactsObjectsTimingArrayInput `pulumi:"timings"` } @@ -2110,7 +2110,7 @@ func (o TriggerBuildArtifactsObjectsOutput) Paths() pulumi.StringArrayOutput { // Output only. Stores timing information for pushing all artifact objects. // Structure is documented below. // -// The `timing` block contains: +// The `timing` block contains: func (o TriggerBuildArtifactsObjectsOutput) Timings() TriggerBuildArtifactsObjectsTimingArrayOutput { return o.ApplyT(func(v TriggerBuildArtifactsObjects) []TriggerBuildArtifactsObjectsTiming { return v.Timings }).(TriggerBuildArtifactsObjectsTimingArrayOutput) } @@ -2165,7 +2165,7 @@ func (o TriggerBuildArtifactsObjectsPtrOutput) Paths() pulumi.StringArrayOutput // Output only. Stores timing information for pushing all artifact objects. // Structure is documented below. // -// The `timing` block contains: +// The `timing` block contains: func (o TriggerBuildArtifactsObjectsPtrOutput) Timings() TriggerBuildArtifactsObjectsTimingArrayOutput { return o.ApplyT(func(v *TriggerBuildArtifactsObjects) []TriggerBuildArtifactsObjectsTiming { if v == nil { diff --git a/sdk/go/gcp/cloudquota/init.go b/sdk/go/gcp/cloudquota/init.go index 9e18380e30..b544e4d393 100644 --- a/sdk/go/gcp/cloudquota/init.go +++ b/sdk/go/gcp/cloudquota/init.go @@ -21,6 +21,8 @@ func (m *module) Version() semver.Version { func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi.Resource, err error) { switch typ { + case "gcp:cloudquota/sQuotaAdjusterSettings:SQuotaAdjusterSettings": + r = &SQuotaAdjusterSettings{} case "gcp:cloudquota/sQuotaPreference:SQuotaPreference": r = &SQuotaPreference{} default: @@ -36,6 +38,11 @@ func init() { if err != nil { version = semver.Version{Major: 1} } + pulumi.RegisterResourceModule( + "gcp", + "cloudquota/sQuotaAdjusterSettings", + &module{version}, + ) pulumi.RegisterResourceModule( "gcp", "cloudquota/sQuotaPreference", diff --git a/sdk/go/gcp/cloudquota/squotaAdjusterSettings.go b/sdk/go/gcp/cloudquota/squotaAdjusterSettings.go new file mode 100644 index 0000000000..7187e13481 --- /dev/null +++ b/sdk/go/gcp/cloudquota/squotaAdjusterSettings.go @@ -0,0 +1,321 @@ +// 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 cloudquota + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// ## Example Usage +// +// ### Cloudquotas Quota Adjuster Settings Basic +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudquota" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudquota.NewSQuotaAdjusterSettings(ctx, "adjuster_settings", &cloudquota.SQuotaAdjusterSettingsArgs{ +// Parent: pulumi.String("projects/104740170505"), +// Enablement: pulumi.String("ENABLED"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// QuotaAdjusterSettings can be imported using any of these accepted formats: +// +// * `{{parent}}/locations/global/quotaAdjusterSettings` +// +// When using the `pulumi import` command, QuotaAdjusterSettings can be imported using one of the formats above. For example: +// +// ```sh +// $ pulumi import gcp:cloudquota/sQuotaAdjusterSettings:SQuotaAdjusterSettings default {{parent}}/locations/global/quotaAdjusterSettings +// ``` +type SQuotaAdjusterSettings struct { + pulumi.CustomResourceState + + // Fields to capture the hierarchy enablement. + // The container (org/folder/project) that determines if the quota adjuster is set for this project/folder/org. We use the nearest-ancestor to determine the effective container. + // The nearest ancestor (including this container) with `enabled` set (either true or false) will be returned. + EffectiveContainer pulumi.StringOutput `pulumi:"effectiveContainer"` + // Based on the effective container`s setting above, determines Whether this container has the quota adjuster enabled. + EffectiveEnablement pulumi.StringOutput `pulumi:"effectiveEnablement"` + // Required. The configured value of the enablement at the given resource. + // Possible values are: `ENABLED`, `DISABLED`. + Enablement pulumi.StringOutput `pulumi:"enablement"` + // The parent of the quota preference. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]". + // + // *** + Parent pulumi.StringOutput `pulumi:"parent"` +} + +// NewSQuotaAdjusterSettings registers a new resource with the given unique name, arguments, and options. +func NewSQuotaAdjusterSettings(ctx *pulumi.Context, + name string, args *SQuotaAdjusterSettingsArgs, opts ...pulumi.ResourceOption) (*SQuotaAdjusterSettings, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Enablement == nil { + return nil, errors.New("invalid value for required argument 'Enablement'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource SQuotaAdjusterSettings + err := ctx.RegisterResource("gcp:cloudquota/sQuotaAdjusterSettings:SQuotaAdjusterSettings", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetSQuotaAdjusterSettings gets an existing SQuotaAdjusterSettings 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 GetSQuotaAdjusterSettings(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *SQuotaAdjusterSettingsState, opts ...pulumi.ResourceOption) (*SQuotaAdjusterSettings, error) { + var resource SQuotaAdjusterSettings + err := ctx.ReadResource("gcp:cloudquota/sQuotaAdjusterSettings:SQuotaAdjusterSettings", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering SQuotaAdjusterSettings resources. +type squotaAdjusterSettingsState struct { + // Fields to capture the hierarchy enablement. + // The container (org/folder/project) that determines if the quota adjuster is set for this project/folder/org. We use the nearest-ancestor to determine the effective container. + // The nearest ancestor (including this container) with `enabled` set (either true or false) will be returned. + EffectiveContainer *string `pulumi:"effectiveContainer"` + // Based on the effective container`s setting above, determines Whether this container has the quota adjuster enabled. + EffectiveEnablement *string `pulumi:"effectiveEnablement"` + // Required. The configured value of the enablement at the given resource. + // Possible values are: `ENABLED`, `DISABLED`. + Enablement *string `pulumi:"enablement"` + // The parent of the quota preference. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]". + // + // *** + Parent *string `pulumi:"parent"` +} + +type SQuotaAdjusterSettingsState struct { + // Fields to capture the hierarchy enablement. + // The container (org/folder/project) that determines if the quota adjuster is set for this project/folder/org. We use the nearest-ancestor to determine the effective container. + // The nearest ancestor (including this container) with `enabled` set (either true or false) will be returned. + EffectiveContainer pulumi.StringPtrInput + // Based on the effective container`s setting above, determines Whether this container has the quota adjuster enabled. + EffectiveEnablement pulumi.StringPtrInput + // Required. The configured value of the enablement at the given resource. + // Possible values are: `ENABLED`, `DISABLED`. + Enablement pulumi.StringPtrInput + // The parent of the quota preference. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]". + // + // *** + Parent pulumi.StringPtrInput +} + +func (SQuotaAdjusterSettingsState) ElementType() reflect.Type { + return reflect.TypeOf((*squotaAdjusterSettingsState)(nil)).Elem() +} + +type squotaAdjusterSettingsArgs struct { + // Required. The configured value of the enablement at the given resource. + // Possible values are: `ENABLED`, `DISABLED`. + Enablement string `pulumi:"enablement"` + // The parent of the quota preference. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]". + // + // *** + Parent *string `pulumi:"parent"` +} + +// The set of arguments for constructing a SQuotaAdjusterSettings resource. +type SQuotaAdjusterSettingsArgs struct { + // Required. The configured value of the enablement at the given resource. + // Possible values are: `ENABLED`, `DISABLED`. + Enablement pulumi.StringInput + // The parent of the quota preference. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]". + // + // *** + Parent pulumi.StringPtrInput +} + +func (SQuotaAdjusterSettingsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*squotaAdjusterSettingsArgs)(nil)).Elem() +} + +type SQuotaAdjusterSettingsInput interface { + pulumi.Input + + ToSQuotaAdjusterSettingsOutput() SQuotaAdjusterSettingsOutput + ToSQuotaAdjusterSettingsOutputWithContext(ctx context.Context) SQuotaAdjusterSettingsOutput +} + +func (*SQuotaAdjusterSettings) ElementType() reflect.Type { + return reflect.TypeOf((**SQuotaAdjusterSettings)(nil)).Elem() +} + +func (i *SQuotaAdjusterSettings) ToSQuotaAdjusterSettingsOutput() SQuotaAdjusterSettingsOutput { + return i.ToSQuotaAdjusterSettingsOutputWithContext(context.Background()) +} + +func (i *SQuotaAdjusterSettings) ToSQuotaAdjusterSettingsOutputWithContext(ctx context.Context) SQuotaAdjusterSettingsOutput { + return pulumi.ToOutputWithContext(ctx, i).(SQuotaAdjusterSettingsOutput) +} + +// SQuotaAdjusterSettingsArrayInput is an input type that accepts SQuotaAdjusterSettingsArray and SQuotaAdjusterSettingsArrayOutput values. +// You can construct a concrete instance of `SQuotaAdjusterSettingsArrayInput` via: +// +// SQuotaAdjusterSettingsArray{ SQuotaAdjusterSettingsArgs{...} } +type SQuotaAdjusterSettingsArrayInput interface { + pulumi.Input + + ToSQuotaAdjusterSettingsArrayOutput() SQuotaAdjusterSettingsArrayOutput + ToSQuotaAdjusterSettingsArrayOutputWithContext(context.Context) SQuotaAdjusterSettingsArrayOutput +} + +type SQuotaAdjusterSettingsArray []SQuotaAdjusterSettingsInput + +func (SQuotaAdjusterSettingsArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*SQuotaAdjusterSettings)(nil)).Elem() +} + +func (i SQuotaAdjusterSettingsArray) ToSQuotaAdjusterSettingsArrayOutput() SQuotaAdjusterSettingsArrayOutput { + return i.ToSQuotaAdjusterSettingsArrayOutputWithContext(context.Background()) +} + +func (i SQuotaAdjusterSettingsArray) ToSQuotaAdjusterSettingsArrayOutputWithContext(ctx context.Context) SQuotaAdjusterSettingsArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(SQuotaAdjusterSettingsArrayOutput) +} + +// SQuotaAdjusterSettingsMapInput is an input type that accepts SQuotaAdjusterSettingsMap and SQuotaAdjusterSettingsMapOutput values. +// You can construct a concrete instance of `SQuotaAdjusterSettingsMapInput` via: +// +// SQuotaAdjusterSettingsMap{ "key": SQuotaAdjusterSettingsArgs{...} } +type SQuotaAdjusterSettingsMapInput interface { + pulumi.Input + + ToSQuotaAdjusterSettingsMapOutput() SQuotaAdjusterSettingsMapOutput + ToSQuotaAdjusterSettingsMapOutputWithContext(context.Context) SQuotaAdjusterSettingsMapOutput +} + +type SQuotaAdjusterSettingsMap map[string]SQuotaAdjusterSettingsInput + +func (SQuotaAdjusterSettingsMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*SQuotaAdjusterSettings)(nil)).Elem() +} + +func (i SQuotaAdjusterSettingsMap) ToSQuotaAdjusterSettingsMapOutput() SQuotaAdjusterSettingsMapOutput { + return i.ToSQuotaAdjusterSettingsMapOutputWithContext(context.Background()) +} + +func (i SQuotaAdjusterSettingsMap) ToSQuotaAdjusterSettingsMapOutputWithContext(ctx context.Context) SQuotaAdjusterSettingsMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(SQuotaAdjusterSettingsMapOutput) +} + +type SQuotaAdjusterSettingsOutput struct{ *pulumi.OutputState } + +func (SQuotaAdjusterSettingsOutput) ElementType() reflect.Type { + return reflect.TypeOf((**SQuotaAdjusterSettings)(nil)).Elem() +} + +func (o SQuotaAdjusterSettingsOutput) ToSQuotaAdjusterSettingsOutput() SQuotaAdjusterSettingsOutput { + return o +} + +func (o SQuotaAdjusterSettingsOutput) ToSQuotaAdjusterSettingsOutputWithContext(ctx context.Context) SQuotaAdjusterSettingsOutput { + return o +} + +// Fields to capture the hierarchy enablement. +// The container (org/folder/project) that determines if the quota adjuster is set for this project/folder/org. We use the nearest-ancestor to determine the effective container. +// The nearest ancestor (including this container) with `enabled` set (either true or false) will be returned. +func (o SQuotaAdjusterSettingsOutput) EffectiveContainer() pulumi.StringOutput { + return o.ApplyT(func(v *SQuotaAdjusterSettings) pulumi.StringOutput { return v.EffectiveContainer }).(pulumi.StringOutput) +} + +// Based on the effective container`s setting above, determines Whether this container has the quota adjuster enabled. +func (o SQuotaAdjusterSettingsOutput) EffectiveEnablement() pulumi.StringOutput { + return o.ApplyT(func(v *SQuotaAdjusterSettings) pulumi.StringOutput { return v.EffectiveEnablement }).(pulumi.StringOutput) +} + +// Required. The configured value of the enablement at the given resource. +// Possible values are: `ENABLED`, `DISABLED`. +func (o SQuotaAdjusterSettingsOutput) Enablement() pulumi.StringOutput { + return o.ApplyT(func(v *SQuotaAdjusterSettings) pulumi.StringOutput { return v.Enablement }).(pulumi.StringOutput) +} + +// The parent of the quota preference. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]". +// +// *** +func (o SQuotaAdjusterSettingsOutput) Parent() pulumi.StringOutput { + return o.ApplyT(func(v *SQuotaAdjusterSettings) pulumi.StringOutput { return v.Parent }).(pulumi.StringOutput) +} + +type SQuotaAdjusterSettingsArrayOutput struct{ *pulumi.OutputState } + +func (SQuotaAdjusterSettingsArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*SQuotaAdjusterSettings)(nil)).Elem() +} + +func (o SQuotaAdjusterSettingsArrayOutput) ToSQuotaAdjusterSettingsArrayOutput() SQuotaAdjusterSettingsArrayOutput { + return o +} + +func (o SQuotaAdjusterSettingsArrayOutput) ToSQuotaAdjusterSettingsArrayOutputWithContext(ctx context.Context) SQuotaAdjusterSettingsArrayOutput { + return o +} + +func (o SQuotaAdjusterSettingsArrayOutput) Index(i pulumi.IntInput) SQuotaAdjusterSettingsOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *SQuotaAdjusterSettings { + return vs[0].([]*SQuotaAdjusterSettings)[vs[1].(int)] + }).(SQuotaAdjusterSettingsOutput) +} + +type SQuotaAdjusterSettingsMapOutput struct{ *pulumi.OutputState } + +func (SQuotaAdjusterSettingsMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*SQuotaAdjusterSettings)(nil)).Elem() +} + +func (o SQuotaAdjusterSettingsMapOutput) ToSQuotaAdjusterSettingsMapOutput() SQuotaAdjusterSettingsMapOutput { + return o +} + +func (o SQuotaAdjusterSettingsMapOutput) ToSQuotaAdjusterSettingsMapOutputWithContext(ctx context.Context) SQuotaAdjusterSettingsMapOutput { + return o +} + +func (o SQuotaAdjusterSettingsMapOutput) MapIndex(k pulumi.StringInput) SQuotaAdjusterSettingsOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *SQuotaAdjusterSettings { + return vs[0].(map[string]*SQuotaAdjusterSettings)[vs[1].(string)] + }).(SQuotaAdjusterSettingsOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*SQuotaAdjusterSettingsInput)(nil)).Elem(), &SQuotaAdjusterSettings{}) + pulumi.RegisterInputType(reflect.TypeOf((*SQuotaAdjusterSettingsArrayInput)(nil)).Elem(), SQuotaAdjusterSettingsArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*SQuotaAdjusterSettingsMapInput)(nil)).Elem(), SQuotaAdjusterSettingsMap{}) + pulumi.RegisterOutputType(SQuotaAdjusterSettingsOutput{}) + pulumi.RegisterOutputType(SQuotaAdjusterSettingsArrayOutput{}) + pulumi.RegisterOutputType(SQuotaAdjusterSettingsMapOutput{}) +} diff --git a/sdk/go/gcp/compute/instanceGroupManager.go b/sdk/go/gcp/compute/instanceGroupManager.go index 0f8aa4b846..5a1aee9a76 100644 --- a/sdk/go/gcp/compute/instanceGroupManager.go +++ b/sdk/go/gcp/compute/instanceGroupManager.go @@ -131,7 +131,7 @@ import ( // // ``` // -// ### With Standby Policy (`Google-Beta` Provider) +// ### With Standby Policy (`Google` Provider) // ```go // package main // @@ -255,7 +255,7 @@ type InstanceGroupManager struct { Project pulumi.StringOutput `pulumi:"project"` // The URL of the created resource. SelfLink pulumi.StringOutput `pulumi:"selfLink"` - // The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + // The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). StandbyPolicy InstanceGroupManagerStandbyPolicyOutput `pulumi:"standbyPolicy"` // Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). StatefulDisks InstanceGroupManagerStatefulDiskArrayOutput `pulumi:"statefulDisks"` @@ -386,7 +386,7 @@ type instanceGroupManagerState struct { Project *string `pulumi:"project"` // The URL of the created resource. SelfLink *string `pulumi:"selfLink"` - // The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + // The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). StandbyPolicy *InstanceGroupManagerStandbyPolicy `pulumi:"standbyPolicy"` // Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). StatefulDisks []InstanceGroupManagerStatefulDisk `pulumi:"statefulDisks"` @@ -482,7 +482,7 @@ type InstanceGroupManagerState struct { Project pulumi.StringPtrInput // The URL of the created resource. SelfLink pulumi.StringPtrInput - // The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + // The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). StandbyPolicy InstanceGroupManagerStandbyPolicyPtrInput // Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). StatefulDisks InstanceGroupManagerStatefulDiskArrayInput @@ -571,7 +571,7 @@ type instanceGroupManagerArgs struct { // The ID of the project in which the resource belongs. If it // is not provided, the provider project is used. Project *string `pulumi:"project"` - // The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + // The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). StandbyPolicy *InstanceGroupManagerStandbyPolicy `pulumi:"standbyPolicy"` // Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). StatefulDisks []InstanceGroupManagerStatefulDisk `pulumi:"statefulDisks"` @@ -655,7 +655,7 @@ type InstanceGroupManagerArgs struct { // The ID of the project in which the resource belongs. If it // is not provided, the provider project is used. Project pulumi.StringPtrInput - // The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + // The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). StandbyPolicy InstanceGroupManagerStandbyPolicyPtrInput // Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). StatefulDisks InstanceGroupManagerStatefulDiskArrayInput @@ -889,7 +889,7 @@ func (o InstanceGroupManagerOutput) SelfLink() pulumi.StringOutput { return o.ApplyT(func(v *InstanceGroupManager) pulumi.StringOutput { return v.SelfLink }).(pulumi.StringOutput) } -// The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) +// The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). func (o InstanceGroupManagerOutput) StandbyPolicy() InstanceGroupManagerStandbyPolicyOutput { return o.ApplyT(func(v *InstanceGroupManager) InstanceGroupManagerStandbyPolicyOutput { return v.StandbyPolicy }).(InstanceGroupManagerStandbyPolicyOutput) } diff --git a/sdk/go/gcp/compute/pulumiTypes.go b/sdk/go/gcp/compute/pulumiTypes.go index 106010b7e4..1cea752c53 100644 --- a/sdk/go/gcp/compute/pulumiTypes.go +++ b/sdk/go/gcp/compute/pulumiTypes.go @@ -7238,7 +7238,7 @@ type BackendServiceSecuritySettings struct { // Allowed only for INTERNET_IP_PORT and INTERNET_FQDN_PORT NEG backends. // Structure is documented below. // - // The `awsV4Authentication` block supports: + // The `awsV4Authentication` block supports: AwsV4Authentication *BackendServiceSecuritySettingsAwsV4Authentication `pulumi:"awsV4Authentication"` // ClientTlsPolicy is a resource that specifies how a client should authenticate // connections to backends of a service. This resource itself does not affect @@ -7266,7 +7266,7 @@ type BackendServiceSecuritySettingsArgs struct { // Allowed only for INTERNET_IP_PORT and INTERNET_FQDN_PORT NEG backends. // Structure is documented below. // - // The `awsV4Authentication` block supports: + // The `awsV4Authentication` block supports: AwsV4Authentication BackendServiceSecuritySettingsAwsV4AuthenticationPtrInput `pulumi:"awsV4Authentication"` // ClientTlsPolicy is a resource that specifies how a client should authenticate // connections to backends of a service. This resource itself does not affect @@ -7359,7 +7359,7 @@ func (o BackendServiceSecuritySettingsOutput) ToBackendServiceSecuritySettingsPt // Allowed only for INTERNET_IP_PORT and INTERNET_FQDN_PORT NEG backends. // Structure is documented below. // -// The `awsV4Authentication` block supports: +// The `awsV4Authentication` block supports: func (o BackendServiceSecuritySettingsOutput) AwsV4Authentication() BackendServiceSecuritySettingsAwsV4AuthenticationPtrOutput { return o.ApplyT(func(v BackendServiceSecuritySettings) *BackendServiceSecuritySettingsAwsV4Authentication { return v.AwsV4Authentication @@ -7408,7 +7408,7 @@ func (o BackendServiceSecuritySettingsPtrOutput) Elem() BackendServiceSecuritySe // Allowed only for INTERNET_IP_PORT and INTERNET_FQDN_PORT NEG backends. // Structure is documented below. // -// The `awsV4Authentication` block supports: +// The `awsV4Authentication` block supports: func (o BackendServiceSecuritySettingsPtrOutput) AwsV4Authentication() BackendServiceSecuritySettingsAwsV4AuthenticationPtrOutput { return o.ApplyT(func(v *BackendServiceSecuritySettings) *BackendServiceSecuritySettingsAwsV4Authentication { if v == nil { @@ -10010,7 +10010,7 @@ type FirewallPolicyRuleMatch struct { SrcRegionCodes []string `pulumi:"srcRegionCodes"` // Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. // - // The `layer4Configs` block supports: + // The `layer4Configs` block supports: SrcThreatIntelligences []string `pulumi:"srcThreatIntelligences"` } @@ -10049,7 +10049,7 @@ type FirewallPolicyRuleMatchArgs struct { SrcRegionCodes pulumi.StringArrayInput `pulumi:"srcRegionCodes"` // Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. // - // The `layer4Configs` block supports: + // The `layer4Configs` block supports: SrcThreatIntelligences pulumi.StringArrayInput `pulumi:"srcThreatIntelligences"` } @@ -10183,7 +10183,7 @@ func (o FirewallPolicyRuleMatchOutput) SrcRegionCodes() pulumi.StringArrayOutput // Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. // -// The `layer4Configs` block supports: +// The `layer4Configs` block supports: func (o FirewallPolicyRuleMatchOutput) SrcThreatIntelligences() pulumi.StringArrayOutput { return o.ApplyT(func(v FirewallPolicyRuleMatch) []string { return v.SrcThreatIntelligences }).(pulumi.StringArrayOutput) } @@ -10315,7 +10315,7 @@ func (o FirewallPolicyRuleMatchPtrOutput) SrcRegionCodes() pulumi.StringArrayOut // Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. // -// The `layer4Configs` block supports: +// The `layer4Configs` block supports: func (o FirewallPolicyRuleMatchPtrOutput) SrcThreatIntelligences() pulumi.StringArrayOutput { return o.ApplyT(func(v *FirewallPolicyRuleMatch) []string { if v == nil { @@ -10746,7 +10746,7 @@ type FirewallPolicyWithRulesPredefinedRuleMatch struct { // Pairs of IP protocols and ports that the rule should match. // Structure is documented below. // - // The `layer4Config` block supports: + // The `layer4Config` block supports: Layer4Configs []FirewallPolicyWithRulesPredefinedRuleMatchLayer4Config `pulumi:"layer4Configs"` // Address groups which should be matched against the traffic source. // Maximum number of source address groups is 10. @@ -10799,7 +10799,7 @@ type FirewallPolicyWithRulesPredefinedRuleMatchArgs struct { // Pairs of IP protocols and ports that the rule should match. // Structure is documented below. // - // The `layer4Config` block supports: + // The `layer4Config` block supports: Layer4Configs FirewallPolicyWithRulesPredefinedRuleMatchLayer4ConfigArrayInput `pulumi:"layer4Configs"` // Address groups which should be matched against the traffic source. // Maximum number of source address groups is 10. @@ -10906,7 +10906,7 @@ func (o FirewallPolicyWithRulesPredefinedRuleMatchOutput) DestThreatIntelligence // Pairs of IP protocols and ports that the rule should match. // Structure is documented below. // -// The `layer4Config` block supports: +// The `layer4Config` block supports: func (o FirewallPolicyWithRulesPredefinedRuleMatchOutput) Layer4Configs() FirewallPolicyWithRulesPredefinedRuleMatchLayer4ConfigArrayOutput { return o.ApplyT(func(v FirewallPolicyWithRulesPredefinedRuleMatch) []FirewallPolicyWithRulesPredefinedRuleMatchLayer4Config { return v.Layer4Configs @@ -11378,7 +11378,7 @@ type FirewallPolicyWithRulesRuleMatch struct { // Pairs of IP protocols and ports that the rule should match. // Structure is documented below. // - // The `layer4Config` block supports: + // The `layer4Config` block supports: Layer4Configs []FirewallPolicyWithRulesRuleMatchLayer4Config `pulumi:"layer4Configs"` // Address groups which should be matched against the traffic source. // Maximum number of source address groups is 10. @@ -11431,7 +11431,7 @@ type FirewallPolicyWithRulesRuleMatchArgs struct { // Pairs of IP protocols and ports that the rule should match. // Structure is documented below. // - // The `layer4Config` block supports: + // The `layer4Config` block supports: Layer4Configs FirewallPolicyWithRulesRuleMatchLayer4ConfigArrayInput `pulumi:"layer4Configs"` // Address groups which should be matched against the traffic source. // Maximum number of source address groups is 10. @@ -11513,7 +11513,7 @@ func (o FirewallPolicyWithRulesRuleMatchOutput) DestThreatIntelligences() pulumi // Pairs of IP protocols and ports that the rule should match. // Structure is documented below. // -// The `layer4Config` block supports: +// The `layer4Config` block supports: func (o FirewallPolicyWithRulesRuleMatchOutput) Layer4Configs() FirewallPolicyWithRulesRuleMatchLayer4ConfigArrayOutput { return o.ApplyT(func(v FirewallPolicyWithRulesRuleMatch) []FirewallPolicyWithRulesRuleMatchLayer4Config { return v.Layer4Configs @@ -35886,7 +35886,7 @@ type NetworkFirewallPolicyRuleMatch struct { SrcSecureTags []NetworkFirewallPolicyRuleMatchSrcSecureTag `pulumi:"srcSecureTags"` // Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. // - // The `layer4Configs` block supports: + // The `layer4Configs` block supports: SrcThreatIntelligences []string `pulumi:"srcThreatIntelligences"` } @@ -35928,7 +35928,7 @@ type NetworkFirewallPolicyRuleMatchArgs struct { SrcSecureTags NetworkFirewallPolicyRuleMatchSrcSecureTagArrayInput `pulumi:"srcSecureTags"` // Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. // - // The `layer4Configs` block supports: + // The `layer4Configs` block supports: SrcThreatIntelligences pulumi.StringArrayInput `pulumi:"srcThreatIntelligences"` } @@ -36072,7 +36072,7 @@ func (o NetworkFirewallPolicyRuleMatchOutput) SrcSecureTags() NetworkFirewallPol // Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. // -// The `layer4Configs` block supports: +// The `layer4Configs` block supports: func (o NetworkFirewallPolicyRuleMatchOutput) SrcThreatIntelligences() pulumi.StringArrayOutput { return o.ApplyT(func(v NetworkFirewallPolicyRuleMatch) []string { return v.SrcThreatIntelligences }).(pulumi.StringArrayOutput) } @@ -36215,7 +36215,7 @@ func (o NetworkFirewallPolicyRuleMatchPtrOutput) SrcSecureTags() NetworkFirewall // Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. // -// The `layer4Configs` block supports: +// The `layer4Configs` block supports: func (o NetworkFirewallPolicyRuleMatchPtrOutput) SrcThreatIntelligences() pulumi.StringArrayOutput { return o.ApplyT(func(v *NetworkFirewallPolicyRuleMatch) []string { if v == nil { @@ -36917,7 +36917,7 @@ type NetworkFirewallPolicyWithRulesPredefinedRuleMatch struct { // Maximum number of source tag values allowed is 256. // Structure is documented below. // - // The `layer4Config` block supports: + // The `layer4Config` block supports: SrcSecureTags []NetworkFirewallPolicyWithRulesPredefinedRuleMatchSrcSecureTag `pulumi:"srcSecureTags"` // Names of Network Threat Intelligence lists. // The IPs in these lists will be matched against traffic source. @@ -36977,7 +36977,7 @@ type NetworkFirewallPolicyWithRulesPredefinedRuleMatchArgs struct { // Maximum number of source tag values allowed is 256. // Structure is documented below. // - // The `layer4Config` block supports: + // The `layer4Config` block supports: SrcSecureTags NetworkFirewallPolicyWithRulesPredefinedRuleMatchSrcSecureTagArrayInput `pulumi:"srcSecureTags"` // Names of Network Threat Intelligence lists. // The IPs in these lists will be matched against traffic source. @@ -37108,7 +37108,7 @@ func (o NetworkFirewallPolicyWithRulesPredefinedRuleMatchOutput) SrcRegionCodes( // Maximum number of source tag values allowed is 256. // Structure is documented below. // -// The `layer4Config` block supports: +// The `layer4Config` block supports: func (o NetworkFirewallPolicyWithRulesPredefinedRuleMatchOutput) SrcSecureTags() NetworkFirewallPolicyWithRulesPredefinedRuleMatchSrcSecureTagArrayOutput { return o.ApplyT(func(v NetworkFirewallPolicyWithRulesPredefinedRuleMatch) []NetworkFirewallPolicyWithRulesPredefinedRuleMatchSrcSecureTag { return v.SrcSecureTags @@ -37843,7 +37843,7 @@ type NetworkFirewallPolicyWithRulesRuleMatch struct { // Maximum number of source tag values allowed is 256. // Structure is documented below. // - // The `layer4Config` block supports: + // The `layer4Config` block supports: SrcSecureTags []NetworkFirewallPolicyWithRulesRuleMatchSrcSecureTag `pulumi:"srcSecureTags"` // Names of Network Threat Intelligence lists. // The IPs in these lists will be matched against traffic source. @@ -37903,7 +37903,7 @@ type NetworkFirewallPolicyWithRulesRuleMatchArgs struct { // Maximum number of source tag values allowed is 256. // Structure is documented below. // - // The `layer4Config` block supports: + // The `layer4Config` block supports: SrcSecureTags NetworkFirewallPolicyWithRulesRuleMatchSrcSecureTagArrayInput `pulumi:"srcSecureTags"` // Names of Network Threat Intelligence lists. // The IPs in these lists will be matched against traffic source. @@ -38009,7 +38009,7 @@ func (o NetworkFirewallPolicyWithRulesRuleMatchOutput) SrcRegionCodes() pulumi.S // Maximum number of source tag values allowed is 256. // Structure is documented below. // -// The `layer4Config` block supports: +// The `layer4Config` block supports: func (o NetworkFirewallPolicyWithRulesRuleMatchOutput) SrcSecureTags() NetworkFirewallPolicyWithRulesRuleMatchSrcSecureTagArrayOutput { return o.ApplyT(func(v NetworkFirewallPolicyWithRulesRuleMatch) []NetworkFirewallPolicyWithRulesRuleMatchSrcSecureTag { return v.SrcSecureTags @@ -39802,7 +39802,7 @@ type OrganizationSecurityPolicyRuleMatchConfig struct { // Pairs of IP protocols and ports that the rule should match. // Structure is documented below. // - // The `layer4Config` block supports: + // The `layer4Config` block supports: Layer4Configs []OrganizationSecurityPolicyRuleMatchConfigLayer4Config `pulumi:"layer4Configs"` // Source IP address range in CIDR format. Required for // INGRESS rules. @@ -39827,7 +39827,7 @@ type OrganizationSecurityPolicyRuleMatchConfigArgs struct { // Pairs of IP protocols and ports that the rule should match. // Structure is documented below. // - // The `layer4Config` block supports: + // The `layer4Config` block supports: Layer4Configs OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArrayInput `pulumi:"layer4Configs"` // Source IP address range in CIDR format. Required for // INGRESS rules. @@ -39920,7 +39920,7 @@ func (o OrganizationSecurityPolicyRuleMatchConfigOutput) DestIpRanges() pulumi.S // Pairs of IP protocols and ports that the rule should match. // Structure is documented below. // -// The `layer4Config` block supports: +// The `layer4Config` block supports: func (o OrganizationSecurityPolicyRuleMatchConfigOutput) Layer4Configs() OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArrayOutput { return o.ApplyT(func(v OrganizationSecurityPolicyRuleMatchConfig) []OrganizationSecurityPolicyRuleMatchConfigLayer4Config { return v.Layer4Configs @@ -39971,7 +39971,7 @@ func (o OrganizationSecurityPolicyRuleMatchConfigPtrOutput) DestIpRanges() pulum // Pairs of IP protocols and ports that the rule should match. // Structure is documented below. // -// The `layer4Config` block supports: +// The `layer4Config` block supports: func (o OrganizationSecurityPolicyRuleMatchConfigPtrOutput) Layer4Configs() OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArrayOutput { return o.ApplyT(func(v *OrganizationSecurityPolicyRuleMatchConfig) []OrganizationSecurityPolicyRuleMatchConfigLayer4Config { if v == nil { @@ -59078,7 +59078,7 @@ type RegionNetworkFirewallPolicyRuleMatch struct { SrcSecureTags []RegionNetworkFirewallPolicyRuleMatchSrcSecureTag `pulumi:"srcSecureTags"` // Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. // - // The `layer4Configs` block supports: + // The `layer4Configs` block supports: SrcThreatIntelligences []string `pulumi:"srcThreatIntelligences"` } @@ -59120,7 +59120,7 @@ type RegionNetworkFirewallPolicyRuleMatchArgs struct { SrcSecureTags RegionNetworkFirewallPolicyRuleMatchSrcSecureTagArrayInput `pulumi:"srcSecureTags"` // Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. // - // The `layer4Configs` block supports: + // The `layer4Configs` block supports: SrcThreatIntelligences pulumi.StringArrayInput `pulumi:"srcThreatIntelligences"` } @@ -59264,7 +59264,7 @@ func (o RegionNetworkFirewallPolicyRuleMatchOutput) SrcSecureTags() RegionNetwor // Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. // -// The `layer4Configs` block supports: +// The `layer4Configs` block supports: func (o RegionNetworkFirewallPolicyRuleMatchOutput) SrcThreatIntelligences() pulumi.StringArrayOutput { return o.ApplyT(func(v RegionNetworkFirewallPolicyRuleMatch) []string { return v.SrcThreatIntelligences }).(pulumi.StringArrayOutput) } @@ -59407,7 +59407,7 @@ func (o RegionNetworkFirewallPolicyRuleMatchPtrOutput) SrcSecureTags() RegionNet // Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. // -// The `layer4Configs` block supports: +// The `layer4Configs` block supports: func (o RegionNetworkFirewallPolicyRuleMatchPtrOutput) SrcThreatIntelligences() pulumi.StringArrayOutput { return o.ApplyT(func(v *RegionNetworkFirewallPolicyRuleMatch) []string { if v == nil { @@ -60109,7 +60109,7 @@ type RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatch struct { // Maximum number of source tag values allowed is 256. // Structure is documented below. // - // The `layer4Config` block supports: + // The `layer4Config` block supports: SrcSecureTags []RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchSrcSecureTag `pulumi:"srcSecureTags"` // Names of Network Threat Intelligence lists. // The IPs in these lists will be matched against traffic source. @@ -60169,7 +60169,7 @@ type RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchArgs struct { // Maximum number of source tag values allowed is 256. // Structure is documented below. // - // The `layer4Config` block supports: + // The `layer4Config` block supports: SrcSecureTags RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchSrcSecureTagArrayInput `pulumi:"srcSecureTags"` // Names of Network Threat Intelligence lists. // The IPs in these lists will be matched against traffic source. @@ -60302,7 +60302,7 @@ func (o RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchOutput) SrcRegion // Maximum number of source tag values allowed is 256. // Structure is documented below. // -// The `layer4Config` block supports: +// The `layer4Config` block supports: func (o RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchOutput) SrcSecureTags() RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchSrcSecureTagArrayOutput { return o.ApplyT(func(v RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatch) []RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchSrcSecureTag { return v.SrcSecureTags @@ -61043,7 +61043,7 @@ type RegionNetworkFirewallPolicyWithRulesRuleMatch struct { // Maximum number of source tag values allowed is 256. // Structure is documented below. // - // The `layer4Config` block supports: + // The `layer4Config` block supports: SrcSecureTags []RegionNetworkFirewallPolicyWithRulesRuleMatchSrcSecureTag `pulumi:"srcSecureTags"` // Names of Network Threat Intelligence lists. // The IPs in these lists will be matched against traffic source. @@ -61103,7 +61103,7 @@ type RegionNetworkFirewallPolicyWithRulesRuleMatchArgs struct { // Maximum number of source tag values allowed is 256. // Structure is documented below. // - // The `layer4Config` block supports: + // The `layer4Config` block supports: SrcSecureTags RegionNetworkFirewallPolicyWithRulesRuleMatchSrcSecureTagArrayInput `pulumi:"srcSecureTags"` // Names of Network Threat Intelligence lists. // The IPs in these lists will be matched against traffic source. @@ -61209,7 +61209,7 @@ func (o RegionNetworkFirewallPolicyWithRulesRuleMatchOutput) SrcRegionCodes() pu // Maximum number of source tag values allowed is 256. // Structure is documented below. // -// The `layer4Config` block supports: +// The `layer4Config` block supports: func (o RegionNetworkFirewallPolicyWithRulesRuleMatchOutput) SrcSecureTags() RegionNetworkFirewallPolicyWithRulesRuleMatchSrcSecureTagArrayOutput { return o.ApplyT(func(v RegionNetworkFirewallPolicyWithRulesRuleMatch) []RegionNetworkFirewallPolicyWithRulesRuleMatchSrcSecureTag { return v.SrcSecureTags diff --git a/sdk/go/gcp/compute/regionInstanceGroupManager.go b/sdk/go/gcp/compute/regionInstanceGroupManager.go index d909dea649..7b61ea29e7 100644 --- a/sdk/go/gcp/compute/regionInstanceGroupManager.go +++ b/sdk/go/gcp/compute/regionInstanceGroupManager.go @@ -138,7 +138,7 @@ import ( // // ``` // -// ### With Standby Policy (`Google-Beta` Provider) +// ### With Standby Policy (`Google` Provider) // ```go // package main // @@ -253,7 +253,7 @@ type RegionInstanceGroupManager struct { Region pulumi.StringOutput `pulumi:"region"` // The URL of the created resource. SelfLink pulumi.StringOutput `pulumi:"selfLink"` - // The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + // The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). StandbyPolicy RegionInstanceGroupManagerStandbyPolicyOutput `pulumi:"standbyPolicy"` // Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). Proactive cross zone instance redistribution must be disabled before you can update stateful disks on existing instance group managers. This can be controlled via the `updatePolicy`. StatefulDisks RegionInstanceGroupManagerStatefulDiskArrayOutput `pulumi:"statefulDisks"` @@ -388,7 +388,7 @@ type regionInstanceGroupManagerState struct { Region *string `pulumi:"region"` // The URL of the created resource. SelfLink *string `pulumi:"selfLink"` - // The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + // The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). StandbyPolicy *RegionInstanceGroupManagerStandbyPolicy `pulumi:"standbyPolicy"` // Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). Proactive cross zone instance redistribution must be disabled before you can update stateful disks on existing instance group managers. This can be controlled via the `updatePolicy`. StatefulDisks []RegionInstanceGroupManagerStatefulDisk `pulumi:"statefulDisks"` @@ -488,7 +488,7 @@ type RegionInstanceGroupManagerState struct { Region pulumi.StringPtrInput // The URL of the created resource. SelfLink pulumi.StringPtrInput - // The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + // The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). StandbyPolicy RegionInstanceGroupManagerStandbyPolicyPtrInput // Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). Proactive cross zone instance redistribution must be disabled before you can update stateful disks on existing instance group managers. This can be controlled via the `updatePolicy`. StatefulDisks RegionInstanceGroupManagerStatefulDiskArrayInput @@ -582,7 +582,7 @@ type regionInstanceGroupManagerArgs struct { // // *** Region *string `pulumi:"region"` - // The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + // The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). StandbyPolicy *RegionInstanceGroupManagerStandbyPolicy `pulumi:"standbyPolicy"` // Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). Proactive cross zone instance redistribution must be disabled before you can update stateful disks on existing instance group managers. This can be controlled via the `updatePolicy`. StatefulDisks []RegionInstanceGroupManagerStatefulDisk `pulumi:"statefulDisks"` @@ -671,7 +671,7 @@ type RegionInstanceGroupManagerArgs struct { // // *** Region pulumi.StringPtrInput - // The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + // The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). StandbyPolicy RegionInstanceGroupManagerStandbyPolicyPtrInput // Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). Proactive cross zone instance redistribution must be disabled before you can update stateful disks on existing instance group managers. This can be controlled via the `updatePolicy`. StatefulDisks RegionInstanceGroupManagerStatefulDiskArrayInput @@ -922,7 +922,7 @@ func (o RegionInstanceGroupManagerOutput) SelfLink() pulumi.StringOutput { return o.ApplyT(func(v *RegionInstanceGroupManager) pulumi.StringOutput { return v.SelfLink }).(pulumi.StringOutput) } -// The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) +// The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). func (o RegionInstanceGroupManagerOutput) StandbyPolicy() RegionInstanceGroupManagerStandbyPolicyOutput { return o.ApplyT(func(v *RegionInstanceGroupManager) RegionInstanceGroupManagerStandbyPolicyOutput { return v.StandbyPolicy diff --git a/sdk/go/gcp/datacatalog/pulumiTypes.go b/sdk/go/gcp/datacatalog/pulumiTypes.go index 5a7df70dc2..6258e9137e 100644 --- a/sdk/go/gcp/datacatalog/pulumiTypes.go +++ b/sdk/go/gcp/datacatalog/pulumiTypes.go @@ -499,7 +499,7 @@ type EntryGcsFilesetSpec struct { // Sample files contained in this fileset, not all files contained in this fileset are represented here. // Structure is documented below. // - // The `sampleGcsFileSpecs` block contains: + // The `sampleGcsFileSpecs` block contains: SampleGcsFileSpecs []EntryGcsFilesetSpecSampleGcsFileSpec `pulumi:"sampleGcsFileSpecs"` } @@ -531,7 +531,7 @@ type EntryGcsFilesetSpecArgs struct { // Sample files contained in this fileset, not all files contained in this fileset are represented here. // Structure is documented below. // - // The `sampleGcsFileSpecs` block contains: + // The `sampleGcsFileSpecs` block contains: SampleGcsFileSpecs EntryGcsFilesetSpecSampleGcsFileSpecArrayInput `pulumi:"sampleGcsFileSpecs"` } @@ -631,7 +631,7 @@ func (o EntryGcsFilesetSpecOutput) FilePatterns() pulumi.StringArrayOutput { // Sample files contained in this fileset, not all files contained in this fileset are represented here. // Structure is documented below. // -// The `sampleGcsFileSpecs` block contains: +// The `sampleGcsFileSpecs` block contains: func (o EntryGcsFilesetSpecOutput) SampleGcsFileSpecs() EntryGcsFilesetSpecSampleGcsFileSpecArrayOutput { return o.ApplyT(func(v EntryGcsFilesetSpec) []EntryGcsFilesetSpecSampleGcsFileSpec { return v.SampleGcsFileSpecs }).(EntryGcsFilesetSpecSampleGcsFileSpecArrayOutput) } @@ -684,7 +684,7 @@ func (o EntryGcsFilesetSpecPtrOutput) FilePatterns() pulumi.StringArrayOutput { // Sample files contained in this fileset, not all files contained in this fileset are represented here. // Structure is documented below. // -// The `sampleGcsFileSpecs` block contains: +// The `sampleGcsFileSpecs` block contains: func (o EntryGcsFilesetSpecPtrOutput) SampleGcsFileSpecs() EntryGcsFilesetSpecSampleGcsFileSpecArrayOutput { return o.ApplyT(func(v *EntryGcsFilesetSpec) []EntryGcsFilesetSpecSampleGcsFileSpec { if v == nil { diff --git a/sdk/go/gcp/developerconnect/connection.go b/sdk/go/gcp/developerconnect/connection.go index 883533f323..40d46e66df 100644 --- a/sdk/go/gcp/developerconnect/connection.go +++ b/sdk/go/gcp/developerconnect/connection.go @@ -12,6 +12,8 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) +// A connection for GitHub, GitHub Enterprise, GitLab, and GitLab Enterprise. +// // ## Example Usage // // ### Developer Connect Connection New @@ -179,7 +181,324 @@ import ( // } // // ``` +// ### Developer Connect Connection Github +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// 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"), +// 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"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// ### Developer Connect Connection Github Doc +// +// ```go +// package main +// +// 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/secretmanager" +// "github.com/pulumi/pulumi-std/sdk/go/std" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := secretmanager.NewSecret(ctx, "github-token-secret", &secretmanager.SecretArgs{ +// SecretId: pulumi.String("github-token-secret"), +// Replication: &secretmanager.SecretReplicationArgs{ +// Auto: &secretmanager.SecretReplicationAutoArgs{}, +// }, +// }) +// if err != nil { +// return err +// } +// invokeFile, err := std.File(ctx, &std.FileArgs{ +// Input: "my-github-token.txt", +// }, nil) +// if err != nil { +// return err +// } +// _, err = secretmanager.NewSecretVersion(ctx, "github-token-secret-version", &secretmanager.SecretVersionArgs{ +// Secret: github_token_secret.ID(), +// SecretData: pulumi.String(invokeFile.Result), +// }) +// 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", +// }, +// }, +// }, +// }, nil) +// if err != nil { +// return err +// } +// _, err = secretmanager.NewSecretIamPolicy(ctx, "policy", &secretmanager.SecretIamPolicyArgs{ +// SecretId: github_token_secret.SecretId, +// PolicyData: pulumi.String(p4sa_secretAccessor.PolicyData), +// }) +// if err != nil { +// return err +// } +// _, err = developerconnect.NewConnection(ctx, "my-connection", &developerconnect.ConnectionArgs{ +// Location: pulumi.String("us-central1"), +// ConnectionId: pulumi.String("my-connection"), +// GithubConfig: &developerconnect.ConnectionGithubConfigArgs{ +// GithubApp: pulumi.String("DEVELOPER_CONNECT"), +// AppInstallationId: pulumi.String("123123"), +// AuthorizerCredential: &developerconnect.ConnectionGithubConfigAuthorizerCredentialArgs{ +// OauthTokenSecretVersion: github_token_secret_version.ID(), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// ### Developer Connect Connection Github Enterprise +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// 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"), +// GithubEnterpriseConfig: &developerconnect.ConnectionGithubEnterpriseConfigArgs{ +// HostUri: pulumi.String("https://ghe.proctor-staging-test.com"), +// AppId: pulumi.String("864434"), +// PrivateKeySecretVersion: pulumi.String("projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-private-key-f522d2/versions/latest"), +// WebhookSecretSecretVersion: pulumi.String("projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-webhook-secret-3c806f/versions/latest"), +// AppInstallationId: pulumi.String("837537"), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// ### Developer Connect Connection Github Enterprise Doc +// +// ```go +// package main +// +// 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/secretmanager" +// "github.com/pulumi/pulumi-std/sdk/go/std" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := secretmanager.NewSecret(ctx, "private-key-secret", &secretmanager.SecretArgs{ +// SecretId: pulumi.String("ghe-pk-secret"), +// Replication: &secretmanager.SecretReplicationArgs{ +// Auto: &secretmanager.SecretReplicationAutoArgs{}, +// }, +// }) +// if err != nil { +// return err +// } +// invokeFile, err := std.File(ctx, &std.FileArgs{ +// Input: "private-key.pem", +// }, nil) +// if err != nil { +// return err +// } +// _, err = secretmanager.NewSecretVersion(ctx, "private-key-secret-version", &secretmanager.SecretVersionArgs{ +// Secret: private_key_secret.ID(), +// SecretData: pulumi.String(invokeFile.Result), +// }) +// if err != nil { +// return err +// } +// _, err = secretmanager.NewSecret(ctx, "webhook-secret-secret", &secretmanager.SecretArgs{ +// SecretId: pulumi.String("ghe-token-secret"), +// Replication: &secretmanager.SecretReplicationArgs{ +// Auto: &secretmanager.SecretReplicationAutoArgs{}, +// }, +// }) +// if err != nil { +// return err +// } +// _, err = secretmanager.NewSecretVersion(ctx, "webhook-secret-secret-version", &secretmanager.SecretVersionArgs{ +// Secret: webhook_secret_secret.ID(), +// SecretData: pulumi.String(""), +// }) +// 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", +// }, +// }, +// }, +// }, nil) +// if err != nil { +// return err +// } +// _, err = secretmanager.NewSecretIamPolicy(ctx, "policy-pk", &secretmanager.SecretIamPolicyArgs{ +// SecretId: private_key_secret.SecretId, +// PolicyData: pulumi.String(p4sa_secretAccessor.PolicyData), +// }) +// if err != nil { +// return err +// } +// _, err = secretmanager.NewSecretIamPolicy(ctx, "policy-whs", &secretmanager.SecretIamPolicyArgs{ +// SecretId: webhook_secret_secret.SecretId, +// PolicyData: pulumi.String(p4sa_secretAccessor.PolicyData), +// }) +// if err != nil { +// return err +// } +// _, err = developerconnect.NewConnection(ctx, "my-connection", &developerconnect.ConnectionArgs{ +// Location: pulumi.String("us-central1"), +// ConnectionId: pulumi.String("my-connection"), +// GithubEnterpriseConfig: &developerconnect.ConnectionGithubEnterpriseConfigArgs{ +// HostUri: pulumi.String("https://ghe.com"), +// PrivateKeySecretVersion: private_key_secret_version.ID(), +// WebhookSecretSecretVersion: webhook_secret_secret_version.ID(), +// AppId: pulumi.String("100"), +// AppInstallationId: pulumi.String("123123"), +// }, +// }, pulumi.DependsOn([]pulumi.Resource{ +// policy_pk, +// policy_whs, +// })) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// ### Developer Connect Connection Gitlab // +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// 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"), +// GitlabConfig: &developerconnect.ConnectionGitlabConfigArgs{ +// WebhookSecretSecretVersion: pulumi.String("projects/devconnect-terraform-creds/secrets/gitlab-webhook/versions/latest"), +// ReadAuthorizerCredential: &developerconnect.ConnectionGitlabConfigReadAuthorizerCredentialArgs{ +// UserTokenSecretVersion: pulumi.String("projects/devconnect-terraform-creds/secrets/gitlab-read-cred/versions/latest"), +// }, +// AuthorizerCredential: &developerconnect.ConnectionGitlabConfigAuthorizerCredentialArgs{ +// UserTokenSecretVersion: pulumi.String("projects/devconnect-terraform-creds/secrets/gitlab-auth-cred/versions/latest"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// ### Developer Connect Connection Gitlab Enterprise +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// 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"), +// GitlabEnterpriseConfig: &developerconnect.ConnectionGitlabEnterpriseConfigArgs{ +// HostUri: pulumi.String("https://gle-us-central1.gcb-test.com"), +// WebhookSecretSecretVersion: pulumi.String("projects/devconnect-terraform-creds/secrets/gitlab-enterprise-webhook/versions/latest"), +// ReadAuthorizerCredential: &developerconnect.ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs{ +// UserTokenSecretVersion: pulumi.String("projects/devconnect-terraform-creds/secrets/gitlab-enterprise-read-cred/versions/latest"), +// }, +// AuthorizerCredential: &developerconnect.ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs{ +// UserTokenSecretVersion: pulumi.String("projects/devconnect-terraform-creds/secrets/gitlab-enterprise-auth-cred/versions/latest"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` // ## Import // // Connection can be imported using any of these accepted formats: @@ -207,43 +526,56 @@ type Connection struct { pulumi.CustomResourceState // Optional. Allows clients to store small amounts of arbitrary data. - // // **Note**: This field is non-authoritative, and will only manage the annotations present in your configuration. // Please refer to the field `effectiveAnnotations` for all of the annotations present on the resource. Annotations pulumi.StringMapOutput `pulumi:"annotations"` - // Required. Id of the requesting object. If auto-generating Id server-side, - // remove this field and connectionId from the methodSignature of Create RPC. + // Required. Id of the requesting object + // If auto-generating Id server-side, remove this field and + // connectionId from the methodSignature of Create RPC // // *** ConnectionId pulumi.StringOutput `pulumi:"connectionId"` // Output only. [Output only] Create timestamp CreateTime pulumi.StringOutput `pulumi:"createTime"` + // The crypto key configuration. This field is used by the Customer-managed + // encryption keys (CMEK) feature. + // Structure is documented below. + CryptoKeyConfig ConnectionCryptoKeyConfigPtrOutput `pulumi:"cryptoKeyConfig"` // Output only. [Output only] Delete timestamp DeleteTime pulumi.StringOutput `pulumi:"deleteTime"` - // Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled. + // Optional. If disabled is set to true, functionality is disabled for this connection. + // Repository based API methods and webhooks processing for repositories in + // this connection will be disabled. Disabled pulumi.BoolPtrOutput `pulumi:"disabled"` EffectiveAnnotations pulumi.StringMapOutput `pulumi:"effectiveAnnotations"` // 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"` - // Optional. 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 + // Optional. 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. Etag pulumi.StringPtrOutput `pulumi:"etag"` // Configuration for connections to github.com. // Structure is documented below. GithubConfig ConnectionGithubConfigPtrOutput `pulumi:"githubConfig"` - // Describes stage and necessary actions to be taken by the user to complete the installation. - // Used for GitHub and GitHub Enterprise based connections. + // Configuration for connections to an instance of GitHub Enterprise. + // Structure is documented below. + GithubEnterpriseConfig ConnectionGithubEnterpriseConfigPtrOutput `pulumi:"githubEnterpriseConfig"` + // Configuration for connections to gitlab.com. + // Structure is documented below. + GitlabConfig ConnectionGitlabConfigPtrOutput `pulumi:"gitlabConfig"` + // Configuration for connections to an instance of GitLab Enterprise. + // Structure is documented below. + GitlabEnterpriseConfig ConnectionGitlabEnterpriseConfigPtrOutput `pulumi:"gitlabEnterpriseConfig"` + // Describes stage and necessary actions to be taken by the + // user to complete the installation. Used for GitHub and GitHub Enterprise + // based connections. // Structure is documented below. InstallationStates ConnectionInstallationStateArrayOutput `pulumi:"installationStates"` // 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"` - // Resource ID segment making up resource `name`. It identifies the resource - // within its parent collection as described in https://google.aip.dev/122. See documentation - // for resource type `developerconnect.googleapis.com/GitRepositoryLink`. + // Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. Location pulumi.StringOutput `pulumi:"location"` // Identifier. The resource name of the connection, in the format // `projects/{project}/locations/{location}/connections/{connection_id}`. @@ -254,8 +586,8 @@ type Connection struct { // The combination of labels configured directly on the resource // and default labels configured on the provider. PulumiLabels pulumi.StringMapOutput `pulumi:"pulumiLabels"` - // Output only. Set to true when the connection is being set up or updated - // in the background. + // Output only. Set to true when the connection is being set up or updated in the + // background. Reconciling pulumi.BoolOutput `pulumi:"reconciling"` // Output only. A system-assigned unique identifier for a the GitRepositoryLink. Uid pulumi.StringOutput `pulumi:"uid"` @@ -305,43 +637,56 @@ func GetConnection(ctx *pulumi.Context, // Input properties used for looking up and filtering Connection resources. type connectionState struct { // Optional. Allows clients to store small amounts of arbitrary data. - // // **Note**: This field is non-authoritative, and will only manage the annotations present in your configuration. // Please refer to the field `effectiveAnnotations` for all of the annotations present on the resource. Annotations map[string]string `pulumi:"annotations"` - // Required. Id of the requesting object. If auto-generating Id server-side, - // remove this field and connectionId from the methodSignature of Create RPC. + // Required. Id of the requesting object + // If auto-generating Id server-side, remove this field and + // connectionId from the methodSignature of Create RPC // // *** ConnectionId *string `pulumi:"connectionId"` // Output only. [Output only] Create timestamp CreateTime *string `pulumi:"createTime"` + // The crypto key configuration. This field is used by the Customer-managed + // encryption keys (CMEK) feature. + // Structure is documented below. + CryptoKeyConfig *ConnectionCryptoKeyConfig `pulumi:"cryptoKeyConfig"` // Output only. [Output only] Delete timestamp DeleteTime *string `pulumi:"deleteTime"` - // Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled. + // Optional. If disabled is set to true, functionality is disabled for this connection. + // Repository based API methods and webhooks processing for repositories in + // this connection will be disabled. Disabled *bool `pulumi:"disabled"` EffectiveAnnotations map[string]string `pulumi:"effectiveAnnotations"` // 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"` - // Optional. 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 + // Optional. 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. Etag *string `pulumi:"etag"` // Configuration for connections to github.com. // Structure is documented below. GithubConfig *ConnectionGithubConfig `pulumi:"githubConfig"` - // Describes stage and necessary actions to be taken by the user to complete the installation. - // Used for GitHub and GitHub Enterprise based connections. + // Configuration for connections to an instance of GitHub Enterprise. + // Structure is documented below. + GithubEnterpriseConfig *ConnectionGithubEnterpriseConfig `pulumi:"githubEnterpriseConfig"` + // Configuration for connections to gitlab.com. + // Structure is documented below. + GitlabConfig *ConnectionGitlabConfig `pulumi:"gitlabConfig"` + // Configuration for connections to an instance of GitLab Enterprise. + // Structure is documented below. + GitlabEnterpriseConfig *ConnectionGitlabEnterpriseConfig `pulumi:"gitlabEnterpriseConfig"` + // Describes stage and necessary actions to be taken by the + // user to complete the installation. Used for GitHub and GitHub Enterprise + // based connections. // Structure is documented below. InstallationStates []ConnectionInstallationState `pulumi:"installationStates"` // 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"` - // Resource ID segment making up resource `name`. It identifies the resource - // within its parent collection as described in https://google.aip.dev/122. See documentation - // for resource type `developerconnect.googleapis.com/GitRepositoryLink`. + // Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. Location *string `pulumi:"location"` // Identifier. The resource name of the connection, in the format // `projects/{project}/locations/{location}/connections/{connection_id}`. @@ -352,8 +697,8 @@ type connectionState struct { // The combination of labels configured directly on the resource // and default labels configured on the provider. PulumiLabels map[string]string `pulumi:"pulumiLabels"` - // Output only. Set to true when the connection is being set up or updated - // in the background. + // Output only. Set to true when the connection is being set up or updated in the + // background. Reconciling *bool `pulumi:"reconciling"` // Output only. A system-assigned unique identifier for a the GitRepositoryLink. Uid *string `pulumi:"uid"` @@ -363,43 +708,56 @@ type connectionState struct { type ConnectionState struct { // Optional. Allows clients to store small amounts of arbitrary data. - // // **Note**: This field is non-authoritative, and will only manage the annotations present in your configuration. // Please refer to the field `effectiveAnnotations` for all of the annotations present on the resource. Annotations pulumi.StringMapInput - // Required. Id of the requesting object. If auto-generating Id server-side, - // remove this field and connectionId from the methodSignature of Create RPC. + // Required. Id of the requesting object + // If auto-generating Id server-side, remove this field and + // connectionId from the methodSignature of Create RPC // // *** ConnectionId pulumi.StringPtrInput // Output only. [Output only] Create timestamp CreateTime pulumi.StringPtrInput + // The crypto key configuration. This field is used by the Customer-managed + // encryption keys (CMEK) feature. + // Structure is documented below. + CryptoKeyConfig ConnectionCryptoKeyConfigPtrInput // Output only. [Output only] Delete timestamp DeleteTime pulumi.StringPtrInput - // Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled. + // Optional. If disabled is set to true, functionality is disabled for this connection. + // Repository based API methods and webhooks processing for repositories in + // this connection will be disabled. Disabled pulumi.BoolPtrInput EffectiveAnnotations pulumi.StringMapInput // 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 - // Optional. 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 + // Optional. 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. Etag pulumi.StringPtrInput // Configuration for connections to github.com. // Structure is documented below. GithubConfig ConnectionGithubConfigPtrInput - // Describes stage and necessary actions to be taken by the user to complete the installation. - // Used for GitHub and GitHub Enterprise based connections. + // Configuration for connections to an instance of GitHub Enterprise. + // Structure is documented below. + GithubEnterpriseConfig ConnectionGithubEnterpriseConfigPtrInput + // Configuration for connections to gitlab.com. + // Structure is documented below. + GitlabConfig ConnectionGitlabConfigPtrInput + // Configuration for connections to an instance of GitLab Enterprise. + // Structure is documented below. + GitlabEnterpriseConfig ConnectionGitlabEnterpriseConfigPtrInput + // Describes stage and necessary actions to be taken by the + // user to complete the installation. Used for GitHub and GitHub Enterprise + // based connections. // Structure is documented below. InstallationStates ConnectionInstallationStateArrayInput // 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 - // Resource ID segment making up resource `name`. It identifies the resource - // within its parent collection as described in https://google.aip.dev/122. See documentation - // for resource type `developerconnect.googleapis.com/GitRepositoryLink`. + // Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. Location pulumi.StringPtrInput // Identifier. The resource name of the connection, in the format // `projects/{project}/locations/{location}/connections/{connection_id}`. @@ -410,8 +768,8 @@ type ConnectionState struct { // The combination of labels configured directly on the resource // and default labels configured on the provider. PulumiLabels pulumi.StringMapInput - // Output only. Set to true when the connection is being set up or updated - // in the background. + // Output only. Set to true when the connection is being set up or updated in the + // background. Reconciling pulumi.BoolPtrInput // Output only. A system-assigned unique identifier for a the GitRepositoryLink. Uid pulumi.StringPtrInput @@ -425,32 +783,44 @@ func (ConnectionState) ElementType() reflect.Type { type connectionArgs struct { // Optional. Allows clients to store small amounts of arbitrary data. - // // **Note**: This field is non-authoritative, and will only manage the annotations present in your configuration. // Please refer to the field `effectiveAnnotations` for all of the annotations present on the resource. Annotations map[string]string `pulumi:"annotations"` - // Required. Id of the requesting object. If auto-generating Id server-side, - // remove this field and connectionId from the methodSignature of Create RPC. + // Required. Id of the requesting object + // If auto-generating Id server-side, remove this field and + // connectionId from the methodSignature of Create RPC // // *** ConnectionId string `pulumi:"connectionId"` - // Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled. + // The crypto key configuration. This field is used by the Customer-managed + // encryption keys (CMEK) feature. + // Structure is documented below. + CryptoKeyConfig *ConnectionCryptoKeyConfig `pulumi:"cryptoKeyConfig"` + // Optional. If disabled is set to true, functionality is disabled for this connection. + // Repository based API methods and webhooks processing for repositories in + // this connection will be disabled. Disabled *bool `pulumi:"disabled"` - // Optional. 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 + // Optional. 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. Etag *string `pulumi:"etag"` // Configuration for connections to github.com. // Structure is documented below. GithubConfig *ConnectionGithubConfig `pulumi:"githubConfig"` + // Configuration for connections to an instance of GitHub Enterprise. + // Structure is documented below. + GithubEnterpriseConfig *ConnectionGithubEnterpriseConfig `pulumi:"githubEnterpriseConfig"` + // Configuration for connections to gitlab.com. + // Structure is documented below. + GitlabConfig *ConnectionGitlabConfig `pulumi:"gitlabConfig"` + // Configuration for connections to an instance of GitLab Enterprise. + // Structure is documented below. + GitlabEnterpriseConfig *ConnectionGitlabEnterpriseConfig `pulumi:"gitlabEnterpriseConfig"` // 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"` - // Resource ID segment making up resource `name`. It identifies the resource - // within its parent collection as described in https://google.aip.dev/122. See documentation - // for resource type `developerconnect.googleapis.com/GitRepositoryLink`. + // Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. Location string `pulumi:"location"` // The ID of the project in which the resource belongs. // If it is not provided, the provider project is used. @@ -460,32 +830,44 @@ type connectionArgs struct { // The set of arguments for constructing a Connection resource. type ConnectionArgs struct { // Optional. Allows clients to store small amounts of arbitrary data. - // // **Note**: This field is non-authoritative, and will only manage the annotations present in your configuration. // Please refer to the field `effectiveAnnotations` for all of the annotations present on the resource. Annotations pulumi.StringMapInput - // Required. Id of the requesting object. If auto-generating Id server-side, - // remove this field and connectionId from the methodSignature of Create RPC. + // Required. Id of the requesting object + // If auto-generating Id server-side, remove this field and + // connectionId from the methodSignature of Create RPC // // *** ConnectionId pulumi.StringInput - // Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled. + // The crypto key configuration. This field is used by the Customer-managed + // encryption keys (CMEK) feature. + // Structure is documented below. + CryptoKeyConfig ConnectionCryptoKeyConfigPtrInput + // Optional. If disabled is set to true, functionality is disabled for this connection. + // Repository based API methods and webhooks processing for repositories in + // this connection will be disabled. Disabled pulumi.BoolPtrInput - // Optional. 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 + // Optional. 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. Etag pulumi.StringPtrInput // Configuration for connections to github.com. // Structure is documented below. GithubConfig ConnectionGithubConfigPtrInput + // Configuration for connections to an instance of GitHub Enterprise. + // Structure is documented below. + GithubEnterpriseConfig ConnectionGithubEnterpriseConfigPtrInput + // Configuration for connections to gitlab.com. + // Structure is documented below. + GitlabConfig ConnectionGitlabConfigPtrInput + // Configuration for connections to an instance of GitLab Enterprise. + // Structure is documented below. + GitlabEnterpriseConfig ConnectionGitlabEnterpriseConfigPtrInput // 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 - // Resource ID segment making up resource `name`. It identifies the resource - // within its parent collection as described in https://google.aip.dev/122. See documentation - // for resource type `developerconnect.googleapis.com/GitRepositoryLink`. + // Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. Location pulumi.StringInput // The ID of the project in which the resource belongs. // If it is not provided, the provider project is used. @@ -580,15 +962,15 @@ func (o ConnectionOutput) ToConnectionOutputWithContext(ctx context.Context) Con } // Optional. Allows clients to store small amounts of arbitrary data. -// // **Note**: This field is non-authoritative, and will only manage the annotations present in your configuration. // Please refer to the field `effectiveAnnotations` for all of the annotations present on the resource. func (o ConnectionOutput) Annotations() pulumi.StringMapOutput { return o.ApplyT(func(v *Connection) pulumi.StringMapOutput { return v.Annotations }).(pulumi.StringMapOutput) } -// Required. Id of the requesting object. If auto-generating Id server-side, -// remove this field and connectionId from the methodSignature of Create RPC. +// Required. Id of the requesting object +// If auto-generating Id server-side, remove this field and +// connectionId from the methodSignature of Create RPC // // *** func (o ConnectionOutput) ConnectionId() pulumi.StringOutput { @@ -600,12 +982,21 @@ func (o ConnectionOutput) CreateTime() pulumi.StringOutput { return o.ApplyT(func(v *Connection) pulumi.StringOutput { return v.CreateTime }).(pulumi.StringOutput) } +// The crypto key configuration. This field is used by the Customer-managed +// encryption keys (CMEK) feature. +// Structure is documented below. +func (o ConnectionOutput) CryptoKeyConfig() ConnectionCryptoKeyConfigPtrOutput { + return o.ApplyT(func(v *Connection) ConnectionCryptoKeyConfigPtrOutput { return v.CryptoKeyConfig }).(ConnectionCryptoKeyConfigPtrOutput) +} + // Output only. [Output only] Delete timestamp func (o ConnectionOutput) DeleteTime() pulumi.StringOutput { return o.ApplyT(func(v *Connection) pulumi.StringOutput { return v.DeleteTime }).(pulumi.StringOutput) } -// Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled. +// Optional. If disabled is set to true, functionality is disabled for this connection. +// Repository based API methods and webhooks processing for repositories in +// this connection will be disabled. func (o ConnectionOutput) Disabled() pulumi.BoolPtrOutput { return o.ApplyT(func(v *Connection) pulumi.BoolPtrOutput { return v.Disabled }).(pulumi.BoolPtrOutput) } @@ -619,8 +1010,8 @@ func (o ConnectionOutput) EffectiveLabels() pulumi.StringMapOutput { return o.ApplyT(func(v *Connection) pulumi.StringMapOutput { return v.EffectiveLabels }).(pulumi.StringMapOutput) } -// Optional. 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 +// Optional. 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. func (o ConnectionOutput) Etag() pulumi.StringPtrOutput { return o.ApplyT(func(v *Connection) pulumi.StringPtrOutput { return v.Etag }).(pulumi.StringPtrOutput) @@ -632,24 +1023,40 @@ func (o ConnectionOutput) GithubConfig() ConnectionGithubConfigPtrOutput { return o.ApplyT(func(v *Connection) ConnectionGithubConfigPtrOutput { return v.GithubConfig }).(ConnectionGithubConfigPtrOutput) } -// Describes stage and necessary actions to be taken by the user to complete the installation. -// Used for GitHub and GitHub Enterprise based connections. +// Configuration for connections to an instance of GitHub Enterprise. +// Structure is documented below. +func (o ConnectionOutput) GithubEnterpriseConfig() ConnectionGithubEnterpriseConfigPtrOutput { + return o.ApplyT(func(v *Connection) ConnectionGithubEnterpriseConfigPtrOutput { return v.GithubEnterpriseConfig }).(ConnectionGithubEnterpriseConfigPtrOutput) +} + +// Configuration for connections to gitlab.com. +// Structure is documented below. +func (o ConnectionOutput) GitlabConfig() ConnectionGitlabConfigPtrOutput { + return o.ApplyT(func(v *Connection) ConnectionGitlabConfigPtrOutput { return v.GitlabConfig }).(ConnectionGitlabConfigPtrOutput) +} + +// Configuration for connections to an instance of GitLab Enterprise. +// Structure is documented below. +func (o ConnectionOutput) GitlabEnterpriseConfig() ConnectionGitlabEnterpriseConfigPtrOutput { + return o.ApplyT(func(v *Connection) ConnectionGitlabEnterpriseConfigPtrOutput { return v.GitlabEnterpriseConfig }).(ConnectionGitlabEnterpriseConfigPtrOutput) +} + +// Describes stage and necessary actions to be taken by the +// user to complete the installation. Used for GitHub and GitHub Enterprise +// based connections. // Structure is documented below. func (o ConnectionOutput) InstallationStates() ConnectionInstallationStateArrayOutput { return o.ApplyT(func(v *Connection) ConnectionInstallationStateArrayOutput { return v.InstallationStates }).(ConnectionInstallationStateArrayOutput) } // 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 ConnectionOutput) Labels() pulumi.StringMapOutput { return o.ApplyT(func(v *Connection) pulumi.StringMapOutput { return v.Labels }).(pulumi.StringMapOutput) } -// Resource ID segment making up resource `name`. It identifies the resource -// within its parent collection as described in https://google.aip.dev/122. See documentation -// for resource type `developerconnect.googleapis.com/GitRepositoryLink`. +// Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. func (o ConnectionOutput) Location() pulumi.StringOutput { return o.ApplyT(func(v *Connection) pulumi.StringOutput { return v.Location }).(pulumi.StringOutput) } @@ -672,8 +1079,8 @@ func (o ConnectionOutput) PulumiLabels() pulumi.StringMapOutput { return o.ApplyT(func(v *Connection) pulumi.StringMapOutput { return v.PulumiLabels }).(pulumi.StringMapOutput) } -// Output only. Set to true when the connection is being set up or updated -// in the background. +// Output only. Set to true when the connection is being set up or updated in the +// background. func (o ConnectionOutput) Reconciling() pulumi.BoolOutput { return o.ApplyT(func(v *Connection) pulumi.BoolOutput { return v.Reconciling }).(pulumi.BoolOutput) } diff --git a/sdk/go/gcp/developerconnect/gitRepositoryLink.go b/sdk/go/gcp/developerconnect/gitRepositoryLink.go index 0799518e59..5f0f7ad58e 100644 --- a/sdk/go/gcp/developerconnect/gitRepositoryLink.go +++ b/sdk/go/gcp/developerconnect/gitRepositoryLink.go @@ -12,6 +12,8 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) +// A git repository link to a parent connection. +// // ## Example Usage // // ## Import diff --git a/sdk/go/gcp/developerconnect/pulumiTypes.go b/sdk/go/gcp/developerconnect/pulumiTypes.go index 1d566e7e4d..32f17087c5 100644 --- a/sdk/go/gcp/developerconnect/pulumiTypes.go +++ b/sdk/go/gcp/developerconnect/pulumiTypes.go @@ -13,23 +13,168 @@ import ( var _ = internal.GetEnvOrDefault +type ConnectionCryptoKeyConfig struct { + // Required. The name of the key which is used to encrypt/decrypt customer data. For key + // in Cloud KMS, the key should be in the format of + // `projects/*/locations/*/keyRings/*/cryptoKeys/*`. + KeyReference string `pulumi:"keyReference"` +} + +// ConnectionCryptoKeyConfigInput is an input type that accepts ConnectionCryptoKeyConfigArgs and ConnectionCryptoKeyConfigOutput values. +// You can construct a concrete instance of `ConnectionCryptoKeyConfigInput` via: +// +// ConnectionCryptoKeyConfigArgs{...} +type ConnectionCryptoKeyConfigInput interface { + pulumi.Input + + ToConnectionCryptoKeyConfigOutput() ConnectionCryptoKeyConfigOutput + ToConnectionCryptoKeyConfigOutputWithContext(context.Context) ConnectionCryptoKeyConfigOutput +} + +type ConnectionCryptoKeyConfigArgs struct { + // Required. The name of the key which is used to encrypt/decrypt customer data. For key + // in Cloud KMS, the key should be in the format of + // `projects/*/locations/*/keyRings/*/cryptoKeys/*`. + KeyReference pulumi.StringInput `pulumi:"keyReference"` +} + +func (ConnectionCryptoKeyConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ConnectionCryptoKeyConfig)(nil)).Elem() +} + +func (i ConnectionCryptoKeyConfigArgs) ToConnectionCryptoKeyConfigOutput() ConnectionCryptoKeyConfigOutput { + return i.ToConnectionCryptoKeyConfigOutputWithContext(context.Background()) +} + +func (i ConnectionCryptoKeyConfigArgs) ToConnectionCryptoKeyConfigOutputWithContext(ctx context.Context) ConnectionCryptoKeyConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionCryptoKeyConfigOutput) +} + +func (i ConnectionCryptoKeyConfigArgs) ToConnectionCryptoKeyConfigPtrOutput() ConnectionCryptoKeyConfigPtrOutput { + return i.ToConnectionCryptoKeyConfigPtrOutputWithContext(context.Background()) +} + +func (i ConnectionCryptoKeyConfigArgs) ToConnectionCryptoKeyConfigPtrOutputWithContext(ctx context.Context) ConnectionCryptoKeyConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionCryptoKeyConfigOutput).ToConnectionCryptoKeyConfigPtrOutputWithContext(ctx) +} + +// ConnectionCryptoKeyConfigPtrInput is an input type that accepts ConnectionCryptoKeyConfigArgs, ConnectionCryptoKeyConfigPtr and ConnectionCryptoKeyConfigPtrOutput values. +// You can construct a concrete instance of `ConnectionCryptoKeyConfigPtrInput` via: +// +// ConnectionCryptoKeyConfigArgs{...} +// +// or: +// +// nil +type ConnectionCryptoKeyConfigPtrInput interface { + pulumi.Input + + ToConnectionCryptoKeyConfigPtrOutput() ConnectionCryptoKeyConfigPtrOutput + ToConnectionCryptoKeyConfigPtrOutputWithContext(context.Context) ConnectionCryptoKeyConfigPtrOutput +} + +type connectionCryptoKeyConfigPtrType ConnectionCryptoKeyConfigArgs + +func ConnectionCryptoKeyConfigPtr(v *ConnectionCryptoKeyConfigArgs) ConnectionCryptoKeyConfigPtrInput { + return (*connectionCryptoKeyConfigPtrType)(v) +} + +func (*connectionCryptoKeyConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ConnectionCryptoKeyConfig)(nil)).Elem() +} + +func (i *connectionCryptoKeyConfigPtrType) ToConnectionCryptoKeyConfigPtrOutput() ConnectionCryptoKeyConfigPtrOutput { + return i.ToConnectionCryptoKeyConfigPtrOutputWithContext(context.Background()) +} + +func (i *connectionCryptoKeyConfigPtrType) ToConnectionCryptoKeyConfigPtrOutputWithContext(ctx context.Context) ConnectionCryptoKeyConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionCryptoKeyConfigPtrOutput) +} + +type ConnectionCryptoKeyConfigOutput struct{ *pulumi.OutputState } + +func (ConnectionCryptoKeyConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ConnectionCryptoKeyConfig)(nil)).Elem() +} + +func (o ConnectionCryptoKeyConfigOutput) ToConnectionCryptoKeyConfigOutput() ConnectionCryptoKeyConfigOutput { + return o +} + +func (o ConnectionCryptoKeyConfigOutput) ToConnectionCryptoKeyConfigOutputWithContext(ctx context.Context) ConnectionCryptoKeyConfigOutput { + return o +} + +func (o ConnectionCryptoKeyConfigOutput) ToConnectionCryptoKeyConfigPtrOutput() ConnectionCryptoKeyConfigPtrOutput { + return o.ToConnectionCryptoKeyConfigPtrOutputWithContext(context.Background()) +} + +func (o ConnectionCryptoKeyConfigOutput) ToConnectionCryptoKeyConfigPtrOutputWithContext(ctx context.Context) ConnectionCryptoKeyConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ConnectionCryptoKeyConfig) *ConnectionCryptoKeyConfig { + return &v + }).(ConnectionCryptoKeyConfigPtrOutput) +} + +// Required. The name of the key which is used to encrypt/decrypt customer data. For key +// in Cloud KMS, the key should be in the format of +// `projects/*/locations/*/keyRings/*/cryptoKeys/*`. +func (o ConnectionCryptoKeyConfigOutput) KeyReference() pulumi.StringOutput { + return o.ApplyT(func(v ConnectionCryptoKeyConfig) string { return v.KeyReference }).(pulumi.StringOutput) +} + +type ConnectionCryptoKeyConfigPtrOutput struct{ *pulumi.OutputState } + +func (ConnectionCryptoKeyConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ConnectionCryptoKeyConfig)(nil)).Elem() +} + +func (o ConnectionCryptoKeyConfigPtrOutput) ToConnectionCryptoKeyConfigPtrOutput() ConnectionCryptoKeyConfigPtrOutput { + return o +} + +func (o ConnectionCryptoKeyConfigPtrOutput) ToConnectionCryptoKeyConfigPtrOutputWithContext(ctx context.Context) ConnectionCryptoKeyConfigPtrOutput { + return o +} + +func (o ConnectionCryptoKeyConfigPtrOutput) Elem() ConnectionCryptoKeyConfigOutput { + return o.ApplyT(func(v *ConnectionCryptoKeyConfig) ConnectionCryptoKeyConfig { + if v != nil { + return *v + } + var ret ConnectionCryptoKeyConfig + return ret + }).(ConnectionCryptoKeyConfigOutput) +} + +// Required. The name of the key which is used to encrypt/decrypt customer data. For key +// in Cloud KMS, the key should be in the format of +// `projects/*/locations/*/keyRings/*/cryptoKeys/*`. +func (o ConnectionCryptoKeyConfigPtrOutput) KeyReference() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ConnectionCryptoKeyConfig) *string { + if v == nil { + return nil + } + return &v.KeyReference + }).(pulumi.StringPtrOutput) +} + type ConnectionGithubConfig struct { // Optional. GitHub App installation id. AppInstallationId *string `pulumi:"appInstallationId"` - // Represents an OAuth token of the account that authorized the Connection,and - // associated metadata. + // Represents an OAuth token of the account that authorized the Connection, + // and associated metadata. // Structure is documented below. AuthorizerCredential *ConnectionGithubConfigAuthorizerCredential `pulumi:"authorizerCredential"` - // Required. Immutable. The GitHub Application that was installed to - // the GitHub user or organization. + // Required. Immutable. The GitHub Application that was installed to the GitHub user or + // organization. // Possible values: // GIT_HUB_APP_UNSPECIFIED // DEVELOPER_CONNECT - // FIREBASE" + // FIREBASE GithubApp string `pulumi:"githubApp"` // (Output) - // Output only. The URI to navigate to in order to manage the installation - // associated with this GitHubConfig. + // Output only. The URI to navigate to in order to manage the installation associated + // with this GitHubConfig. InstallationUri *string `pulumi:"installationUri"` } @@ -47,20 +192,20 @@ type ConnectionGithubConfigInput interface { type ConnectionGithubConfigArgs struct { // Optional. GitHub App installation id. AppInstallationId pulumi.StringPtrInput `pulumi:"appInstallationId"` - // Represents an OAuth token of the account that authorized the Connection,and - // associated metadata. + // Represents an OAuth token of the account that authorized the Connection, + // and associated metadata. // Structure is documented below. AuthorizerCredential ConnectionGithubConfigAuthorizerCredentialPtrInput `pulumi:"authorizerCredential"` - // Required. Immutable. The GitHub Application that was installed to - // the GitHub user or organization. + // Required. Immutable. The GitHub Application that was installed to the GitHub user or + // organization. // Possible values: // GIT_HUB_APP_UNSPECIFIED // DEVELOPER_CONNECT - // FIREBASE" + // FIREBASE GithubApp pulumi.StringInput `pulumi:"githubApp"` // (Output) - // Output only. The URI to navigate to in order to manage the installation - // associated with this GitHubConfig. + // Output only. The URI to navigate to in order to manage the installation associated + // with this GitHubConfig. InstallationUri pulumi.StringPtrInput `pulumi:"installationUri"` } @@ -146,8 +291,8 @@ func (o ConnectionGithubConfigOutput) AppInstallationId() pulumi.StringPtrOutput return o.ApplyT(func(v ConnectionGithubConfig) *string { return v.AppInstallationId }).(pulumi.StringPtrOutput) } -// Represents an OAuth token of the account that authorized the Connection,and -// associated metadata. +// Represents an OAuth token of the account that authorized the Connection, +// and associated metadata. // Structure is documented below. func (o ConnectionGithubConfigOutput) AuthorizerCredential() ConnectionGithubConfigAuthorizerCredentialPtrOutput { return o.ApplyT(func(v ConnectionGithubConfig) *ConnectionGithubConfigAuthorizerCredential { @@ -155,19 +300,19 @@ func (o ConnectionGithubConfigOutput) AuthorizerCredential() ConnectionGithubCon }).(ConnectionGithubConfigAuthorizerCredentialPtrOutput) } -// Required. Immutable. The GitHub Application that was installed to -// the GitHub user or organization. +// Required. Immutable. The GitHub Application that was installed to the GitHub user or +// organization. // Possible values: // GIT_HUB_APP_UNSPECIFIED // DEVELOPER_CONNECT -// FIREBASE" +// FIREBASE func (o ConnectionGithubConfigOutput) GithubApp() pulumi.StringOutput { return o.ApplyT(func(v ConnectionGithubConfig) string { return v.GithubApp }).(pulumi.StringOutput) } // (Output) -// Output only. The URI to navigate to in order to manage the installation -// associated with this GitHubConfig. +// Output only. The URI to navigate to in order to manage the installation associated +// with this GitHubConfig. func (o ConnectionGithubConfigOutput) InstallationUri() pulumi.StringPtrOutput { return o.ApplyT(func(v ConnectionGithubConfig) *string { return v.InstallationUri }).(pulumi.StringPtrOutput) } @@ -206,8 +351,8 @@ func (o ConnectionGithubConfigPtrOutput) AppInstallationId() pulumi.StringPtrOut }).(pulumi.StringPtrOutput) } -// Represents an OAuth token of the account that authorized the Connection,and -// associated metadata. +// Represents an OAuth token of the account that authorized the Connection, +// and associated metadata. // Structure is documented below. func (o ConnectionGithubConfigPtrOutput) AuthorizerCredential() ConnectionGithubConfigAuthorizerCredentialPtrOutput { return o.ApplyT(func(v *ConnectionGithubConfig) *ConnectionGithubConfigAuthorizerCredential { @@ -218,12 +363,12 @@ func (o ConnectionGithubConfigPtrOutput) AuthorizerCredential() ConnectionGithub }).(ConnectionGithubConfigAuthorizerCredentialPtrOutput) } -// Required. Immutable. The GitHub Application that was installed to -// the GitHub user or organization. +// Required. Immutable. The GitHub Application that was installed to the GitHub user or +// organization. // Possible values: // GIT_HUB_APP_UNSPECIFIED // DEVELOPER_CONNECT -// FIREBASE" +// FIREBASE func (o ConnectionGithubConfigPtrOutput) GithubApp() pulumi.StringPtrOutput { return o.ApplyT(func(v *ConnectionGithubConfig) *string { if v == nil { @@ -234,8 +379,8 @@ func (o ConnectionGithubConfigPtrOutput) GithubApp() pulumi.StringPtrOutput { } // (Output) -// Output only. The URI to navigate to in order to manage the installation -// associated with this GitHubConfig. +// Output only. The URI to navigate to in order to manage the installation associated +// with this GitHubConfig. func (o ConnectionGithubConfigPtrOutput) InstallationUri() pulumi.StringPtrOutput { return o.ApplyT(func(v *ConnectionGithubConfig) *string { if v == nil { @@ -246,9 +391,8 @@ func (o ConnectionGithubConfigPtrOutput) InstallationUri() pulumi.StringPtrOutpu } type ConnectionGithubConfigAuthorizerCredential struct { - // Required. A SecretManager resource containing the OAuth token - // that authorizes the connection. - // Format: `projects/*/secrets/*/versions/*`. + // Required. A SecretManager resource containing the OAuth token that authorizes + // the connection. Format: `projects/*/secrets/*/versions/*`. OauthTokenSecretVersion string `pulumi:"oauthTokenSecretVersion"` // (Output) // Output only. The username associated with this token. @@ -267,9 +411,8 @@ type ConnectionGithubConfigAuthorizerCredentialInput interface { } type ConnectionGithubConfigAuthorizerCredentialArgs struct { - // Required. A SecretManager resource containing the OAuth token - // that authorizes the connection. - // Format: `projects/*/secrets/*/versions/*`. + // Required. A SecretManager resource containing the OAuth token that authorizes + // the connection. Format: `projects/*/secrets/*/versions/*`. OauthTokenSecretVersion pulumi.StringInput `pulumi:"oauthTokenSecretVersion"` // (Output) // Output only. The username associated with this token. @@ -353,9 +496,8 @@ func (o ConnectionGithubConfigAuthorizerCredentialOutput) ToConnectionGithubConf }).(ConnectionGithubConfigAuthorizerCredentialPtrOutput) } -// Required. A SecretManager resource containing the OAuth token -// that authorizes the connection. -// Format: `projects/*/secrets/*/versions/*`. +// Required. A SecretManager resource containing the OAuth token that authorizes +// the connection. Format: `projects/*/secrets/*/versions/*`. func (o ConnectionGithubConfigAuthorizerCredentialOutput) OauthTokenSecretVersion() pulumi.StringOutput { return o.ApplyT(func(v ConnectionGithubConfigAuthorizerCredential) string { return v.OauthTokenSecretVersion }).(pulumi.StringOutput) } @@ -390,9 +532,8 @@ func (o ConnectionGithubConfigAuthorizerCredentialPtrOutput) Elem() ConnectionGi }).(ConnectionGithubConfigAuthorizerCredentialOutput) } -// Required. A SecretManager resource containing the OAuth token -// that authorizes the connection. -// Format: `projects/*/secrets/*/versions/*`. +// Required. A SecretManager resource containing the OAuth token that authorizes +// the connection. Format: `projects/*/secrets/*/versions/*`. func (o ConnectionGithubConfigAuthorizerCredentialPtrOutput) OauthTokenSecretVersion() pulumi.StringPtrOutput { return o.ApplyT(func(v *ConnectionGithubConfigAuthorizerCredential) *string { if v == nil { @@ -413,12 +554,1818 @@ func (o ConnectionGithubConfigAuthorizerCredentialPtrOutput) Username() pulumi.S }).(pulumi.StringPtrOutput) } +type ConnectionGithubEnterpriseConfig struct { + // Optional. ID of the GitHub App created from the manifest. + AppId *string `pulumi:"appId"` + // Optional. ID of the installation of the GitHub App. + AppInstallationId *string `pulumi:"appInstallationId"` + // (Output) + // Output only. The URL-friendly name of the GitHub App. + AppSlug *string `pulumi:"appSlug"` + // Required. The URI of the GitHub Enterprise host this connection is for. + HostUri string `pulumi:"hostUri"` + // (Output) + // Output only. The URI to navigate to in order to manage the installation associated + // with this GitHubEnterpriseConfig. + InstallationUri *string `pulumi:"installationUri"` + // Optional. SecretManager resource containing the private key of the GitHub App, + // formatted as `projects/*/secrets/*/versions/*`. + PrivateKeySecretVersion *string `pulumi:"privateKeySecretVersion"` + // (Output) + // Output only. GitHub Enterprise version installed at the host_uri. + ServerVersion *string `pulumi:"serverVersion"` + // ServiceDirectoryConfig represents Service Directory configuration for a + // connection. + // Structure is documented below. + ServiceDirectoryConfig *ConnectionGithubEnterpriseConfigServiceDirectoryConfig `pulumi:"serviceDirectoryConfig"` + // Optional. SSL certificate to use for requests to GitHub Enterprise. + SslCaCertificate *string `pulumi:"sslCaCertificate"` + // Optional. SecretManager resource containing the webhook secret of the GitHub App, + // formatted as `projects/*/secrets/*/versions/*`. + WebhookSecretSecretVersion *string `pulumi:"webhookSecretSecretVersion"` +} + +// ConnectionGithubEnterpriseConfigInput is an input type that accepts ConnectionGithubEnterpriseConfigArgs and ConnectionGithubEnterpriseConfigOutput values. +// You can construct a concrete instance of `ConnectionGithubEnterpriseConfigInput` via: +// +// ConnectionGithubEnterpriseConfigArgs{...} +type ConnectionGithubEnterpriseConfigInput interface { + pulumi.Input + + ToConnectionGithubEnterpriseConfigOutput() ConnectionGithubEnterpriseConfigOutput + ToConnectionGithubEnterpriseConfigOutputWithContext(context.Context) ConnectionGithubEnterpriseConfigOutput +} + +type ConnectionGithubEnterpriseConfigArgs struct { + // Optional. ID of the GitHub App created from the manifest. + AppId pulumi.StringPtrInput `pulumi:"appId"` + // Optional. ID of the installation of the GitHub App. + AppInstallationId pulumi.StringPtrInput `pulumi:"appInstallationId"` + // (Output) + // Output only. The URL-friendly name of the GitHub App. + AppSlug pulumi.StringPtrInput `pulumi:"appSlug"` + // Required. The URI of the GitHub Enterprise host this connection is for. + HostUri pulumi.StringInput `pulumi:"hostUri"` + // (Output) + // Output only. The URI to navigate to in order to manage the installation associated + // with this GitHubEnterpriseConfig. + InstallationUri pulumi.StringPtrInput `pulumi:"installationUri"` + // Optional. SecretManager resource containing the private key of the GitHub App, + // formatted as `projects/*/secrets/*/versions/*`. + PrivateKeySecretVersion pulumi.StringPtrInput `pulumi:"privateKeySecretVersion"` + // (Output) + // Output only. GitHub Enterprise version installed at the host_uri. + ServerVersion pulumi.StringPtrInput `pulumi:"serverVersion"` + // ServiceDirectoryConfig represents Service Directory configuration for a + // connection. + // Structure is documented below. + ServiceDirectoryConfig ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrInput `pulumi:"serviceDirectoryConfig"` + // Optional. SSL certificate to use for requests to GitHub Enterprise. + SslCaCertificate pulumi.StringPtrInput `pulumi:"sslCaCertificate"` + // Optional. SecretManager resource containing the webhook secret of the GitHub App, + // formatted as `projects/*/secrets/*/versions/*`. + WebhookSecretSecretVersion pulumi.StringPtrInput `pulumi:"webhookSecretSecretVersion"` +} + +func (ConnectionGithubEnterpriseConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ConnectionGithubEnterpriseConfig)(nil)).Elem() +} + +func (i ConnectionGithubEnterpriseConfigArgs) ToConnectionGithubEnterpriseConfigOutput() ConnectionGithubEnterpriseConfigOutput { + return i.ToConnectionGithubEnterpriseConfigOutputWithContext(context.Background()) +} + +func (i ConnectionGithubEnterpriseConfigArgs) ToConnectionGithubEnterpriseConfigOutputWithContext(ctx context.Context) ConnectionGithubEnterpriseConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionGithubEnterpriseConfigOutput) +} + +func (i ConnectionGithubEnterpriseConfigArgs) ToConnectionGithubEnterpriseConfigPtrOutput() ConnectionGithubEnterpriseConfigPtrOutput { + return i.ToConnectionGithubEnterpriseConfigPtrOutputWithContext(context.Background()) +} + +func (i ConnectionGithubEnterpriseConfigArgs) ToConnectionGithubEnterpriseConfigPtrOutputWithContext(ctx context.Context) ConnectionGithubEnterpriseConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionGithubEnterpriseConfigOutput).ToConnectionGithubEnterpriseConfigPtrOutputWithContext(ctx) +} + +// ConnectionGithubEnterpriseConfigPtrInput is an input type that accepts ConnectionGithubEnterpriseConfigArgs, ConnectionGithubEnterpriseConfigPtr and ConnectionGithubEnterpriseConfigPtrOutput values. +// You can construct a concrete instance of `ConnectionGithubEnterpriseConfigPtrInput` via: +// +// ConnectionGithubEnterpriseConfigArgs{...} +// +// or: +// +// nil +type ConnectionGithubEnterpriseConfigPtrInput interface { + pulumi.Input + + ToConnectionGithubEnterpriseConfigPtrOutput() ConnectionGithubEnterpriseConfigPtrOutput + ToConnectionGithubEnterpriseConfigPtrOutputWithContext(context.Context) ConnectionGithubEnterpriseConfigPtrOutput +} + +type connectionGithubEnterpriseConfigPtrType ConnectionGithubEnterpriseConfigArgs + +func ConnectionGithubEnterpriseConfigPtr(v *ConnectionGithubEnterpriseConfigArgs) ConnectionGithubEnterpriseConfigPtrInput { + return (*connectionGithubEnterpriseConfigPtrType)(v) +} + +func (*connectionGithubEnterpriseConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ConnectionGithubEnterpriseConfig)(nil)).Elem() +} + +func (i *connectionGithubEnterpriseConfigPtrType) ToConnectionGithubEnterpriseConfigPtrOutput() ConnectionGithubEnterpriseConfigPtrOutput { + return i.ToConnectionGithubEnterpriseConfigPtrOutputWithContext(context.Background()) +} + +func (i *connectionGithubEnterpriseConfigPtrType) ToConnectionGithubEnterpriseConfigPtrOutputWithContext(ctx context.Context) ConnectionGithubEnterpriseConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionGithubEnterpriseConfigPtrOutput) +} + +type ConnectionGithubEnterpriseConfigOutput struct{ *pulumi.OutputState } + +func (ConnectionGithubEnterpriseConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ConnectionGithubEnterpriseConfig)(nil)).Elem() +} + +func (o ConnectionGithubEnterpriseConfigOutput) ToConnectionGithubEnterpriseConfigOutput() ConnectionGithubEnterpriseConfigOutput { + return o +} + +func (o ConnectionGithubEnterpriseConfigOutput) ToConnectionGithubEnterpriseConfigOutputWithContext(ctx context.Context) ConnectionGithubEnterpriseConfigOutput { + return o +} + +func (o ConnectionGithubEnterpriseConfigOutput) ToConnectionGithubEnterpriseConfigPtrOutput() ConnectionGithubEnterpriseConfigPtrOutput { + return o.ToConnectionGithubEnterpriseConfigPtrOutputWithContext(context.Background()) +} + +func (o ConnectionGithubEnterpriseConfigOutput) ToConnectionGithubEnterpriseConfigPtrOutputWithContext(ctx context.Context) ConnectionGithubEnterpriseConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ConnectionGithubEnterpriseConfig) *ConnectionGithubEnterpriseConfig { + return &v + }).(ConnectionGithubEnterpriseConfigPtrOutput) +} + +// Optional. ID of the GitHub App created from the manifest. +func (o ConnectionGithubEnterpriseConfigOutput) AppId() pulumi.StringPtrOutput { + return o.ApplyT(func(v ConnectionGithubEnterpriseConfig) *string { return v.AppId }).(pulumi.StringPtrOutput) +} + +// Optional. ID of the installation of the GitHub App. +func (o ConnectionGithubEnterpriseConfigOutput) AppInstallationId() pulumi.StringPtrOutput { + return o.ApplyT(func(v ConnectionGithubEnterpriseConfig) *string { return v.AppInstallationId }).(pulumi.StringPtrOutput) +} + +// (Output) +// Output only. The URL-friendly name of the GitHub App. +func (o ConnectionGithubEnterpriseConfigOutput) AppSlug() pulumi.StringPtrOutput { + return o.ApplyT(func(v ConnectionGithubEnterpriseConfig) *string { return v.AppSlug }).(pulumi.StringPtrOutput) +} + +// Required. The URI of the GitHub Enterprise host this connection is for. +func (o ConnectionGithubEnterpriseConfigOutput) HostUri() pulumi.StringOutput { + return o.ApplyT(func(v ConnectionGithubEnterpriseConfig) string { return v.HostUri }).(pulumi.StringOutput) +} + +// (Output) +// Output only. The URI to navigate to in order to manage the installation associated +// with this GitHubEnterpriseConfig. +func (o ConnectionGithubEnterpriseConfigOutput) InstallationUri() pulumi.StringPtrOutput { + return o.ApplyT(func(v ConnectionGithubEnterpriseConfig) *string { return v.InstallationUri }).(pulumi.StringPtrOutput) +} + +// Optional. SecretManager resource containing the private key of the GitHub App, +// formatted as `projects/*/secrets/*/versions/*`. +func (o ConnectionGithubEnterpriseConfigOutput) PrivateKeySecretVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v ConnectionGithubEnterpriseConfig) *string { return v.PrivateKeySecretVersion }).(pulumi.StringPtrOutput) +} + +// (Output) +// Output only. GitHub Enterprise version installed at the host_uri. +func (o ConnectionGithubEnterpriseConfigOutput) ServerVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v ConnectionGithubEnterpriseConfig) *string { return v.ServerVersion }).(pulumi.StringPtrOutput) +} + +// ServiceDirectoryConfig represents Service Directory configuration for a +// connection. +// Structure is documented below. +func (o ConnectionGithubEnterpriseConfigOutput) ServiceDirectoryConfig() ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutput { + return o.ApplyT(func(v ConnectionGithubEnterpriseConfig) *ConnectionGithubEnterpriseConfigServiceDirectoryConfig { + return v.ServiceDirectoryConfig + }).(ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutput) +} + +// Optional. SSL certificate to use for requests to GitHub Enterprise. +func (o ConnectionGithubEnterpriseConfigOutput) SslCaCertificate() pulumi.StringPtrOutput { + return o.ApplyT(func(v ConnectionGithubEnterpriseConfig) *string { return v.SslCaCertificate }).(pulumi.StringPtrOutput) +} + +// Optional. SecretManager resource containing the webhook secret of the GitHub App, +// formatted as `projects/*/secrets/*/versions/*`. +func (o ConnectionGithubEnterpriseConfigOutput) WebhookSecretSecretVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v ConnectionGithubEnterpriseConfig) *string { return v.WebhookSecretSecretVersion }).(pulumi.StringPtrOutput) +} + +type ConnectionGithubEnterpriseConfigPtrOutput struct{ *pulumi.OutputState } + +func (ConnectionGithubEnterpriseConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ConnectionGithubEnterpriseConfig)(nil)).Elem() +} + +func (o ConnectionGithubEnterpriseConfigPtrOutput) ToConnectionGithubEnterpriseConfigPtrOutput() ConnectionGithubEnterpriseConfigPtrOutput { + return o +} + +func (o ConnectionGithubEnterpriseConfigPtrOutput) ToConnectionGithubEnterpriseConfigPtrOutputWithContext(ctx context.Context) ConnectionGithubEnterpriseConfigPtrOutput { + return o +} + +func (o ConnectionGithubEnterpriseConfigPtrOutput) Elem() ConnectionGithubEnterpriseConfigOutput { + return o.ApplyT(func(v *ConnectionGithubEnterpriseConfig) ConnectionGithubEnterpriseConfig { + if v != nil { + return *v + } + var ret ConnectionGithubEnterpriseConfig + return ret + }).(ConnectionGithubEnterpriseConfigOutput) +} + +// Optional. ID of the GitHub App created from the manifest. +func (o ConnectionGithubEnterpriseConfigPtrOutput) AppId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ConnectionGithubEnterpriseConfig) *string { + if v == nil { + return nil + } + return v.AppId + }).(pulumi.StringPtrOutput) +} + +// Optional. ID of the installation of the GitHub App. +func (o ConnectionGithubEnterpriseConfigPtrOutput) AppInstallationId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ConnectionGithubEnterpriseConfig) *string { + if v == nil { + return nil + } + return v.AppInstallationId + }).(pulumi.StringPtrOutput) +} + +// (Output) +// Output only. The URL-friendly name of the GitHub App. +func (o ConnectionGithubEnterpriseConfigPtrOutput) AppSlug() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ConnectionGithubEnterpriseConfig) *string { + if v == nil { + return nil + } + return v.AppSlug + }).(pulumi.StringPtrOutput) +} + +// Required. The URI of the GitHub Enterprise host this connection is for. +func (o ConnectionGithubEnterpriseConfigPtrOutput) HostUri() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ConnectionGithubEnterpriseConfig) *string { + if v == nil { + return nil + } + return &v.HostUri + }).(pulumi.StringPtrOutput) +} + +// (Output) +// Output only. The URI to navigate to in order to manage the installation associated +// with this GitHubEnterpriseConfig. +func (o ConnectionGithubEnterpriseConfigPtrOutput) InstallationUri() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ConnectionGithubEnterpriseConfig) *string { + if v == nil { + return nil + } + return v.InstallationUri + }).(pulumi.StringPtrOutput) +} + +// Optional. SecretManager resource containing the private key of the GitHub App, +// formatted as `projects/*/secrets/*/versions/*`. +func (o ConnectionGithubEnterpriseConfigPtrOutput) PrivateKeySecretVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ConnectionGithubEnterpriseConfig) *string { + if v == nil { + return nil + } + return v.PrivateKeySecretVersion + }).(pulumi.StringPtrOutput) +} + +// (Output) +// Output only. GitHub Enterprise version installed at the host_uri. +func (o ConnectionGithubEnterpriseConfigPtrOutput) ServerVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ConnectionGithubEnterpriseConfig) *string { + if v == nil { + return nil + } + return v.ServerVersion + }).(pulumi.StringPtrOutput) +} + +// ServiceDirectoryConfig represents Service Directory configuration for a +// connection. +// Structure is documented below. +func (o ConnectionGithubEnterpriseConfigPtrOutput) ServiceDirectoryConfig() ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutput { + return o.ApplyT(func(v *ConnectionGithubEnterpriseConfig) *ConnectionGithubEnterpriseConfigServiceDirectoryConfig { + if v == nil { + return nil + } + return v.ServiceDirectoryConfig + }).(ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutput) +} + +// Optional. SSL certificate to use for requests to GitHub Enterprise. +func (o ConnectionGithubEnterpriseConfigPtrOutput) SslCaCertificate() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ConnectionGithubEnterpriseConfig) *string { + if v == nil { + return nil + } + return v.SslCaCertificate + }).(pulumi.StringPtrOutput) +} + +// Optional. SecretManager resource containing the webhook secret of the GitHub App, +// formatted as `projects/*/secrets/*/versions/*`. +func (o ConnectionGithubEnterpriseConfigPtrOutput) WebhookSecretSecretVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ConnectionGithubEnterpriseConfig) *string { + if v == nil { + return nil + } + return v.WebhookSecretSecretVersion + }).(pulumi.StringPtrOutput) +} + +type ConnectionGithubEnterpriseConfigServiceDirectoryConfig struct { + // Required. The Service Directory service name. + // Format: + // projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + Service string `pulumi:"service"` +} + +// ConnectionGithubEnterpriseConfigServiceDirectoryConfigInput is an input type that accepts ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs and ConnectionGithubEnterpriseConfigServiceDirectoryConfigOutput values. +// You can construct a concrete instance of `ConnectionGithubEnterpriseConfigServiceDirectoryConfigInput` via: +// +// ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs{...} +type ConnectionGithubEnterpriseConfigServiceDirectoryConfigInput interface { + pulumi.Input + + ToConnectionGithubEnterpriseConfigServiceDirectoryConfigOutput() ConnectionGithubEnterpriseConfigServiceDirectoryConfigOutput + ToConnectionGithubEnterpriseConfigServiceDirectoryConfigOutputWithContext(context.Context) ConnectionGithubEnterpriseConfigServiceDirectoryConfigOutput +} + +type ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs struct { + // Required. The Service Directory service name. + // Format: + // projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + Service pulumi.StringInput `pulumi:"service"` +} + +func (ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ConnectionGithubEnterpriseConfigServiceDirectoryConfig)(nil)).Elem() +} + +func (i ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs) ToConnectionGithubEnterpriseConfigServiceDirectoryConfigOutput() ConnectionGithubEnterpriseConfigServiceDirectoryConfigOutput { + return i.ToConnectionGithubEnterpriseConfigServiceDirectoryConfigOutputWithContext(context.Background()) +} + +func (i ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs) ToConnectionGithubEnterpriseConfigServiceDirectoryConfigOutputWithContext(ctx context.Context) ConnectionGithubEnterpriseConfigServiceDirectoryConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionGithubEnterpriseConfigServiceDirectoryConfigOutput) +} + +func (i ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs) ToConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutput() ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutput { + return i.ToConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutputWithContext(context.Background()) +} + +func (i ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs) ToConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutputWithContext(ctx context.Context) ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionGithubEnterpriseConfigServiceDirectoryConfigOutput).ToConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutputWithContext(ctx) +} + +// ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrInput is an input type that accepts ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs, ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtr and ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutput values. +// You can construct a concrete instance of `ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrInput` via: +// +// ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs{...} +// +// or: +// +// nil +type ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrInput interface { + pulumi.Input + + ToConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutput() ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutput + ToConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutputWithContext(context.Context) ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutput +} + +type connectionGithubEnterpriseConfigServiceDirectoryConfigPtrType ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs + +func ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtr(v *ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs) ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrInput { + return (*connectionGithubEnterpriseConfigServiceDirectoryConfigPtrType)(v) +} + +func (*connectionGithubEnterpriseConfigServiceDirectoryConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ConnectionGithubEnterpriseConfigServiceDirectoryConfig)(nil)).Elem() +} + +func (i *connectionGithubEnterpriseConfigServiceDirectoryConfigPtrType) ToConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutput() ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutput { + return i.ToConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutputWithContext(context.Background()) +} + +func (i *connectionGithubEnterpriseConfigServiceDirectoryConfigPtrType) ToConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutputWithContext(ctx context.Context) ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutput) +} + +type ConnectionGithubEnterpriseConfigServiceDirectoryConfigOutput struct{ *pulumi.OutputState } + +func (ConnectionGithubEnterpriseConfigServiceDirectoryConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ConnectionGithubEnterpriseConfigServiceDirectoryConfig)(nil)).Elem() +} + +func (o ConnectionGithubEnterpriseConfigServiceDirectoryConfigOutput) ToConnectionGithubEnterpriseConfigServiceDirectoryConfigOutput() ConnectionGithubEnterpriseConfigServiceDirectoryConfigOutput { + return o +} + +func (o ConnectionGithubEnterpriseConfigServiceDirectoryConfigOutput) ToConnectionGithubEnterpriseConfigServiceDirectoryConfigOutputWithContext(ctx context.Context) ConnectionGithubEnterpriseConfigServiceDirectoryConfigOutput { + return o +} + +func (o ConnectionGithubEnterpriseConfigServiceDirectoryConfigOutput) ToConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutput() ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutput { + return o.ToConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutputWithContext(context.Background()) +} + +func (o ConnectionGithubEnterpriseConfigServiceDirectoryConfigOutput) ToConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutputWithContext(ctx context.Context) ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ConnectionGithubEnterpriseConfigServiceDirectoryConfig) *ConnectionGithubEnterpriseConfigServiceDirectoryConfig { + return &v + }).(ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutput) +} + +// Required. The Service Directory service name. +// Format: +// projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. +func (o ConnectionGithubEnterpriseConfigServiceDirectoryConfigOutput) Service() pulumi.StringOutput { + return o.ApplyT(func(v ConnectionGithubEnterpriseConfigServiceDirectoryConfig) string { return v.Service }).(pulumi.StringOutput) +} + +type ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutput struct{ *pulumi.OutputState } + +func (ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ConnectionGithubEnterpriseConfigServiceDirectoryConfig)(nil)).Elem() +} + +func (o ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutput) ToConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutput() ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutput { + return o +} + +func (o ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutput) ToConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutputWithContext(ctx context.Context) ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutput { + return o +} + +func (o ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutput) Elem() ConnectionGithubEnterpriseConfigServiceDirectoryConfigOutput { + return o.ApplyT(func(v *ConnectionGithubEnterpriseConfigServiceDirectoryConfig) ConnectionGithubEnterpriseConfigServiceDirectoryConfig { + if v != nil { + return *v + } + var ret ConnectionGithubEnterpriseConfigServiceDirectoryConfig + return ret + }).(ConnectionGithubEnterpriseConfigServiceDirectoryConfigOutput) +} + +// Required. The Service Directory service name. +// Format: +// projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. +func (o ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutput) Service() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ConnectionGithubEnterpriseConfigServiceDirectoryConfig) *string { + if v == nil { + return nil + } + return &v.Service + }).(pulumi.StringPtrOutput) +} + +type ConnectionGitlabConfig struct { + // Represents a personal access token that authorized the Connection, + // and associated metadata. + // Structure is documented below. + AuthorizerCredential ConnectionGitlabConfigAuthorizerCredential `pulumi:"authorizerCredential"` + // Represents a personal access token that authorized the Connection, + // and associated metadata. + // Structure is documented below. + ReadAuthorizerCredential ConnectionGitlabConfigReadAuthorizerCredential `pulumi:"readAuthorizerCredential"` + // Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + // formatted as `projects/*/secrets/*/versions/*`. This is used to validate + // webhooks. + WebhookSecretSecretVersion string `pulumi:"webhookSecretSecretVersion"` +} + +// ConnectionGitlabConfigInput is an input type that accepts ConnectionGitlabConfigArgs and ConnectionGitlabConfigOutput values. +// You can construct a concrete instance of `ConnectionGitlabConfigInput` via: +// +// ConnectionGitlabConfigArgs{...} +type ConnectionGitlabConfigInput interface { + pulumi.Input + + ToConnectionGitlabConfigOutput() ConnectionGitlabConfigOutput + ToConnectionGitlabConfigOutputWithContext(context.Context) ConnectionGitlabConfigOutput +} + +type ConnectionGitlabConfigArgs struct { + // Represents a personal access token that authorized the Connection, + // and associated metadata. + // Structure is documented below. + AuthorizerCredential ConnectionGitlabConfigAuthorizerCredentialInput `pulumi:"authorizerCredential"` + // Represents a personal access token that authorized the Connection, + // and associated metadata. + // Structure is documented below. + ReadAuthorizerCredential ConnectionGitlabConfigReadAuthorizerCredentialInput `pulumi:"readAuthorizerCredential"` + // Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + // formatted as `projects/*/secrets/*/versions/*`. This is used to validate + // webhooks. + WebhookSecretSecretVersion pulumi.StringInput `pulumi:"webhookSecretSecretVersion"` +} + +func (ConnectionGitlabConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ConnectionGitlabConfig)(nil)).Elem() +} + +func (i ConnectionGitlabConfigArgs) ToConnectionGitlabConfigOutput() ConnectionGitlabConfigOutput { + return i.ToConnectionGitlabConfigOutputWithContext(context.Background()) +} + +func (i ConnectionGitlabConfigArgs) ToConnectionGitlabConfigOutputWithContext(ctx context.Context) ConnectionGitlabConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionGitlabConfigOutput) +} + +func (i ConnectionGitlabConfigArgs) ToConnectionGitlabConfigPtrOutput() ConnectionGitlabConfigPtrOutput { + return i.ToConnectionGitlabConfigPtrOutputWithContext(context.Background()) +} + +func (i ConnectionGitlabConfigArgs) ToConnectionGitlabConfigPtrOutputWithContext(ctx context.Context) ConnectionGitlabConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionGitlabConfigOutput).ToConnectionGitlabConfigPtrOutputWithContext(ctx) +} + +// ConnectionGitlabConfigPtrInput is an input type that accepts ConnectionGitlabConfigArgs, ConnectionGitlabConfigPtr and ConnectionGitlabConfigPtrOutput values. +// You can construct a concrete instance of `ConnectionGitlabConfigPtrInput` via: +// +// ConnectionGitlabConfigArgs{...} +// +// or: +// +// nil +type ConnectionGitlabConfigPtrInput interface { + pulumi.Input + + ToConnectionGitlabConfigPtrOutput() ConnectionGitlabConfigPtrOutput + ToConnectionGitlabConfigPtrOutputWithContext(context.Context) ConnectionGitlabConfigPtrOutput +} + +type connectionGitlabConfigPtrType ConnectionGitlabConfigArgs + +func ConnectionGitlabConfigPtr(v *ConnectionGitlabConfigArgs) ConnectionGitlabConfigPtrInput { + return (*connectionGitlabConfigPtrType)(v) +} + +func (*connectionGitlabConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ConnectionGitlabConfig)(nil)).Elem() +} + +func (i *connectionGitlabConfigPtrType) ToConnectionGitlabConfigPtrOutput() ConnectionGitlabConfigPtrOutput { + return i.ToConnectionGitlabConfigPtrOutputWithContext(context.Background()) +} + +func (i *connectionGitlabConfigPtrType) ToConnectionGitlabConfigPtrOutputWithContext(ctx context.Context) ConnectionGitlabConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionGitlabConfigPtrOutput) +} + +type ConnectionGitlabConfigOutput struct{ *pulumi.OutputState } + +func (ConnectionGitlabConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ConnectionGitlabConfig)(nil)).Elem() +} + +func (o ConnectionGitlabConfigOutput) ToConnectionGitlabConfigOutput() ConnectionGitlabConfigOutput { + return o +} + +func (o ConnectionGitlabConfigOutput) ToConnectionGitlabConfigOutputWithContext(ctx context.Context) ConnectionGitlabConfigOutput { + return o +} + +func (o ConnectionGitlabConfigOutput) ToConnectionGitlabConfigPtrOutput() ConnectionGitlabConfigPtrOutput { + return o.ToConnectionGitlabConfigPtrOutputWithContext(context.Background()) +} + +func (o ConnectionGitlabConfigOutput) ToConnectionGitlabConfigPtrOutputWithContext(ctx context.Context) ConnectionGitlabConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ConnectionGitlabConfig) *ConnectionGitlabConfig { + return &v + }).(ConnectionGitlabConfigPtrOutput) +} + +// Represents a personal access token that authorized the Connection, +// and associated metadata. +// Structure is documented below. +func (o ConnectionGitlabConfigOutput) AuthorizerCredential() ConnectionGitlabConfigAuthorizerCredentialOutput { + return o.ApplyT(func(v ConnectionGitlabConfig) ConnectionGitlabConfigAuthorizerCredential { + return v.AuthorizerCredential + }).(ConnectionGitlabConfigAuthorizerCredentialOutput) +} + +// Represents a personal access token that authorized the Connection, +// and associated metadata. +// Structure is documented below. +func (o ConnectionGitlabConfigOutput) ReadAuthorizerCredential() ConnectionGitlabConfigReadAuthorizerCredentialOutput { + return o.ApplyT(func(v ConnectionGitlabConfig) ConnectionGitlabConfigReadAuthorizerCredential { + return v.ReadAuthorizerCredential + }).(ConnectionGitlabConfigReadAuthorizerCredentialOutput) +} + +// Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, +// formatted as `projects/*/secrets/*/versions/*`. This is used to validate +// webhooks. +func (o ConnectionGitlabConfigOutput) WebhookSecretSecretVersion() pulumi.StringOutput { + return o.ApplyT(func(v ConnectionGitlabConfig) string { return v.WebhookSecretSecretVersion }).(pulumi.StringOutput) +} + +type ConnectionGitlabConfigPtrOutput struct{ *pulumi.OutputState } + +func (ConnectionGitlabConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ConnectionGitlabConfig)(nil)).Elem() +} + +func (o ConnectionGitlabConfigPtrOutput) ToConnectionGitlabConfigPtrOutput() ConnectionGitlabConfigPtrOutput { + return o +} + +func (o ConnectionGitlabConfigPtrOutput) ToConnectionGitlabConfigPtrOutputWithContext(ctx context.Context) ConnectionGitlabConfigPtrOutput { + return o +} + +func (o ConnectionGitlabConfigPtrOutput) Elem() ConnectionGitlabConfigOutput { + return o.ApplyT(func(v *ConnectionGitlabConfig) ConnectionGitlabConfig { + if v != nil { + return *v + } + var ret ConnectionGitlabConfig + return ret + }).(ConnectionGitlabConfigOutput) +} + +// Represents a personal access token that authorized the Connection, +// and associated metadata. +// Structure is documented below. +func (o ConnectionGitlabConfigPtrOutput) AuthorizerCredential() ConnectionGitlabConfigAuthorizerCredentialPtrOutput { + return o.ApplyT(func(v *ConnectionGitlabConfig) *ConnectionGitlabConfigAuthorizerCredential { + if v == nil { + return nil + } + return &v.AuthorizerCredential + }).(ConnectionGitlabConfigAuthorizerCredentialPtrOutput) +} + +// Represents a personal access token that authorized the Connection, +// and associated metadata. +// Structure is documented below. +func (o ConnectionGitlabConfigPtrOutput) ReadAuthorizerCredential() ConnectionGitlabConfigReadAuthorizerCredentialPtrOutput { + return o.ApplyT(func(v *ConnectionGitlabConfig) *ConnectionGitlabConfigReadAuthorizerCredential { + if v == nil { + return nil + } + return &v.ReadAuthorizerCredential + }).(ConnectionGitlabConfigReadAuthorizerCredentialPtrOutput) +} + +// Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, +// formatted as `projects/*/secrets/*/versions/*`. This is used to validate +// webhooks. +func (o ConnectionGitlabConfigPtrOutput) WebhookSecretSecretVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ConnectionGitlabConfig) *string { + if v == nil { + return nil + } + return &v.WebhookSecretSecretVersion + }).(pulumi.StringPtrOutput) +} + +type ConnectionGitlabConfigAuthorizerCredential struct { + // Required. A SecretManager resource containing the user token that authorizes + // the Developer Connect connection. Format: + // `projects/*/secrets/*/versions/*`. + UserTokenSecretVersion string `pulumi:"userTokenSecretVersion"` + // (Output) + // Output only. The username associated with this token. + Username *string `pulumi:"username"` +} + +// ConnectionGitlabConfigAuthorizerCredentialInput is an input type that accepts ConnectionGitlabConfigAuthorizerCredentialArgs and ConnectionGitlabConfigAuthorizerCredentialOutput values. +// You can construct a concrete instance of `ConnectionGitlabConfigAuthorizerCredentialInput` via: +// +// ConnectionGitlabConfigAuthorizerCredentialArgs{...} +type ConnectionGitlabConfigAuthorizerCredentialInput interface { + pulumi.Input + + ToConnectionGitlabConfigAuthorizerCredentialOutput() ConnectionGitlabConfigAuthorizerCredentialOutput + ToConnectionGitlabConfigAuthorizerCredentialOutputWithContext(context.Context) ConnectionGitlabConfigAuthorizerCredentialOutput +} + +type ConnectionGitlabConfigAuthorizerCredentialArgs struct { + // Required. A SecretManager resource containing the user token that authorizes + // the Developer Connect connection. Format: + // `projects/*/secrets/*/versions/*`. + UserTokenSecretVersion pulumi.StringInput `pulumi:"userTokenSecretVersion"` + // (Output) + // Output only. The username associated with this token. + Username pulumi.StringPtrInput `pulumi:"username"` +} + +func (ConnectionGitlabConfigAuthorizerCredentialArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ConnectionGitlabConfigAuthorizerCredential)(nil)).Elem() +} + +func (i ConnectionGitlabConfigAuthorizerCredentialArgs) ToConnectionGitlabConfigAuthorizerCredentialOutput() ConnectionGitlabConfigAuthorizerCredentialOutput { + return i.ToConnectionGitlabConfigAuthorizerCredentialOutputWithContext(context.Background()) +} + +func (i ConnectionGitlabConfigAuthorizerCredentialArgs) ToConnectionGitlabConfigAuthorizerCredentialOutputWithContext(ctx context.Context) ConnectionGitlabConfigAuthorizerCredentialOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionGitlabConfigAuthorizerCredentialOutput) +} + +func (i ConnectionGitlabConfigAuthorizerCredentialArgs) ToConnectionGitlabConfigAuthorizerCredentialPtrOutput() ConnectionGitlabConfigAuthorizerCredentialPtrOutput { + return i.ToConnectionGitlabConfigAuthorizerCredentialPtrOutputWithContext(context.Background()) +} + +func (i ConnectionGitlabConfigAuthorizerCredentialArgs) ToConnectionGitlabConfigAuthorizerCredentialPtrOutputWithContext(ctx context.Context) ConnectionGitlabConfigAuthorizerCredentialPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionGitlabConfigAuthorizerCredentialOutput).ToConnectionGitlabConfigAuthorizerCredentialPtrOutputWithContext(ctx) +} + +// ConnectionGitlabConfigAuthorizerCredentialPtrInput is an input type that accepts ConnectionGitlabConfigAuthorizerCredentialArgs, ConnectionGitlabConfigAuthorizerCredentialPtr and ConnectionGitlabConfigAuthorizerCredentialPtrOutput values. +// You can construct a concrete instance of `ConnectionGitlabConfigAuthorizerCredentialPtrInput` via: +// +// ConnectionGitlabConfigAuthorizerCredentialArgs{...} +// +// or: +// +// nil +type ConnectionGitlabConfigAuthorizerCredentialPtrInput interface { + pulumi.Input + + ToConnectionGitlabConfigAuthorizerCredentialPtrOutput() ConnectionGitlabConfigAuthorizerCredentialPtrOutput + ToConnectionGitlabConfigAuthorizerCredentialPtrOutputWithContext(context.Context) ConnectionGitlabConfigAuthorizerCredentialPtrOutput +} + +type connectionGitlabConfigAuthorizerCredentialPtrType ConnectionGitlabConfigAuthorizerCredentialArgs + +func ConnectionGitlabConfigAuthorizerCredentialPtr(v *ConnectionGitlabConfigAuthorizerCredentialArgs) ConnectionGitlabConfigAuthorizerCredentialPtrInput { + return (*connectionGitlabConfigAuthorizerCredentialPtrType)(v) +} + +func (*connectionGitlabConfigAuthorizerCredentialPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ConnectionGitlabConfigAuthorizerCredential)(nil)).Elem() +} + +func (i *connectionGitlabConfigAuthorizerCredentialPtrType) ToConnectionGitlabConfigAuthorizerCredentialPtrOutput() ConnectionGitlabConfigAuthorizerCredentialPtrOutput { + return i.ToConnectionGitlabConfigAuthorizerCredentialPtrOutputWithContext(context.Background()) +} + +func (i *connectionGitlabConfigAuthorizerCredentialPtrType) ToConnectionGitlabConfigAuthorizerCredentialPtrOutputWithContext(ctx context.Context) ConnectionGitlabConfigAuthorizerCredentialPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionGitlabConfigAuthorizerCredentialPtrOutput) +} + +type ConnectionGitlabConfigAuthorizerCredentialOutput struct{ *pulumi.OutputState } + +func (ConnectionGitlabConfigAuthorizerCredentialOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ConnectionGitlabConfigAuthorizerCredential)(nil)).Elem() +} + +func (o ConnectionGitlabConfigAuthorizerCredentialOutput) ToConnectionGitlabConfigAuthorizerCredentialOutput() ConnectionGitlabConfigAuthorizerCredentialOutput { + return o +} + +func (o ConnectionGitlabConfigAuthorizerCredentialOutput) ToConnectionGitlabConfigAuthorizerCredentialOutputWithContext(ctx context.Context) ConnectionGitlabConfigAuthorizerCredentialOutput { + return o +} + +func (o ConnectionGitlabConfigAuthorizerCredentialOutput) ToConnectionGitlabConfigAuthorizerCredentialPtrOutput() ConnectionGitlabConfigAuthorizerCredentialPtrOutput { + return o.ToConnectionGitlabConfigAuthorizerCredentialPtrOutputWithContext(context.Background()) +} + +func (o ConnectionGitlabConfigAuthorizerCredentialOutput) ToConnectionGitlabConfigAuthorizerCredentialPtrOutputWithContext(ctx context.Context) ConnectionGitlabConfigAuthorizerCredentialPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ConnectionGitlabConfigAuthorizerCredential) *ConnectionGitlabConfigAuthorizerCredential { + return &v + }).(ConnectionGitlabConfigAuthorizerCredentialPtrOutput) +} + +// Required. A SecretManager resource containing the user token that authorizes +// the Developer Connect connection. Format: +// `projects/*/secrets/*/versions/*`. +func (o ConnectionGitlabConfigAuthorizerCredentialOutput) UserTokenSecretVersion() pulumi.StringOutput { + return o.ApplyT(func(v ConnectionGitlabConfigAuthorizerCredential) string { return v.UserTokenSecretVersion }).(pulumi.StringOutput) +} + +// (Output) +// Output only. The username associated with this token. +func (o ConnectionGitlabConfigAuthorizerCredentialOutput) Username() pulumi.StringPtrOutput { + return o.ApplyT(func(v ConnectionGitlabConfigAuthorizerCredential) *string { return v.Username }).(pulumi.StringPtrOutput) +} + +type ConnectionGitlabConfigAuthorizerCredentialPtrOutput struct{ *pulumi.OutputState } + +func (ConnectionGitlabConfigAuthorizerCredentialPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ConnectionGitlabConfigAuthorizerCredential)(nil)).Elem() +} + +func (o ConnectionGitlabConfigAuthorizerCredentialPtrOutput) ToConnectionGitlabConfigAuthorizerCredentialPtrOutput() ConnectionGitlabConfigAuthorizerCredentialPtrOutput { + return o +} + +func (o ConnectionGitlabConfigAuthorizerCredentialPtrOutput) ToConnectionGitlabConfigAuthorizerCredentialPtrOutputWithContext(ctx context.Context) ConnectionGitlabConfigAuthorizerCredentialPtrOutput { + return o +} + +func (o ConnectionGitlabConfigAuthorizerCredentialPtrOutput) Elem() ConnectionGitlabConfigAuthorizerCredentialOutput { + return o.ApplyT(func(v *ConnectionGitlabConfigAuthorizerCredential) ConnectionGitlabConfigAuthorizerCredential { + if v != nil { + return *v + } + var ret ConnectionGitlabConfigAuthorizerCredential + return ret + }).(ConnectionGitlabConfigAuthorizerCredentialOutput) +} + +// Required. A SecretManager resource containing the user token that authorizes +// the Developer Connect connection. Format: +// `projects/*/secrets/*/versions/*`. +func (o ConnectionGitlabConfigAuthorizerCredentialPtrOutput) UserTokenSecretVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ConnectionGitlabConfigAuthorizerCredential) *string { + if v == nil { + return nil + } + return &v.UserTokenSecretVersion + }).(pulumi.StringPtrOutput) +} + +// (Output) +// Output only. The username associated with this token. +func (o ConnectionGitlabConfigAuthorizerCredentialPtrOutput) Username() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ConnectionGitlabConfigAuthorizerCredential) *string { + if v == nil { + return nil + } + return v.Username + }).(pulumi.StringPtrOutput) +} + +type ConnectionGitlabConfigReadAuthorizerCredential struct { + // Required. A SecretManager resource containing the user token that authorizes + // the Developer Connect connection. Format: + // `projects/*/secrets/*/versions/*`. + UserTokenSecretVersion string `pulumi:"userTokenSecretVersion"` + // (Output) + // Output only. The username associated with this token. + Username *string `pulumi:"username"` +} + +// ConnectionGitlabConfigReadAuthorizerCredentialInput is an input type that accepts ConnectionGitlabConfigReadAuthorizerCredentialArgs and ConnectionGitlabConfigReadAuthorizerCredentialOutput values. +// You can construct a concrete instance of `ConnectionGitlabConfigReadAuthorizerCredentialInput` via: +// +// ConnectionGitlabConfigReadAuthorizerCredentialArgs{...} +type ConnectionGitlabConfigReadAuthorizerCredentialInput interface { + pulumi.Input + + ToConnectionGitlabConfigReadAuthorizerCredentialOutput() ConnectionGitlabConfigReadAuthorizerCredentialOutput + ToConnectionGitlabConfigReadAuthorizerCredentialOutputWithContext(context.Context) ConnectionGitlabConfigReadAuthorizerCredentialOutput +} + +type ConnectionGitlabConfigReadAuthorizerCredentialArgs struct { + // Required. A SecretManager resource containing the user token that authorizes + // the Developer Connect connection. Format: + // `projects/*/secrets/*/versions/*`. + UserTokenSecretVersion pulumi.StringInput `pulumi:"userTokenSecretVersion"` + // (Output) + // Output only. The username associated with this token. + Username pulumi.StringPtrInput `pulumi:"username"` +} + +func (ConnectionGitlabConfigReadAuthorizerCredentialArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ConnectionGitlabConfigReadAuthorizerCredential)(nil)).Elem() +} + +func (i ConnectionGitlabConfigReadAuthorizerCredentialArgs) ToConnectionGitlabConfigReadAuthorizerCredentialOutput() ConnectionGitlabConfigReadAuthorizerCredentialOutput { + return i.ToConnectionGitlabConfigReadAuthorizerCredentialOutputWithContext(context.Background()) +} + +func (i ConnectionGitlabConfigReadAuthorizerCredentialArgs) ToConnectionGitlabConfigReadAuthorizerCredentialOutputWithContext(ctx context.Context) ConnectionGitlabConfigReadAuthorizerCredentialOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionGitlabConfigReadAuthorizerCredentialOutput) +} + +func (i ConnectionGitlabConfigReadAuthorizerCredentialArgs) ToConnectionGitlabConfigReadAuthorizerCredentialPtrOutput() ConnectionGitlabConfigReadAuthorizerCredentialPtrOutput { + return i.ToConnectionGitlabConfigReadAuthorizerCredentialPtrOutputWithContext(context.Background()) +} + +func (i ConnectionGitlabConfigReadAuthorizerCredentialArgs) ToConnectionGitlabConfigReadAuthorizerCredentialPtrOutputWithContext(ctx context.Context) ConnectionGitlabConfigReadAuthorizerCredentialPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionGitlabConfigReadAuthorizerCredentialOutput).ToConnectionGitlabConfigReadAuthorizerCredentialPtrOutputWithContext(ctx) +} + +// ConnectionGitlabConfigReadAuthorizerCredentialPtrInput is an input type that accepts ConnectionGitlabConfigReadAuthorizerCredentialArgs, ConnectionGitlabConfigReadAuthorizerCredentialPtr and ConnectionGitlabConfigReadAuthorizerCredentialPtrOutput values. +// You can construct a concrete instance of `ConnectionGitlabConfigReadAuthorizerCredentialPtrInput` via: +// +// ConnectionGitlabConfigReadAuthorizerCredentialArgs{...} +// +// or: +// +// nil +type ConnectionGitlabConfigReadAuthorizerCredentialPtrInput interface { + pulumi.Input + + ToConnectionGitlabConfigReadAuthorizerCredentialPtrOutput() ConnectionGitlabConfigReadAuthorizerCredentialPtrOutput + ToConnectionGitlabConfigReadAuthorizerCredentialPtrOutputWithContext(context.Context) ConnectionGitlabConfigReadAuthorizerCredentialPtrOutput +} + +type connectionGitlabConfigReadAuthorizerCredentialPtrType ConnectionGitlabConfigReadAuthorizerCredentialArgs + +func ConnectionGitlabConfigReadAuthorizerCredentialPtr(v *ConnectionGitlabConfigReadAuthorizerCredentialArgs) ConnectionGitlabConfigReadAuthorizerCredentialPtrInput { + return (*connectionGitlabConfigReadAuthorizerCredentialPtrType)(v) +} + +func (*connectionGitlabConfigReadAuthorizerCredentialPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ConnectionGitlabConfigReadAuthorizerCredential)(nil)).Elem() +} + +func (i *connectionGitlabConfigReadAuthorizerCredentialPtrType) ToConnectionGitlabConfigReadAuthorizerCredentialPtrOutput() ConnectionGitlabConfigReadAuthorizerCredentialPtrOutput { + return i.ToConnectionGitlabConfigReadAuthorizerCredentialPtrOutputWithContext(context.Background()) +} + +func (i *connectionGitlabConfigReadAuthorizerCredentialPtrType) ToConnectionGitlabConfigReadAuthorizerCredentialPtrOutputWithContext(ctx context.Context) ConnectionGitlabConfigReadAuthorizerCredentialPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionGitlabConfigReadAuthorizerCredentialPtrOutput) +} + +type ConnectionGitlabConfigReadAuthorizerCredentialOutput struct{ *pulumi.OutputState } + +func (ConnectionGitlabConfigReadAuthorizerCredentialOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ConnectionGitlabConfigReadAuthorizerCredential)(nil)).Elem() +} + +func (o ConnectionGitlabConfigReadAuthorizerCredentialOutput) ToConnectionGitlabConfigReadAuthorizerCredentialOutput() ConnectionGitlabConfigReadAuthorizerCredentialOutput { + return o +} + +func (o ConnectionGitlabConfigReadAuthorizerCredentialOutput) ToConnectionGitlabConfigReadAuthorizerCredentialOutputWithContext(ctx context.Context) ConnectionGitlabConfigReadAuthorizerCredentialOutput { + return o +} + +func (o ConnectionGitlabConfigReadAuthorizerCredentialOutput) ToConnectionGitlabConfigReadAuthorizerCredentialPtrOutput() ConnectionGitlabConfigReadAuthorizerCredentialPtrOutput { + return o.ToConnectionGitlabConfigReadAuthorizerCredentialPtrOutputWithContext(context.Background()) +} + +func (o ConnectionGitlabConfigReadAuthorizerCredentialOutput) ToConnectionGitlabConfigReadAuthorizerCredentialPtrOutputWithContext(ctx context.Context) ConnectionGitlabConfigReadAuthorizerCredentialPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ConnectionGitlabConfigReadAuthorizerCredential) *ConnectionGitlabConfigReadAuthorizerCredential { + return &v + }).(ConnectionGitlabConfigReadAuthorizerCredentialPtrOutput) +} + +// Required. A SecretManager resource containing the user token that authorizes +// the Developer Connect connection. Format: +// `projects/*/secrets/*/versions/*`. +func (o ConnectionGitlabConfigReadAuthorizerCredentialOutput) UserTokenSecretVersion() pulumi.StringOutput { + return o.ApplyT(func(v ConnectionGitlabConfigReadAuthorizerCredential) string { return v.UserTokenSecretVersion }).(pulumi.StringOutput) +} + +// (Output) +// Output only. The username associated with this token. +func (o ConnectionGitlabConfigReadAuthorizerCredentialOutput) Username() pulumi.StringPtrOutput { + return o.ApplyT(func(v ConnectionGitlabConfigReadAuthorizerCredential) *string { return v.Username }).(pulumi.StringPtrOutput) +} + +type ConnectionGitlabConfigReadAuthorizerCredentialPtrOutput struct{ *pulumi.OutputState } + +func (ConnectionGitlabConfigReadAuthorizerCredentialPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ConnectionGitlabConfigReadAuthorizerCredential)(nil)).Elem() +} + +func (o ConnectionGitlabConfigReadAuthorizerCredentialPtrOutput) ToConnectionGitlabConfigReadAuthorizerCredentialPtrOutput() ConnectionGitlabConfigReadAuthorizerCredentialPtrOutput { + return o +} + +func (o ConnectionGitlabConfigReadAuthorizerCredentialPtrOutput) ToConnectionGitlabConfigReadAuthorizerCredentialPtrOutputWithContext(ctx context.Context) ConnectionGitlabConfigReadAuthorizerCredentialPtrOutput { + return o +} + +func (o ConnectionGitlabConfigReadAuthorizerCredentialPtrOutput) Elem() ConnectionGitlabConfigReadAuthorizerCredentialOutput { + return o.ApplyT(func(v *ConnectionGitlabConfigReadAuthorizerCredential) ConnectionGitlabConfigReadAuthorizerCredential { + if v != nil { + return *v + } + var ret ConnectionGitlabConfigReadAuthorizerCredential + return ret + }).(ConnectionGitlabConfigReadAuthorizerCredentialOutput) +} + +// Required. A SecretManager resource containing the user token that authorizes +// the Developer Connect connection. Format: +// `projects/*/secrets/*/versions/*`. +func (o ConnectionGitlabConfigReadAuthorizerCredentialPtrOutput) UserTokenSecretVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ConnectionGitlabConfigReadAuthorizerCredential) *string { + if v == nil { + return nil + } + return &v.UserTokenSecretVersion + }).(pulumi.StringPtrOutput) +} + +// (Output) +// Output only. The username associated with this token. +func (o ConnectionGitlabConfigReadAuthorizerCredentialPtrOutput) Username() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ConnectionGitlabConfigReadAuthorizerCredential) *string { + if v == nil { + return nil + } + return v.Username + }).(pulumi.StringPtrOutput) +} + +type ConnectionGitlabEnterpriseConfig struct { + // Represents a personal access token that authorized the Connection, + // and associated metadata. + // Structure is documented below. + AuthorizerCredential ConnectionGitlabEnterpriseConfigAuthorizerCredential `pulumi:"authorizerCredential"` + // Required. The URI of the GitLab Enterprise host this connection is for. + HostUri string `pulumi:"hostUri"` + // Represents a personal access token that authorized the Connection, + // and associated metadata. + // Structure is documented below. + ReadAuthorizerCredential ConnectionGitlabEnterpriseConfigReadAuthorizerCredential `pulumi:"readAuthorizerCredential"` + // (Output) + // Output only. Version of the GitLab Enterprise server running on the `hostUri`. + ServerVersion *string `pulumi:"serverVersion"` + // ServiceDirectoryConfig represents Service Directory configuration for a + // connection. + // Structure is documented below. + ServiceDirectoryConfig *ConnectionGitlabEnterpriseConfigServiceDirectoryConfig `pulumi:"serviceDirectoryConfig"` + // Optional. SSL Certificate Authority certificate to use for requests to GitLab + // Enterprise instance. + SslCaCertificate *string `pulumi:"sslCaCertificate"` + // Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + // formatted as `projects/*/secrets/*/versions/*`. This is used to validate + // webhooks. + WebhookSecretSecretVersion string `pulumi:"webhookSecretSecretVersion"` +} + +// ConnectionGitlabEnterpriseConfigInput is an input type that accepts ConnectionGitlabEnterpriseConfigArgs and ConnectionGitlabEnterpriseConfigOutput values. +// You can construct a concrete instance of `ConnectionGitlabEnterpriseConfigInput` via: +// +// ConnectionGitlabEnterpriseConfigArgs{...} +type ConnectionGitlabEnterpriseConfigInput interface { + pulumi.Input + + ToConnectionGitlabEnterpriseConfigOutput() ConnectionGitlabEnterpriseConfigOutput + ToConnectionGitlabEnterpriseConfigOutputWithContext(context.Context) ConnectionGitlabEnterpriseConfigOutput +} + +type ConnectionGitlabEnterpriseConfigArgs struct { + // Represents a personal access token that authorized the Connection, + // and associated metadata. + // Structure is documented below. + AuthorizerCredential ConnectionGitlabEnterpriseConfigAuthorizerCredentialInput `pulumi:"authorizerCredential"` + // Required. The URI of the GitLab Enterprise host this connection is for. + HostUri pulumi.StringInput `pulumi:"hostUri"` + // Represents a personal access token that authorized the Connection, + // and associated metadata. + // Structure is documented below. + ReadAuthorizerCredential ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialInput `pulumi:"readAuthorizerCredential"` + // (Output) + // Output only. Version of the GitLab Enterprise server running on the `hostUri`. + ServerVersion pulumi.StringPtrInput `pulumi:"serverVersion"` + // ServiceDirectoryConfig represents Service Directory configuration for a + // connection. + // Structure is documented below. + ServiceDirectoryConfig ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrInput `pulumi:"serviceDirectoryConfig"` + // Optional. SSL Certificate Authority certificate to use for requests to GitLab + // Enterprise instance. + SslCaCertificate pulumi.StringPtrInput `pulumi:"sslCaCertificate"` + // Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + // formatted as `projects/*/secrets/*/versions/*`. This is used to validate + // webhooks. + WebhookSecretSecretVersion pulumi.StringInput `pulumi:"webhookSecretSecretVersion"` +} + +func (ConnectionGitlabEnterpriseConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ConnectionGitlabEnterpriseConfig)(nil)).Elem() +} + +func (i ConnectionGitlabEnterpriseConfigArgs) ToConnectionGitlabEnterpriseConfigOutput() ConnectionGitlabEnterpriseConfigOutput { + return i.ToConnectionGitlabEnterpriseConfigOutputWithContext(context.Background()) +} + +func (i ConnectionGitlabEnterpriseConfigArgs) ToConnectionGitlabEnterpriseConfigOutputWithContext(ctx context.Context) ConnectionGitlabEnterpriseConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionGitlabEnterpriseConfigOutput) +} + +func (i ConnectionGitlabEnterpriseConfigArgs) ToConnectionGitlabEnterpriseConfigPtrOutput() ConnectionGitlabEnterpriseConfigPtrOutput { + return i.ToConnectionGitlabEnterpriseConfigPtrOutputWithContext(context.Background()) +} + +func (i ConnectionGitlabEnterpriseConfigArgs) ToConnectionGitlabEnterpriseConfigPtrOutputWithContext(ctx context.Context) ConnectionGitlabEnterpriseConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionGitlabEnterpriseConfigOutput).ToConnectionGitlabEnterpriseConfigPtrOutputWithContext(ctx) +} + +// ConnectionGitlabEnterpriseConfigPtrInput is an input type that accepts ConnectionGitlabEnterpriseConfigArgs, ConnectionGitlabEnterpriseConfigPtr and ConnectionGitlabEnterpriseConfigPtrOutput values. +// You can construct a concrete instance of `ConnectionGitlabEnterpriseConfigPtrInput` via: +// +// ConnectionGitlabEnterpriseConfigArgs{...} +// +// or: +// +// nil +type ConnectionGitlabEnterpriseConfigPtrInput interface { + pulumi.Input + + ToConnectionGitlabEnterpriseConfigPtrOutput() ConnectionGitlabEnterpriseConfigPtrOutput + ToConnectionGitlabEnterpriseConfigPtrOutputWithContext(context.Context) ConnectionGitlabEnterpriseConfigPtrOutput +} + +type connectionGitlabEnterpriseConfigPtrType ConnectionGitlabEnterpriseConfigArgs + +func ConnectionGitlabEnterpriseConfigPtr(v *ConnectionGitlabEnterpriseConfigArgs) ConnectionGitlabEnterpriseConfigPtrInput { + return (*connectionGitlabEnterpriseConfigPtrType)(v) +} + +func (*connectionGitlabEnterpriseConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ConnectionGitlabEnterpriseConfig)(nil)).Elem() +} + +func (i *connectionGitlabEnterpriseConfigPtrType) ToConnectionGitlabEnterpriseConfigPtrOutput() ConnectionGitlabEnterpriseConfigPtrOutput { + return i.ToConnectionGitlabEnterpriseConfigPtrOutputWithContext(context.Background()) +} + +func (i *connectionGitlabEnterpriseConfigPtrType) ToConnectionGitlabEnterpriseConfigPtrOutputWithContext(ctx context.Context) ConnectionGitlabEnterpriseConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionGitlabEnterpriseConfigPtrOutput) +} + +type ConnectionGitlabEnterpriseConfigOutput struct{ *pulumi.OutputState } + +func (ConnectionGitlabEnterpriseConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ConnectionGitlabEnterpriseConfig)(nil)).Elem() +} + +func (o ConnectionGitlabEnterpriseConfigOutput) ToConnectionGitlabEnterpriseConfigOutput() ConnectionGitlabEnterpriseConfigOutput { + return o +} + +func (o ConnectionGitlabEnterpriseConfigOutput) ToConnectionGitlabEnterpriseConfigOutputWithContext(ctx context.Context) ConnectionGitlabEnterpriseConfigOutput { + return o +} + +func (o ConnectionGitlabEnterpriseConfigOutput) ToConnectionGitlabEnterpriseConfigPtrOutput() ConnectionGitlabEnterpriseConfigPtrOutput { + return o.ToConnectionGitlabEnterpriseConfigPtrOutputWithContext(context.Background()) +} + +func (o ConnectionGitlabEnterpriseConfigOutput) ToConnectionGitlabEnterpriseConfigPtrOutputWithContext(ctx context.Context) ConnectionGitlabEnterpriseConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ConnectionGitlabEnterpriseConfig) *ConnectionGitlabEnterpriseConfig { + return &v + }).(ConnectionGitlabEnterpriseConfigPtrOutput) +} + +// Represents a personal access token that authorized the Connection, +// and associated metadata. +// Structure is documented below. +func (o ConnectionGitlabEnterpriseConfigOutput) AuthorizerCredential() ConnectionGitlabEnterpriseConfigAuthorizerCredentialOutput { + return o.ApplyT(func(v ConnectionGitlabEnterpriseConfig) ConnectionGitlabEnterpriseConfigAuthorizerCredential { + return v.AuthorizerCredential + }).(ConnectionGitlabEnterpriseConfigAuthorizerCredentialOutput) +} + +// Required. The URI of the GitLab Enterprise host this connection is for. +func (o ConnectionGitlabEnterpriseConfigOutput) HostUri() pulumi.StringOutput { + return o.ApplyT(func(v ConnectionGitlabEnterpriseConfig) string { return v.HostUri }).(pulumi.StringOutput) +} + +// Represents a personal access token that authorized the Connection, +// and associated metadata. +// Structure is documented below. +func (o ConnectionGitlabEnterpriseConfigOutput) ReadAuthorizerCredential() ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialOutput { + return o.ApplyT(func(v ConnectionGitlabEnterpriseConfig) ConnectionGitlabEnterpriseConfigReadAuthorizerCredential { + return v.ReadAuthorizerCredential + }).(ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialOutput) +} + +// (Output) +// Output only. Version of the GitLab Enterprise server running on the `hostUri`. +func (o ConnectionGitlabEnterpriseConfigOutput) ServerVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v ConnectionGitlabEnterpriseConfig) *string { return v.ServerVersion }).(pulumi.StringPtrOutput) +} + +// ServiceDirectoryConfig represents Service Directory configuration for a +// connection. +// Structure is documented below. +func (o ConnectionGitlabEnterpriseConfigOutput) ServiceDirectoryConfig() ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutput { + return o.ApplyT(func(v ConnectionGitlabEnterpriseConfig) *ConnectionGitlabEnterpriseConfigServiceDirectoryConfig { + return v.ServiceDirectoryConfig + }).(ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutput) +} + +// Optional. SSL Certificate Authority certificate to use for requests to GitLab +// Enterprise instance. +func (o ConnectionGitlabEnterpriseConfigOutput) SslCaCertificate() pulumi.StringPtrOutput { + return o.ApplyT(func(v ConnectionGitlabEnterpriseConfig) *string { return v.SslCaCertificate }).(pulumi.StringPtrOutput) +} + +// Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, +// formatted as `projects/*/secrets/*/versions/*`. This is used to validate +// webhooks. +func (o ConnectionGitlabEnterpriseConfigOutput) WebhookSecretSecretVersion() pulumi.StringOutput { + return o.ApplyT(func(v ConnectionGitlabEnterpriseConfig) string { return v.WebhookSecretSecretVersion }).(pulumi.StringOutput) +} + +type ConnectionGitlabEnterpriseConfigPtrOutput struct{ *pulumi.OutputState } + +func (ConnectionGitlabEnterpriseConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ConnectionGitlabEnterpriseConfig)(nil)).Elem() +} + +func (o ConnectionGitlabEnterpriseConfigPtrOutput) ToConnectionGitlabEnterpriseConfigPtrOutput() ConnectionGitlabEnterpriseConfigPtrOutput { + return o +} + +func (o ConnectionGitlabEnterpriseConfigPtrOutput) ToConnectionGitlabEnterpriseConfigPtrOutputWithContext(ctx context.Context) ConnectionGitlabEnterpriseConfigPtrOutput { + return o +} + +func (o ConnectionGitlabEnterpriseConfigPtrOutput) Elem() ConnectionGitlabEnterpriseConfigOutput { + return o.ApplyT(func(v *ConnectionGitlabEnterpriseConfig) ConnectionGitlabEnterpriseConfig { + if v != nil { + return *v + } + var ret ConnectionGitlabEnterpriseConfig + return ret + }).(ConnectionGitlabEnterpriseConfigOutput) +} + +// Represents a personal access token that authorized the Connection, +// and associated metadata. +// Structure is documented below. +func (o ConnectionGitlabEnterpriseConfigPtrOutput) AuthorizerCredential() ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutput { + return o.ApplyT(func(v *ConnectionGitlabEnterpriseConfig) *ConnectionGitlabEnterpriseConfigAuthorizerCredential { + if v == nil { + return nil + } + return &v.AuthorizerCredential + }).(ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutput) +} + +// Required. The URI of the GitLab Enterprise host this connection is for. +func (o ConnectionGitlabEnterpriseConfigPtrOutput) HostUri() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ConnectionGitlabEnterpriseConfig) *string { + if v == nil { + return nil + } + return &v.HostUri + }).(pulumi.StringPtrOutput) +} + +// Represents a personal access token that authorized the Connection, +// and associated metadata. +// Structure is documented below. +func (o ConnectionGitlabEnterpriseConfigPtrOutput) ReadAuthorizerCredential() ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutput { + return o.ApplyT(func(v *ConnectionGitlabEnterpriseConfig) *ConnectionGitlabEnterpriseConfigReadAuthorizerCredential { + if v == nil { + return nil + } + return &v.ReadAuthorizerCredential + }).(ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutput) +} + +// (Output) +// Output only. Version of the GitLab Enterprise server running on the `hostUri`. +func (o ConnectionGitlabEnterpriseConfigPtrOutput) ServerVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ConnectionGitlabEnterpriseConfig) *string { + if v == nil { + return nil + } + return v.ServerVersion + }).(pulumi.StringPtrOutput) +} + +// ServiceDirectoryConfig represents Service Directory configuration for a +// connection. +// Structure is documented below. +func (o ConnectionGitlabEnterpriseConfigPtrOutput) ServiceDirectoryConfig() ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutput { + return o.ApplyT(func(v *ConnectionGitlabEnterpriseConfig) *ConnectionGitlabEnterpriseConfigServiceDirectoryConfig { + if v == nil { + return nil + } + return v.ServiceDirectoryConfig + }).(ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutput) +} + +// Optional. SSL Certificate Authority certificate to use for requests to GitLab +// Enterprise instance. +func (o ConnectionGitlabEnterpriseConfigPtrOutput) SslCaCertificate() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ConnectionGitlabEnterpriseConfig) *string { + if v == nil { + return nil + } + return v.SslCaCertificate + }).(pulumi.StringPtrOutput) +} + +// Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, +// formatted as `projects/*/secrets/*/versions/*`. This is used to validate +// webhooks. +func (o ConnectionGitlabEnterpriseConfigPtrOutput) WebhookSecretSecretVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ConnectionGitlabEnterpriseConfig) *string { + if v == nil { + return nil + } + return &v.WebhookSecretSecretVersion + }).(pulumi.StringPtrOutput) +} + +type ConnectionGitlabEnterpriseConfigAuthorizerCredential struct { + // Required. A SecretManager resource containing the user token that authorizes + // the Developer Connect connection. Format: + // `projects/*/secrets/*/versions/*`. + UserTokenSecretVersion string `pulumi:"userTokenSecretVersion"` + // (Output) + // Output only. The username associated with this token. + Username *string `pulumi:"username"` +} + +// ConnectionGitlabEnterpriseConfigAuthorizerCredentialInput is an input type that accepts ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs and ConnectionGitlabEnterpriseConfigAuthorizerCredentialOutput values. +// You can construct a concrete instance of `ConnectionGitlabEnterpriseConfigAuthorizerCredentialInput` via: +// +// ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs{...} +type ConnectionGitlabEnterpriseConfigAuthorizerCredentialInput interface { + pulumi.Input + + ToConnectionGitlabEnterpriseConfigAuthorizerCredentialOutput() ConnectionGitlabEnterpriseConfigAuthorizerCredentialOutput + ToConnectionGitlabEnterpriseConfigAuthorizerCredentialOutputWithContext(context.Context) ConnectionGitlabEnterpriseConfigAuthorizerCredentialOutput +} + +type ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs struct { + // Required. A SecretManager resource containing the user token that authorizes + // the Developer Connect connection. Format: + // `projects/*/secrets/*/versions/*`. + UserTokenSecretVersion pulumi.StringInput `pulumi:"userTokenSecretVersion"` + // (Output) + // Output only. The username associated with this token. + Username pulumi.StringPtrInput `pulumi:"username"` +} + +func (ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ConnectionGitlabEnterpriseConfigAuthorizerCredential)(nil)).Elem() +} + +func (i ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs) ToConnectionGitlabEnterpriseConfigAuthorizerCredentialOutput() ConnectionGitlabEnterpriseConfigAuthorizerCredentialOutput { + return i.ToConnectionGitlabEnterpriseConfigAuthorizerCredentialOutputWithContext(context.Background()) +} + +func (i ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs) ToConnectionGitlabEnterpriseConfigAuthorizerCredentialOutputWithContext(ctx context.Context) ConnectionGitlabEnterpriseConfigAuthorizerCredentialOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionGitlabEnterpriseConfigAuthorizerCredentialOutput) +} + +func (i ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs) ToConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutput() ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutput { + return i.ToConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutputWithContext(context.Background()) +} + +func (i ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs) ToConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutputWithContext(ctx context.Context) ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionGitlabEnterpriseConfigAuthorizerCredentialOutput).ToConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutputWithContext(ctx) +} + +// ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrInput is an input type that accepts ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs, ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtr and ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutput values. +// You can construct a concrete instance of `ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrInput` via: +// +// ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs{...} +// +// or: +// +// nil +type ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrInput interface { + pulumi.Input + + ToConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutput() ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutput + ToConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutputWithContext(context.Context) ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutput +} + +type connectionGitlabEnterpriseConfigAuthorizerCredentialPtrType ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs + +func ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtr(v *ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs) ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrInput { + return (*connectionGitlabEnterpriseConfigAuthorizerCredentialPtrType)(v) +} + +func (*connectionGitlabEnterpriseConfigAuthorizerCredentialPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ConnectionGitlabEnterpriseConfigAuthorizerCredential)(nil)).Elem() +} + +func (i *connectionGitlabEnterpriseConfigAuthorizerCredentialPtrType) ToConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutput() ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutput { + return i.ToConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutputWithContext(context.Background()) +} + +func (i *connectionGitlabEnterpriseConfigAuthorizerCredentialPtrType) ToConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutputWithContext(ctx context.Context) ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutput) +} + +type ConnectionGitlabEnterpriseConfigAuthorizerCredentialOutput struct{ *pulumi.OutputState } + +func (ConnectionGitlabEnterpriseConfigAuthorizerCredentialOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ConnectionGitlabEnterpriseConfigAuthorizerCredential)(nil)).Elem() +} + +func (o ConnectionGitlabEnterpriseConfigAuthorizerCredentialOutput) ToConnectionGitlabEnterpriseConfigAuthorizerCredentialOutput() ConnectionGitlabEnterpriseConfigAuthorizerCredentialOutput { + return o +} + +func (o ConnectionGitlabEnterpriseConfigAuthorizerCredentialOutput) ToConnectionGitlabEnterpriseConfigAuthorizerCredentialOutputWithContext(ctx context.Context) ConnectionGitlabEnterpriseConfigAuthorizerCredentialOutput { + return o +} + +func (o ConnectionGitlabEnterpriseConfigAuthorizerCredentialOutput) ToConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutput() ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutput { + return o.ToConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutputWithContext(context.Background()) +} + +func (o ConnectionGitlabEnterpriseConfigAuthorizerCredentialOutput) ToConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutputWithContext(ctx context.Context) ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ConnectionGitlabEnterpriseConfigAuthorizerCredential) *ConnectionGitlabEnterpriseConfigAuthorizerCredential { + return &v + }).(ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutput) +} + +// Required. A SecretManager resource containing the user token that authorizes +// the Developer Connect connection. Format: +// `projects/*/secrets/*/versions/*`. +func (o ConnectionGitlabEnterpriseConfigAuthorizerCredentialOutput) UserTokenSecretVersion() pulumi.StringOutput { + return o.ApplyT(func(v ConnectionGitlabEnterpriseConfigAuthorizerCredential) string { return v.UserTokenSecretVersion }).(pulumi.StringOutput) +} + +// (Output) +// Output only. The username associated with this token. +func (o ConnectionGitlabEnterpriseConfigAuthorizerCredentialOutput) Username() pulumi.StringPtrOutput { + return o.ApplyT(func(v ConnectionGitlabEnterpriseConfigAuthorizerCredential) *string { return v.Username }).(pulumi.StringPtrOutput) +} + +type ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutput struct{ *pulumi.OutputState } + +func (ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ConnectionGitlabEnterpriseConfigAuthorizerCredential)(nil)).Elem() +} + +func (o ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutput) ToConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutput() ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutput { + return o +} + +func (o ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutput) ToConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutputWithContext(ctx context.Context) ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutput { + return o +} + +func (o ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutput) Elem() ConnectionGitlabEnterpriseConfigAuthorizerCredentialOutput { + return o.ApplyT(func(v *ConnectionGitlabEnterpriseConfigAuthorizerCredential) ConnectionGitlabEnterpriseConfigAuthorizerCredential { + if v != nil { + return *v + } + var ret ConnectionGitlabEnterpriseConfigAuthorizerCredential + return ret + }).(ConnectionGitlabEnterpriseConfigAuthorizerCredentialOutput) +} + +// Required. A SecretManager resource containing the user token that authorizes +// the Developer Connect connection. Format: +// `projects/*/secrets/*/versions/*`. +func (o ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutput) UserTokenSecretVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ConnectionGitlabEnterpriseConfigAuthorizerCredential) *string { + if v == nil { + return nil + } + return &v.UserTokenSecretVersion + }).(pulumi.StringPtrOutput) +} + +// (Output) +// Output only. The username associated with this token. +func (o ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutput) Username() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ConnectionGitlabEnterpriseConfigAuthorizerCredential) *string { + if v == nil { + return nil + } + return v.Username + }).(pulumi.StringPtrOutput) +} + +type ConnectionGitlabEnterpriseConfigReadAuthorizerCredential struct { + // Required. A SecretManager resource containing the user token that authorizes + // the Developer Connect connection. Format: + // `projects/*/secrets/*/versions/*`. + UserTokenSecretVersion string `pulumi:"userTokenSecretVersion"` + // (Output) + // Output only. The username associated with this token. + Username *string `pulumi:"username"` +} + +// ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialInput is an input type that accepts ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs and ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialOutput values. +// You can construct a concrete instance of `ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialInput` via: +// +// ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs{...} +type ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialInput interface { + pulumi.Input + + ToConnectionGitlabEnterpriseConfigReadAuthorizerCredentialOutput() ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialOutput + ToConnectionGitlabEnterpriseConfigReadAuthorizerCredentialOutputWithContext(context.Context) ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialOutput +} + +type ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs struct { + // Required. A SecretManager resource containing the user token that authorizes + // the Developer Connect connection. Format: + // `projects/*/secrets/*/versions/*`. + UserTokenSecretVersion pulumi.StringInput `pulumi:"userTokenSecretVersion"` + // (Output) + // Output only. The username associated with this token. + Username pulumi.StringPtrInput `pulumi:"username"` +} + +func (ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ConnectionGitlabEnterpriseConfigReadAuthorizerCredential)(nil)).Elem() +} + +func (i ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs) ToConnectionGitlabEnterpriseConfigReadAuthorizerCredentialOutput() ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialOutput { + return i.ToConnectionGitlabEnterpriseConfigReadAuthorizerCredentialOutputWithContext(context.Background()) +} + +func (i ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs) ToConnectionGitlabEnterpriseConfigReadAuthorizerCredentialOutputWithContext(ctx context.Context) ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialOutput) +} + +func (i ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs) ToConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutput() ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutput { + return i.ToConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutputWithContext(context.Background()) +} + +func (i ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs) ToConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutputWithContext(ctx context.Context) ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialOutput).ToConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutputWithContext(ctx) +} + +// ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrInput is an input type that accepts ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs, ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtr and ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutput values. +// You can construct a concrete instance of `ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrInput` via: +// +// ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs{...} +// +// or: +// +// nil +type ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrInput interface { + pulumi.Input + + ToConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutput() ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutput + ToConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutputWithContext(context.Context) ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutput +} + +type connectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrType ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs + +func ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtr(v *ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs) ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrInput { + return (*connectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrType)(v) +} + +func (*connectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ConnectionGitlabEnterpriseConfigReadAuthorizerCredential)(nil)).Elem() +} + +func (i *connectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrType) ToConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutput() ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutput { + return i.ToConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutputWithContext(context.Background()) +} + +func (i *connectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrType) ToConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutputWithContext(ctx context.Context) ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutput) +} + +type ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialOutput struct{ *pulumi.OutputState } + +func (ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ConnectionGitlabEnterpriseConfigReadAuthorizerCredential)(nil)).Elem() +} + +func (o ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialOutput) ToConnectionGitlabEnterpriseConfigReadAuthorizerCredentialOutput() ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialOutput { + return o +} + +func (o ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialOutput) ToConnectionGitlabEnterpriseConfigReadAuthorizerCredentialOutputWithContext(ctx context.Context) ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialOutput { + return o +} + +func (o ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialOutput) ToConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutput() ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutput { + return o.ToConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutputWithContext(context.Background()) +} + +func (o ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialOutput) ToConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutputWithContext(ctx context.Context) ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ConnectionGitlabEnterpriseConfigReadAuthorizerCredential) *ConnectionGitlabEnterpriseConfigReadAuthorizerCredential { + return &v + }).(ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutput) +} + +// Required. A SecretManager resource containing the user token that authorizes +// the Developer Connect connection. Format: +// `projects/*/secrets/*/versions/*`. +func (o ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialOutput) UserTokenSecretVersion() pulumi.StringOutput { + return o.ApplyT(func(v ConnectionGitlabEnterpriseConfigReadAuthorizerCredential) string { + return v.UserTokenSecretVersion + }).(pulumi.StringOutput) +} + +// (Output) +// Output only. The username associated with this token. +func (o ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialOutput) Username() pulumi.StringPtrOutput { + return o.ApplyT(func(v ConnectionGitlabEnterpriseConfigReadAuthorizerCredential) *string { return v.Username }).(pulumi.StringPtrOutput) +} + +type ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutput struct{ *pulumi.OutputState } + +func (ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ConnectionGitlabEnterpriseConfigReadAuthorizerCredential)(nil)).Elem() +} + +func (o ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutput) ToConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutput() ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutput { + return o +} + +func (o ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutput) ToConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutputWithContext(ctx context.Context) ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutput { + return o +} + +func (o ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutput) Elem() ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialOutput { + return o.ApplyT(func(v *ConnectionGitlabEnterpriseConfigReadAuthorizerCredential) ConnectionGitlabEnterpriseConfigReadAuthorizerCredential { + if v != nil { + return *v + } + var ret ConnectionGitlabEnterpriseConfigReadAuthorizerCredential + return ret + }).(ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialOutput) +} + +// Required. A SecretManager resource containing the user token that authorizes +// the Developer Connect connection. Format: +// `projects/*/secrets/*/versions/*`. +func (o ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutput) UserTokenSecretVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ConnectionGitlabEnterpriseConfigReadAuthorizerCredential) *string { + if v == nil { + return nil + } + return &v.UserTokenSecretVersion + }).(pulumi.StringPtrOutput) +} + +// (Output) +// Output only. The username associated with this token. +func (o ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutput) Username() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ConnectionGitlabEnterpriseConfigReadAuthorizerCredential) *string { + if v == nil { + return nil + } + return v.Username + }).(pulumi.StringPtrOutput) +} + +type ConnectionGitlabEnterpriseConfigServiceDirectoryConfig struct { + // Required. The Service Directory service name. + // Format: + // projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + Service string `pulumi:"service"` +} + +// ConnectionGitlabEnterpriseConfigServiceDirectoryConfigInput is an input type that accepts ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs and ConnectionGitlabEnterpriseConfigServiceDirectoryConfigOutput values. +// You can construct a concrete instance of `ConnectionGitlabEnterpriseConfigServiceDirectoryConfigInput` via: +// +// ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs{...} +type ConnectionGitlabEnterpriseConfigServiceDirectoryConfigInput interface { + pulumi.Input + + ToConnectionGitlabEnterpriseConfigServiceDirectoryConfigOutput() ConnectionGitlabEnterpriseConfigServiceDirectoryConfigOutput + ToConnectionGitlabEnterpriseConfigServiceDirectoryConfigOutputWithContext(context.Context) ConnectionGitlabEnterpriseConfigServiceDirectoryConfigOutput +} + +type ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs struct { + // Required. The Service Directory service name. + // Format: + // projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + Service pulumi.StringInput `pulumi:"service"` +} + +func (ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ConnectionGitlabEnterpriseConfigServiceDirectoryConfig)(nil)).Elem() +} + +func (i ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs) ToConnectionGitlabEnterpriseConfigServiceDirectoryConfigOutput() ConnectionGitlabEnterpriseConfigServiceDirectoryConfigOutput { + return i.ToConnectionGitlabEnterpriseConfigServiceDirectoryConfigOutputWithContext(context.Background()) +} + +func (i ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs) ToConnectionGitlabEnterpriseConfigServiceDirectoryConfigOutputWithContext(ctx context.Context) ConnectionGitlabEnterpriseConfigServiceDirectoryConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionGitlabEnterpriseConfigServiceDirectoryConfigOutput) +} + +func (i ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs) ToConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutput() ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutput { + return i.ToConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutputWithContext(context.Background()) +} + +func (i ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs) ToConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutputWithContext(ctx context.Context) ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionGitlabEnterpriseConfigServiceDirectoryConfigOutput).ToConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutputWithContext(ctx) +} + +// ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrInput is an input type that accepts ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs, ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtr and ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutput values. +// You can construct a concrete instance of `ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrInput` via: +// +// ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs{...} +// +// or: +// +// nil +type ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrInput interface { + pulumi.Input + + ToConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutput() ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutput + ToConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutputWithContext(context.Context) ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutput +} + +type connectionGitlabEnterpriseConfigServiceDirectoryConfigPtrType ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs + +func ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtr(v *ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs) ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrInput { + return (*connectionGitlabEnterpriseConfigServiceDirectoryConfigPtrType)(v) +} + +func (*connectionGitlabEnterpriseConfigServiceDirectoryConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ConnectionGitlabEnterpriseConfigServiceDirectoryConfig)(nil)).Elem() +} + +func (i *connectionGitlabEnterpriseConfigServiceDirectoryConfigPtrType) ToConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutput() ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutput { + return i.ToConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutputWithContext(context.Background()) +} + +func (i *connectionGitlabEnterpriseConfigServiceDirectoryConfigPtrType) ToConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutputWithContext(ctx context.Context) ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutput) +} + +type ConnectionGitlabEnterpriseConfigServiceDirectoryConfigOutput struct{ *pulumi.OutputState } + +func (ConnectionGitlabEnterpriseConfigServiceDirectoryConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ConnectionGitlabEnterpriseConfigServiceDirectoryConfig)(nil)).Elem() +} + +func (o ConnectionGitlabEnterpriseConfigServiceDirectoryConfigOutput) ToConnectionGitlabEnterpriseConfigServiceDirectoryConfigOutput() ConnectionGitlabEnterpriseConfigServiceDirectoryConfigOutput { + return o +} + +func (o ConnectionGitlabEnterpriseConfigServiceDirectoryConfigOutput) ToConnectionGitlabEnterpriseConfigServiceDirectoryConfigOutputWithContext(ctx context.Context) ConnectionGitlabEnterpriseConfigServiceDirectoryConfigOutput { + return o +} + +func (o ConnectionGitlabEnterpriseConfigServiceDirectoryConfigOutput) ToConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutput() ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutput { + return o.ToConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutputWithContext(context.Background()) +} + +func (o ConnectionGitlabEnterpriseConfigServiceDirectoryConfigOutput) ToConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutputWithContext(ctx context.Context) ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ConnectionGitlabEnterpriseConfigServiceDirectoryConfig) *ConnectionGitlabEnterpriseConfigServiceDirectoryConfig { + return &v + }).(ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutput) +} + +// Required. The Service Directory service name. +// Format: +// projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. +func (o ConnectionGitlabEnterpriseConfigServiceDirectoryConfigOutput) Service() pulumi.StringOutput { + return o.ApplyT(func(v ConnectionGitlabEnterpriseConfigServiceDirectoryConfig) string { return v.Service }).(pulumi.StringOutput) +} + +type ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutput struct{ *pulumi.OutputState } + +func (ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ConnectionGitlabEnterpriseConfigServiceDirectoryConfig)(nil)).Elem() +} + +func (o ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutput) ToConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutput() ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutput { + return o +} + +func (o ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutput) ToConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutputWithContext(ctx context.Context) ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutput { + return o +} + +func (o ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutput) Elem() ConnectionGitlabEnterpriseConfigServiceDirectoryConfigOutput { + return o.ApplyT(func(v *ConnectionGitlabEnterpriseConfigServiceDirectoryConfig) ConnectionGitlabEnterpriseConfigServiceDirectoryConfig { + if v != nil { + return *v + } + var ret ConnectionGitlabEnterpriseConfigServiceDirectoryConfig + return ret + }).(ConnectionGitlabEnterpriseConfigServiceDirectoryConfigOutput) +} + +// Required. The Service Directory service name. +// Format: +// projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. +func (o ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutput) Service() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ConnectionGitlabEnterpriseConfigServiceDirectoryConfig) *string { + if v == nil { + return nil + } + return &v.Service + }).(pulumi.StringPtrOutput) +} + type ConnectionInstallationState struct { - // Output only. Link to follow for next action. Empty string if the - // installation is already complete. + // Output only. Link to follow for next action. Empty string if the installation is already + // complete. ActionUri *string `pulumi:"actionUri"` - // Output only. Message of what the user should do next to continue - // the installation.Empty string if the installation is already complete. + // Output only. Message of what the user should do next to continue the installation. + // Empty string if the installation is already complete. Message *string `pulumi:"message"` // (Output) // Output only. Current step of the installation process. @@ -443,11 +2390,11 @@ type ConnectionInstallationStateInput interface { } type ConnectionInstallationStateArgs struct { - // Output only. Link to follow for next action. Empty string if the - // installation is already complete. + // Output only. Link to follow for next action. Empty string if the installation is already + // complete. ActionUri pulumi.StringPtrInput `pulumi:"actionUri"` - // Output only. Message of what the user should do next to continue - // the installation.Empty string if the installation is already complete. + // Output only. Message of what the user should do next to continue the installation. + // Empty string if the installation is already complete. Message pulumi.StringPtrInput `pulumi:"message"` // (Output) // Output only. Current step of the installation process. @@ -511,14 +2458,14 @@ func (o ConnectionInstallationStateOutput) ToConnectionInstallationStateOutputWi return o } -// Output only. Link to follow for next action. Empty string if the -// installation is already complete. +// Output only. Link to follow for next action. Empty string if the installation is already +// complete. func (o ConnectionInstallationStateOutput) ActionUri() pulumi.StringPtrOutput { return o.ApplyT(func(v ConnectionInstallationState) *string { return v.ActionUri }).(pulumi.StringPtrOutput) } -// Output only. Message of what the user should do next to continue -// the installation.Empty string if the installation is already complete. +// Output only. Message of what the user should do next to continue the installation. +// Empty string if the installation is already complete. func (o ConnectionInstallationStateOutput) Message() pulumi.StringPtrOutput { return o.ApplyT(func(v ConnectionInstallationState) *string { return v.Message }).(pulumi.StringPtrOutput) } @@ -556,16 +2503,56 @@ func (o ConnectionInstallationStateArrayOutput) Index(i pulumi.IntInput) Connect } func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ConnectionCryptoKeyConfigInput)(nil)).Elem(), ConnectionCryptoKeyConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ConnectionCryptoKeyConfigPtrInput)(nil)).Elem(), ConnectionCryptoKeyConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*ConnectionGithubConfigInput)(nil)).Elem(), ConnectionGithubConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*ConnectionGithubConfigPtrInput)(nil)).Elem(), ConnectionGithubConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*ConnectionGithubConfigAuthorizerCredentialInput)(nil)).Elem(), ConnectionGithubConfigAuthorizerCredentialArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*ConnectionGithubConfigAuthorizerCredentialPtrInput)(nil)).Elem(), ConnectionGithubConfigAuthorizerCredentialArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ConnectionGithubEnterpriseConfigInput)(nil)).Elem(), ConnectionGithubEnterpriseConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ConnectionGithubEnterpriseConfigPtrInput)(nil)).Elem(), ConnectionGithubEnterpriseConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ConnectionGithubEnterpriseConfigServiceDirectoryConfigInput)(nil)).Elem(), ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrInput)(nil)).Elem(), ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ConnectionGitlabConfigInput)(nil)).Elem(), ConnectionGitlabConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ConnectionGitlabConfigPtrInput)(nil)).Elem(), ConnectionGitlabConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ConnectionGitlabConfigAuthorizerCredentialInput)(nil)).Elem(), ConnectionGitlabConfigAuthorizerCredentialArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ConnectionGitlabConfigAuthorizerCredentialPtrInput)(nil)).Elem(), ConnectionGitlabConfigAuthorizerCredentialArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ConnectionGitlabConfigReadAuthorizerCredentialInput)(nil)).Elem(), ConnectionGitlabConfigReadAuthorizerCredentialArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ConnectionGitlabConfigReadAuthorizerCredentialPtrInput)(nil)).Elem(), ConnectionGitlabConfigReadAuthorizerCredentialArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ConnectionGitlabEnterpriseConfigInput)(nil)).Elem(), ConnectionGitlabEnterpriseConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ConnectionGitlabEnterpriseConfigPtrInput)(nil)).Elem(), ConnectionGitlabEnterpriseConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ConnectionGitlabEnterpriseConfigAuthorizerCredentialInput)(nil)).Elem(), ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrInput)(nil)).Elem(), ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialInput)(nil)).Elem(), ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrInput)(nil)).Elem(), ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ConnectionGitlabEnterpriseConfigServiceDirectoryConfigInput)(nil)).Elem(), ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrInput)(nil)).Elem(), ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*ConnectionInstallationStateInput)(nil)).Elem(), ConnectionInstallationStateArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*ConnectionInstallationStateArrayInput)(nil)).Elem(), ConnectionInstallationStateArray{}) + pulumi.RegisterOutputType(ConnectionCryptoKeyConfigOutput{}) + pulumi.RegisterOutputType(ConnectionCryptoKeyConfigPtrOutput{}) pulumi.RegisterOutputType(ConnectionGithubConfigOutput{}) pulumi.RegisterOutputType(ConnectionGithubConfigPtrOutput{}) pulumi.RegisterOutputType(ConnectionGithubConfigAuthorizerCredentialOutput{}) pulumi.RegisterOutputType(ConnectionGithubConfigAuthorizerCredentialPtrOutput{}) + pulumi.RegisterOutputType(ConnectionGithubEnterpriseConfigOutput{}) + pulumi.RegisterOutputType(ConnectionGithubEnterpriseConfigPtrOutput{}) + pulumi.RegisterOutputType(ConnectionGithubEnterpriseConfigServiceDirectoryConfigOutput{}) + pulumi.RegisterOutputType(ConnectionGithubEnterpriseConfigServiceDirectoryConfigPtrOutput{}) + pulumi.RegisterOutputType(ConnectionGitlabConfigOutput{}) + pulumi.RegisterOutputType(ConnectionGitlabConfigPtrOutput{}) + pulumi.RegisterOutputType(ConnectionGitlabConfigAuthorizerCredentialOutput{}) + pulumi.RegisterOutputType(ConnectionGitlabConfigAuthorizerCredentialPtrOutput{}) + pulumi.RegisterOutputType(ConnectionGitlabConfigReadAuthorizerCredentialOutput{}) + pulumi.RegisterOutputType(ConnectionGitlabConfigReadAuthorizerCredentialPtrOutput{}) + pulumi.RegisterOutputType(ConnectionGitlabEnterpriseConfigOutput{}) + pulumi.RegisterOutputType(ConnectionGitlabEnterpriseConfigPtrOutput{}) + pulumi.RegisterOutputType(ConnectionGitlabEnterpriseConfigAuthorizerCredentialOutput{}) + pulumi.RegisterOutputType(ConnectionGitlabEnterpriseConfigAuthorizerCredentialPtrOutput{}) + pulumi.RegisterOutputType(ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialOutput{}) + pulumi.RegisterOutputType(ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialPtrOutput{}) + pulumi.RegisterOutputType(ConnectionGitlabEnterpriseConfigServiceDirectoryConfigOutput{}) + pulumi.RegisterOutputType(ConnectionGitlabEnterpriseConfigServiceDirectoryConfigPtrOutput{}) pulumi.RegisterOutputType(ConnectionInstallationStateOutput{}) pulumi.RegisterOutputType(ConnectionInstallationStateArrayOutput{}) } diff --git a/sdk/go/gcp/dns/pulumiTypes.go b/sdk/go/gcp/dns/pulumiTypes.go index 3b5b8aeebd..4f033c9aec 100644 --- a/sdk/go/gcp/dns/pulumiTypes.go +++ b/sdk/go/gcp/dns/pulumiTypes.go @@ -2432,6 +2432,8 @@ type RecordSetRoutingPolicy struct { // The configuration for Geolocation based routing policy. // Structure is documented below. Geos []RecordSetRoutingPolicyGeo `pulumi:"geos"` + // Specifies the health check (used with external endpoints). + HealthCheck *string `pulumi:"healthCheck"` // The configuration for a failover policy with global to regional failover. Queries are responded to with the global primary targets, but if none of the primary targets are healthy, then we fallback to a regional failover policy. // Structure is documented below. PrimaryBackup *RecordSetRoutingPolicyPrimaryBackup `pulumi:"primaryBackup"` @@ -2457,6 +2459,8 @@ type RecordSetRoutingPolicyArgs struct { // The configuration for Geolocation based routing policy. // Structure is documented below. Geos RecordSetRoutingPolicyGeoArrayInput `pulumi:"geos"` + // Specifies the health check (used with external endpoints). + HealthCheck pulumi.StringPtrInput `pulumi:"healthCheck"` // The configuration for a failover policy with global to regional failover. Queries are responded to with the global primary targets, but if none of the primary targets are healthy, then we fallback to a regional failover policy. // Structure is documented below. PrimaryBackup RecordSetRoutingPolicyPrimaryBackupPtrInput `pulumi:"primaryBackup"` @@ -2553,6 +2557,11 @@ func (o RecordSetRoutingPolicyOutput) Geos() RecordSetRoutingPolicyGeoArrayOutpu return o.ApplyT(func(v RecordSetRoutingPolicy) []RecordSetRoutingPolicyGeo { return v.Geos }).(RecordSetRoutingPolicyGeoArrayOutput) } +// Specifies the health check (used with external endpoints). +func (o RecordSetRoutingPolicyOutput) HealthCheck() pulumi.StringPtrOutput { + return o.ApplyT(func(v RecordSetRoutingPolicy) *string { return v.HealthCheck }).(pulumi.StringPtrOutput) +} + // The configuration for a failover policy with global to regional failover. Queries are responded to with the global primary targets, but if none of the primary targets are healthy, then we fallback to a regional failover policy. // Structure is documented below. func (o RecordSetRoutingPolicyOutput) PrimaryBackup() RecordSetRoutingPolicyPrimaryBackupPtrOutput { @@ -2610,6 +2619,16 @@ func (o RecordSetRoutingPolicyPtrOutput) Geos() RecordSetRoutingPolicyGeoArrayOu }).(RecordSetRoutingPolicyGeoArrayOutput) } +// Specifies the health check (used with external endpoints). +func (o RecordSetRoutingPolicyPtrOutput) HealthCheck() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RecordSetRoutingPolicy) *string { + if v == nil { + return nil + } + return v.HealthCheck + }).(pulumi.StringPtrOutput) +} + // The configuration for a failover policy with global to regional failover. Queries are responded to with the global primary targets, but if none of the primary targets are healthy, then we fallback to a regional failover policy. // Structure is documented below. func (o RecordSetRoutingPolicyPtrOutput) PrimaryBackup() RecordSetRoutingPolicyPrimaryBackupPtrOutput { @@ -2753,6 +2772,8 @@ func (o RecordSetRoutingPolicyGeoArrayOutput) Index(i pulumi.IntInput) RecordSet } type RecordSetRoutingPolicyGeoHealthCheckedTargets struct { + // The list of external endpoint addresses to health check. + ExternalEndpoints []string `pulumi:"externalEndpoints"` // The list of internal load balancers to health check. // Structure is documented below. InternalLoadBalancers []RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancer `pulumi:"internalLoadBalancers"` @@ -2770,6 +2791,8 @@ type RecordSetRoutingPolicyGeoHealthCheckedTargetsInput interface { } type RecordSetRoutingPolicyGeoHealthCheckedTargetsArgs struct { + // The list of external endpoint addresses to health check. + ExternalEndpoints pulumi.StringArrayInput `pulumi:"externalEndpoints"` // The list of internal load balancers to health check. // Structure is documented below. InternalLoadBalancers RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancerArrayInput `pulumi:"internalLoadBalancers"` @@ -2852,6 +2875,11 @@ func (o RecordSetRoutingPolicyGeoHealthCheckedTargetsOutput) ToRecordSetRoutingP }).(RecordSetRoutingPolicyGeoHealthCheckedTargetsPtrOutput) } +// The list of external endpoint addresses to health check. +func (o RecordSetRoutingPolicyGeoHealthCheckedTargetsOutput) ExternalEndpoints() pulumi.StringArrayOutput { + return o.ApplyT(func(v RecordSetRoutingPolicyGeoHealthCheckedTargets) []string { return v.ExternalEndpoints }).(pulumi.StringArrayOutput) +} + // The list of internal load balancers to health check. // Structure is documented below. func (o RecordSetRoutingPolicyGeoHealthCheckedTargetsOutput) InternalLoadBalancers() RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancerArrayOutput { @@ -2884,6 +2912,16 @@ func (o RecordSetRoutingPolicyGeoHealthCheckedTargetsPtrOutput) Elem() RecordSet }).(RecordSetRoutingPolicyGeoHealthCheckedTargetsOutput) } +// The list of external endpoint addresses to health check. +func (o RecordSetRoutingPolicyGeoHealthCheckedTargetsPtrOutput) ExternalEndpoints() pulumi.StringArrayOutput { + return o.ApplyT(func(v *RecordSetRoutingPolicyGeoHealthCheckedTargets) []string { + if v == nil { + return nil + } + return v.ExternalEndpoints + }).(pulumi.StringArrayOutput) +} + // The list of internal load balancers to health check. // Structure is documented below. func (o RecordSetRoutingPolicyGeoHealthCheckedTargetsPtrOutput) InternalLoadBalancers() RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancerArrayOutput { @@ -3369,6 +3407,8 @@ func (o RecordSetRoutingPolicyPrimaryBackupBackupGeoArrayOutput) Index(i pulumi. } type RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargets struct { + // The list of external endpoint addresses to health check. + ExternalEndpoints []string `pulumi:"externalEndpoints"` // The list of internal load balancers to health check. // Structure is documented below. InternalLoadBalancers []RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancer `pulumi:"internalLoadBalancers"` @@ -3386,6 +3426,8 @@ type RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInput inter } type RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs struct { + // The list of external endpoint addresses to health check. + ExternalEndpoints pulumi.StringArrayInput `pulumi:"externalEndpoints"` // The list of internal load balancers to health check. // Structure is documented below. InternalLoadBalancers RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancerArrayInput `pulumi:"internalLoadBalancers"` @@ -3468,6 +3510,13 @@ func (o RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsOutput) }).(RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsPtrOutput) } +// The list of external endpoint addresses to health check. +func (o RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsOutput) ExternalEndpoints() pulumi.StringArrayOutput { + return o.ApplyT(func(v RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargets) []string { + return v.ExternalEndpoints + }).(pulumi.StringArrayOutput) +} + // The list of internal load balancers to health check. // Structure is documented below. func (o RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsOutput) InternalLoadBalancers() RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancerArrayOutput { @@ -3500,6 +3549,16 @@ func (o RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsPtrOutpu }).(RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsOutput) } +// The list of external endpoint addresses to health check. +func (o RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsPtrOutput) ExternalEndpoints() pulumi.StringArrayOutput { + return o.ApplyT(func(v *RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargets) []string { + if v == nil { + return nil + } + return v.ExternalEndpoints + }).(pulumi.StringArrayOutput) +} + // The list of internal load balancers to health check. // Structure is documented below. func (o RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsPtrOutput) InternalLoadBalancers() RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancerArrayOutput { @@ -3677,6 +3736,8 @@ func (o RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternal } type RecordSetRoutingPolicyPrimaryBackupPrimary struct { + // The Internet IP addresses to be health checked. + ExternalEndpoints []string `pulumi:"externalEndpoints"` // The list of internal load balancers to health check. InternalLoadBalancers []RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancer `pulumi:"internalLoadBalancers"` } @@ -3693,6 +3754,8 @@ type RecordSetRoutingPolicyPrimaryBackupPrimaryInput interface { } type RecordSetRoutingPolicyPrimaryBackupPrimaryArgs struct { + // The Internet IP addresses to be health checked. + ExternalEndpoints pulumi.StringArrayInput `pulumi:"externalEndpoints"` // The list of internal load balancers to health check. InternalLoadBalancers RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArrayInput `pulumi:"internalLoadBalancers"` } @@ -3774,6 +3837,11 @@ func (o RecordSetRoutingPolicyPrimaryBackupPrimaryOutput) ToRecordSetRoutingPoli }).(RecordSetRoutingPolicyPrimaryBackupPrimaryPtrOutput) } +// The Internet IP addresses to be health checked. +func (o RecordSetRoutingPolicyPrimaryBackupPrimaryOutput) ExternalEndpoints() pulumi.StringArrayOutput { + return o.ApplyT(func(v RecordSetRoutingPolicyPrimaryBackupPrimary) []string { return v.ExternalEndpoints }).(pulumi.StringArrayOutput) +} + // The list of internal load balancers to health check. func (o RecordSetRoutingPolicyPrimaryBackupPrimaryOutput) InternalLoadBalancers() RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArrayOutput { return o.ApplyT(func(v RecordSetRoutingPolicyPrimaryBackupPrimary) []RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancer { @@ -3805,6 +3873,16 @@ func (o RecordSetRoutingPolicyPrimaryBackupPrimaryPtrOutput) Elem() RecordSetRou }).(RecordSetRoutingPolicyPrimaryBackupPrimaryOutput) } +// The Internet IP addresses to be health checked. +func (o RecordSetRoutingPolicyPrimaryBackupPrimaryPtrOutput) ExternalEndpoints() pulumi.StringArrayOutput { + return o.ApplyT(func(v *RecordSetRoutingPolicyPrimaryBackupPrimary) []string { + if v == nil { + return nil + } + return v.ExternalEndpoints + }).(pulumi.StringArrayOutput) +} + // The list of internal load balancers to health check. func (o RecordSetRoutingPolicyPrimaryBackupPrimaryPtrOutput) InternalLoadBalancers() RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArrayOutput { return o.ApplyT(func(v *RecordSetRoutingPolicyPrimaryBackupPrimary) []RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancer { @@ -4089,6 +4167,8 @@ func (o RecordSetRoutingPolicyWrrArrayOutput) Index(i pulumi.IntInput) RecordSet } type RecordSetRoutingPolicyWrrHealthCheckedTargets struct { + // The list of external endpoint addresses to health check. + ExternalEndpoints []string `pulumi:"externalEndpoints"` // The list of internal load balancers to health check. // Structure is documented below. InternalLoadBalancers []RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancer `pulumi:"internalLoadBalancers"` @@ -4106,6 +4186,8 @@ type RecordSetRoutingPolicyWrrHealthCheckedTargetsInput interface { } type RecordSetRoutingPolicyWrrHealthCheckedTargetsArgs struct { + // The list of external endpoint addresses to health check. + ExternalEndpoints pulumi.StringArrayInput `pulumi:"externalEndpoints"` // The list of internal load balancers to health check. // Structure is documented below. InternalLoadBalancers RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancerArrayInput `pulumi:"internalLoadBalancers"` @@ -4188,6 +4270,11 @@ func (o RecordSetRoutingPolicyWrrHealthCheckedTargetsOutput) ToRecordSetRoutingP }).(RecordSetRoutingPolicyWrrHealthCheckedTargetsPtrOutput) } +// The list of external endpoint addresses to health check. +func (o RecordSetRoutingPolicyWrrHealthCheckedTargetsOutput) ExternalEndpoints() pulumi.StringArrayOutput { + return o.ApplyT(func(v RecordSetRoutingPolicyWrrHealthCheckedTargets) []string { return v.ExternalEndpoints }).(pulumi.StringArrayOutput) +} + // The list of internal load balancers to health check. // Structure is documented below. func (o RecordSetRoutingPolicyWrrHealthCheckedTargetsOutput) InternalLoadBalancers() RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancerArrayOutput { @@ -4220,6 +4307,16 @@ func (o RecordSetRoutingPolicyWrrHealthCheckedTargetsPtrOutput) Elem() RecordSet }).(RecordSetRoutingPolicyWrrHealthCheckedTargetsOutput) } +// The list of external endpoint addresses to health check. +func (o RecordSetRoutingPolicyWrrHealthCheckedTargetsPtrOutput) ExternalEndpoints() pulumi.StringArrayOutput { + return o.ApplyT(func(v *RecordSetRoutingPolicyWrrHealthCheckedTargets) []string { + if v == nil { + return nil + } + return v.ExternalEndpoints + }).(pulumi.StringArrayOutput) +} + // The list of internal load balancers to health check. // Structure is documented below. func (o RecordSetRoutingPolicyWrrHealthCheckedTargetsPtrOutput) InternalLoadBalancers() RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancerArrayOutput { diff --git a/sdk/go/gcp/dns/recordSet.go b/sdk/go/gcp/dns/recordSet.go index 68bfe3773b..44c67c3151 100644 --- a/sdk/go/gcp/dns/recordSet.go +++ b/sdk/go/gcp/dns/recordSet.go @@ -403,6 +403,82 @@ import ( // // ``` // +// ### Public zone failover +// +// ```go +// package main +// +// import ( +// +// "fmt" +// +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute" +// "github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := compute.NewHealthCheck(ctx, "http-health-check", &compute.HealthCheckArgs{ +// Name: pulumi.String("http-health-check"), +// Description: pulumi.String("Health check via http"), +// TimeoutSec: pulumi.Int(5), +// CheckIntervalSec: pulumi.Int(30), +// HealthyThreshold: pulumi.Int(4), +// UnhealthyThreshold: pulumi.Int(5), +// HttpHealthCheck: &compute.HealthCheckHttpHealthCheckArgs{ +// PortSpecification: pulumi.String("USE_SERVING_PORT"), +// }, +// }) +// if err != nil { +// return err +// } +// prod, err := dns.NewManagedZone(ctx, "prod", &dns.ManagedZoneArgs{ +// Name: pulumi.String("prod-zone"), +// DnsName: pulumi.String("prod.mydomain.com."), +// }) +// if err != nil { +// return err +// } +// _, err = dns.NewRecordSet(ctx, "a", &dns.RecordSetArgs{ +// Name: prod.DnsName.ApplyT(func(dnsName string) (string, error) { +// return fmt.Sprintf("backend.%v", dnsName), nil +// }).(pulumi.StringOutput), +// ManagedZone: prod.Name, +// Type: pulumi.String("A"), +// Ttl: pulumi.Int(300), +// RoutingPolicy: &dns.RecordSetRoutingPolicyArgs{ +// HealthCheck: http_health_check.ID(), +// PrimaryBackup: &dns.RecordSetRoutingPolicyPrimaryBackupArgs{ +// TrickleRatio: pulumi.Float64(0.1), +// Primary: &dns.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs{ +// ExternalEndpoints: pulumi.StringArray{ +// pulumi.String("10.128.1.1"), +// }, +// }, +// BackupGeos: dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArray{ +// &dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs{ +// Location: pulumi.String("us-west1"), +// HealthCheckedTargets: &dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs{ +// ExternalEndpoints: pulumi.StringArray{ +// pulumi.String("10.130.1.1"), +// }, +// }, +// }, +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// // ## Import // // DNS record sets can be imported using either of these accepted formats: diff --git a/sdk/go/gcp/edgecontainer/pulumiTypes.go b/sdk/go/gcp/edgecontainer/pulumiTypes.go index 574a267514..b0322d298d 100644 --- a/sdk/go/gcp/edgecontainer/pulumiTypes.go +++ b/sdk/go/gcp/edgecontainer/pulumiTypes.go @@ -493,7 +493,7 @@ type ClusterControlPlaneEncryption struct { // If populated, this field contains the error status reported by Cloud KMS. // Structure is documented below. // - // The `kmsStatus` block contains: + // The `kmsStatus` block contains: KmsStatuses []ClusterControlPlaneEncryptionKmsStatus `pulumi:"kmsStatuses"` } @@ -530,7 +530,7 @@ type ClusterControlPlaneEncryptionArgs struct { // If populated, this field contains the error status reported by Cloud KMS. // Structure is documented below. // - // The `kmsStatus` block contains: + // The `kmsStatus` block contains: KmsStatuses ClusterControlPlaneEncryptionKmsStatusArrayInput `pulumi:"kmsStatuses"` } @@ -641,7 +641,7 @@ func (o ClusterControlPlaneEncryptionOutput) KmsKeyState() pulumi.StringPtrOutpu // If populated, this field contains the error status reported by Cloud KMS. // Structure is documented below. // -// The `kmsStatus` block contains: +// The `kmsStatus` block contains: func (o ClusterControlPlaneEncryptionOutput) KmsStatuses() ClusterControlPlaneEncryptionKmsStatusArrayOutput { return o.ApplyT(func(v ClusterControlPlaneEncryption) []ClusterControlPlaneEncryptionKmsStatus { return v.KmsStatuses }).(ClusterControlPlaneEncryptionKmsStatusArrayOutput) } @@ -715,7 +715,7 @@ func (o ClusterControlPlaneEncryptionPtrOutput) KmsKeyState() pulumi.StringPtrOu // If populated, this field contains the error status reported by Cloud KMS. // Structure is documented below. // -// The `kmsStatus` block contains: +// The `kmsStatus` block contains: func (o ClusterControlPlaneEncryptionPtrOutput) KmsStatuses() ClusterControlPlaneEncryptionKmsStatusArrayOutput { return o.ApplyT(func(v *ClusterControlPlaneEncryption) []ClusterControlPlaneEncryptionKmsStatus { if v == nil { diff --git a/sdk/go/gcp/gkeonprem/pulumiTypes.go b/sdk/go/gcp/gkeonprem/pulumiTypes.go index d4ee35dd2f..ac3a4a7407 100644 --- a/sdk/go/gcp/gkeonprem/pulumiTypes.go +++ b/sdk/go/gcp/gkeonprem/pulumiTypes.go @@ -13563,7 +13563,7 @@ func (o VMwareClusterControlPlaneNodePtrOutput) VsphereConfigs() VMwareClusterCo type VMwareClusterControlPlaneNodeAutoResizeConfig struct { // Whether to enable control plane node auto resizing. // - // The `vsphereConfig` block contains: + // The `vsphereConfig` block contains: Enabled bool `pulumi:"enabled"` } @@ -13581,7 +13581,7 @@ type VMwareClusterControlPlaneNodeAutoResizeConfigInput interface { type VMwareClusterControlPlaneNodeAutoResizeConfigArgs struct { // Whether to enable control plane node auto resizing. // - // The `vsphereConfig` block contains: + // The `vsphereConfig` block contains: Enabled pulumi.BoolInput `pulumi:"enabled"` } @@ -13664,7 +13664,7 @@ func (o VMwareClusterControlPlaneNodeAutoResizeConfigOutput) ToVMwareClusterCont // Whether to enable control plane node auto resizing. // -// The `vsphereConfig` block contains: +// The `vsphereConfig` block contains: func (o VMwareClusterControlPlaneNodeAutoResizeConfigOutput) Enabled() pulumi.BoolOutput { return o.ApplyT(func(v VMwareClusterControlPlaneNodeAutoResizeConfig) bool { return v.Enabled }).(pulumi.BoolOutput) } @@ -13695,7 +13695,7 @@ func (o VMwareClusterControlPlaneNodeAutoResizeConfigPtrOutput) Elem() VMwareClu // Whether to enable control plane node auto resizing. // -// The `vsphereConfig` block contains: +// The `vsphereConfig` block contains: func (o VMwareClusterControlPlaneNodeAutoResizeConfigPtrOutput) Enabled() pulumi.BoolPtrOutput { return o.ApplyT(func(v *VMwareClusterControlPlaneNodeAutoResizeConfig) *bool { if v == nil { @@ -14993,7 +14993,7 @@ type VMwareClusterLoadBalancerVipConfig struct { ControlPlaneVip *string `pulumi:"controlPlaneVip"` // The VIP which you previously set aside for ingress traffic into this cluster. // - // The `f5Config` block supports: + // The `f5Config` block supports: IngressVip *string `pulumi:"ingressVip"` } @@ -15013,7 +15013,7 @@ type VMwareClusterLoadBalancerVipConfigArgs struct { ControlPlaneVip pulumi.StringPtrInput `pulumi:"controlPlaneVip"` // The VIP which you previously set aside for ingress traffic into this cluster. // - // The `f5Config` block supports: + // The `f5Config` block supports: IngressVip pulumi.StringPtrInput `pulumi:"ingressVip"` } @@ -15101,7 +15101,7 @@ func (o VMwareClusterLoadBalancerVipConfigOutput) ControlPlaneVip() pulumi.Strin // The VIP which you previously set aside for ingress traffic into this cluster. // -// The `f5Config` block supports: +// The `f5Config` block supports: func (o VMwareClusterLoadBalancerVipConfigOutput) IngressVip() pulumi.StringPtrOutput { return o.ApplyT(func(v VMwareClusterLoadBalancerVipConfig) *string { return v.IngressVip }).(pulumi.StringPtrOutput) } @@ -15142,7 +15142,7 @@ func (o VMwareClusterLoadBalancerVipConfigPtrOutput) ControlPlaneVip() pulumi.St // The VIP which you previously set aside for ingress traffic into this cluster. // -// The `f5Config` block supports: +// The `f5Config` block supports: func (o VMwareClusterLoadBalancerVipConfigPtrOutput) IngressVip() pulumi.StringPtrOutput { return o.ApplyT(func(v *VMwareClusterLoadBalancerVipConfig) *string { if v == nil { @@ -16003,7 +16003,7 @@ func (o VMwareClusterNetworkConfigDhcpIpConfigPtrOutput) Enabled() pulumi.BoolPt type VMwareClusterNetworkConfigHostConfig struct { // DNS search domains. // - // The `controlPlaneV2Config` block supports: + // The `controlPlaneV2Config` block supports: DnsSearchDomains []string `pulumi:"dnsSearchDomains"` // DNS servers. DnsServers []string `pulumi:"dnsServers"` @@ -16025,7 +16025,7 @@ type VMwareClusterNetworkConfigHostConfigInput interface { type VMwareClusterNetworkConfigHostConfigArgs struct { // DNS search domains. // - // The `controlPlaneV2Config` block supports: + // The `controlPlaneV2Config` block supports: DnsSearchDomains pulumi.StringArrayInput `pulumi:"dnsSearchDomains"` // DNS servers. DnsServers pulumi.StringArrayInput `pulumi:"dnsServers"` @@ -16112,7 +16112,7 @@ func (o VMwareClusterNetworkConfigHostConfigOutput) ToVMwareClusterNetworkConfig // DNS search domains. // -// The `controlPlaneV2Config` block supports: +// The `controlPlaneV2Config` block supports: func (o VMwareClusterNetworkConfigHostConfigOutput) DnsSearchDomains() pulumi.StringArrayOutput { return o.ApplyT(func(v VMwareClusterNetworkConfigHostConfig) []string { return v.DnsSearchDomains }).(pulumi.StringArrayOutput) } @@ -16153,7 +16153,7 @@ func (o VMwareClusterNetworkConfigHostConfigPtrOutput) Elem() VMwareClusterNetwo // DNS search domains. // -// The `controlPlaneV2Config` block supports: +// The `controlPlaneV2Config` block supports: func (o VMwareClusterNetworkConfigHostConfigPtrOutput) DnsSearchDomains() pulumi.StringArrayOutput { return o.ApplyT(func(v *VMwareClusterNetworkConfigHostConfig) []string { if v == nil { @@ -20802,7 +20802,7 @@ func (o VmwareAdminClusterLoadBalancerMetalLbConfigPtrOutput) Enabled() pulumi.B type VmwareAdminClusterLoadBalancerVipConfig struct { // The VIP to configure the load balancer for add-ons. // - // The `f5Config` block supports: + // The `f5Config` block supports: AddonsVip *string `pulumi:"addonsVip"` // The VIP which you previously set aside for the Kubernetes // API of this VMware Admin Cluster. @@ -20823,7 +20823,7 @@ type VmwareAdminClusterLoadBalancerVipConfigInput interface { type VmwareAdminClusterLoadBalancerVipConfigArgs struct { // The VIP to configure the load balancer for add-ons. // - // The `f5Config` block supports: + // 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. @@ -20909,7 +20909,7 @@ func (o VmwareAdminClusterLoadBalancerVipConfigOutput) ToVmwareAdminClusterLoadB // The VIP to configure the load balancer for add-ons. // -// The `f5Config` block supports: +// The `f5Config` block supports: func (o VmwareAdminClusterLoadBalancerVipConfigOutput) AddonsVip() pulumi.StringPtrOutput { return o.ApplyT(func(v VmwareAdminClusterLoadBalancerVipConfig) *string { return v.AddonsVip }).(pulumi.StringPtrOutput) } @@ -20946,7 +20946,7 @@ func (o VmwareAdminClusterLoadBalancerVipConfigPtrOutput) Elem() VmwareAdminClus // The VIP to configure the load balancer for add-ons. // -// The `f5Config` block supports: +// The `f5Config` block supports: func (o VmwareAdminClusterLoadBalancerVipConfigPtrOutput) AddonsVip() pulumi.StringPtrOutput { return o.ApplyT(func(v *VmwareAdminClusterLoadBalancerVipConfig) *string { if v == nil { @@ -22405,7 +22405,7 @@ type VmwareAdminClusterPlatformConfig struct { // ResourceStatus representing detailed cluster state. // Structure is documented below. // - // The `status` block contains: + // The `status` block contains: Statuses []VmwareAdminClusterPlatformConfigStatus `pulumi:"statuses"` } @@ -22438,7 +22438,7 @@ type VmwareAdminClusterPlatformConfigArgs struct { // ResourceStatus representing detailed cluster state. // Structure is documented below. // - // The `status` block contains: + // The `status` block contains: Statuses VmwareAdminClusterPlatformConfigStatusArrayInput `pulumi:"statuses"` } @@ -22545,7 +22545,7 @@ func (o VmwareAdminClusterPlatformConfigOutput) RequiredPlatformVersion() pulumi // ResourceStatus representing detailed cluster state. // Structure is documented below. // -// The `status` block contains: +// The `status` block contains: func (o VmwareAdminClusterPlatformConfigOutput) Statuses() VmwareAdminClusterPlatformConfigStatusArrayOutput { return o.ApplyT(func(v VmwareAdminClusterPlatformConfig) []VmwareAdminClusterPlatformConfigStatus { return v.Statuses }).(VmwareAdminClusterPlatformConfigStatusArrayOutput) } @@ -22615,7 +22615,7 @@ func (o VmwareAdminClusterPlatformConfigPtrOutput) RequiredPlatformVersion() pul // ResourceStatus representing detailed cluster state. // Structure is documented below. // -// The `status` block contains: +// The `status` block contains: func (o VmwareAdminClusterPlatformConfigPtrOutput) Statuses() VmwareAdminClusterPlatformConfigStatusArrayOutput { return o.ApplyT(func(v *VmwareAdminClusterPlatformConfig) []VmwareAdminClusterPlatformConfigStatus { if v == nil { diff --git a/sdk/go/gcp/gkeonprem/vmwareCluster.go b/sdk/go/gcp/gkeonprem/vmwareCluster.go index e27310233d..dfbdc2edd0 100644 --- a/sdk/go/gcp/gkeonprem/vmwareCluster.go +++ b/sdk/go/gcp/gkeonprem/vmwareCluster.go @@ -428,7 +428,7 @@ type VMwareCluster struct { // Structure is documented below. ValidationChecks VMwareClusterValidationCheckArrayOutput `pulumi:"validationChecks"` // VmwareVCenterConfig specifies vCenter config for the user cluster. Inherited from the admin cluster. - Vcenter VMwareClusterVcenterPtrOutput `pulumi:"vcenter"` + Vcenter VMwareClusterVcenterOutput `pulumi:"vcenter"` // Enable VM tracking. VmTrackingEnabled pulumi.BoolOutput `pulumi:"vmTrackingEnabled"` } @@ -1042,8 +1042,8 @@ func (o VMwareClusterOutput) ValidationChecks() VMwareClusterValidationCheckArra } // VmwareVCenterConfig specifies vCenter config for the user cluster. Inherited from the admin cluster. -func (o VMwareClusterOutput) Vcenter() VMwareClusterVcenterPtrOutput { - return o.ApplyT(func(v *VMwareCluster) VMwareClusterVcenterPtrOutput { return v.Vcenter }).(VMwareClusterVcenterPtrOutput) +func (o VMwareClusterOutput) Vcenter() VMwareClusterVcenterOutput { + return o.ApplyT(func(v *VMwareCluster) VMwareClusterVcenterOutput { return v.Vcenter }).(VMwareClusterVcenterOutput) } // Enable VM tracking. diff --git a/sdk/go/gcp/iap/pulumiTypes.go b/sdk/go/gcp/iap/pulumiTypes.go index 0080fa987b..0cf771682e 100644 --- a/sdk/go/gcp/iap/pulumiTypes.go +++ b/sdk/go/gcp/iap/pulumiTypes.go @@ -785,7 +785,8 @@ type SettingsAccessSettings struct { // Structure is documented below. CorsSettings *SettingsAccessSettingsCorsSettings `pulumi:"corsSettings"` // GCIP claims and endpoint configurations for 3p identity providers. - // Structure is documented below. + // * Enabling gcipSetting significantly changes the way IAP authenticates users. Identity Platform does not support IAM, so IAP will not enforce any IAM policies for requests to your application. + // Structure is documented below. GcipSettings *SettingsAccessSettingsGcipSettings `pulumi:"gcipSettings"` // Identity sources that IAP can use to authenticate the end user. Only one identity source // can be configured. The possible values are: @@ -824,7 +825,8 @@ type SettingsAccessSettingsArgs struct { // Structure is documented below. CorsSettings SettingsAccessSettingsCorsSettingsPtrInput `pulumi:"corsSettings"` // GCIP claims and endpoint configurations for 3p identity providers. - // Structure is documented below. + // * Enabling gcipSetting significantly changes the way IAP authenticates users. Identity Platform does not support IAM, so IAP will not enforce any IAM policies for requests to your application. + // Structure is documented below. GcipSettings SettingsAccessSettingsGcipSettingsPtrInput `pulumi:"gcipSettings"` // Identity sources that IAP can use to authenticate the end user. Only one identity source // can be configured. The possible values are: @@ -936,7 +938,8 @@ func (o SettingsAccessSettingsOutput) CorsSettings() SettingsAccessSettingsCorsS } // GCIP claims and endpoint configurations for 3p identity providers. -// Structure is documented below. +// - Enabling gcipSetting significantly changes the way IAP authenticates users. Identity Platform does not support IAM, so IAP will not enforce any IAM policies for requests to your application. +// Structure is documented below. func (o SettingsAccessSettingsOutput) GcipSettings() SettingsAccessSettingsGcipSettingsPtrOutput { return o.ApplyT(func(v SettingsAccessSettings) *SettingsAccessSettingsGcipSettings { return v.GcipSettings }).(SettingsAccessSettingsGcipSettingsPtrOutput) } @@ -1018,7 +1021,8 @@ func (o SettingsAccessSettingsPtrOutput) CorsSettings() SettingsAccessSettingsCo } // GCIP claims and endpoint configurations for 3p identity providers. -// Structure is documented below. +// - Enabling gcipSetting significantly changes the way IAP authenticates users. Identity Platform does not support IAM, so IAP will not enforce any IAM policies for requests to your application. +// Structure is documented below. func (o SettingsAccessSettingsPtrOutput) GcipSettings() SettingsAccessSettingsGcipSettingsPtrOutput { return o.ApplyT(func(v *SettingsAccessSettings) *SettingsAccessSettingsGcipSettings { if v == nil { @@ -1559,6 +1563,7 @@ type SettingsAccessSettingsOauthSettings struct { // (https://developers.google.com/identity/protocols/OpenIDConnect#hd-param) // Note: IAP does not verify that the id token's hd claim matches this value // since access behavior is managed by IAM policies. + // * loginHint setting is not a replacement for access control. Always enforce an appropriate access policy if you want to restrict access to users outside your domain. LoginHint *string `pulumi:"loginHint"` // List of client ids allowed to use IAP programmatically. ProgrammaticClients []string `pulumi:"programmaticClients"` @@ -1581,6 +1586,7 @@ type SettingsAccessSettingsOauthSettingsArgs struct { // (https://developers.google.com/identity/protocols/OpenIDConnect#hd-param) // Note: IAP does not verify that the id token's hd claim matches this value // since access behavior is managed by IAM policies. + // * loginHint setting is not a replacement for access control. Always enforce an appropriate access policy if you want to restrict access to users outside your domain. LoginHint pulumi.StringPtrInput `pulumi:"loginHint"` // List of client ids allowed to use IAP programmatically. ProgrammaticClients pulumi.StringArrayInput `pulumi:"programmaticClients"` @@ -1668,6 +1674,7 @@ func (o SettingsAccessSettingsOauthSettingsOutput) ToSettingsAccessSettingsOauth // (https://developers.google.com/identity/protocols/OpenIDConnect#hd-param) // Note: IAP does not verify that the id token's hd claim matches this value // since access behavior is managed by IAM policies. +// * loginHint setting is not a replacement for access control. Always enforce an appropriate access policy if you want to restrict access to users outside your domain. func (o SettingsAccessSettingsOauthSettingsOutput) LoginHint() pulumi.StringPtrOutput { return o.ApplyT(func(v SettingsAccessSettingsOauthSettings) *string { return v.LoginHint }).(pulumi.StringPtrOutput) } @@ -1706,6 +1713,7 @@ func (o SettingsAccessSettingsOauthSettingsPtrOutput) Elem() SettingsAccessSetti // (https://developers.google.com/identity/protocols/OpenIDConnect#hd-param) // Note: IAP does not verify that the id token's hd claim matches this value // since access behavior is managed by IAM policies. +// * loginHint setting is not a replacement for access control. Always enforce an appropriate access policy if you want to restrict access to users outside your domain. func (o SettingsAccessSettingsOauthSettingsPtrOutput) LoginHint() pulumi.StringPtrOutput { return o.ApplyT(func(v *SettingsAccessSettingsOauthSettings) *string { if v == nil { @@ -1953,7 +1961,7 @@ type SettingsAccessSettingsWorkforceIdentitySettings struct { // federation services. // Structure is documented below. // - // The `oauth2` block supports: + // The `oauth2` block supports: Oauth2 *SettingsAccessSettingsWorkforceIdentitySettingsOauth2 `pulumi:"oauth2"` // The workforce pool resources. Only one workforce pool is accepted. WorkforcePools *string `pulumi:"workforcePools"` @@ -1975,7 +1983,7 @@ type SettingsAccessSettingsWorkforceIdentitySettingsArgs struct { // federation services. // Structure is documented below. // - // The `oauth2` block supports: + // The `oauth2` block supports: Oauth2 SettingsAccessSettingsWorkforceIdentitySettingsOauth2PtrInput `pulumi:"oauth2"` // The workforce pool resources. Only one workforce pool is accepted. WorkforcePools pulumi.StringPtrInput `pulumi:"workforcePools"` @@ -2062,7 +2070,7 @@ func (o SettingsAccessSettingsWorkforceIdentitySettingsOutput) ToSettingsAccessS // federation services. // Structure is documented below. // -// The `oauth2` block supports: +// The `oauth2` block supports: func (o SettingsAccessSettingsWorkforceIdentitySettingsOutput) Oauth2() SettingsAccessSettingsWorkforceIdentitySettingsOauth2PtrOutput { return o.ApplyT(func(v SettingsAccessSettingsWorkforceIdentitySettings) *SettingsAccessSettingsWorkforceIdentitySettingsOauth2 { return v.Oauth2 @@ -2102,7 +2110,7 @@ func (o SettingsAccessSettingsWorkforceIdentitySettingsPtrOutput) Elem() Setting // federation services. // Structure is documented below. // -// The `oauth2` block supports: +// The `oauth2` block supports: func (o SettingsAccessSettingsWorkforceIdentitySettingsPtrOutput) Oauth2() SettingsAccessSettingsWorkforceIdentitySettingsOauth2PtrOutput { return o.ApplyT(func(v *SettingsAccessSettingsWorkforceIdentitySettings) *SettingsAccessSettingsWorkforceIdentitySettingsOauth2 { if v == nil { diff --git a/sdk/go/gcp/iap/settings.go b/sdk/go/gcp/iap/settings.go index 1e9573e127..89c15b0b08 100644 --- a/sdk/go/gcp/iap/settings.go +++ b/sdk/go/gcp/iap/settings.go @@ -157,15 +157,15 @@ type Settings struct { // The resource name of the IAP protected resource. Name can have below resources: // * organizations/{organization_id} // * folders/{folder_id} - // * projects/{projects_id} - // * projects/{projects_id}/iap_web - // * projects/{projects_id}/iap_web/compute - // * projects/{projects_id}/iap_web/compute-{region} - // * projects/{projects_id}/iap_web/compute/service/{service_id} - // * projects/{projects_id}/iap_web/compute-{region}/service/{service_id} - // * projects/{projects_id}/iap_web/appengine-{app_id} - // * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id} - // * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id} + // * projects/{project_id} + // * projects/{project_id}/iap_web + // * projects/{project_id}/iap_web/compute + // * projects/{project_id}/iap_web/compute-{region} + // * projects/{project_id}/iap_web/compute/services/{service_id} + // * projects/{project_id}/iap_web/compute-{region}/services/{service_id} + // * projects/{project_id}/iap_web/appengine-{app_id} + // * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id} + // * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id} // // *** Name pulumi.StringOutput `pulumi:"name"` @@ -210,15 +210,15 @@ type settingsState struct { // The resource name of the IAP protected resource. Name can have below resources: // * organizations/{organization_id} // * folders/{folder_id} - // * projects/{projects_id} - // * projects/{projects_id}/iap_web - // * projects/{projects_id}/iap_web/compute - // * projects/{projects_id}/iap_web/compute-{region} - // * projects/{projects_id}/iap_web/compute/service/{service_id} - // * projects/{projects_id}/iap_web/compute-{region}/service/{service_id} - // * projects/{projects_id}/iap_web/appengine-{app_id} - // * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id} - // * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id} + // * projects/{project_id} + // * projects/{project_id}/iap_web + // * projects/{project_id}/iap_web/compute + // * projects/{project_id}/iap_web/compute-{region} + // * projects/{project_id}/iap_web/compute/services/{service_id} + // * projects/{project_id}/iap_web/compute-{region}/services/{service_id} + // * projects/{project_id}/iap_web/appengine-{app_id} + // * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id} + // * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id} // // *** Name *string `pulumi:"name"` @@ -234,15 +234,15 @@ type SettingsState struct { // The resource name of the IAP protected resource. Name can have below resources: // * organizations/{organization_id} // * folders/{folder_id} - // * projects/{projects_id} - // * projects/{projects_id}/iap_web - // * projects/{projects_id}/iap_web/compute - // * projects/{projects_id}/iap_web/compute-{region} - // * projects/{projects_id}/iap_web/compute/service/{service_id} - // * projects/{projects_id}/iap_web/compute-{region}/service/{service_id} - // * projects/{projects_id}/iap_web/appengine-{app_id} - // * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id} - // * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id} + // * projects/{project_id} + // * projects/{project_id}/iap_web + // * projects/{project_id}/iap_web/compute + // * projects/{project_id}/iap_web/compute-{region} + // * projects/{project_id}/iap_web/compute/services/{service_id} + // * projects/{project_id}/iap_web/compute-{region}/services/{service_id} + // * projects/{project_id}/iap_web/appengine-{app_id} + // * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id} + // * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id} // // *** Name pulumi.StringPtrInput @@ -262,15 +262,15 @@ type settingsArgs struct { // The resource name of the IAP protected resource. Name can have below resources: // * organizations/{organization_id} // * folders/{folder_id} - // * projects/{projects_id} - // * projects/{projects_id}/iap_web - // * projects/{projects_id}/iap_web/compute - // * projects/{projects_id}/iap_web/compute-{region} - // * projects/{projects_id}/iap_web/compute/service/{service_id} - // * projects/{projects_id}/iap_web/compute-{region}/service/{service_id} - // * projects/{projects_id}/iap_web/appengine-{app_id} - // * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id} - // * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id} + // * projects/{project_id} + // * projects/{project_id}/iap_web + // * projects/{project_id}/iap_web/compute + // * projects/{project_id}/iap_web/compute-{region} + // * projects/{project_id}/iap_web/compute/services/{service_id} + // * projects/{project_id}/iap_web/compute-{region}/services/{service_id} + // * projects/{project_id}/iap_web/appengine-{app_id} + // * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id} + // * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id} // // *** Name *string `pulumi:"name"` @@ -287,15 +287,15 @@ type SettingsArgs struct { // The resource name of the IAP protected resource. Name can have below resources: // * organizations/{organization_id} // * folders/{folder_id} - // * projects/{projects_id} - // * projects/{projects_id}/iap_web - // * projects/{projects_id}/iap_web/compute - // * projects/{projects_id}/iap_web/compute-{region} - // * projects/{projects_id}/iap_web/compute/service/{service_id} - // * projects/{projects_id}/iap_web/compute-{region}/service/{service_id} - // * projects/{projects_id}/iap_web/appengine-{app_id} - // * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id} - // * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id} + // * projects/{project_id} + // * projects/{project_id}/iap_web + // * projects/{project_id}/iap_web/compute + // * projects/{project_id}/iap_web/compute-{region} + // * projects/{project_id}/iap_web/compute/services/{service_id} + // * projects/{project_id}/iap_web/compute-{region}/services/{service_id} + // * projects/{project_id}/iap_web/appengine-{app_id} + // * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id} + // * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id} // // *** Name pulumi.StringPtrInput @@ -403,15 +403,15 @@ func (o SettingsOutput) ApplicationSettings() SettingsApplicationSettingsPtrOutp // The resource name of the IAP protected resource. Name can have below resources: // * organizations/{organization_id} // * folders/{folder_id} -// * projects/{projects_id} -// * projects/{projects_id}/iap_web -// * projects/{projects_id}/iap_web/compute -// * projects/{projects_id}/iap_web/compute-{region} -// * projects/{projects_id}/iap_web/compute/service/{service_id} -// * projects/{projects_id}/iap_web/compute-{region}/service/{service_id} -// * projects/{projects_id}/iap_web/appengine-{app_id} -// * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id} -// * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id} +// * projects/{project_id} +// * projects/{project_id}/iap_web +// * projects/{project_id}/iap_web/compute +// * projects/{project_id}/iap_web/compute-{region} +// * projects/{project_id}/iap_web/compute/services/{service_id} +// * projects/{project_id}/iap_web/compute-{region}/services/{service_id} +// * projects/{project_id}/iap_web/appengine-{app_id} +// * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id} +// * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id} // // *** func (o SettingsOutput) Name() pulumi.StringOutput { diff --git a/sdk/go/gcp/identityplatform/pulumiTypes.go b/sdk/go/gcp/identityplatform/pulumiTypes.go index 40d48d3c9c..a27e0d3ef7 100644 --- a/sdk/go/gcp/identityplatform/pulumiTypes.go +++ b/sdk/go/gcp/identityplatform/pulumiTypes.go @@ -2255,7 +2255,7 @@ func (o ConfigSignInPtrOutput) PhoneNumber() ConfigSignInPhoneNumberPtrOutput { type ConfigSignInAnonymous struct { // Whether anonymous user auth is enabled for the project or not. // - // The `hashConfig` block contains: + // The `hashConfig` block contains: Enabled bool `pulumi:"enabled"` } @@ -2273,7 +2273,7 @@ type ConfigSignInAnonymousInput interface { type ConfigSignInAnonymousArgs struct { // Whether anonymous user auth is enabled for the project or not. // - // The `hashConfig` block contains: + // The `hashConfig` block contains: Enabled pulumi.BoolInput `pulumi:"enabled"` } @@ -2356,7 +2356,7 @@ func (o ConfigSignInAnonymousOutput) ToConfigSignInAnonymousPtrOutputWithContext // Whether anonymous user auth is enabled for the project or not. // -// The `hashConfig` block contains: +// The `hashConfig` block contains: func (o ConfigSignInAnonymousOutput) Enabled() pulumi.BoolOutput { return o.ApplyT(func(v ConfigSignInAnonymous) bool { return v.Enabled }).(pulumi.BoolOutput) } @@ -2387,7 +2387,7 @@ func (o ConfigSignInAnonymousPtrOutput) Elem() ConfigSignInAnonymousOutput { // Whether anonymous user auth is enabled for the project or not. // -// The `hashConfig` block contains: +// The `hashConfig` block contains: func (o ConfigSignInAnonymousPtrOutput) Enabled() pulumi.BoolPtrOutput { return o.ApplyT(func(v *ConfigSignInAnonymous) *bool { if v == nil { @@ -3592,7 +3592,7 @@ type InboundSamlConfigSpConfig struct { // The IDP's certificate data to verify the signature in the SAMLResponse issued by the IDP. // Structure is documented below. // - // The `spCertificates` block contains: + // The `spCertificates` block contains: SpCertificates []InboundSamlConfigSpConfigSpCertificate `pulumi:"spCertificates"` // Unique identifier for all SAML entities. SpEntityId *string `pulumi:"spEntityId"` @@ -3616,7 +3616,7 @@ type InboundSamlConfigSpConfigArgs struct { // The IDP's certificate data to verify the signature in the SAMLResponse issued by the IDP. // Structure is documented below. // - // The `spCertificates` block contains: + // The `spCertificates` block contains: SpCertificates InboundSamlConfigSpConfigSpCertificateArrayInput `pulumi:"spCertificates"` // Unique identifier for all SAML entities. SpEntityId pulumi.StringPtrInput `pulumi:"spEntityId"` @@ -3708,7 +3708,7 @@ func (o InboundSamlConfigSpConfigOutput) CallbackUri() pulumi.StringPtrOutput { // The IDP's certificate data to verify the signature in the SAMLResponse issued by the IDP. // Structure is documented below. // -// The `spCertificates` block contains: +// The `spCertificates` block contains: func (o InboundSamlConfigSpConfigOutput) SpCertificates() InboundSamlConfigSpConfigSpCertificateArrayOutput { return o.ApplyT(func(v InboundSamlConfigSpConfig) []InboundSamlConfigSpConfigSpCertificate { return v.SpCertificates }).(InboundSamlConfigSpConfigSpCertificateArrayOutput) } @@ -3756,7 +3756,7 @@ func (o InboundSamlConfigSpConfigPtrOutput) CallbackUri() pulumi.StringPtrOutput // The IDP's certificate data to verify the signature in the SAMLResponse issued by the IDP. // Structure is documented below. // -// The `spCertificates` block contains: +// The `spCertificates` block contains: func (o InboundSamlConfigSpConfigPtrOutput) SpCertificates() InboundSamlConfigSpConfigSpCertificateArrayOutput { return o.ApplyT(func(v *InboundSamlConfigSpConfig) []InboundSamlConfigSpConfigSpCertificate { if v == nil { @@ -4177,7 +4177,7 @@ type TenantInboundSamlConfigSpConfig struct { // The IDP's certificate data to verify the signature in the SAMLResponse issued by the IDP. // Structure is documented below. // - // The `spCertificates` block contains: + // The `spCertificates` block contains: SpCertificates []TenantInboundSamlConfigSpConfigSpCertificate `pulumi:"spCertificates"` // Unique identifier for all SAML entities. SpEntityId string `pulumi:"spEntityId"` @@ -4201,7 +4201,7 @@ type TenantInboundSamlConfigSpConfigArgs struct { // The IDP's certificate data to verify the signature in the SAMLResponse issued by the IDP. // Structure is documented below. // - // The `spCertificates` block contains: + // The `spCertificates` block contains: SpCertificates TenantInboundSamlConfigSpConfigSpCertificateArrayInput `pulumi:"spCertificates"` // Unique identifier for all SAML entities. SpEntityId pulumi.StringInput `pulumi:"spEntityId"` @@ -4293,7 +4293,7 @@ func (o TenantInboundSamlConfigSpConfigOutput) CallbackUri() pulumi.StringOutput // The IDP's certificate data to verify the signature in the SAMLResponse issued by the IDP. // Structure is documented below. // -// The `spCertificates` block contains: +// The `spCertificates` block contains: func (o TenantInboundSamlConfigSpConfigOutput) SpCertificates() TenantInboundSamlConfigSpConfigSpCertificateArrayOutput { return o.ApplyT(func(v TenantInboundSamlConfigSpConfig) []TenantInboundSamlConfigSpConfigSpCertificate { return v.SpCertificates @@ -4343,7 +4343,7 @@ func (o TenantInboundSamlConfigSpConfigPtrOutput) CallbackUri() pulumi.StringPtr // The IDP's certificate data to verify the signature in the SAMLResponse issued by the IDP. // Structure is documented below. // -// The `spCertificates` block contains: +// The `spCertificates` block contains: func (o TenantInboundSamlConfigSpConfigPtrOutput) SpCertificates() TenantInboundSamlConfigSpConfigSpCertificateArrayOutput { return o.ApplyT(func(v *TenantInboundSamlConfigSpConfig) []TenantInboundSamlConfigSpConfigSpCertificate { if v == nil { diff --git a/sdk/go/gcp/integrationconnectors/pulumiTypes.go b/sdk/go/gcp/integrationconnectors/pulumiTypes.go index 991bf04d0c..2fa9a71403 100644 --- a/sdk/go/gcp/integrationconnectors/pulumiTypes.go +++ b/sdk/go/gcp/integrationconnectors/pulumiTypes.go @@ -1737,7 +1737,7 @@ func (o ConnectionAuthConfigOauth2JwtBearerClientKeyPtrOutput) SecretVersion() p type ConnectionAuthConfigOauth2JwtBearerJwtClaims struct { // Value for the "aud" claim. // - // The `oauth2ClientCredentials` block supports: + // The `oauth2ClientCredentials` block supports: Audience *string `pulumi:"audience"` // Value for the "iss" claim. Issuer *string `pulumi:"issuer"` @@ -1759,7 +1759,7 @@ type ConnectionAuthConfigOauth2JwtBearerJwtClaimsInput interface { type ConnectionAuthConfigOauth2JwtBearerJwtClaimsArgs struct { // Value for the "aud" claim. // - // The `oauth2ClientCredentials` block supports: + // The `oauth2ClientCredentials` block supports: Audience pulumi.StringPtrInput `pulumi:"audience"` // Value for the "iss" claim. Issuer pulumi.StringPtrInput `pulumi:"issuer"` @@ -1846,7 +1846,7 @@ func (o ConnectionAuthConfigOauth2JwtBearerJwtClaimsOutput) ToConnectionAuthConf // Value for the "aud" claim. // -// The `oauth2ClientCredentials` block supports: +// The `oauth2ClientCredentials` block supports: func (o ConnectionAuthConfigOauth2JwtBearerJwtClaimsOutput) Audience() pulumi.StringPtrOutput { return o.ApplyT(func(v ConnectionAuthConfigOauth2JwtBearerJwtClaims) *string { return v.Audience }).(pulumi.StringPtrOutput) } @@ -1887,7 +1887,7 @@ func (o ConnectionAuthConfigOauth2JwtBearerJwtClaimsPtrOutput) Elem() Connection // Value for the "aud" claim. // -// The `oauth2ClientCredentials` block supports: +// The `oauth2ClientCredentials` block supports: func (o ConnectionAuthConfigOauth2JwtBearerJwtClaimsPtrOutput) Audience() pulumi.StringPtrOutput { return o.ApplyT(func(v *ConnectionAuthConfigOauth2JwtBearerJwtClaims) *string { if v == nil { @@ -2268,7 +2268,7 @@ type ConnectionAuthConfigSshPublicKeySshClientCertPass struct { // The resource name of the secret version in the format, // format as: projects/*/secrets/*/versions/*. // - // The `oauth2AuthCodeFlow` block supports: + // The `oauth2AuthCodeFlow` block supports: SecretVersion string `pulumi:"secretVersion"` } @@ -2287,7 +2287,7 @@ type ConnectionAuthConfigSshPublicKeySshClientCertPassArgs struct { // The resource name of the secret version in the format, // format as: projects/*/secrets/*/versions/*. // - // The `oauth2AuthCodeFlow` block supports: + // The `oauth2AuthCodeFlow` block supports: SecretVersion pulumi.StringInput `pulumi:"secretVersion"` } @@ -2371,7 +2371,7 @@ func (o ConnectionAuthConfigSshPublicKeySshClientCertPassOutput) ToConnectionAut // The resource name of the secret version in the format, // format as: projects/*/secrets/*/versions/*. // -// The `oauth2AuthCodeFlow` block supports: +// The `oauth2AuthCodeFlow` block supports: func (o ConnectionAuthConfigSshPublicKeySshClientCertPassOutput) SecretVersion() pulumi.StringOutput { return o.ApplyT(func(v ConnectionAuthConfigSshPublicKeySshClientCertPass) string { return v.SecretVersion }).(pulumi.StringOutput) } @@ -2403,7 +2403,7 @@ func (o ConnectionAuthConfigSshPublicKeySshClientCertPassPtrOutput) Elem() Conne // The resource name of the secret version in the format, // format as: projects/*/secrets/*/versions/*. // -// The `oauth2AuthCodeFlow` block supports: +// The `oauth2AuthCodeFlow` block supports: func (o ConnectionAuthConfigSshPublicKeySshClientCertPassPtrOutput) SecretVersion() pulumi.StringPtrOutput { return o.ApplyT(func(v *ConnectionAuthConfigSshPublicKeySshClientCertPass) *string { if v == nil { diff --git a/sdk/go/gcp/monitoring/pulumiTypes.go b/sdk/go/gcp/monitoring/pulumiTypes.go index 6803621420..79532a70e9 100644 --- a/sdk/go/gcp/monitoring/pulumiTypes.go +++ b/sdk/go/gcp/monitoring/pulumiTypes.go @@ -11143,7 +11143,7 @@ type UptimeCheckConfigSyntheticMonitor struct { // Target a Synthetic Monitor GCFv2 Instance // Structure is documented below. // - // The `cloudFunctionV2` block supports: + // The `cloudFunctionV2` block supports: CloudFunctionV2 UptimeCheckConfigSyntheticMonitorCloudFunctionV2 `pulumi:"cloudFunctionV2"` } @@ -11162,7 +11162,7 @@ type UptimeCheckConfigSyntheticMonitorArgs struct { // Target a Synthetic Monitor GCFv2 Instance // Structure is documented below. // - // The `cloudFunctionV2` block supports: + // The `cloudFunctionV2` block supports: CloudFunctionV2 UptimeCheckConfigSyntheticMonitorCloudFunctionV2Input `pulumi:"cloudFunctionV2"` } @@ -11246,7 +11246,7 @@ func (o UptimeCheckConfigSyntheticMonitorOutput) ToUptimeCheckConfigSyntheticMon // Target a Synthetic Monitor GCFv2 Instance // Structure is documented below. // -// The `cloudFunctionV2` block supports: +// The `cloudFunctionV2` block supports: func (o UptimeCheckConfigSyntheticMonitorOutput) CloudFunctionV2() UptimeCheckConfigSyntheticMonitorCloudFunctionV2Output { return o.ApplyT(func(v UptimeCheckConfigSyntheticMonitor) UptimeCheckConfigSyntheticMonitorCloudFunctionV2 { return v.CloudFunctionV2 @@ -11280,7 +11280,7 @@ func (o UptimeCheckConfigSyntheticMonitorPtrOutput) Elem() UptimeCheckConfigSynt // Target a Synthetic Monitor GCFv2 Instance // Structure is documented below. // -// The `cloudFunctionV2` block supports: +// The `cloudFunctionV2` block supports: func (o UptimeCheckConfigSyntheticMonitorPtrOutput) CloudFunctionV2() UptimeCheckConfigSyntheticMonitorCloudFunctionV2PtrOutput { return o.ApplyT(func(v *UptimeCheckConfigSyntheticMonitor) *UptimeCheckConfigSyntheticMonitorCloudFunctionV2 { if v == nil { diff --git a/sdk/go/gcp/oracledatabase/pulumiTypes.go b/sdk/go/gcp/oracledatabase/pulumiTypes.go index 9dfcc074f0..c8cc7f680d 100644 --- a/sdk/go/gcp/oracledatabase/pulumiTypes.go +++ b/sdk/go/gcp/oracledatabase/pulumiTypes.go @@ -2639,7 +2639,7 @@ type AutonomousDatabasePropertiesCustomerContact struct { // The email address used by Oracle to send notifications regarding databases // and infrastructure. // - // The `apexDetails` block contains: + // The `apexDetails` block contains: Email string `pulumi:"email"` } @@ -2658,7 +2658,7 @@ type AutonomousDatabasePropertiesCustomerContactArgs struct { // The email address used by Oracle to send notifications regarding databases // and infrastructure. // - // The `apexDetails` block contains: + // The `apexDetails` block contains: Email pulumi.StringInput `pulumi:"email"` } @@ -2716,7 +2716,7 @@ func (o AutonomousDatabasePropertiesCustomerContactOutput) ToAutonomousDatabaseP // The email address used by Oracle to send notifications regarding databases // and infrastructure. // -// The `apexDetails` block contains: +// The `apexDetails` block contains: func (o AutonomousDatabasePropertiesCustomerContactOutput) Email() pulumi.StringOutput { return o.ApplyT(func(v AutonomousDatabasePropertiesCustomerContact) string { return v.Email }).(pulumi.StringOutput) } diff --git a/sdk/go/gcp/sql/databaseInstance.go b/sdk/go/gcp/sql/databaseInstance.go index aa6d2d092e..8c7cee1200 100644 --- a/sdk/go/gcp/sql/databaseInstance.go +++ b/sdk/go/gcp/sql/databaseInstance.go @@ -12,7 +12,7 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) -// Creates a new Google SQL Database Instance. For more information, see the [official documentation](https://cloud.google.com/sql/), +// Creates a new Google SQL Database Instance. For more information, see the [official documentation](https://cloud.google.com/sql/docs/mysql/create-instance), // or the [JSON API](https://cloud.google.com/sql/docs/admin-api/v1beta4/instances). // // > **NOTE on `sql.DatabaseInstance`:** - Second-generation instances include a diff --git a/sdk/go/gcp/sql/pulumiTypes.go b/sdk/go/gcp/sql/pulumiTypes.go index e775f2bcc7..e2299fd4aa 100644 --- a/sdk/go/gcp/sql/pulumiTypes.go +++ b/sdk/go/gcp/sql/pulumiTypes.go @@ -3105,6 +3105,8 @@ type DatabaseInstanceSettingsIpConfiguration struct { PscConfigs []DatabaseInstanceSettingsIpConfigurationPscConfig `pulumi:"pscConfigs"` // Specify how the server certificate's Certificate Authority is hosted. Supported values are `GOOGLE_MANAGED_INTERNAL_CA` and `GOOGLE_MANAGED_CAS_CA`. ServerCaMode *string `pulumi:"serverCaMode"` + // The resource name of the server CA pool for an instance with `CUSTOMER_MANAGED_CAS_CA` as the `serverCaMode`. + ServerCaPool *string `pulumi:"serverCaPool"` // Specify how SSL connection should be enforced in DB connections. Supported values are `ALLOW_UNENCRYPTED_AND_ENCRYPTED`, `ENCRYPTED_ONLY`, and `TRUSTED_CLIENT_CERTIFICATE_REQUIRED` (not supported for SQL Server). See [API reference doc](https://cloud.google.com/sql/docs/postgres/admin-api/rest/v1/instances#ipconfiguration) for details. SslMode *string `pulumi:"sslMode"` } @@ -3140,6 +3142,8 @@ type DatabaseInstanceSettingsIpConfigurationArgs struct { PscConfigs DatabaseInstanceSettingsIpConfigurationPscConfigArrayInput `pulumi:"pscConfigs"` // Specify how the server certificate's Certificate Authority is hosted. Supported values are `GOOGLE_MANAGED_INTERNAL_CA` and `GOOGLE_MANAGED_CAS_CA`. ServerCaMode pulumi.StringPtrInput `pulumi:"serverCaMode"` + // The resource name of the server CA pool for an instance with `CUSTOMER_MANAGED_CAS_CA` as the `serverCaMode`. + ServerCaPool pulumi.StringPtrInput `pulumi:"serverCaPool"` // Specify how SSL connection should be enforced in DB connections. Supported values are `ALLOW_UNENCRYPTED_AND_ENCRYPTED`, `ENCRYPTED_ONLY`, and `TRUSTED_CLIENT_CERTIFICATE_REQUIRED` (not supported for SQL Server). See [API reference doc](https://cloud.google.com/sql/docs/postgres/admin-api/rest/v1/instances#ipconfiguration) for details. SslMode pulumi.StringPtrInput `pulumi:"sslMode"` } @@ -3267,6 +3271,11 @@ func (o DatabaseInstanceSettingsIpConfigurationOutput) ServerCaMode() pulumi.Str return o.ApplyT(func(v DatabaseInstanceSettingsIpConfiguration) *string { return v.ServerCaMode }).(pulumi.StringPtrOutput) } +// The resource name of the server CA pool for an instance with `CUSTOMER_MANAGED_CAS_CA` as the `serverCaMode`. +func (o DatabaseInstanceSettingsIpConfigurationOutput) ServerCaPool() pulumi.StringPtrOutput { + return o.ApplyT(func(v DatabaseInstanceSettingsIpConfiguration) *string { return v.ServerCaPool }).(pulumi.StringPtrOutput) +} + // Specify how SSL connection should be enforced in DB connections. Supported values are `ALLOW_UNENCRYPTED_AND_ENCRYPTED`, `ENCRYPTED_ONLY`, and `TRUSTED_CLIENT_CERTIFICATE_REQUIRED` (not supported for SQL Server). See [API reference doc](https://cloud.google.com/sql/docs/postgres/admin-api/rest/v1/instances#ipconfiguration) for details. func (o DatabaseInstanceSettingsIpConfigurationOutput) SslMode() pulumi.StringPtrOutput { return o.ApplyT(func(v DatabaseInstanceSettingsIpConfiguration) *string { return v.SslMode }).(pulumi.StringPtrOutput) @@ -3371,6 +3380,16 @@ func (o DatabaseInstanceSettingsIpConfigurationPtrOutput) ServerCaMode() pulumi. }).(pulumi.StringPtrOutput) } +// The resource name of the server CA pool for an instance with `CUSTOMER_MANAGED_CAS_CA` as the `serverCaMode`. +func (o DatabaseInstanceSettingsIpConfigurationPtrOutput) ServerCaPool() pulumi.StringPtrOutput { + return o.ApplyT(func(v *DatabaseInstanceSettingsIpConfiguration) *string { + if v == nil { + return nil + } + return v.ServerCaPool + }).(pulumi.StringPtrOutput) +} + // Specify how SSL connection should be enforced in DB connections. Supported values are `ALLOW_UNENCRYPTED_AND_ENCRYPTED`, `ENCRYPTED_ONLY`, and `TRUSTED_CLIENT_CERTIFICATE_REQUIRED` (not supported for SQL Server). See [API reference doc](https://cloud.google.com/sql/docs/postgres/admin-api/rest/v1/instances#ipconfiguration) for details. func (o DatabaseInstanceSettingsIpConfigurationPtrOutput) SslMode() pulumi.StringPtrOutput { return o.ApplyT(func(v *DatabaseInstanceSettingsIpConfiguration) *string { @@ -7012,6 +7031,8 @@ type GetDatabaseInstanceSettingIpConfiguration struct { PscConfigs []GetDatabaseInstanceSettingIpConfigurationPscConfig `pulumi:"pscConfigs"` // Specify how the server certificate's Certificate Authority is hosted. ServerCaMode string `pulumi:"serverCaMode"` + // The resource name of the server CA pool for an instance with "CUSTOMER_MANAGED_CAS_CA" as the "serverCaMode". + ServerCaPool string `pulumi:"serverCaPool"` // Specify how SSL connection should be enforced in DB connections. SslMode string `pulumi:"sslMode"` } @@ -7041,6 +7062,8 @@ type GetDatabaseInstanceSettingIpConfigurationArgs struct { PscConfigs GetDatabaseInstanceSettingIpConfigurationPscConfigArrayInput `pulumi:"pscConfigs"` // Specify how the server certificate's Certificate Authority is hosted. ServerCaMode pulumi.StringInput `pulumi:"serverCaMode"` + // The resource name of the server CA pool for an instance with "CUSTOMER_MANAGED_CAS_CA" as the "serverCaMode". + ServerCaPool pulumi.StringInput `pulumi:"serverCaPool"` // Specify how SSL connection should be enforced in DB connections. SslMode pulumi.StringInput `pulumi:"sslMode"` } @@ -7136,6 +7159,11 @@ func (o GetDatabaseInstanceSettingIpConfigurationOutput) ServerCaMode() pulumi.S return o.ApplyT(func(v GetDatabaseInstanceSettingIpConfiguration) string { return v.ServerCaMode }).(pulumi.StringOutput) } +// The resource name of the server CA pool for an instance with "CUSTOMER_MANAGED_CAS_CA" as the "serverCaMode". +func (o GetDatabaseInstanceSettingIpConfigurationOutput) ServerCaPool() pulumi.StringOutput { + return o.ApplyT(func(v GetDatabaseInstanceSettingIpConfiguration) string { return v.ServerCaPool }).(pulumi.StringOutput) +} + // Specify how SSL connection should be enforced in DB connections. func (o GetDatabaseInstanceSettingIpConfigurationOutput) SslMode() pulumi.StringOutput { return o.ApplyT(func(v GetDatabaseInstanceSettingIpConfiguration) string { return v.SslMode }).(pulumi.StringOutput) @@ -10252,6 +10280,8 @@ type GetDatabaseInstancesInstanceSettingIpConfiguration struct { PscConfigs []GetDatabaseInstancesInstanceSettingIpConfigurationPscConfig `pulumi:"pscConfigs"` // Specify how the server certificate's Certificate Authority is hosted. ServerCaMode string `pulumi:"serverCaMode"` + // The resource name of the server CA pool for an instance with "CUSTOMER_MANAGED_CAS_CA" as the "serverCaMode". + ServerCaPool string `pulumi:"serverCaPool"` // Specify how SSL connection should be enforced in DB connections. SslMode string `pulumi:"sslMode"` } @@ -10281,6 +10311,8 @@ type GetDatabaseInstancesInstanceSettingIpConfigurationArgs struct { PscConfigs GetDatabaseInstancesInstanceSettingIpConfigurationPscConfigArrayInput `pulumi:"pscConfigs"` // Specify how the server certificate's Certificate Authority is hosted. ServerCaMode pulumi.StringInput `pulumi:"serverCaMode"` + // The resource name of the server CA pool for an instance with "CUSTOMER_MANAGED_CAS_CA" as the "serverCaMode". + ServerCaPool pulumi.StringInput `pulumi:"serverCaPool"` // Specify how SSL connection should be enforced in DB connections. SslMode pulumi.StringInput `pulumi:"sslMode"` } @@ -10376,6 +10408,11 @@ func (o GetDatabaseInstancesInstanceSettingIpConfigurationOutput) ServerCaMode() return o.ApplyT(func(v GetDatabaseInstancesInstanceSettingIpConfiguration) string { return v.ServerCaMode }).(pulumi.StringOutput) } +// The resource name of the server CA pool for an instance with "CUSTOMER_MANAGED_CAS_CA" as the "serverCaMode". +func (o GetDatabaseInstancesInstanceSettingIpConfigurationOutput) ServerCaPool() pulumi.StringOutput { + return o.ApplyT(func(v GetDatabaseInstancesInstanceSettingIpConfiguration) string { return v.ServerCaPool }).(pulumi.StringOutput) +} + // Specify how SSL connection should be enforced in DB connections. func (o GetDatabaseInstancesInstanceSettingIpConfigurationOutput) SslMode() pulumi.StringOutput { return o.ApplyT(func(v GetDatabaseInstancesInstanceSettingIpConfiguration) string { return v.SslMode }).(pulumi.StringOutput) diff --git a/sdk/go/gcp/transcoder/pulumiTypes.go b/sdk/go/gcp/transcoder/pulumiTypes.go index 0c033ccc4b..4170fa0ab2 100644 --- a/sdk/go/gcp/transcoder/pulumiTypes.go +++ b/sdk/go/gcp/transcoder/pulumiTypes.go @@ -911,7 +911,7 @@ type JobConfigElementaryStreamVideoStream struct { // H264 codec settings // Structure is documented below. // - // The `h264` block supports: + // The `h264` block supports: H264 *JobConfigElementaryStreamVideoStreamH264 `pulumi:"h264"` } @@ -930,7 +930,7 @@ type JobConfigElementaryStreamVideoStreamArgs struct { // H264 codec settings // Structure is documented below. // - // The `h264` block supports: + // The `h264` block supports: H264 JobConfigElementaryStreamVideoStreamH264PtrInput `pulumi:"h264"` } @@ -1014,7 +1014,7 @@ func (o JobConfigElementaryStreamVideoStreamOutput) ToJobConfigElementaryStreamV // H264 codec settings // Structure is documented below. // -// The `h264` block supports: +// The `h264` block supports: func (o JobConfigElementaryStreamVideoStreamOutput) H264() JobConfigElementaryStreamVideoStreamH264PtrOutput { return o.ApplyT(func(v JobConfigElementaryStreamVideoStream) *JobConfigElementaryStreamVideoStreamH264 { return v.H264 }).(JobConfigElementaryStreamVideoStreamH264PtrOutput) } @@ -1046,7 +1046,7 @@ func (o JobConfigElementaryStreamVideoStreamPtrOutput) Elem() JobConfigElementar // H264 codec settings // Structure is documented below. // -// The `h264` block supports: +// The `h264` block supports: func (o JobConfigElementaryStreamVideoStreamPtrOutput) H264() JobConfigElementaryStreamVideoStreamH264PtrOutput { return o.ApplyT(func(v *JobConfigElementaryStreamVideoStream) *JobConfigElementaryStreamVideoStreamH264 { if v == nil { @@ -5436,7 +5436,7 @@ type JobTemplateConfigElementaryStreamVideoStream struct { // H264 codec settings // Structure is documented below. // - // The `h264` block supports: + // The `h264` block supports: H264 *JobTemplateConfigElementaryStreamVideoStreamH264 `pulumi:"h264"` } @@ -5455,7 +5455,7 @@ type JobTemplateConfigElementaryStreamVideoStreamArgs struct { // H264 codec settings // Structure is documented below. // - // The `h264` block supports: + // The `h264` block supports: H264 JobTemplateConfigElementaryStreamVideoStreamH264PtrInput `pulumi:"h264"` } @@ -5539,7 +5539,7 @@ func (o JobTemplateConfigElementaryStreamVideoStreamOutput) ToJobTemplateConfigE // H264 codec settings // Structure is documented below. // -// The `h264` block supports: +// The `h264` block supports: func (o JobTemplateConfigElementaryStreamVideoStreamOutput) H264() JobTemplateConfigElementaryStreamVideoStreamH264PtrOutput { return o.ApplyT(func(v JobTemplateConfigElementaryStreamVideoStream) *JobTemplateConfigElementaryStreamVideoStreamH264 { return v.H264 @@ -5573,7 +5573,7 @@ func (o JobTemplateConfigElementaryStreamVideoStreamPtrOutput) Elem() JobTemplat // H264 codec settings // Structure is documented below. // -// The `h264` block supports: +// The `h264` block supports: func (o JobTemplateConfigElementaryStreamVideoStreamPtrOutput) H264() JobTemplateConfigElementaryStreamVideoStreamH264PtrOutput { return o.ApplyT(func(v *JobTemplateConfigElementaryStreamVideoStream) *JobTemplateConfigElementaryStreamVideoStreamH264 { if v == nil { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/applicationintegration/inputs/AuthConfigDecryptedCredentialUsernameAndPasswordArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/applicationintegration/inputs/AuthConfigDecryptedCredentialUsernameAndPasswordArgs.java index 3579a5af40..08783ea8b3 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/applicationintegration/inputs/AuthConfigDecryptedCredentialUsernameAndPasswordArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/applicationintegration/inputs/AuthConfigDecryptedCredentialUsernameAndPasswordArgs.java @@ -18,7 +18,7 @@ public final class AuthConfigDecryptedCredentialUsernameAndPasswordArgs extends /** * Password to be used. * - * <a name="nested_oauth2_authorization_code"></a>The `oauth2_authorization_code` block supports: + * <a name="nested_decrypted_credential_oauth2_authorization_code"></a>The `oauth2_authorization_code` block supports: * */ @Import(name="password") @@ -27,7 +27,7 @@ public final class AuthConfigDecryptedCredentialUsernameAndPasswordArgs extends /** * @return Password to be used. * - * <a name="nested_oauth2_authorization_code"></a>The `oauth2_authorization_code` block supports: + * <a name="nested_decrypted_credential_oauth2_authorization_code"></a>The `oauth2_authorization_code` block supports: * */ public Optional> password() { @@ -77,7 +77,7 @@ public Builder(AuthConfigDecryptedCredentialUsernameAndPasswordArgs defaults) { /** * @param password Password to be used. * - * <a name="nested_oauth2_authorization_code"></a>The `oauth2_authorization_code` block supports: + * <a name="nested_decrypted_credential_oauth2_authorization_code"></a>The `oauth2_authorization_code` block supports: * * @return builder * @@ -90,7 +90,7 @@ public Builder password(@Nullable Output password) { /** * @param password Password to be used. * - * <a name="nested_oauth2_authorization_code"></a>The `oauth2_authorization_code` block supports: + * <a name="nested_decrypted_credential_oauth2_authorization_code"></a>The `oauth2_authorization_code` block supports: * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/applicationintegration/outputs/AuthConfigDecryptedCredentialUsernameAndPassword.java b/sdk/java/src/main/java/com/pulumi/gcp/applicationintegration/outputs/AuthConfigDecryptedCredentialUsernameAndPassword.java index 5c878a9044..d96619daf5 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/applicationintegration/outputs/AuthConfigDecryptedCredentialUsernameAndPassword.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/applicationintegration/outputs/AuthConfigDecryptedCredentialUsernameAndPassword.java @@ -14,7 +14,7 @@ public final class AuthConfigDecryptedCredentialUsernameAndPassword { /** * @return Password to be used. * - * <a name="nested_oauth2_authorization_code"></a>The `oauth2_authorization_code` block supports: + * <a name="nested_decrypted_credential_oauth2_authorization_code"></a>The `oauth2_authorization_code` block supports: * */ private @Nullable String password; @@ -28,7 +28,7 @@ private AuthConfigDecryptedCredentialUsernameAndPassword() {} /** * @return Password to be used. * - * <a name="nested_oauth2_authorization_code"></a>The `oauth2_authorization_code` block supports: + * <a name="nested_decrypted_credential_oauth2_authorization_code"></a>The `oauth2_authorization_code` block supports: * */ public Optional password() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/beyondcorp/SecurityGateway.java b/sdk/java/src/main/java/com/pulumi/gcp/beyondcorp/SecurityGateway.java new file mode 100644 index 0000000000..4c2bf1896d --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/beyondcorp/SecurityGateway.java @@ -0,0 +1,324 @@ +// *** 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.beyondcorp; + +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.beyondcorp.SecurityGatewayArgs; +import com.pulumi.gcp.beyondcorp.inputs.SecurityGatewayState; +import com.pulumi.gcp.beyondcorp.outputs.SecurityGatewayHub; +import java.lang.String; +import java.util.List; +import java.util.Optional; +import javax.annotation.Nullable; + +/** + * Deployment of Security Gateway. + * + * ## Example Usage + * + * ### Beyondcorp Security Gateway Basic + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.beyondcorp.SecurityGateway;
+ * import com.pulumi.gcp.beyondcorp.SecurityGatewayArgs;
+ * import com.pulumi.gcp.beyondcorp.inputs.SecurityGatewayHubArgs;
+ * 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 SecurityGateway("example", SecurityGatewayArgs.builder()
+ *             .securityGatewayId("default")
+ *             .location("global")
+ *             .displayName("My Security Gateway resource")
+ *             .hubs(SecurityGatewayHubArgs.builder()
+ *                 .region("us-central1")
+ *                 .build())
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * + * ## Import + * + * SecurityGateway can be imported using any of these accepted formats: + * + * * `projects/{{project}}/locations/{{location}}/securityGateways/{{security_gateway_id}}` + * + * * `{{project}}/{{location}}/{{security_gateway_id}}` + * + * * `{{location}}/{{security_gateway_id}}` + * + * When using the `pulumi import` command, SecurityGateway can be imported using one of the formats above. For example: + * + * ```sh + * $ pulumi import gcp:beyondcorp/securityGateway:SecurityGateway default projects/{{project}}/locations/{{location}}/securityGateways/{{security_gateway_id}} + * ``` + * + * ```sh + * $ pulumi import gcp:beyondcorp/securityGateway:SecurityGateway default {{project}}/{{location}}/{{security_gateway_id}} + * ``` + * + * ```sh + * $ pulumi import gcp:beyondcorp/securityGateway:SecurityGateway default {{location}}/{{security_gateway_id}} + * ``` + * + */ +@ResourceType(type="gcp:beyondcorp/securityGateway:SecurityGateway") +public class SecurityGateway extends com.pulumi.resources.CustomResource { + /** + * Output only. Timestamp when the resource was created. + * + */ + @Export(name="createTime", refs={String.class}, tree="[0]") + private Output createTime; + + /** + * @return Output only. Timestamp when the resource was created. + * + */ + public Output createTime() { + return this.createTime; + } + /** + * Optional. An arbitrary user-provided name for the SecurityGateway. + * Cannot exceed 64 characters. + * + */ + @Export(name="displayName", refs={String.class}, tree="[0]") + private Output displayName; + + /** + * @return Optional. An arbitrary user-provided name for the SecurityGateway. + * Cannot exceed 64 characters. + * + */ + public Output> displayName() { + return Codegen.optional(this.displayName); + } + /** + * Output only. IP addresses that will be used for establishing + * connection to the endpoints. + * + */ + @Export(name="externalIps", refs={List.class,String.class}, tree="[0,1]") + private Output> externalIps; + + /** + * @return Output only. IP addresses that will be used for establishing + * connection to the endpoints. + * + */ + public Output> externalIps() { + return this.externalIps; + } + /** + * Optional. Map of Hubs that represents regional data path deployment with GCP region + * as a key. + * Structure is documented below. + * + */ + @Export(name="hubs", refs={List.class,SecurityGatewayHub.class}, tree="[0,1]") + private Output> hubs; + + /** + * @return Optional. Map of Hubs that represents regional data path deployment with GCP region + * as a key. + * Structure is documented below. + * + */ + public Output>> hubs() { + return Codegen.optional(this.hubs); + } + /** + * Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + * + */ + @Export(name="location", refs={String.class}, tree="[0]") + private Output location; + + /** + * @return Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + * + */ + public Output location() { + return this.location; + } + /** + * Identifier. Name of the resource. + * + */ + @Export(name="name", refs={String.class}, tree="[0]") + private Output name; + + /** + * @return Identifier. Name of the resource. + * + */ + 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; + } + /** + * Optional. User-settable SecurityGateway resource ID. + * * Must start with a letter. + * * Must contain between 4-63 characters from `/a-z-/`. + * * Must end with a number or letter. + * + * *** + * + */ + @Export(name="securityGatewayId", refs={String.class}, tree="[0]") + private Output securityGatewayId; + + /** + * @return Optional. User-settable SecurityGateway resource ID. + * * Must start with a letter. + * * Must contain between 4-63 characters from `/a-z-/`. + * * Must end with a number or letter. + * + * *** + * + */ + public Output securityGatewayId() { + return this.securityGatewayId; + } + /** + * Output only. The operational state of the SecurityGateway. + * Possible values: + * STATE_UNSPECIFIED + * CREATING + * UPDATING + * DELETING + * RUNNING + * DOWN + * ERROR + * + */ + @Export(name="state", refs={String.class}, tree="[0]") + private Output state; + + /** + * @return Output only. The operational state of the SecurityGateway. + * Possible values: + * STATE_UNSPECIFIED + * CREATING + * UPDATING + * DELETING + * RUNNING + * DOWN + * ERROR + * + */ + public Output state() { + return this.state; + } + /** + * Output only. Timestamp when the resource was last modified. + * + */ + @Export(name="updateTime", refs={String.class}, tree="[0]") + private Output updateTime; + + /** + * @return Output only. Timestamp when the resource was last modified. + * + */ + public Output updateTime() { + return this.updateTime; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public SecurityGateway(java.lang.String name) { + this(name, SecurityGatewayArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public SecurityGateway(java.lang.String name, SecurityGatewayArgs 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 SecurityGateway(java.lang.String name, SecurityGatewayArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("gcp:beyondcorp/securityGateway:SecurityGateway", name, makeArgs(args, options), makeResourceOptions(options, Codegen.empty()), false); + } + + private SecurityGateway(java.lang.String name, Output id, @Nullable SecurityGatewayState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("gcp:beyondcorp/securityGateway:SecurityGateway", name, state, makeResourceOptions(options, id), false); + } + + private static SecurityGatewayArgs makeArgs(SecurityGatewayArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + if (options != null && options.getUrn().isPresent()) { + return null; + } + return args == null ? SecurityGatewayArgs.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 SecurityGateway get(java.lang.String name, Output id, @Nullable SecurityGatewayState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new SecurityGateway(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/beyondcorp/SecurityGatewayArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/beyondcorp/SecurityGatewayArgs.java new file mode 100644 index 0000000000..e72f4dd018 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/beyondcorp/SecurityGatewayArgs.java @@ -0,0 +1,288 @@ +// *** 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.beyondcorp; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.beyondcorp.inputs.SecurityGatewayHubArgs; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class SecurityGatewayArgs extends com.pulumi.resources.ResourceArgs { + + public static final SecurityGatewayArgs Empty = new SecurityGatewayArgs(); + + /** + * Optional. An arbitrary user-provided name for the SecurityGateway. + * Cannot exceed 64 characters. + * + */ + @Import(name="displayName") + private @Nullable Output displayName; + + /** + * @return Optional. An arbitrary user-provided name for the SecurityGateway. + * Cannot exceed 64 characters. + * + */ + public Optional> displayName() { + return Optional.ofNullable(this.displayName); + } + + /** + * Optional. Map of Hubs that represents regional data path deployment with GCP region + * as a key. + * Structure is documented below. + * + */ + @Import(name="hubs") + private @Nullable Output> hubs; + + /** + * @return Optional. Map of Hubs that represents regional data path deployment with GCP region + * as a key. + * Structure is documented below. + * + */ + public Optional>> hubs() { + return Optional.ofNullable(this.hubs); + } + + /** + * Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + * + */ + @Import(name="location", required=true) + private Output location; + + /** + * @return Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + * + */ + 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); + } + + /** + * Optional. User-settable SecurityGateway resource ID. + * * Must start with a letter. + * * Must contain between 4-63 characters from `/a-z-/`. + * * Must end with a number or letter. + * + * *** + * + */ + @Import(name="securityGatewayId", required=true) + private Output securityGatewayId; + + /** + * @return Optional. User-settable SecurityGateway resource ID. + * * Must start with a letter. + * * Must contain between 4-63 characters from `/a-z-/`. + * * Must end with a number or letter. + * + * *** + * + */ + public Output securityGatewayId() { + return this.securityGatewayId; + } + + private SecurityGatewayArgs() {} + + private SecurityGatewayArgs(SecurityGatewayArgs $) { + this.displayName = $.displayName; + this.hubs = $.hubs; + this.location = $.location; + this.project = $.project; + this.securityGatewayId = $.securityGatewayId; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(SecurityGatewayArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private SecurityGatewayArgs $; + + public Builder() { + $ = new SecurityGatewayArgs(); + } + + public Builder(SecurityGatewayArgs defaults) { + $ = new SecurityGatewayArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param displayName Optional. An arbitrary user-provided name for the SecurityGateway. + * Cannot exceed 64 characters. + * + * @return builder + * + */ + public Builder displayName(@Nullable Output displayName) { + $.displayName = displayName; + return this; + } + + /** + * @param displayName Optional. An arbitrary user-provided name for the SecurityGateway. + * Cannot exceed 64 characters. + * + * @return builder + * + */ + public Builder displayName(String displayName) { + return displayName(Output.of(displayName)); + } + + /** + * @param hubs Optional. Map of Hubs that represents regional data path deployment with GCP region + * as a key. + * Structure is documented below. + * + * @return builder + * + */ + public Builder hubs(@Nullable Output> hubs) { + $.hubs = hubs; + return this; + } + + /** + * @param hubs Optional. Map of Hubs that represents regional data path deployment with GCP region + * as a key. + * Structure is documented below. + * + * @return builder + * + */ + public Builder hubs(List hubs) { + return hubs(Output.of(hubs)); + } + + /** + * @param hubs Optional. Map of Hubs that represents regional data path deployment with GCP region + * as a key. + * Structure is documented below. + * + * @return builder + * + */ + public Builder hubs(SecurityGatewayHubArgs... hubs) { + return hubs(List.of(hubs)); + } + + /** + * @param location Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + * + * @return builder + * + */ + public Builder location(Output location) { + $.location = location; + return this; + } + + /** + * @param location Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + * + * @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)); + } + + /** + * @param securityGatewayId Optional. User-settable SecurityGateway resource ID. + * * Must start with a letter. + * * Must contain between 4-63 characters from `/a-z-/`. + * * Must end with a number or letter. + * + * *** + * + * @return builder + * + */ + public Builder securityGatewayId(Output securityGatewayId) { + $.securityGatewayId = securityGatewayId; + return this; + } + + /** + * @param securityGatewayId Optional. User-settable SecurityGateway resource ID. + * * Must start with a letter. + * * Must contain between 4-63 characters from `/a-z-/`. + * * Must end with a number or letter. + * + * *** + * + * @return builder + * + */ + public Builder securityGatewayId(String securityGatewayId) { + return securityGatewayId(Output.of(securityGatewayId)); + } + + public SecurityGatewayArgs build() { + if ($.location == null) { + throw new MissingRequiredPropertyException("SecurityGatewayArgs", "location"); + } + if ($.securityGatewayId == null) { + throw new MissingRequiredPropertyException("SecurityGatewayArgs", "securityGatewayId"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/beyondcorp/inputs/SecurityGatewayHubArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/beyondcorp/inputs/SecurityGatewayHubArgs.java new file mode 100644 index 0000000000..e8a9c6aa24 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/beyondcorp/inputs/SecurityGatewayHubArgs.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.beyondcorp.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.beyondcorp.inputs.SecurityGatewayHubInternetGatewayArgs; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class SecurityGatewayHubArgs extends com.pulumi.resources.ResourceArgs { + + public static final SecurityGatewayHubArgs Empty = new SecurityGatewayHubArgs(); + + /** + * Internet Gateway configuration. + * Structure is documented below. + * + */ + @Import(name="internetGateway") + private @Nullable Output internetGateway; + + /** + * @return Internet Gateway configuration. + * Structure is documented below. + * + */ + public Optional> internetGateway() { + return Optional.ofNullable(this.internetGateway); + } + + /** + * The identifier for this object. Format specified above. + * + */ + @Import(name="region", required=true) + private Output region; + + /** + * @return The identifier for this object. Format specified above. + * + */ + public Output region() { + return this.region; + } + + private SecurityGatewayHubArgs() {} + + private SecurityGatewayHubArgs(SecurityGatewayHubArgs $) { + this.internetGateway = $.internetGateway; + this.region = $.region; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(SecurityGatewayHubArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private SecurityGatewayHubArgs $; + + public Builder() { + $ = new SecurityGatewayHubArgs(); + } + + public Builder(SecurityGatewayHubArgs defaults) { + $ = new SecurityGatewayHubArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param internetGateway Internet Gateway configuration. + * Structure is documented below. + * + * @return builder + * + */ + public Builder internetGateway(@Nullable Output internetGateway) { + $.internetGateway = internetGateway; + return this; + } + + /** + * @param internetGateway Internet Gateway configuration. + * Structure is documented below. + * + * @return builder + * + */ + public Builder internetGateway(SecurityGatewayHubInternetGatewayArgs internetGateway) { + return internetGateway(Output.of(internetGateway)); + } + + /** + * @param region The identifier for this object. Format specified above. + * + * @return builder + * + */ + public Builder region(Output region) { + $.region = region; + return this; + } + + /** + * @param region The identifier for this object. Format specified above. + * + * @return builder + * + */ + public Builder region(String region) { + return region(Output.of(region)); + } + + public SecurityGatewayHubArgs build() { + if ($.region == null) { + throw new MissingRequiredPropertyException("SecurityGatewayHubArgs", "region"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/beyondcorp/inputs/SecurityGatewayHubInternetGatewayArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/beyondcorp/inputs/SecurityGatewayHubInternetGatewayArgs.java new file mode 100644 index 0000000000..522f6151ca --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/beyondcorp/inputs/SecurityGatewayHubInternetGatewayArgs.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.beyondcorp.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 SecurityGatewayHubInternetGatewayArgs extends com.pulumi.resources.ResourceArgs { + + public static final SecurityGatewayHubInternetGatewayArgs Empty = new SecurityGatewayHubInternetGatewayArgs(); + + /** + * (Output) + * Output only. List of IP addresses assigned to the Cloud NAT. + * + */ + @Import(name="assignedIps") + private @Nullable Output> assignedIps; + + /** + * @return (Output) + * Output only. List of IP addresses assigned to the Cloud NAT. + * + */ + public Optional>> assignedIps() { + return Optional.ofNullable(this.assignedIps); + } + + private SecurityGatewayHubInternetGatewayArgs() {} + + private SecurityGatewayHubInternetGatewayArgs(SecurityGatewayHubInternetGatewayArgs $) { + this.assignedIps = $.assignedIps; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(SecurityGatewayHubInternetGatewayArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private SecurityGatewayHubInternetGatewayArgs $; + + public Builder() { + $ = new SecurityGatewayHubInternetGatewayArgs(); + } + + public Builder(SecurityGatewayHubInternetGatewayArgs defaults) { + $ = new SecurityGatewayHubInternetGatewayArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param assignedIps (Output) + * Output only. List of IP addresses assigned to the Cloud NAT. + * + * @return builder + * + */ + public Builder assignedIps(@Nullable Output> assignedIps) { + $.assignedIps = assignedIps; + return this; + } + + /** + * @param assignedIps (Output) + * Output only. List of IP addresses assigned to the Cloud NAT. + * + * @return builder + * + */ + public Builder assignedIps(List assignedIps) { + return assignedIps(Output.of(assignedIps)); + } + + /** + * @param assignedIps (Output) + * Output only. List of IP addresses assigned to the Cloud NAT. + * + * @return builder + * + */ + public Builder assignedIps(String... assignedIps) { + return assignedIps(List.of(assignedIps)); + } + + public SecurityGatewayHubInternetGatewayArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/beyondcorp/inputs/SecurityGatewayState.java b/sdk/java/src/main/java/com/pulumi/gcp/beyondcorp/inputs/SecurityGatewayState.java new file mode 100644 index 0000000000..8a21ffb538 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/beyondcorp/inputs/SecurityGatewayState.java @@ -0,0 +1,513 @@ +// *** 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.beyondcorp.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.beyondcorp.inputs.SecurityGatewayHubArgs; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class SecurityGatewayState extends com.pulumi.resources.ResourceArgs { + + public static final SecurityGatewayState Empty = new SecurityGatewayState(); + + /** + * Output only. Timestamp when the resource was created. + * + */ + @Import(name="createTime") + private @Nullable Output createTime; + + /** + * @return Output only. Timestamp when the resource was created. + * + */ + public Optional> createTime() { + return Optional.ofNullable(this.createTime); + } + + /** + * Optional. An arbitrary user-provided name for the SecurityGateway. + * Cannot exceed 64 characters. + * + */ + @Import(name="displayName") + private @Nullable Output displayName; + + /** + * @return Optional. An arbitrary user-provided name for the SecurityGateway. + * Cannot exceed 64 characters. + * + */ + public Optional> displayName() { + return Optional.ofNullable(this.displayName); + } + + /** + * Output only. IP addresses that will be used for establishing + * connection to the endpoints. + * + */ + @Import(name="externalIps") + private @Nullable Output> externalIps; + + /** + * @return Output only. IP addresses that will be used for establishing + * connection to the endpoints. + * + */ + public Optional>> externalIps() { + return Optional.ofNullable(this.externalIps); + } + + /** + * Optional. Map of Hubs that represents regional data path deployment with GCP region + * as a key. + * Structure is documented below. + * + */ + @Import(name="hubs") + private @Nullable Output> hubs; + + /** + * @return Optional. Map of Hubs that represents regional data path deployment with GCP region + * as a key. + * Structure is documented below. + * + */ + public Optional>> hubs() { + return Optional.ofNullable(this.hubs); + } + + /** + * Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + * + */ + @Import(name="location") + private @Nullable Output location; + + /** + * @return Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + * + */ + public Optional> location() { + return Optional.ofNullable(this.location); + } + + /** + * Identifier. Name of the resource. + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return Identifier. Name of the resource. + * + */ + 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); + } + + /** + * Optional. User-settable SecurityGateway resource ID. + * * Must start with a letter. + * * Must contain between 4-63 characters from `/a-z-/`. + * * Must end with a number or letter. + * + * *** + * + */ + @Import(name="securityGatewayId") + private @Nullable Output securityGatewayId; + + /** + * @return Optional. User-settable SecurityGateway resource ID. + * * Must start with a letter. + * * Must contain between 4-63 characters from `/a-z-/`. + * * Must end with a number or letter. + * + * *** + * + */ + public Optional> securityGatewayId() { + return Optional.ofNullable(this.securityGatewayId); + } + + /** + * Output only. The operational state of the SecurityGateway. + * Possible values: + * STATE_UNSPECIFIED + * CREATING + * UPDATING + * DELETING + * RUNNING + * DOWN + * ERROR + * + */ + @Import(name="state") + private @Nullable Output state; + + /** + * @return Output only. The operational state of the SecurityGateway. + * Possible values: + * STATE_UNSPECIFIED + * CREATING + * UPDATING + * DELETING + * RUNNING + * DOWN + * ERROR + * + */ + public Optional> state() { + return Optional.ofNullable(this.state); + } + + /** + * Output only. Timestamp when the resource was last modified. + * + */ + @Import(name="updateTime") + private @Nullable Output updateTime; + + /** + * @return Output only. Timestamp when the resource was last modified. + * + */ + public Optional> updateTime() { + return Optional.ofNullable(this.updateTime); + } + + private SecurityGatewayState() {} + + private SecurityGatewayState(SecurityGatewayState $) { + this.createTime = $.createTime; + this.displayName = $.displayName; + this.externalIps = $.externalIps; + this.hubs = $.hubs; + this.location = $.location; + this.name = $.name; + this.project = $.project; + this.securityGatewayId = $.securityGatewayId; + this.state = $.state; + this.updateTime = $.updateTime; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(SecurityGatewayState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private SecurityGatewayState $; + + public Builder() { + $ = new SecurityGatewayState(); + } + + public Builder(SecurityGatewayState defaults) { + $ = new SecurityGatewayState(Objects.requireNonNull(defaults)); + } + + /** + * @param createTime Output only. Timestamp when the resource was created. + * + * @return builder + * + */ + public Builder createTime(@Nullable Output createTime) { + $.createTime = createTime; + return this; + } + + /** + * @param createTime Output only. Timestamp when the resource was created. + * + * @return builder + * + */ + public Builder createTime(String createTime) { + return createTime(Output.of(createTime)); + } + + /** + * @param displayName Optional. An arbitrary user-provided name for the SecurityGateway. + * Cannot exceed 64 characters. + * + * @return builder + * + */ + public Builder displayName(@Nullable Output displayName) { + $.displayName = displayName; + return this; + } + + /** + * @param displayName Optional. An arbitrary user-provided name for the SecurityGateway. + * Cannot exceed 64 characters. + * + * @return builder + * + */ + public Builder displayName(String displayName) { + return displayName(Output.of(displayName)); + } + + /** + * @param externalIps Output only. IP addresses that will be used for establishing + * connection to the endpoints. + * + * @return builder + * + */ + public Builder externalIps(@Nullable Output> externalIps) { + $.externalIps = externalIps; + return this; + } + + /** + * @param externalIps Output only. IP addresses that will be used for establishing + * connection to the endpoints. + * + * @return builder + * + */ + public Builder externalIps(List externalIps) { + return externalIps(Output.of(externalIps)); + } + + /** + * @param externalIps Output only. IP addresses that will be used for establishing + * connection to the endpoints. + * + * @return builder + * + */ + public Builder externalIps(String... externalIps) { + return externalIps(List.of(externalIps)); + } + + /** + * @param hubs Optional. Map of Hubs that represents regional data path deployment with GCP region + * as a key. + * Structure is documented below. + * + * @return builder + * + */ + public Builder hubs(@Nullable Output> hubs) { + $.hubs = hubs; + return this; + } + + /** + * @param hubs Optional. Map of Hubs that represents regional data path deployment with GCP region + * as a key. + * Structure is documented below. + * + * @return builder + * + */ + public Builder hubs(List hubs) { + return hubs(Output.of(hubs)); + } + + /** + * @param hubs Optional. Map of Hubs that represents regional data path deployment with GCP region + * as a key. + * Structure is documented below. + * + * @return builder + * + */ + public Builder hubs(SecurityGatewayHubArgs... hubs) { + return hubs(List.of(hubs)); + } + + /** + * @param location Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + * + * @return builder + * + */ + public Builder location(@Nullable Output location) { + $.location = location; + return this; + } + + /** + * @param location Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + * + * @return builder + * + */ + public Builder location(String location) { + return location(Output.of(location)); + } + + /** + * @param name Identifier. Name of the resource. + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name Identifier. Name of the resource. + * + * @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 securityGatewayId Optional. User-settable SecurityGateway resource ID. + * * Must start with a letter. + * * Must contain between 4-63 characters from `/a-z-/`. + * * Must end with a number or letter. + * + * *** + * + * @return builder + * + */ + public Builder securityGatewayId(@Nullable Output securityGatewayId) { + $.securityGatewayId = securityGatewayId; + return this; + } + + /** + * @param securityGatewayId Optional. User-settable SecurityGateway resource ID. + * * Must start with a letter. + * * Must contain between 4-63 characters from `/a-z-/`. + * * Must end with a number or letter. + * + * *** + * + * @return builder + * + */ + public Builder securityGatewayId(String securityGatewayId) { + return securityGatewayId(Output.of(securityGatewayId)); + } + + /** + * @param state Output only. The operational state of the SecurityGateway. + * Possible values: + * STATE_UNSPECIFIED + * CREATING + * UPDATING + * DELETING + * RUNNING + * DOWN + * ERROR + * + * @return builder + * + */ + public Builder state(@Nullable Output state) { + $.state = state; + return this; + } + + /** + * @param state Output only. The operational state of the SecurityGateway. + * Possible values: + * STATE_UNSPECIFIED + * CREATING + * UPDATING + * DELETING + * RUNNING + * DOWN + * ERROR + * + * @return builder + * + */ + public Builder state(String state) { + return state(Output.of(state)); + } + + /** + * @param updateTime Output only. Timestamp when the resource was last modified. + * + * @return builder + * + */ + public Builder updateTime(@Nullable Output updateTime) { + $.updateTime = updateTime; + return this; + } + + /** + * @param updateTime Output only. Timestamp when the resource was last modified. + * + * @return builder + * + */ + public Builder updateTime(String updateTime) { + return updateTime(Output.of(updateTime)); + } + + public SecurityGatewayState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/beyondcorp/outputs/SecurityGatewayHub.java b/sdk/java/src/main/java/com/pulumi/gcp/beyondcorp/outputs/SecurityGatewayHub.java new file mode 100644 index 0000000000..e70d21977f --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/beyondcorp/outputs/SecurityGatewayHub.java @@ -0,0 +1,84 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.beyondcorp.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.beyondcorp.outputs.SecurityGatewayHubInternetGateway; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class SecurityGatewayHub { + /** + * @return Internet Gateway configuration. + * Structure is documented below. + * + */ + private @Nullable SecurityGatewayHubInternetGateway internetGateway; + /** + * @return The identifier for this object. Format specified above. + * + */ + private String region; + + private SecurityGatewayHub() {} + /** + * @return Internet Gateway configuration. + * Structure is documented below. + * + */ + public Optional internetGateway() { + return Optional.ofNullable(this.internetGateway); + } + /** + * @return The identifier for this object. Format specified above. + * + */ + public String region() { + return this.region; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(SecurityGatewayHub defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable SecurityGatewayHubInternetGateway internetGateway; + private String region; + public Builder() {} + public Builder(SecurityGatewayHub defaults) { + Objects.requireNonNull(defaults); + this.internetGateway = defaults.internetGateway; + this.region = defaults.region; + } + + @CustomType.Setter + public Builder internetGateway(@Nullable SecurityGatewayHubInternetGateway internetGateway) { + + this.internetGateway = internetGateway; + return this; + } + @CustomType.Setter + public Builder region(String region) { + if (region == null) { + throw new MissingRequiredPropertyException("SecurityGatewayHub", "region"); + } + this.region = region; + return this; + } + public SecurityGatewayHub build() { + final var _resultValue = new SecurityGatewayHub(); + _resultValue.internetGateway = internetGateway; + _resultValue.region = region; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/beyondcorp/outputs/SecurityGatewayHubInternetGateway.java b/sdk/java/src/main/java/com/pulumi/gcp/beyondcorp/outputs/SecurityGatewayHubInternetGateway.java new file mode 100644 index 0000000000..0659c7d113 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/beyondcorp/outputs/SecurityGatewayHubInternetGateway.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.beyondcorp.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 SecurityGatewayHubInternetGateway { + /** + * @return (Output) + * Output only. List of IP addresses assigned to the Cloud NAT. + * + */ + private @Nullable List assignedIps; + + private SecurityGatewayHubInternetGateway() {} + /** + * @return (Output) + * Output only. List of IP addresses assigned to the Cloud NAT. + * + */ + public List assignedIps() { + return this.assignedIps == null ? List.of() : this.assignedIps; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(SecurityGatewayHubInternetGateway defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable List assignedIps; + public Builder() {} + public Builder(SecurityGatewayHubInternetGateway defaults) { + Objects.requireNonNull(defaults); + this.assignedIps = defaults.assignedIps; + } + + @CustomType.Setter + public Builder assignedIps(@Nullable List assignedIps) { + + this.assignedIps = assignedIps; + return this; + } + public Builder assignedIps(String... assignedIps) { + return assignedIps(List.of(assignedIps)); + } + public SecurityGatewayHubInternetGateway build() { + final var _resultValue = new SecurityGatewayHubInternetGateway(); + _resultValue.assignedIps = assignedIps; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/blockchainnodeengine/inputs/BlockchainNodesEthereumDetailsGethDetailsArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/blockchainnodeengine/inputs/BlockchainNodesEthereumDetailsGethDetailsArgs.java index 313faf695c..6a1635cdc7 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/blockchainnodeengine/inputs/BlockchainNodesEthereumDetailsGethDetailsArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/blockchainnodeengine/inputs/BlockchainNodesEthereumDetailsGethDetailsArgs.java @@ -19,7 +19,7 @@ public final class BlockchainNodesEthereumDetailsGethDetailsArgs extends com.pul * Blockchain garbage collection modes. Only applicable when NodeType is FULL or ARCHIVE. * Possible values are: `FULL`, `ARCHIVE`. * - * <a name="nested_additional_endpoints"></a>The `additional_endpoints` block contains: + * <a name="nested_ethereum_details_additional_endpoints"></a>The `additional_endpoints` block contains: * */ @Import(name="garbageCollectionMode") @@ -29,7 +29,7 @@ public final class BlockchainNodesEthereumDetailsGethDetailsArgs extends com.pul * @return Blockchain garbage collection modes. Only applicable when NodeType is FULL or ARCHIVE. * Possible values are: `FULL`, `ARCHIVE`. * - * <a name="nested_additional_endpoints"></a>The `additional_endpoints` block contains: + * <a name="nested_ethereum_details_additional_endpoints"></a>The `additional_endpoints` block contains: * */ public Optional> garbageCollectionMode() { @@ -64,7 +64,7 @@ public Builder(BlockchainNodesEthereumDetailsGethDetailsArgs defaults) { * @param garbageCollectionMode Blockchain garbage collection modes. Only applicable when NodeType is FULL or ARCHIVE. * Possible values are: `FULL`, `ARCHIVE`. * - * <a name="nested_additional_endpoints"></a>The `additional_endpoints` block contains: + * <a name="nested_ethereum_details_additional_endpoints"></a>The `additional_endpoints` block contains: * * @return builder * @@ -78,7 +78,7 @@ public Builder garbageCollectionMode(@Nullable Output garbageCollectionM * @param garbageCollectionMode Blockchain garbage collection modes. Only applicable when NodeType is FULL or ARCHIVE. * Possible values are: `FULL`, `ARCHIVE`. * - * <a name="nested_additional_endpoints"></a>The `additional_endpoints` block contains: + * <a name="nested_ethereum_details_additional_endpoints"></a>The `additional_endpoints` block contains: * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/blockchainnodeengine/outputs/BlockchainNodesEthereumDetailsGethDetails.java b/sdk/java/src/main/java/com/pulumi/gcp/blockchainnodeengine/outputs/BlockchainNodesEthereumDetailsGethDetails.java index c453f3a4df..dc087c34f3 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/blockchainnodeengine/outputs/BlockchainNodesEthereumDetailsGethDetails.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/blockchainnodeengine/outputs/BlockchainNodesEthereumDetailsGethDetails.java @@ -15,7 +15,7 @@ public final class BlockchainNodesEthereumDetailsGethDetails { * @return Blockchain garbage collection modes. Only applicable when NodeType is FULL or ARCHIVE. * Possible values are: `FULL`, `ARCHIVE`. * - * <a name="nested_additional_endpoints"></a>The `additional_endpoints` block contains: + * <a name="nested_ethereum_details_additional_endpoints"></a>The `additional_endpoints` block contains: * */ private @Nullable String garbageCollectionMode; @@ -25,7 +25,7 @@ private BlockchainNodesEthereumDetailsGethDetails() {} * @return Blockchain garbage collection modes. Only applicable when NodeType is FULL or ARCHIVE. * Possible values are: `FULL`, `ARCHIVE`. * - * <a name="nested_additional_endpoints"></a>The `additional_endpoints` block contains: + * <a name="nested_ethereum_details_additional_endpoints"></a>The `additional_endpoints` block contains: * */ public Optional garbageCollectionMode() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/certificateauthority/inputs/AuthorityConfigSubjectKeyIdArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/certificateauthority/inputs/AuthorityConfigSubjectKeyIdArgs.java index 5b46bf231b..9d5e7d3ded 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/certificateauthority/inputs/AuthorityConfigSubjectKeyIdArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/certificateauthority/inputs/AuthorityConfigSubjectKeyIdArgs.java @@ -18,7 +18,7 @@ public final class AuthorityConfigSubjectKeyIdArgs extends com.pulumi.resources. /** * The value of the KeyId in lowercase hexadecimal. * - * <a name="nested_x509_config"></a>The `x509_config` block supports: + * <a name="nested_config_x509_config"></a>The `x509_config` block supports: * */ @Import(name="keyId") @@ -27,7 +27,7 @@ public final class AuthorityConfigSubjectKeyIdArgs extends com.pulumi.resources. /** * @return The value of the KeyId in lowercase hexadecimal. * - * <a name="nested_x509_config"></a>The `x509_config` block supports: + * <a name="nested_config_x509_config"></a>The `x509_config` block supports: * */ public Optional> keyId() { @@ -61,7 +61,7 @@ public Builder(AuthorityConfigSubjectKeyIdArgs defaults) { /** * @param keyId The value of the KeyId in lowercase hexadecimal. * - * <a name="nested_x509_config"></a>The `x509_config` block supports: + * <a name="nested_config_x509_config"></a>The `x509_config` block supports: * * @return builder * @@ -74,7 +74,7 @@ public Builder keyId(@Nullable Output keyId) { /** * @param keyId The value of the KeyId in lowercase hexadecimal. * - * <a name="nested_x509_config"></a>The `x509_config` block supports: + * <a name="nested_config_x509_config"></a>The `x509_config` block supports: * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/certificateauthority/inputs/CertificateConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/certificateauthority/inputs/CertificateConfigArgs.java index 6b2427d25a..ffaac1add9 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/certificateauthority/inputs/CertificateConfigArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/certificateauthority/inputs/CertificateConfigArgs.java @@ -23,7 +23,7 @@ public final class CertificateConfigArgs extends com.pulumi.resources.ResourceAr * A PublicKey describes a public key. * Structure is documented below. * - * <a name="nested_x509_config"></a>The `x509_config` block supports: + * <a name="nested_config_x509_config"></a>The `x509_config` block supports: * */ @Import(name="publicKey", required=true) @@ -33,7 +33,7 @@ public final class CertificateConfigArgs extends com.pulumi.resources.ResourceAr * @return A PublicKey describes a public key. * Structure is documented below. * - * <a name="nested_x509_config"></a>The `x509_config` block supports: + * <a name="nested_config_x509_config"></a>The `x509_config` block supports: * */ public Output publicKey() { @@ -122,7 +122,7 @@ public Builder(CertificateConfigArgs defaults) { * @param publicKey A PublicKey describes a public key. * Structure is documented below. * - * <a name="nested_x509_config"></a>The `x509_config` block supports: + * <a name="nested_config_x509_config"></a>The `x509_config` block supports: * * @return builder * @@ -136,7 +136,7 @@ public Builder publicKey(Output publicKey) { * @param publicKey A PublicKey describes a public key. * Structure is documented below. * - * <a name="nested_x509_config"></a>The `x509_config` block supports: + * <a name="nested_config_x509_config"></a>The `x509_config` block supports: * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/certificateauthority/outputs/AuthorityConfigSubjectKeyId.java b/sdk/java/src/main/java/com/pulumi/gcp/certificateauthority/outputs/AuthorityConfigSubjectKeyId.java index 37fc5f271c..913fb9cdbb 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/certificateauthority/outputs/AuthorityConfigSubjectKeyId.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/certificateauthority/outputs/AuthorityConfigSubjectKeyId.java @@ -14,7 +14,7 @@ public final class AuthorityConfigSubjectKeyId { /** * @return The value of the KeyId in lowercase hexadecimal. * - * <a name="nested_x509_config"></a>The `x509_config` block supports: + * <a name="nested_config_x509_config"></a>The `x509_config` block supports: * */ private @Nullable String keyId; @@ -23,7 +23,7 @@ private AuthorityConfigSubjectKeyId() {} /** * @return The value of the KeyId in lowercase hexadecimal. * - * <a name="nested_x509_config"></a>The `x509_config` block supports: + * <a name="nested_config_x509_config"></a>The `x509_config` block supports: * */ public Optional keyId() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/certificateauthority/outputs/CertificateConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/certificateauthority/outputs/CertificateConfig.java index 91d0181630..cca743ddd3 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/certificateauthority/outputs/CertificateConfig.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/certificateauthority/outputs/CertificateConfig.java @@ -19,7 +19,7 @@ public final class CertificateConfig { * @return A PublicKey describes a public key. * Structure is documented below. * - * <a name="nested_x509_config"></a>The `x509_config` block supports: + * <a name="nested_config_x509_config"></a>The `x509_config` block supports: * */ private CertificateConfigPublicKey publicKey; @@ -47,7 +47,7 @@ private CertificateConfig() {} * @return A PublicKey describes a public key. * Structure is documented below. * - * <a name="nested_x509_config"></a>The `x509_config` block supports: + * <a name="nested_config_x509_config"></a>The `x509_config` block supports: * */ public CertificateConfigPublicKey publicKey() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/certificatemanager/inputs/CertificateManagedArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/certificatemanager/inputs/CertificateManagedArgs.java index d71b13bb75..7014f8790c 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/certificatemanager/inputs/CertificateManagedArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/certificatemanager/inputs/CertificateManagedArgs.java @@ -24,7 +24,7 @@ public final class CertificateManagedArgs extends com.pulumi.resources.ResourceA * specified for this Managed Certificate. * Structure is documented below. * - * <a name="nested_provisioning_issue"></a>The `provisioning_issue` block contains: + * <a name="nested_managed_provisioning_issue"></a>The `provisioning_issue` block contains: * */ @Import(name="authorizationAttemptInfos") @@ -36,7 +36,7 @@ public final class CertificateManagedArgs extends com.pulumi.resources.ResourceA * specified for this Managed Certificate. * Structure is documented below. * - * <a name="nested_provisioning_issue"></a>The `provisioning_issue` block contains: + * <a name="nested_managed_provisioning_issue"></a>The `provisioning_issue` block contains: * */ public Optional>> authorizationAttemptInfos() { @@ -165,7 +165,7 @@ public Builder(CertificateManagedArgs defaults) { * specified for this Managed Certificate. * Structure is documented below. * - * <a name="nested_provisioning_issue"></a>The `provisioning_issue` block contains: + * <a name="nested_managed_provisioning_issue"></a>The `provisioning_issue` block contains: * * @return builder * @@ -181,7 +181,7 @@ public Builder authorizationAttemptInfos(@Nullable Output authorizationAttemptInfos; @@ -63,7 +63,7 @@ private CertificateManaged() {} * specified for this Managed Certificate. * Structure is documented below. * - * <a name="nested_provisioning_issue"></a>The `provisioning_issue` block contains: + * <a name="nested_managed_provisioning_issue"></a>The `provisioning_issue` block contains: * */ public List authorizationAttemptInfos() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/chronicle/DataAccessLabel.java b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/DataAccessLabel.java new file mode 100644 index 0000000000..84e05f04aa --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/DataAccessLabel.java @@ -0,0 +1,326 @@ +// *** 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.DataAccessLabelArgs; +import com.pulumi.gcp.chronicle.inputs.DataAccessLabelState; +import java.lang.String; +import java.util.Optional; +import javax.annotation.Nullable; + +/** + * ## Example Usage + * + * ### Chronicle Dataaccesslabel 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.DataAccessLabel;
+ * import com.pulumi.gcp.chronicle.DataAccessLabelArgs;
+ * 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 DataAccessLabel("example", DataAccessLabelArgs.builder()
+ *             .location("us")
+ *             .instance("00000000-0000-0000-0000-000000000000")
+ *             .dataAccessLabelId("label-id")
+ *             .udmQuery("principal.hostname=\"google.com\"")
+ *             .description("label-description")
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * + * ## Import + * + * DataAccessLabel can be imported using any of these accepted formats: + * + * * `projects/{{project}}/locations/{{location}}/instances/{{instance}}/dataAccessLabels/{{data_access_label_id}}` + * + * * `{{project}}/{{location}}/{{instance}}/{{data_access_label_id}}` + * + * * `{{location}}/{{instance}}/{{data_access_label_id}}` + * + * When using the `pulumi import` command, DataAccessLabel can be imported using one of the formats above. For example: + * + * ```sh + * $ pulumi import gcp:chronicle/dataAccessLabel:DataAccessLabel default projects/{{project}}/locations/{{location}}/instances/{{instance}}/dataAccessLabels/{{data_access_label_id}} + * ``` + * + * ```sh + * $ pulumi import gcp:chronicle/dataAccessLabel:DataAccessLabel default {{project}}/{{location}}/{{instance}}/{{data_access_label_id}} + * ``` + * + * ```sh + * $ pulumi import gcp:chronicle/dataAccessLabel:DataAccessLabel default {{location}}/{{instance}}/{{data_access_label_id}} + * ``` + * + */ +@ResourceType(type="gcp:chronicle/dataAccessLabel:DataAccessLabel") +public class DataAccessLabel extends com.pulumi.resources.CustomResource { + /** + * Output only. The user who created the data access label. + * + */ + @Export(name="author", refs={String.class}, tree="[0]") + private Output author; + + /** + * @return Output only. The user who created the data access label. + * + */ + public Output author() { + return this.author; + } + /** + * Output only. The time at which the data access label was created. + * + */ + @Export(name="createTime", refs={String.class}, tree="[0]") + private Output createTime; + + /** + * @return Output only. The time at which the data access label was created. + * + */ + public Output createTime() { + return this.createTime; + } + /** + * Required. The ID to use for the data access label, which will become the label's + * display name and the final component of the label's resource name. It must + * only contain ASCII lowercase letters, numbers, and dashes; it must begin + * with a letter, and it must not exceed 1000 characters. + * + * *** + * + */ + @Export(name="dataAccessLabelId", refs={String.class}, tree="[0]") + private Output dataAccessLabelId; + + /** + * @return Required. The ID to use for the data access label, which will become the label's + * display name and the final component of the label's resource name. It must + * only contain ASCII lowercase letters, numbers, and dashes; it must begin + * with a letter, and it must not exceed 1000 characters. + * + * *** + * + */ + public Output dataAccessLabelId() { + return this.dataAccessLabelId; + } + /** + * Optional. A description of the data access label for a human reader. + * + */ + @Export(name="description", refs={String.class}, tree="[0]") + private Output description; + + /** + * @return Optional. A description of the data access label for a human reader. + * + */ + public Output> description() { + return Codegen.optional(this.description); + } + /** + * Output only. The short name displayed for the label as it appears on event data. This is same as data access label id. + * + */ + @Export(name="displayName", refs={String.class}, tree="[0]") + private Output displayName; + + /** + * @return Output only. The short name displayed for the label as it appears on event data. This is same as data access label id. + * + */ + public Output displayName() { + return this.displayName; + } + /** + * 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; + } + /** + * Output only. The user who last updated the data access label. + * + */ + @Export(name="lastEditor", refs={String.class}, tree="[0]") + private Output lastEditor; + + /** + * @return Output only. The user who last updated the data access label. + * + */ + public Output lastEditor() { + return this.lastEditor; + } + /** + * 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; + } + /** + * The unique resource name of the data access label. This unique identifier is generated using values provided for the URL parameters. + * Format: + * projects/{project}/locations/{location}/instances/{instance}/dataAccessLabels/{data_access_label_id} + * + */ + @Export(name="name", refs={String.class}, tree="[0]") + private Output name; + + /** + * @return The unique resource name of the data access label. This unique identifier is generated using values provided for the URL parameters. + * Format: + * projects/{project}/locations/{location}/instances/{instance}/dataAccessLabels/{data_access_label_id} + * + */ + 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; + } + /** + * A UDM query over event data. + * + */ + @Export(name="udmQuery", refs={String.class}, tree="[0]") + private Output udmQuery; + + /** + * @return A UDM query over event data. + * + */ + public Output udmQuery() { + return this.udmQuery; + } + /** + * Output only. The time at which the data access label was last updated. + * + */ + @Export(name="updateTime", refs={String.class}, tree="[0]") + private Output updateTime; + + /** + * @return Output only. The time at which the data access label was last updated. + * + */ + public Output updateTime() { + return this.updateTime; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public DataAccessLabel(java.lang.String name) { + this(name, DataAccessLabelArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public DataAccessLabel(java.lang.String name, DataAccessLabelArgs 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 DataAccessLabel(java.lang.String name, DataAccessLabelArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("gcp:chronicle/dataAccessLabel:DataAccessLabel", name, makeArgs(args, options), makeResourceOptions(options, Codegen.empty()), false); + } + + private DataAccessLabel(java.lang.String name, Output id, @Nullable DataAccessLabelState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("gcp:chronicle/dataAccessLabel:DataAccessLabel", name, state, makeResourceOptions(options, id), false); + } + + private static DataAccessLabelArgs makeArgs(DataAccessLabelArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + if (options != null && options.getUrn().isPresent()) { + return null; + } + return args == null ? DataAccessLabelArgs.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 DataAccessLabel get(java.lang.String name, Output id, @Nullable DataAccessLabelState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new DataAccessLabel(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/chronicle/DataAccessLabelArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/DataAccessLabelArgs.java new file mode 100644 index 0000000000..021ec1796c --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/DataAccessLabelArgs.java @@ -0,0 +1,305 @@ +// *** 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 java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class DataAccessLabelArgs extends com.pulumi.resources.ResourceArgs { + + public static final DataAccessLabelArgs Empty = new DataAccessLabelArgs(); + + /** + * Required. The ID to use for the data access label, which will become the label's + * display name and the final component of the label's resource name. It must + * only contain ASCII lowercase letters, numbers, and dashes; it must begin + * with a letter, and it must not exceed 1000 characters. + * + * *** + * + */ + @Import(name="dataAccessLabelId", required=true) + private Output dataAccessLabelId; + + /** + * @return Required. The ID to use for the data access label, which will become the label's + * display name and the final component of the label's resource name. It must + * only contain ASCII lowercase letters, numbers, and dashes; it must begin + * with a letter, and it must not exceed 1000 characters. + * + * *** + * + */ + public Output dataAccessLabelId() { + return this.dataAccessLabelId; + } + + /** + * Optional. A description of the data access label for a human reader. + * + */ + @Import(name="description") + private @Nullable Output description; + + /** + * @return Optional. A description of the data access label for a human reader. + * + */ + public Optional> description() { + return Optional.ofNullable(this.description); + } + + /** + * 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; + } + + /** + * 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); + } + + /** + * A UDM query over event data. + * + */ + @Import(name="udmQuery", required=true) + private Output udmQuery; + + /** + * @return A UDM query over event data. + * + */ + public Output udmQuery() { + return this.udmQuery; + } + + private DataAccessLabelArgs() {} + + private DataAccessLabelArgs(DataAccessLabelArgs $) { + this.dataAccessLabelId = $.dataAccessLabelId; + this.description = $.description; + this.instance = $.instance; + this.location = $.location; + this.project = $.project; + this.udmQuery = $.udmQuery; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(DataAccessLabelArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private DataAccessLabelArgs $; + + public Builder() { + $ = new DataAccessLabelArgs(); + } + + public Builder(DataAccessLabelArgs defaults) { + $ = new DataAccessLabelArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param dataAccessLabelId Required. The ID to use for the data access label, which will become the label's + * display name and the final component of the label's resource name. It must + * only contain ASCII lowercase letters, numbers, and dashes; it must begin + * with a letter, and it must not exceed 1000 characters. + * + * *** + * + * @return builder + * + */ + public Builder dataAccessLabelId(Output dataAccessLabelId) { + $.dataAccessLabelId = dataAccessLabelId; + return this; + } + + /** + * @param dataAccessLabelId Required. The ID to use for the data access label, which will become the label's + * display name and the final component of the label's resource name. It must + * only contain ASCII lowercase letters, numbers, and dashes; it must begin + * with a letter, and it must not exceed 1000 characters. + * + * *** + * + * @return builder + * + */ + public Builder dataAccessLabelId(String dataAccessLabelId) { + return dataAccessLabelId(Output.of(dataAccessLabelId)); + } + + /** + * @param description Optional. A description of the data access label for a human reader. + * + * @return builder + * + */ + public Builder description(@Nullable Output description) { + $.description = description; + return this; + } + + /** + * @param description Optional. A description of the data access label for a human reader. + * + * @return builder + * + */ + public Builder description(String description) { + return description(Output.of(description)); + } + + /** + * @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 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 udmQuery A UDM query over event data. + * + * @return builder + * + */ + public Builder udmQuery(Output udmQuery) { + $.udmQuery = udmQuery; + return this; + } + + /** + * @param udmQuery A UDM query over event data. + * + * @return builder + * + */ + public Builder udmQuery(String udmQuery) { + return udmQuery(Output.of(udmQuery)); + } + + public DataAccessLabelArgs build() { + if ($.dataAccessLabelId == null) { + throw new MissingRequiredPropertyException("DataAccessLabelArgs", "dataAccessLabelId"); + } + if ($.instance == null) { + throw new MissingRequiredPropertyException("DataAccessLabelArgs", "instance"); + } + if ($.location == null) { + throw new MissingRequiredPropertyException("DataAccessLabelArgs", "location"); + } + if ($.udmQuery == null) { + throw new MissingRequiredPropertyException("DataAccessLabelArgs", "udmQuery"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/chronicle/DataAccessScope.java b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/DataAccessScope.java new file mode 100644 index 0000000000..b43c546924 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/DataAccessScope.java @@ -0,0 +1,600 @@ +// *** 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.DataAccessScopeArgs; +import com.pulumi.gcp.chronicle.inputs.DataAccessScopeState; +import com.pulumi.gcp.chronicle.outputs.DataAccessScopeAllowedDataAccessLabel; +import com.pulumi.gcp.chronicle.outputs.DataAccessScopeDeniedDataAccessLabel; +import java.lang.Boolean; +import java.lang.String; +import java.util.List; +import java.util.Optional; +import javax.annotation.Nullable; + +/** + * ## Example Usage + * + * ### Chronicle Dataaccessscope With Logtype + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.chronicle.DataAccessScope;
+ * import com.pulumi.gcp.chronicle.DataAccessScopeArgs;
+ * import com.pulumi.gcp.chronicle.inputs.DataAccessScopeAllowedDataAccessLabelArgs;
+ * 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 DataAccessScope("example", DataAccessScopeArgs.builder()
+ *             .location("us")
+ *             .instance("00000000-0000-0000-0000-000000000000")
+ *             .dataAccessScopeId("scope-id")
+ *             .description("scope-description")
+ *             .allowedDataAccessLabels(            
+ *                 DataAccessScopeAllowedDataAccessLabelArgs.builder()
+ *                     .logType("GCP_CLOUDAUDIT")
+ *                     .build(),
+ *                 DataAccessScopeAllowedDataAccessLabelArgs.builder()
+ *                     .logType("GITHUB")
+ *                     .build())
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * ### Chronicle Dataaccessscope With Dataaccesslabel + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.chronicle.DataAccessLabel;
+ * import com.pulumi.gcp.chronicle.DataAccessLabelArgs;
+ * import com.pulumi.gcp.chronicle.DataAccessScope;
+ * import com.pulumi.gcp.chronicle.DataAccessScopeArgs;
+ * import com.pulumi.gcp.chronicle.inputs.DataAccessScopeAllowedDataAccessLabelArgs;
+ * 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 customDataAccessLabel = new DataAccessLabel("customDataAccessLabel", DataAccessLabelArgs.builder()
+ *             .location("us")
+ *             .instance("00000000-0000-0000-0000-000000000000")
+ *             .dataAccessLabelId("label-id")
+ *             .udmQuery("principal.hostname=\"google.com\"")
+ *             .build());
+ * 
+ *         var example = new DataAccessScope("example", DataAccessScopeArgs.builder()
+ *             .location("us")
+ *             .instance("00000000-0000-0000-0000-000000000000")
+ *             .dataAccessScopeId("scope-id")
+ *             .description("scope-description")
+ *             .allowedDataAccessLabels(DataAccessScopeAllowedDataAccessLabelArgs.builder()
+ *                 .dataAccessLabel(googleChronicleDataAccessLabel.customDataAccessLabel().dataAccessLabelId())
+ *                 .build())
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * ### Chronicle Dataaccessscope With Asset Namespace + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.chronicle.DataAccessScope;
+ * import com.pulumi.gcp.chronicle.DataAccessScopeArgs;
+ * import com.pulumi.gcp.chronicle.inputs.DataAccessScopeAllowedDataAccessLabelArgs;
+ * 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 DataAccessScope("example", DataAccessScopeArgs.builder()
+ *             .location("us")
+ *             .instance("00000000-0000-0000-0000-000000000000")
+ *             .dataAccessScopeId("scope-id")
+ *             .description("scope-description")
+ *             .allowedDataAccessLabels(DataAccessScopeAllowedDataAccessLabelArgs.builder()
+ *                 .assetNamespace("my-namespace")
+ *                 .build())
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * ### Chronicle Dataaccessscope With Ingestion Label + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.chronicle.DataAccessScope;
+ * import com.pulumi.gcp.chronicle.DataAccessScopeArgs;
+ * import com.pulumi.gcp.chronicle.inputs.DataAccessScopeAllowedDataAccessLabelArgs;
+ * import com.pulumi.gcp.chronicle.inputs.DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs;
+ * 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 DataAccessScope("example", DataAccessScopeArgs.builder()
+ *             .location("us")
+ *             .instance("00000000-0000-0000-0000-000000000000")
+ *             .dataAccessScopeId("scope-id")
+ *             .description("scope-description")
+ *             .allowedDataAccessLabels(DataAccessScopeAllowedDataAccessLabelArgs.builder()
+ *                 .ingestionLabel(DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs.builder()
+ *                     .ingestionLabelKey("ingestion_key")
+ *                     .ingestionLabelValue("ingestion_value")
+ *                     .build())
+ *                 .build())
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * ### Chronicle Dataaccessscope With Denied Labels + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.chronicle.DataAccessLabel;
+ * import com.pulumi.gcp.chronicle.DataAccessLabelArgs;
+ * import com.pulumi.gcp.chronicle.DataAccessScope;
+ * import com.pulumi.gcp.chronicle.DataAccessScopeArgs;
+ * import com.pulumi.gcp.chronicle.inputs.DataAccessScopeDeniedDataAccessLabelArgs;
+ * import com.pulumi.gcp.chronicle.inputs.DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs;
+ * 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 customDataAccessLabel = new DataAccessLabel("customDataAccessLabel", DataAccessLabelArgs.builder()
+ *             .location("us")
+ *             .instance("00000000-0000-0000-0000-000000000000")
+ *             .dataAccessLabelId("label-id")
+ *             .udmQuery("principal.hostname=\"google.com\"")
+ *             .build());
+ * 
+ *         var example = new DataAccessScope("example", DataAccessScopeArgs.builder()
+ *             .location("us")
+ *             .instance("00000000-0000-0000-0000-000000000000")
+ *             .dataAccessScopeId("scope-id")
+ *             .description("scope-description")
+ *             .allowAll(true)
+ *             .deniedDataAccessLabels(            
+ *                 DataAccessScopeDeniedDataAccessLabelArgs.builder()
+ *                     .logType("GCP_CLOUDAUDIT")
+ *                     .build(),
+ *                 DataAccessScopeDeniedDataAccessLabelArgs.builder()
+ *                     .dataAccessLabel(googleChronicleDataAccessLabel.customDataAccessLabel().dataAccessLabelId())
+ *                     .build(),
+ *                 DataAccessScopeDeniedDataAccessLabelArgs.builder()
+ *                     .ingestionLabel(DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs.builder()
+ *                         .ingestionLabelKey("ingestion_key")
+ *                         .ingestionLabelValue("ingestion_value")
+ *                         .build())
+ *                     .build(),
+ *                 DataAccessScopeDeniedDataAccessLabelArgs.builder()
+ *                     .assetNamespace("my-namespace")
+ *                     .build())
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * + * ## Import + * + * DataAccessScope can be imported using any of these accepted formats: + * + * * `projects/{{project}}/locations/{{location}}/instances/{{instance}}/dataAccessScopes/{{data_access_scope_id}}` + * + * * `{{project}}/{{location}}/{{instance}}/{{data_access_scope_id}}` + * + * * `{{location}}/{{instance}}/{{data_access_scope_id}}` + * + * When using the `pulumi import` command, DataAccessScope can be imported using one of the formats above. For example: + * + * ```sh + * $ pulumi import gcp:chronicle/dataAccessScope:DataAccessScope default projects/{{project}}/locations/{{location}}/instances/{{instance}}/dataAccessScopes/{{data_access_scope_id}} + * ``` + * + * ```sh + * $ pulumi import gcp:chronicle/dataAccessScope:DataAccessScope default {{project}}/{{location}}/{{instance}}/{{data_access_scope_id}} + * ``` + * + * ```sh + * $ pulumi import gcp:chronicle/dataAccessScope:DataAccessScope default {{location}}/{{instance}}/{{data_access_scope_id}} + * ``` + * + */ +@ResourceType(type="gcp:chronicle/dataAccessScope:DataAccessScope") +public class DataAccessScope extends com.pulumi.resources.CustomResource { + /** + * Optional. Whether or not the scope allows all labels, allow_all and + * allowed_data_access_labels are mutually exclusive and one of them must be + * present. denied_data_access_labels can still be used along with allow_all. + * When combined with denied_data_access_labels, access will be granted to all + * data that doesn't have labels mentioned in denied_data_access_labels. E.g.: + * A customer with scope with denied labels A and B and allow_all will be able + * to see all data except data labeled with A and data labeled with B and data + * with labels A and B. + * + */ + @Export(name="allowAll", refs={Boolean.class}, tree="[0]") + private Output allowAll; + + /** + * @return Optional. Whether or not the scope allows all labels, allow_all and + * allowed_data_access_labels are mutually exclusive and one of them must be + * present. denied_data_access_labels can still be used along with allow_all. + * When combined with denied_data_access_labels, access will be granted to all + * data that doesn't have labels mentioned in denied_data_access_labels. E.g.: + * A customer with scope with denied labels A and B and allow_all will be able + * to see all data except data labeled with A and data labeled with B and data + * with labels A and B. + * + */ + public Output> allowAll() { + return Codegen.optional(this.allowAll); + } + /** + * The allowed labels for the scope. There has to be at + * least one label allowed for the scope to be valid. + * The logical operator for evaluation of the allowed labels is OR. + * Either allow_all or allowed_data_access_labels needs to be provided. + * E.g.: A customer with scope with allowed labels A and B will be able + * to see data with labeled with A or B or (A and B). + * Structure is documented below. + * + */ + @Export(name="allowedDataAccessLabels", refs={List.class,DataAccessScopeAllowedDataAccessLabel.class}, tree="[0,1]") + private Output> allowedDataAccessLabels; + + /** + * @return The allowed labels for the scope. There has to be at + * least one label allowed for the scope to be valid. + * The logical operator for evaluation of the allowed labels is OR. + * Either allow_all or allowed_data_access_labels needs to be provided. + * E.g.: A customer with scope with allowed labels A and B will be able + * to see data with labeled with A or B or (A and B). + * Structure is documented below. + * + */ + public Output>> allowedDataAccessLabels() { + return Codegen.optional(this.allowedDataAccessLabels); + } + /** + * Output only. The user who created the data access scope. + * + */ + @Export(name="author", refs={String.class}, tree="[0]") + private Output author; + + /** + * @return Output only. The user who created the data access scope. + * + */ + public Output author() { + return this.author; + } + /** + * Output only. The time at which the data access scope was created. + * + */ + @Export(name="createTime", refs={String.class}, tree="[0]") + private Output createTime; + + /** + * @return Output only. The time at which the data access scope was created. + * + */ + public Output createTime() { + return this.createTime; + } + /** + * Required. The user provided scope id which will become the last part of the name + * of the scope resource. + * Needs to be compliant with https://google.aip.dev/122 + * + * *** + * + */ + @Export(name="dataAccessScopeId", refs={String.class}, tree="[0]") + private Output dataAccessScopeId; + + /** + * @return Required. The user provided scope id which will become the last part of the name + * of the scope resource. + * Needs to be compliant with https://google.aip.dev/122 + * + * *** + * + */ + public Output dataAccessScopeId() { + return this.dataAccessScopeId; + } + /** + * Optional. The denied labels for the scope. + * The logical operator for evaluation of the denied labels is AND. + * E.g.: A customer with scope with denied labels A and B won't be able + * to see data labeled with A and data labeled with B + * and data with labels A and B. + * Structure is documented below. + * + */ + @Export(name="deniedDataAccessLabels", refs={List.class,DataAccessScopeDeniedDataAccessLabel.class}, tree="[0,1]") + private Output> deniedDataAccessLabels; + + /** + * @return Optional. The denied labels for the scope. + * The logical operator for evaluation of the denied labels is AND. + * E.g.: A customer with scope with denied labels A and B won't be able + * to see data labeled with A and data labeled with B + * and data with labels A and B. + * Structure is documented below. + * + */ + public Output>> deniedDataAccessLabels() { + return Codegen.optional(this.deniedDataAccessLabels); + } + /** + * Optional. A description of the data access scope for a human reader. + * + */ + @Export(name="description", refs={String.class}, tree="[0]") + private Output description; + + /** + * @return Optional. A description of the data access scope for a human reader. + * + */ + public Output> description() { + return Codegen.optional(this.description); + } + /** + * Output only. The name to be used for display to customers of the data access scope. + * + */ + @Export(name="displayName", refs={String.class}, tree="[0]") + private Output displayName; + + /** + * @return Output only. The name to be used for display to customers of the data access scope. + * + */ + public Output displayName() { + return this.displayName; + } + /** + * 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; + } + /** + * Output only. The user who last updated the data access scope. + * + */ + @Export(name="lastEditor", refs={String.class}, tree="[0]") + private Output lastEditor; + + /** + * @return Output only. The user who last updated the data access scope. + * + */ + public Output lastEditor() { + return this.lastEditor; + } + /** + * 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; + } + /** + * The unique full name of the data access scope. This unique identifier is generated using values provided for the URL parameters. + * Format: + * projects/{project}/locations/{location}/instances/{instance}/dataAccessScopes/{data_access_scope_id} + * + */ + @Export(name="name", refs={String.class}, tree="[0]") + private Output name; + + /** + * @return The unique full name of the data access scope. This unique identifier is generated using values provided for the URL parameters. + * Format: + * projects/{project}/locations/{location}/instances/{instance}/dataAccessScopes/{data_access_scope_id} + * + */ + 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; + } + /** + * Output only. The time at which the data access scope was last updated. + * + */ + @Export(name="updateTime", refs={String.class}, tree="[0]") + private Output updateTime; + + /** + * @return Output only. The time at which the data access scope was last updated. + * + */ + public Output updateTime() { + return this.updateTime; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public DataAccessScope(java.lang.String name) { + this(name, DataAccessScopeArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public DataAccessScope(java.lang.String name, DataAccessScopeArgs 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 DataAccessScope(java.lang.String name, DataAccessScopeArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("gcp:chronicle/dataAccessScope:DataAccessScope", name, makeArgs(args, options), makeResourceOptions(options, Codegen.empty()), false); + } + + private DataAccessScope(java.lang.String name, Output id, @Nullable DataAccessScopeState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("gcp:chronicle/dataAccessScope:DataAccessScope", name, state, makeResourceOptions(options, id), false); + } + + private static DataAccessScopeArgs makeArgs(DataAccessScopeArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + if (options != null && options.getUrn().isPresent()) { + return null; + } + return args == null ? DataAccessScopeArgs.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 DataAccessScope get(java.lang.String name, Output id, @Nullable DataAccessScopeState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new DataAccessScope(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/chronicle/DataAccessScopeArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/DataAccessScopeArgs.java new file mode 100644 index 0000000000..37ae289abf --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/DataAccessScopeArgs.java @@ -0,0 +1,479 @@ +// *** 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.DataAccessScopeAllowedDataAccessLabelArgs; +import com.pulumi.gcp.chronicle.inputs.DataAccessScopeDeniedDataAccessLabelArgs; +import java.lang.Boolean; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class DataAccessScopeArgs extends com.pulumi.resources.ResourceArgs { + + public static final DataAccessScopeArgs Empty = new DataAccessScopeArgs(); + + /** + * Optional. Whether or not the scope allows all labels, allow_all and + * allowed_data_access_labels are mutually exclusive and one of them must be + * present. denied_data_access_labels can still be used along with allow_all. + * When combined with denied_data_access_labels, access will be granted to all + * data that doesn't have labels mentioned in denied_data_access_labels. E.g.: + * A customer with scope with denied labels A and B and allow_all will be able + * to see all data except data labeled with A and data labeled with B and data + * with labels A and B. + * + */ + @Import(name="allowAll") + private @Nullable Output allowAll; + + /** + * @return Optional. Whether or not the scope allows all labels, allow_all and + * allowed_data_access_labels are mutually exclusive and one of them must be + * present. denied_data_access_labels can still be used along with allow_all. + * When combined with denied_data_access_labels, access will be granted to all + * data that doesn't have labels mentioned in denied_data_access_labels. E.g.: + * A customer with scope with denied labels A and B and allow_all will be able + * to see all data except data labeled with A and data labeled with B and data + * with labels A and B. + * + */ + public Optional> allowAll() { + return Optional.ofNullable(this.allowAll); + } + + /** + * The allowed labels for the scope. There has to be at + * least one label allowed for the scope to be valid. + * The logical operator for evaluation of the allowed labels is OR. + * Either allow_all or allowed_data_access_labels needs to be provided. + * E.g.: A customer with scope with allowed labels A and B will be able + * to see data with labeled with A or B or (A and B). + * Structure is documented below. + * + */ + @Import(name="allowedDataAccessLabels") + private @Nullable Output> allowedDataAccessLabels; + + /** + * @return The allowed labels for the scope. There has to be at + * least one label allowed for the scope to be valid. + * The logical operator for evaluation of the allowed labels is OR. + * Either allow_all or allowed_data_access_labels needs to be provided. + * E.g.: A customer with scope with allowed labels A and B will be able + * to see data with labeled with A or B or (A and B). + * Structure is documented below. + * + */ + public Optional>> allowedDataAccessLabels() { + return Optional.ofNullable(this.allowedDataAccessLabels); + } + + /** + * Required. The user provided scope id which will become the last part of the name + * of the scope resource. + * Needs to be compliant with https://google.aip.dev/122 + * + * *** + * + */ + @Import(name="dataAccessScopeId", required=true) + private Output dataAccessScopeId; + + /** + * @return Required. The user provided scope id which will become the last part of the name + * of the scope resource. + * Needs to be compliant with https://google.aip.dev/122 + * + * *** + * + */ + public Output dataAccessScopeId() { + return this.dataAccessScopeId; + } + + /** + * Optional. The denied labels for the scope. + * The logical operator for evaluation of the denied labels is AND. + * E.g.: A customer with scope with denied labels A and B won't be able + * to see data labeled with A and data labeled with B + * and data with labels A and B. + * Structure is documented below. + * + */ + @Import(name="deniedDataAccessLabels") + private @Nullable Output> deniedDataAccessLabels; + + /** + * @return Optional. The denied labels for the scope. + * The logical operator for evaluation of the denied labels is AND. + * E.g.: A customer with scope with denied labels A and B won't be able + * to see data labeled with A and data labeled with B + * and data with labels A and B. + * Structure is documented below. + * + */ + public Optional>> deniedDataAccessLabels() { + return Optional.ofNullable(this.deniedDataAccessLabels); + } + + /** + * Optional. A description of the data access scope for a human reader. + * + */ + @Import(name="description") + private @Nullable Output description; + + /** + * @return Optional. A description of the data access scope for a human reader. + * + */ + public Optional> description() { + return Optional.ofNullable(this.description); + } + + /** + * 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; + } + + /** + * 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 DataAccessScopeArgs() {} + + private DataAccessScopeArgs(DataAccessScopeArgs $) { + this.allowAll = $.allowAll; + this.allowedDataAccessLabels = $.allowedDataAccessLabels; + this.dataAccessScopeId = $.dataAccessScopeId; + this.deniedDataAccessLabels = $.deniedDataAccessLabels; + this.description = $.description; + this.instance = $.instance; + this.location = $.location; + this.project = $.project; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(DataAccessScopeArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private DataAccessScopeArgs $; + + public Builder() { + $ = new DataAccessScopeArgs(); + } + + public Builder(DataAccessScopeArgs defaults) { + $ = new DataAccessScopeArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param allowAll Optional. Whether or not the scope allows all labels, allow_all and + * allowed_data_access_labels are mutually exclusive and one of them must be + * present. denied_data_access_labels can still be used along with allow_all. + * When combined with denied_data_access_labels, access will be granted to all + * data that doesn't have labels mentioned in denied_data_access_labels. E.g.: + * A customer with scope with denied labels A and B and allow_all will be able + * to see all data except data labeled with A and data labeled with B and data + * with labels A and B. + * + * @return builder + * + */ + public Builder allowAll(@Nullable Output allowAll) { + $.allowAll = allowAll; + return this; + } + + /** + * @param allowAll Optional. Whether or not the scope allows all labels, allow_all and + * allowed_data_access_labels are mutually exclusive and one of them must be + * present. denied_data_access_labels can still be used along with allow_all. + * When combined with denied_data_access_labels, access will be granted to all + * data that doesn't have labels mentioned in denied_data_access_labels. E.g.: + * A customer with scope with denied labels A and B and allow_all will be able + * to see all data except data labeled with A and data labeled with B and data + * with labels A and B. + * + * @return builder + * + */ + public Builder allowAll(Boolean allowAll) { + return allowAll(Output.of(allowAll)); + } + + /** + * @param allowedDataAccessLabels The allowed labels for the scope. There has to be at + * least one label allowed for the scope to be valid. + * The logical operator for evaluation of the allowed labels is OR. + * Either allow_all or allowed_data_access_labels needs to be provided. + * E.g.: A customer with scope with allowed labels A and B will be able + * to see data with labeled with A or B or (A and B). + * Structure is documented below. + * + * @return builder + * + */ + public Builder allowedDataAccessLabels(@Nullable Output> allowedDataAccessLabels) { + $.allowedDataAccessLabels = allowedDataAccessLabels; + return this; + } + + /** + * @param allowedDataAccessLabels The allowed labels for the scope. There has to be at + * least one label allowed for the scope to be valid. + * The logical operator for evaluation of the allowed labels is OR. + * Either allow_all or allowed_data_access_labels needs to be provided. + * E.g.: A customer with scope with allowed labels A and B will be able + * to see data with labeled with A or B or (A and B). + * Structure is documented below. + * + * @return builder + * + */ + public Builder allowedDataAccessLabels(List allowedDataAccessLabels) { + return allowedDataAccessLabels(Output.of(allowedDataAccessLabels)); + } + + /** + * @param allowedDataAccessLabels The allowed labels for the scope. There has to be at + * least one label allowed for the scope to be valid. + * The logical operator for evaluation of the allowed labels is OR. + * Either allow_all or allowed_data_access_labels needs to be provided. + * E.g.: A customer with scope with allowed labels A and B will be able + * to see data with labeled with A or B or (A and B). + * Structure is documented below. + * + * @return builder + * + */ + public Builder allowedDataAccessLabels(DataAccessScopeAllowedDataAccessLabelArgs... allowedDataAccessLabels) { + return allowedDataAccessLabels(List.of(allowedDataAccessLabels)); + } + + /** + * @param dataAccessScopeId Required. The user provided scope id which will become the last part of the name + * of the scope resource. + * Needs to be compliant with https://google.aip.dev/122 + * + * *** + * + * @return builder + * + */ + public Builder dataAccessScopeId(Output dataAccessScopeId) { + $.dataAccessScopeId = dataAccessScopeId; + return this; + } + + /** + * @param dataAccessScopeId Required. The user provided scope id which will become the last part of the name + * of the scope resource. + * Needs to be compliant with https://google.aip.dev/122 + * + * *** + * + * @return builder + * + */ + public Builder dataAccessScopeId(String dataAccessScopeId) { + return dataAccessScopeId(Output.of(dataAccessScopeId)); + } + + /** + * @param deniedDataAccessLabels Optional. The denied labels for the scope. + * The logical operator for evaluation of the denied labels is AND. + * E.g.: A customer with scope with denied labels A and B won't be able + * to see data labeled with A and data labeled with B + * and data with labels A and B. + * Structure is documented below. + * + * @return builder + * + */ + public Builder deniedDataAccessLabels(@Nullable Output> deniedDataAccessLabels) { + $.deniedDataAccessLabels = deniedDataAccessLabels; + return this; + } + + /** + * @param deniedDataAccessLabels Optional. The denied labels for the scope. + * The logical operator for evaluation of the denied labels is AND. + * E.g.: A customer with scope with denied labels A and B won't be able + * to see data labeled with A and data labeled with B + * and data with labels A and B. + * Structure is documented below. + * + * @return builder + * + */ + public Builder deniedDataAccessLabels(List deniedDataAccessLabels) { + return deniedDataAccessLabels(Output.of(deniedDataAccessLabels)); + } + + /** + * @param deniedDataAccessLabels Optional. The denied labels for the scope. + * The logical operator for evaluation of the denied labels is AND. + * E.g.: A customer with scope with denied labels A and B won't be able + * to see data labeled with A and data labeled with B + * and data with labels A and B. + * Structure is documented below. + * + * @return builder + * + */ + public Builder deniedDataAccessLabels(DataAccessScopeDeniedDataAccessLabelArgs... deniedDataAccessLabels) { + return deniedDataAccessLabels(List.of(deniedDataAccessLabels)); + } + + /** + * @param description Optional. A description of the data access scope for a human reader. + * + * @return builder + * + */ + public Builder description(@Nullable Output description) { + $.description = description; + return this; + } + + /** + * @param description Optional. A description of the data access scope for a human reader. + * + * @return builder + * + */ + public Builder description(String description) { + return description(Output.of(description)); + } + + /** + * @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 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 DataAccessScopeArgs build() { + if ($.dataAccessScopeId == null) { + throw new MissingRequiredPropertyException("DataAccessScopeArgs", "dataAccessScopeId"); + } + if ($.instance == null) { + throw new MissingRequiredPropertyException("DataAccessScopeArgs", "instance"); + } + if ($.location == null) { + throw new MissingRequiredPropertyException("DataAccessScopeArgs", "location"); + } + return $; + } + } + +} 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 index c3ca74d207..4c372d1346 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/chronicle/Watchlist.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/Watchlist.java @@ -53,7 +53,54 @@ * var example = new Watchlist("example", WatchlistArgs.builder() * .location("us") * .instance("00000000-0000-0000-0000-000000000000") - * .watchlistId("watchlist-name") + * .watchlistId("watchlist-id") + * .description("watchlist-description") + * .displayName("watchlist_name") + * .multiplyingFactor(1) + * .entityPopulationMechanism(WatchlistEntityPopulationMechanismArgs.builder() + * .manual() + * .build()) + * .watchlistUserPreferences(WatchlistWatchlistUserPreferencesArgs.builder() + * .pinned(true) + * .build()) + * .build()); + * + * } + * } + * } + * + * <!--End PulumiCodeChooser --> + * ### Chronicle Watchlist Without Id + * + * <!--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")
  *             .description("watchlist-description")
  *             .displayName("watchlist-name")
  *             .multiplyingFactor(1)
@@ -257,20 +304,16 @@ 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-/.
+     * 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-/.
+     * @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() {
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
index 201aa91ebb..c9635f4caf 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/chronicle/WatchlistArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/WatchlistArgs.java
@@ -123,24 +123,20 @@ public Optional> 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-/.
+     * 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;
+    @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-/.
+     * @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;
+    public Optional> watchlistId() {
+        return Optional.ofNullable(this.watchlistId);
     }
 
     /**
@@ -332,24 +328,20 @@ public Builder project(String 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-/.
+         * @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) {
+        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-/.
+         * @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
          * 
@@ -392,9 +384,6 @@ public WatchlistArgs build() {
             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/DataAccessLabelState.java b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/DataAccessLabelState.java
new file mode 100644
index 0000000000..bd3a9e20f5
--- /dev/null
+++ b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/DataAccessLabelState.java
@@ -0,0 +1,522 @@
+// *** 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.String;
+import java.util.Objects;
+import java.util.Optional;
+import javax.annotation.Nullable;
+
+
+public final class DataAccessLabelState extends com.pulumi.resources.ResourceArgs {
+
+    public static final DataAccessLabelState Empty = new DataAccessLabelState();
+
+    /**
+     * Output only. The user who created the data access label.
+     * 
+     */
+    @Import(name="author")
+    private @Nullable Output author;
+
+    /**
+     * @return Output only. The user who created the data access label.
+     * 
+     */
+    public Optional> author() {
+        return Optional.ofNullable(this.author);
+    }
+
+    /**
+     * Output only. The time at which the data access label was created.
+     * 
+     */
+    @Import(name="createTime")
+    private @Nullable Output createTime;
+
+    /**
+     * @return Output only. The time at which the data access label was created.
+     * 
+     */
+    public Optional> createTime() {
+        return Optional.ofNullable(this.createTime);
+    }
+
+    /**
+     * Required. The ID to use for the data access label, which will become the label's
+     * display name and the final component of the label's resource name. It must
+     * only contain ASCII lowercase letters, numbers, and dashes; it must begin
+     * with a letter, and it must not exceed 1000 characters.
+     * 
+     * ***
+     * 
+     */
+    @Import(name="dataAccessLabelId")
+    private @Nullable Output dataAccessLabelId;
+
+    /**
+     * @return Required. The ID to use for the data access label, which will become the label's
+     * display name and the final component of the label's resource name. It must
+     * only contain ASCII lowercase letters, numbers, and dashes; it must begin
+     * with a letter, and it must not exceed 1000 characters.
+     * 
+     * ***
+     * 
+     */
+    public Optional> dataAccessLabelId() {
+        return Optional.ofNullable(this.dataAccessLabelId);
+    }
+
+    /**
+     * Optional. A description of the data access label for a human reader.
+     * 
+     */
+    @Import(name="description")
+    private @Nullable Output description;
+
+    /**
+     * @return Optional. A description of the data access label for a human reader.
+     * 
+     */
+    public Optional> description() {
+        return Optional.ofNullable(this.description);
+    }
+
+    /**
+     * Output only. The short name displayed for the label as it appears on event data. This is same as data access label id.
+     * 
+     */
+    @Import(name="displayName")
+    private @Nullable Output displayName;
+
+    /**
+     * @return Output only. The short name displayed for the label as it appears on event data. This is same as data access label id.
+     * 
+     */
+    public Optional> displayName() {
+        return Optional.ofNullable(this.displayName);
+    }
+
+    /**
+     * 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);
+    }
+
+    /**
+     * Output only. The user who last updated the data access label.
+     * 
+     */
+    @Import(name="lastEditor")
+    private @Nullable Output lastEditor;
+
+    /**
+     * @return Output only. The user who last updated the data access label.
+     * 
+     */
+    public Optional> lastEditor() {
+        return Optional.ofNullable(this.lastEditor);
+    }
+
+    /**
+     * 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);
+    }
+
+    /**
+     * The unique resource name of the data access label. This unique identifier is generated using values provided for the URL parameters.
+     * Format:
+     * projects/{project}/locations/{location}/instances/{instance}/dataAccessLabels/{data_access_label_id}
+     * 
+     */
+    @Import(name="name")
+    private @Nullable Output name;
+
+    /**
+     * @return The unique resource name of the data access label. This unique identifier is generated using values provided for the URL parameters.
+     * Format:
+     * projects/{project}/locations/{location}/instances/{instance}/dataAccessLabels/{data_access_label_id}
+     * 
+     */
+    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);
+    }
+
+    /**
+     * A UDM query over event data.
+     * 
+     */
+    @Import(name="udmQuery")
+    private @Nullable Output udmQuery;
+
+    /**
+     * @return A UDM query over event data.
+     * 
+     */
+    public Optional> udmQuery() {
+        return Optional.ofNullable(this.udmQuery);
+    }
+
+    /**
+     * Output only. The time at which the data access label was last updated.
+     * 
+     */
+    @Import(name="updateTime")
+    private @Nullable Output updateTime;
+
+    /**
+     * @return Output only. The time at which the data access label was last updated.
+     * 
+     */
+    public Optional> updateTime() {
+        return Optional.ofNullable(this.updateTime);
+    }
+
+    private DataAccessLabelState() {}
+
+    private DataAccessLabelState(DataAccessLabelState $) {
+        this.author = $.author;
+        this.createTime = $.createTime;
+        this.dataAccessLabelId = $.dataAccessLabelId;
+        this.description = $.description;
+        this.displayName = $.displayName;
+        this.instance = $.instance;
+        this.lastEditor = $.lastEditor;
+        this.location = $.location;
+        this.name = $.name;
+        this.project = $.project;
+        this.udmQuery = $.udmQuery;
+        this.updateTime = $.updateTime;
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+    public static Builder builder(DataAccessLabelState defaults) {
+        return new Builder(defaults);
+    }
+
+    public static final class Builder {
+        private DataAccessLabelState $;
+
+        public Builder() {
+            $ = new DataAccessLabelState();
+        }
+
+        public Builder(DataAccessLabelState defaults) {
+            $ = new DataAccessLabelState(Objects.requireNonNull(defaults));
+        }
+
+        /**
+         * @param author Output only. The user who created the data access label.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder author(@Nullable Output author) {
+            $.author = author;
+            return this;
+        }
+
+        /**
+         * @param author Output only. The user who created the data access label.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder author(String author) {
+            return author(Output.of(author));
+        }
+
+        /**
+         * @param createTime Output only. The time at which the data access label was created.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder createTime(@Nullable Output createTime) {
+            $.createTime = createTime;
+            return this;
+        }
+
+        /**
+         * @param createTime Output only. The time at which the data access label was created.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder createTime(String createTime) {
+            return createTime(Output.of(createTime));
+        }
+
+        /**
+         * @param dataAccessLabelId Required. The ID to use for the data access label, which will become the label's
+         * display name and the final component of the label's resource name. It must
+         * only contain ASCII lowercase letters, numbers, and dashes; it must begin
+         * with a letter, and it must not exceed 1000 characters.
+         * 
+         * ***
+         * 
+         * @return builder
+         * 
+         */
+        public Builder dataAccessLabelId(@Nullable Output dataAccessLabelId) {
+            $.dataAccessLabelId = dataAccessLabelId;
+            return this;
+        }
+
+        /**
+         * @param dataAccessLabelId Required. The ID to use for the data access label, which will become the label's
+         * display name and the final component of the label's resource name. It must
+         * only contain ASCII lowercase letters, numbers, and dashes; it must begin
+         * with a letter, and it must not exceed 1000 characters.
+         * 
+         * ***
+         * 
+         * @return builder
+         * 
+         */
+        public Builder dataAccessLabelId(String dataAccessLabelId) {
+            return dataAccessLabelId(Output.of(dataAccessLabelId));
+        }
+
+        /**
+         * @param description Optional. A description of the data access label for a human reader.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder description(@Nullable Output description) {
+            $.description = description;
+            return this;
+        }
+
+        /**
+         * @param description Optional. A description of the data access label for a human reader.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder description(String description) {
+            return description(Output.of(description));
+        }
+
+        /**
+         * @param displayName Output only. The short name displayed for the label as it appears on event data. This is same as data access label id.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder displayName(@Nullable Output displayName) {
+            $.displayName = displayName;
+            return this;
+        }
+
+        /**
+         * @param displayName Output only. The short name displayed for the label as it appears on event data. This is same as data access label id.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder displayName(String displayName) {
+            return displayName(Output.of(displayName));
+        }
+
+        /**
+         * @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 lastEditor Output only. The user who last updated the data access label.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder lastEditor(@Nullable Output lastEditor) {
+            $.lastEditor = lastEditor;
+            return this;
+        }
+
+        /**
+         * @param lastEditor Output only. The user who last updated the data access label.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder lastEditor(String lastEditor) {
+            return lastEditor(Output.of(lastEditor));
+        }
+
+        /**
+         * @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 name The unique resource name of the data access label. This unique identifier is generated using values provided for the URL parameters.
+         * Format:
+         * projects/{project}/locations/{location}/instances/{instance}/dataAccessLabels/{data_access_label_id}
+         * 
+         * @return builder
+         * 
+         */
+        public Builder name(@Nullable Output name) {
+            $.name = name;
+            return this;
+        }
+
+        /**
+         * @param name The unique resource name of the data access label. This unique identifier is generated using values provided for the URL parameters.
+         * Format:
+         * projects/{project}/locations/{location}/instances/{instance}/dataAccessLabels/{data_access_label_id}
+         * 
+         * @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 udmQuery A UDM query over event data.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder udmQuery(@Nullable Output udmQuery) {
+            $.udmQuery = udmQuery;
+            return this;
+        }
+
+        /**
+         * @param udmQuery A UDM query over event data.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder udmQuery(String udmQuery) {
+            return udmQuery(Output.of(udmQuery));
+        }
+
+        /**
+         * @param updateTime Output only. The time at which the data access label was last updated.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder updateTime(@Nullable Output updateTime) {
+            $.updateTime = updateTime;
+            return this;
+        }
+
+        /**
+         * @param updateTime Output only. The time at which the data access label was last updated.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder updateTime(String updateTime) {
+            return updateTime(Output.of(updateTime));
+        }
+
+        public DataAccessLabelState build() {
+            return $;
+        }
+    }
+
+}
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/DataAccessScopeAllowedDataAccessLabelArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/DataAccessScopeAllowedDataAccessLabelArgs.java
new file mode 100644
index 0000000000..4597e0ed68
--- /dev/null
+++ b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/DataAccessScopeAllowedDataAccessLabelArgs.java
@@ -0,0 +1,260 @@
+// *** 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.DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs;
+import java.lang.String;
+import java.util.Objects;
+import java.util.Optional;
+import javax.annotation.Nullable;
+
+
+public final class DataAccessScopeAllowedDataAccessLabelArgs extends com.pulumi.resources.ResourceArgs {
+
+    public static final DataAccessScopeAllowedDataAccessLabelArgs Empty = new DataAccessScopeAllowedDataAccessLabelArgs();
+
+    /**
+     * The asset namespace configured in the forwarder
+     * of the customer's events.
+     * 
+     */
+    @Import(name="assetNamespace")
+    private @Nullable Output assetNamespace;
+
+    /**
+     * @return The asset namespace configured in the forwarder
+     * of the customer's events.
+     * 
+     */
+    public Optional> assetNamespace() {
+        return Optional.ofNullable(this.assetNamespace);
+    }
+
+    /**
+     * The name of the data access label.
+     * 
+     */
+    @Import(name="dataAccessLabel")
+    private @Nullable Output dataAccessLabel;
+
+    /**
+     * @return The name of the data access label.
+     * 
+     */
+    public Optional> dataAccessLabel() {
+        return Optional.ofNullable(this.dataAccessLabel);
+    }
+
+    /**
+     * (Output)
+     * Output only. The display name of the label.
+     * Data access label and log types's name
+     * will match the display name of the resource.
+     * The asset namespace will match the namespace itself.
+     * The ingestion key value pair will match the key of the tuple.
+     * 
+     */
+    @Import(name="displayName")
+    private @Nullable Output displayName;
+
+    /**
+     * @return (Output)
+     * Output only. The display name of the label.
+     * Data access label and log types's name
+     * will match the display name of the resource.
+     * The asset namespace will match the namespace itself.
+     * The ingestion key value pair will match the key of the tuple.
+     * 
+     */
+    public Optional> displayName() {
+        return Optional.ofNullable(this.displayName);
+    }
+
+    /**
+     * Representation of an ingestion label type.
+     * Structure is documented below.
+     * 
+     */
+    @Import(name="ingestionLabel")
+    private @Nullable Output ingestionLabel;
+
+    /**
+     * @return Representation of an ingestion label type.
+     * Structure is documented below.
+     * 
+     */
+    public Optional> ingestionLabel() {
+        return Optional.ofNullable(this.ingestionLabel);
+    }
+
+    /**
+     * The name of the log type.
+     * 
+     */
+    @Import(name="logType")
+    private @Nullable Output logType;
+
+    /**
+     * @return The name of the log type.
+     * 
+     */
+    public Optional> logType() {
+        return Optional.ofNullable(this.logType);
+    }
+
+    private DataAccessScopeAllowedDataAccessLabelArgs() {}
+
+    private DataAccessScopeAllowedDataAccessLabelArgs(DataAccessScopeAllowedDataAccessLabelArgs $) {
+        this.assetNamespace = $.assetNamespace;
+        this.dataAccessLabel = $.dataAccessLabel;
+        this.displayName = $.displayName;
+        this.ingestionLabel = $.ingestionLabel;
+        this.logType = $.logType;
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+    public static Builder builder(DataAccessScopeAllowedDataAccessLabelArgs defaults) {
+        return new Builder(defaults);
+    }
+
+    public static final class Builder {
+        private DataAccessScopeAllowedDataAccessLabelArgs $;
+
+        public Builder() {
+            $ = new DataAccessScopeAllowedDataAccessLabelArgs();
+        }
+
+        public Builder(DataAccessScopeAllowedDataAccessLabelArgs defaults) {
+            $ = new DataAccessScopeAllowedDataAccessLabelArgs(Objects.requireNonNull(defaults));
+        }
+
+        /**
+         * @param assetNamespace The asset namespace configured in the forwarder
+         * of the customer's events.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder assetNamespace(@Nullable Output assetNamespace) {
+            $.assetNamespace = assetNamespace;
+            return this;
+        }
+
+        /**
+         * @param assetNamespace The asset namespace configured in the forwarder
+         * of the customer's events.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder assetNamespace(String assetNamespace) {
+            return assetNamespace(Output.of(assetNamespace));
+        }
+
+        /**
+         * @param dataAccessLabel The name of the data access label.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder dataAccessLabel(@Nullable Output dataAccessLabel) {
+            $.dataAccessLabel = dataAccessLabel;
+            return this;
+        }
+
+        /**
+         * @param dataAccessLabel The name of the data access label.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder dataAccessLabel(String dataAccessLabel) {
+            return dataAccessLabel(Output.of(dataAccessLabel));
+        }
+
+        /**
+         * @param displayName (Output)
+         * Output only. The display name of the label.
+         * Data access label and log types's name
+         * will match the display name of the resource.
+         * The asset namespace will match the namespace itself.
+         * The ingestion key value pair will match the key of the tuple.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder displayName(@Nullable Output displayName) {
+            $.displayName = displayName;
+            return this;
+        }
+
+        /**
+         * @param displayName (Output)
+         * Output only. The display name of the label.
+         * Data access label and log types's name
+         * will match the display name of the resource.
+         * The asset namespace will match the namespace itself.
+         * The ingestion key value pair will match the key of the tuple.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder displayName(String displayName) {
+            return displayName(Output.of(displayName));
+        }
+
+        /**
+         * @param ingestionLabel Representation of an ingestion label type.
+         * Structure is documented below.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder ingestionLabel(@Nullable Output ingestionLabel) {
+            $.ingestionLabel = ingestionLabel;
+            return this;
+        }
+
+        /**
+         * @param ingestionLabel Representation of an ingestion label type.
+         * Structure is documented below.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder ingestionLabel(DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs ingestionLabel) {
+            return ingestionLabel(Output.of(ingestionLabel));
+        }
+
+        /**
+         * @param logType The name of the log type.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder logType(@Nullable Output logType) {
+            $.logType = logType;
+            return this;
+        }
+
+        /**
+         * @param logType The name of the log type.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder logType(String logType) {
+            return logType(Output.of(logType));
+        }
+
+        public DataAccessScopeAllowedDataAccessLabelArgs build() {
+            return $;
+        }
+    }
+
+}
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs.java
new file mode 100644
index 0000000000..14d1f7a269
--- /dev/null
+++ b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs.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.chronicle.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 DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs extends com.pulumi.resources.ResourceArgs {
+
+    public static final DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs Empty = new DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs();
+
+    /**
+     * Required. The key of the ingestion label. Always required.
+     * 
+     */
+    @Import(name="ingestionLabelKey", required=true)
+    private Output ingestionLabelKey;
+
+    /**
+     * @return Required. The key of the ingestion label. Always required.
+     * 
+     */
+    public Output ingestionLabelKey() {
+        return this.ingestionLabelKey;
+    }
+
+    /**
+     * Optional. The value of the ingestion label. Optional. An object
+     * with no provided value and some key provided would match
+     * against the given key and ANY value.
+     * 
+     */
+    @Import(name="ingestionLabelValue")
+    private @Nullable Output ingestionLabelValue;
+
+    /**
+     * @return Optional. The value of the ingestion label. Optional. An object
+     * with no provided value and some key provided would match
+     * against the given key and ANY value.
+     * 
+     */
+    public Optional> ingestionLabelValue() {
+        return Optional.ofNullable(this.ingestionLabelValue);
+    }
+
+    private DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs() {}
+
+    private DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs(DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs $) {
+        this.ingestionLabelKey = $.ingestionLabelKey;
+        this.ingestionLabelValue = $.ingestionLabelValue;
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+    public static Builder builder(DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs defaults) {
+        return new Builder(defaults);
+    }
+
+    public static final class Builder {
+        private DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs $;
+
+        public Builder() {
+            $ = new DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs();
+        }
+
+        public Builder(DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs defaults) {
+            $ = new DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs(Objects.requireNonNull(defaults));
+        }
+
+        /**
+         * @param ingestionLabelKey Required. The key of the ingestion label. Always required.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder ingestionLabelKey(Output ingestionLabelKey) {
+            $.ingestionLabelKey = ingestionLabelKey;
+            return this;
+        }
+
+        /**
+         * @param ingestionLabelKey Required. The key of the ingestion label. Always required.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder ingestionLabelKey(String ingestionLabelKey) {
+            return ingestionLabelKey(Output.of(ingestionLabelKey));
+        }
+
+        /**
+         * @param ingestionLabelValue Optional. The value of the ingestion label. Optional. An object
+         * with no provided value and some key provided would match
+         * against the given key and ANY value.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder ingestionLabelValue(@Nullable Output ingestionLabelValue) {
+            $.ingestionLabelValue = ingestionLabelValue;
+            return this;
+        }
+
+        /**
+         * @param ingestionLabelValue Optional. The value of the ingestion label. Optional. An object
+         * with no provided value and some key provided would match
+         * against the given key and ANY value.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder ingestionLabelValue(String ingestionLabelValue) {
+            return ingestionLabelValue(Output.of(ingestionLabelValue));
+        }
+
+        public DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs build() {
+            if ($.ingestionLabelKey == null) {
+                throw new MissingRequiredPropertyException("DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs", "ingestionLabelKey");
+            }
+            return $;
+        }
+    }
+
+}
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/DataAccessScopeDeniedDataAccessLabelArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/DataAccessScopeDeniedDataAccessLabelArgs.java
new file mode 100644
index 0000000000..a5a5ef6979
--- /dev/null
+++ b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/DataAccessScopeDeniedDataAccessLabelArgs.java
@@ -0,0 +1,260 @@
+// *** 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.DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs;
+import java.lang.String;
+import java.util.Objects;
+import java.util.Optional;
+import javax.annotation.Nullable;
+
+
+public final class DataAccessScopeDeniedDataAccessLabelArgs extends com.pulumi.resources.ResourceArgs {
+
+    public static final DataAccessScopeDeniedDataAccessLabelArgs Empty = new DataAccessScopeDeniedDataAccessLabelArgs();
+
+    /**
+     * The asset namespace configured in the forwarder
+     * of the customer's events.
+     * 
+     */
+    @Import(name="assetNamespace")
+    private @Nullable Output assetNamespace;
+
+    /**
+     * @return The asset namespace configured in the forwarder
+     * of the customer's events.
+     * 
+     */
+    public Optional> assetNamespace() {
+        return Optional.ofNullable(this.assetNamespace);
+    }
+
+    /**
+     * The name of the data access label.
+     * 
+     */
+    @Import(name="dataAccessLabel")
+    private @Nullable Output dataAccessLabel;
+
+    /**
+     * @return The name of the data access label.
+     * 
+     */
+    public Optional> dataAccessLabel() {
+        return Optional.ofNullable(this.dataAccessLabel);
+    }
+
+    /**
+     * (Output)
+     * Output only. The display name of the label.
+     * Data access label and log types's name
+     * will match the display name of the resource.
+     * The asset namespace will match the namespace itself.
+     * The ingestion key value pair will match the key of the tuple.
+     * 
+     */
+    @Import(name="displayName")
+    private @Nullable Output displayName;
+
+    /**
+     * @return (Output)
+     * Output only. The display name of the label.
+     * Data access label and log types's name
+     * will match the display name of the resource.
+     * The asset namespace will match the namespace itself.
+     * The ingestion key value pair will match the key of the tuple.
+     * 
+     */
+    public Optional> displayName() {
+        return Optional.ofNullable(this.displayName);
+    }
+
+    /**
+     * Representation of an ingestion label type.
+     * Structure is documented below.
+     * 
+     */
+    @Import(name="ingestionLabel")
+    private @Nullable Output ingestionLabel;
+
+    /**
+     * @return Representation of an ingestion label type.
+     * Structure is documented below.
+     * 
+     */
+    public Optional> ingestionLabel() {
+        return Optional.ofNullable(this.ingestionLabel);
+    }
+
+    /**
+     * The name of the log type.
+     * 
+     */
+    @Import(name="logType")
+    private @Nullable Output logType;
+
+    /**
+     * @return The name of the log type.
+     * 
+     */
+    public Optional> logType() {
+        return Optional.ofNullable(this.logType);
+    }
+
+    private DataAccessScopeDeniedDataAccessLabelArgs() {}
+
+    private DataAccessScopeDeniedDataAccessLabelArgs(DataAccessScopeDeniedDataAccessLabelArgs $) {
+        this.assetNamespace = $.assetNamespace;
+        this.dataAccessLabel = $.dataAccessLabel;
+        this.displayName = $.displayName;
+        this.ingestionLabel = $.ingestionLabel;
+        this.logType = $.logType;
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+    public static Builder builder(DataAccessScopeDeniedDataAccessLabelArgs defaults) {
+        return new Builder(defaults);
+    }
+
+    public static final class Builder {
+        private DataAccessScopeDeniedDataAccessLabelArgs $;
+
+        public Builder() {
+            $ = new DataAccessScopeDeniedDataAccessLabelArgs();
+        }
+
+        public Builder(DataAccessScopeDeniedDataAccessLabelArgs defaults) {
+            $ = new DataAccessScopeDeniedDataAccessLabelArgs(Objects.requireNonNull(defaults));
+        }
+
+        /**
+         * @param assetNamespace The asset namespace configured in the forwarder
+         * of the customer's events.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder assetNamespace(@Nullable Output assetNamespace) {
+            $.assetNamespace = assetNamespace;
+            return this;
+        }
+
+        /**
+         * @param assetNamespace The asset namespace configured in the forwarder
+         * of the customer's events.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder assetNamespace(String assetNamespace) {
+            return assetNamespace(Output.of(assetNamespace));
+        }
+
+        /**
+         * @param dataAccessLabel The name of the data access label.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder dataAccessLabel(@Nullable Output dataAccessLabel) {
+            $.dataAccessLabel = dataAccessLabel;
+            return this;
+        }
+
+        /**
+         * @param dataAccessLabel The name of the data access label.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder dataAccessLabel(String dataAccessLabel) {
+            return dataAccessLabel(Output.of(dataAccessLabel));
+        }
+
+        /**
+         * @param displayName (Output)
+         * Output only. The display name of the label.
+         * Data access label and log types's name
+         * will match the display name of the resource.
+         * The asset namespace will match the namespace itself.
+         * The ingestion key value pair will match the key of the tuple.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder displayName(@Nullable Output displayName) {
+            $.displayName = displayName;
+            return this;
+        }
+
+        /**
+         * @param displayName (Output)
+         * Output only. The display name of the label.
+         * Data access label and log types's name
+         * will match the display name of the resource.
+         * The asset namespace will match the namespace itself.
+         * The ingestion key value pair will match the key of the tuple.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder displayName(String displayName) {
+            return displayName(Output.of(displayName));
+        }
+
+        /**
+         * @param ingestionLabel Representation of an ingestion label type.
+         * Structure is documented below.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder ingestionLabel(@Nullable Output ingestionLabel) {
+            $.ingestionLabel = ingestionLabel;
+            return this;
+        }
+
+        /**
+         * @param ingestionLabel Representation of an ingestion label type.
+         * Structure is documented below.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder ingestionLabel(DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs ingestionLabel) {
+            return ingestionLabel(Output.of(ingestionLabel));
+        }
+
+        /**
+         * @param logType The name of the log type.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder logType(@Nullable Output logType) {
+            $.logType = logType;
+            return this;
+        }
+
+        /**
+         * @param logType The name of the log type.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder logType(String logType) {
+            return logType(Output.of(logType));
+        }
+
+        public DataAccessScopeDeniedDataAccessLabelArgs build() {
+            return $;
+        }
+    }
+
+}
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs.java
new file mode 100644
index 0000000000..3ba2da29f3
--- /dev/null
+++ b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs.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.chronicle.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 DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs extends com.pulumi.resources.ResourceArgs {
+
+    public static final DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs Empty = new DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs();
+
+    /**
+     * Required. The key of the ingestion label. Always required.
+     * 
+     */
+    @Import(name="ingestionLabelKey", required=true)
+    private Output ingestionLabelKey;
+
+    /**
+     * @return Required. The key of the ingestion label. Always required.
+     * 
+     */
+    public Output ingestionLabelKey() {
+        return this.ingestionLabelKey;
+    }
+
+    /**
+     * Optional. The value of the ingestion label. Optional. An object
+     * with no provided value and some key provided would match
+     * against the given key and ANY value.
+     * 
+     */
+    @Import(name="ingestionLabelValue")
+    private @Nullable Output ingestionLabelValue;
+
+    /**
+     * @return Optional. The value of the ingestion label. Optional. An object
+     * with no provided value and some key provided would match
+     * against the given key and ANY value.
+     * 
+     */
+    public Optional> ingestionLabelValue() {
+        return Optional.ofNullable(this.ingestionLabelValue);
+    }
+
+    private DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs() {}
+
+    private DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs(DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs $) {
+        this.ingestionLabelKey = $.ingestionLabelKey;
+        this.ingestionLabelValue = $.ingestionLabelValue;
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+    public static Builder builder(DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs defaults) {
+        return new Builder(defaults);
+    }
+
+    public static final class Builder {
+        private DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs $;
+
+        public Builder() {
+            $ = new DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs();
+        }
+
+        public Builder(DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs defaults) {
+            $ = new DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs(Objects.requireNonNull(defaults));
+        }
+
+        /**
+         * @param ingestionLabelKey Required. The key of the ingestion label. Always required.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder ingestionLabelKey(Output ingestionLabelKey) {
+            $.ingestionLabelKey = ingestionLabelKey;
+            return this;
+        }
+
+        /**
+         * @param ingestionLabelKey Required. The key of the ingestion label. Always required.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder ingestionLabelKey(String ingestionLabelKey) {
+            return ingestionLabelKey(Output.of(ingestionLabelKey));
+        }
+
+        /**
+         * @param ingestionLabelValue Optional. The value of the ingestion label. Optional. An object
+         * with no provided value and some key provided would match
+         * against the given key and ANY value.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder ingestionLabelValue(@Nullable Output ingestionLabelValue) {
+            $.ingestionLabelValue = ingestionLabelValue;
+            return this;
+        }
+
+        /**
+         * @param ingestionLabelValue Optional. The value of the ingestion label. Optional. An object
+         * with no provided value and some key provided would match
+         * against the given key and ANY value.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder ingestionLabelValue(String ingestionLabelValue) {
+            return ingestionLabelValue(Output.of(ingestionLabelValue));
+        }
+
+        public DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs build() {
+            if ($.ingestionLabelKey == null) {
+                throw new MissingRequiredPropertyException("DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs", "ingestionLabelKey");
+            }
+            return $;
+        }
+    }
+
+}
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/DataAccessScopeState.java b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/DataAccessScopeState.java
new file mode 100644
index 0000000000..ef278a730f
--- /dev/null
+++ b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/inputs/DataAccessScopeState.java
@@ -0,0 +1,699 @@
+// *** 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.DataAccessScopeAllowedDataAccessLabelArgs;
+import com.pulumi.gcp.chronicle.inputs.DataAccessScopeDeniedDataAccessLabelArgs;
+import java.lang.Boolean;
+import java.lang.String;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+import javax.annotation.Nullable;
+
+
+public final class DataAccessScopeState extends com.pulumi.resources.ResourceArgs {
+
+    public static final DataAccessScopeState Empty = new DataAccessScopeState();
+
+    /**
+     * Optional. Whether or not the scope allows all labels, allow_all and
+     * allowed_data_access_labels are mutually exclusive and one of them must be
+     * present. denied_data_access_labels can still be used along with allow_all.
+     * When combined with denied_data_access_labels, access will be granted to all
+     * data that doesn't have labels mentioned in denied_data_access_labels. E.g.:
+     * A customer with scope with denied labels A and B and allow_all will be able
+     * to see all data except data labeled with A and data labeled with B and data
+     * with labels A and B.
+     * 
+     */
+    @Import(name="allowAll")
+    private @Nullable Output allowAll;
+
+    /**
+     * @return Optional. Whether or not the scope allows all labels, allow_all and
+     * allowed_data_access_labels are mutually exclusive and one of them must be
+     * present. denied_data_access_labels can still be used along with allow_all.
+     * When combined with denied_data_access_labels, access will be granted to all
+     * data that doesn't have labels mentioned in denied_data_access_labels. E.g.:
+     * A customer with scope with denied labels A and B and allow_all will be able
+     * to see all data except data labeled with A and data labeled with B and data
+     * with labels A and B.
+     * 
+     */
+    public Optional> allowAll() {
+        return Optional.ofNullable(this.allowAll);
+    }
+
+    /**
+     * The allowed labels for the scope. There has to be at
+     * least one label allowed for the scope to be valid.
+     * The logical operator for evaluation of the allowed labels is OR.
+     * Either allow_all or allowed_data_access_labels needs to be provided.
+     * E.g.: A customer with scope with allowed labels A and B will be able
+     * to see data with labeled with A or B or (A and B).
+     * Structure is documented below.
+     * 
+     */
+    @Import(name="allowedDataAccessLabels")
+    private @Nullable Output> allowedDataAccessLabels;
+
+    /**
+     * @return The allowed labels for the scope. There has to be at
+     * least one label allowed for the scope to be valid.
+     * The logical operator for evaluation of the allowed labels is OR.
+     * Either allow_all or allowed_data_access_labels needs to be provided.
+     * E.g.: A customer with scope with allowed labels A and B will be able
+     * to see data with labeled with A or B or (A and B).
+     * Structure is documented below.
+     * 
+     */
+    public Optional>> allowedDataAccessLabels() {
+        return Optional.ofNullable(this.allowedDataAccessLabels);
+    }
+
+    /**
+     * Output only. The user who created the data access scope.
+     * 
+     */
+    @Import(name="author")
+    private @Nullable Output author;
+
+    /**
+     * @return Output only. The user who created the data access scope.
+     * 
+     */
+    public Optional> author() {
+        return Optional.ofNullable(this.author);
+    }
+
+    /**
+     * Output only. The time at which the data access scope was created.
+     * 
+     */
+    @Import(name="createTime")
+    private @Nullable Output createTime;
+
+    /**
+     * @return Output only. The time at which the data access scope was created.
+     * 
+     */
+    public Optional> createTime() {
+        return Optional.ofNullable(this.createTime);
+    }
+
+    /**
+     * Required. The user provided scope id which will become the last part of the name
+     * of the scope resource.
+     * Needs to be compliant with https://google.aip.dev/122
+     * 
+     * ***
+     * 
+     */
+    @Import(name="dataAccessScopeId")
+    private @Nullable Output dataAccessScopeId;
+
+    /**
+     * @return Required. The user provided scope id which will become the last part of the name
+     * of the scope resource.
+     * Needs to be compliant with https://google.aip.dev/122
+     * 
+     * ***
+     * 
+     */
+    public Optional> dataAccessScopeId() {
+        return Optional.ofNullable(this.dataAccessScopeId);
+    }
+
+    /**
+     * Optional. The denied labels for the scope.
+     * The logical operator for evaluation of the denied labels is AND.
+     * E.g.: A customer with scope with denied labels A and B won't be able
+     * to see data labeled with A and data labeled with B
+     * and data with labels A and B.
+     * Structure is documented below.
+     * 
+     */
+    @Import(name="deniedDataAccessLabels")
+    private @Nullable Output> deniedDataAccessLabels;
+
+    /**
+     * @return Optional. The denied labels for the scope.
+     * The logical operator for evaluation of the denied labels is AND.
+     * E.g.: A customer with scope with denied labels A and B won't be able
+     * to see data labeled with A and data labeled with B
+     * and data with labels A and B.
+     * Structure is documented below.
+     * 
+     */
+    public Optional>> deniedDataAccessLabels() {
+        return Optional.ofNullable(this.deniedDataAccessLabels);
+    }
+
+    /**
+     * Optional. A description of the data access scope for a human reader.
+     * 
+     */
+    @Import(name="description")
+    private @Nullable Output description;
+
+    /**
+     * @return Optional. A description of the data access scope for a human reader.
+     * 
+     */
+    public Optional> description() {
+        return Optional.ofNullable(this.description);
+    }
+
+    /**
+     * Output only. The name to be used for display to customers of the data access scope.
+     * 
+     */
+    @Import(name="displayName")
+    private @Nullable Output displayName;
+
+    /**
+     * @return Output only. The name to be used for display to customers of the data access scope.
+     * 
+     */
+    public Optional> displayName() {
+        return Optional.ofNullable(this.displayName);
+    }
+
+    /**
+     * 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);
+    }
+
+    /**
+     * Output only. The user who last updated the data access scope.
+     * 
+     */
+    @Import(name="lastEditor")
+    private @Nullable Output lastEditor;
+
+    /**
+     * @return Output only. The user who last updated the data access scope.
+     * 
+     */
+    public Optional> lastEditor() {
+        return Optional.ofNullable(this.lastEditor);
+    }
+
+    /**
+     * 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);
+    }
+
+    /**
+     * The unique full name of the data access scope. This unique identifier is generated using values provided for the URL parameters.
+     * Format:
+     * projects/{project}/locations/{location}/instances/{instance}/dataAccessScopes/{data_access_scope_id}
+     * 
+     */
+    @Import(name="name")
+    private @Nullable Output name;
+
+    /**
+     * @return The unique full name of the data access scope. This unique identifier is generated using values provided for the URL parameters.
+     * Format:
+     * projects/{project}/locations/{location}/instances/{instance}/dataAccessScopes/{data_access_scope_id}
+     * 
+     */
+    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);
+    }
+
+    /**
+     * Output only. The time at which the data access scope was last updated.
+     * 
+     */
+    @Import(name="updateTime")
+    private @Nullable Output updateTime;
+
+    /**
+     * @return Output only. The time at which the data access scope was last updated.
+     * 
+     */
+    public Optional> updateTime() {
+        return Optional.ofNullable(this.updateTime);
+    }
+
+    private DataAccessScopeState() {}
+
+    private DataAccessScopeState(DataAccessScopeState $) {
+        this.allowAll = $.allowAll;
+        this.allowedDataAccessLabels = $.allowedDataAccessLabels;
+        this.author = $.author;
+        this.createTime = $.createTime;
+        this.dataAccessScopeId = $.dataAccessScopeId;
+        this.deniedDataAccessLabels = $.deniedDataAccessLabels;
+        this.description = $.description;
+        this.displayName = $.displayName;
+        this.instance = $.instance;
+        this.lastEditor = $.lastEditor;
+        this.location = $.location;
+        this.name = $.name;
+        this.project = $.project;
+        this.updateTime = $.updateTime;
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+    public static Builder builder(DataAccessScopeState defaults) {
+        return new Builder(defaults);
+    }
+
+    public static final class Builder {
+        private DataAccessScopeState $;
+
+        public Builder() {
+            $ = new DataAccessScopeState();
+        }
+
+        public Builder(DataAccessScopeState defaults) {
+            $ = new DataAccessScopeState(Objects.requireNonNull(defaults));
+        }
+
+        /**
+         * @param allowAll Optional. Whether or not the scope allows all labels, allow_all and
+         * allowed_data_access_labels are mutually exclusive and one of them must be
+         * present. denied_data_access_labels can still be used along with allow_all.
+         * When combined with denied_data_access_labels, access will be granted to all
+         * data that doesn't have labels mentioned in denied_data_access_labels. E.g.:
+         * A customer with scope with denied labels A and B and allow_all will be able
+         * to see all data except data labeled with A and data labeled with B and data
+         * with labels A and B.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder allowAll(@Nullable Output allowAll) {
+            $.allowAll = allowAll;
+            return this;
+        }
+
+        /**
+         * @param allowAll Optional. Whether or not the scope allows all labels, allow_all and
+         * allowed_data_access_labels are mutually exclusive and one of them must be
+         * present. denied_data_access_labels can still be used along with allow_all.
+         * When combined with denied_data_access_labels, access will be granted to all
+         * data that doesn't have labels mentioned in denied_data_access_labels. E.g.:
+         * A customer with scope with denied labels A and B and allow_all will be able
+         * to see all data except data labeled with A and data labeled with B and data
+         * with labels A and B.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder allowAll(Boolean allowAll) {
+            return allowAll(Output.of(allowAll));
+        }
+
+        /**
+         * @param allowedDataAccessLabels The allowed labels for the scope. There has to be at
+         * least one label allowed for the scope to be valid.
+         * The logical operator for evaluation of the allowed labels is OR.
+         * Either allow_all or allowed_data_access_labels needs to be provided.
+         * E.g.: A customer with scope with allowed labels A and B will be able
+         * to see data with labeled with A or B or (A and B).
+         * Structure is documented below.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder allowedDataAccessLabels(@Nullable Output> allowedDataAccessLabels) {
+            $.allowedDataAccessLabels = allowedDataAccessLabels;
+            return this;
+        }
+
+        /**
+         * @param allowedDataAccessLabels The allowed labels for the scope. There has to be at
+         * least one label allowed for the scope to be valid.
+         * The logical operator for evaluation of the allowed labels is OR.
+         * Either allow_all or allowed_data_access_labels needs to be provided.
+         * E.g.: A customer with scope with allowed labels A and B will be able
+         * to see data with labeled with A or B or (A and B).
+         * Structure is documented below.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder allowedDataAccessLabels(List allowedDataAccessLabels) {
+            return allowedDataAccessLabels(Output.of(allowedDataAccessLabels));
+        }
+
+        /**
+         * @param allowedDataAccessLabels The allowed labels for the scope. There has to be at
+         * least one label allowed for the scope to be valid.
+         * The logical operator for evaluation of the allowed labels is OR.
+         * Either allow_all or allowed_data_access_labels needs to be provided.
+         * E.g.: A customer with scope with allowed labels A and B will be able
+         * to see data with labeled with A or B or (A and B).
+         * Structure is documented below.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder allowedDataAccessLabels(DataAccessScopeAllowedDataAccessLabelArgs... allowedDataAccessLabels) {
+            return allowedDataAccessLabels(List.of(allowedDataAccessLabels));
+        }
+
+        /**
+         * @param author Output only. The user who created the data access scope.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder author(@Nullable Output author) {
+            $.author = author;
+            return this;
+        }
+
+        /**
+         * @param author Output only. The user who created the data access scope.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder author(String author) {
+            return author(Output.of(author));
+        }
+
+        /**
+         * @param createTime Output only. The time at which the data access scope was created.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder createTime(@Nullable Output createTime) {
+            $.createTime = createTime;
+            return this;
+        }
+
+        /**
+         * @param createTime Output only. The time at which the data access scope was created.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder createTime(String createTime) {
+            return createTime(Output.of(createTime));
+        }
+
+        /**
+         * @param dataAccessScopeId Required. The user provided scope id which will become the last part of the name
+         * of the scope resource.
+         * Needs to be compliant with https://google.aip.dev/122
+         * 
+         * ***
+         * 
+         * @return builder
+         * 
+         */
+        public Builder dataAccessScopeId(@Nullable Output dataAccessScopeId) {
+            $.dataAccessScopeId = dataAccessScopeId;
+            return this;
+        }
+
+        /**
+         * @param dataAccessScopeId Required. The user provided scope id which will become the last part of the name
+         * of the scope resource.
+         * Needs to be compliant with https://google.aip.dev/122
+         * 
+         * ***
+         * 
+         * @return builder
+         * 
+         */
+        public Builder dataAccessScopeId(String dataAccessScopeId) {
+            return dataAccessScopeId(Output.of(dataAccessScopeId));
+        }
+
+        /**
+         * @param deniedDataAccessLabels Optional. The denied labels for the scope.
+         * The logical operator for evaluation of the denied labels is AND.
+         * E.g.: A customer with scope with denied labels A and B won't be able
+         * to see data labeled with A and data labeled with B
+         * and data with labels A and B.
+         * Structure is documented below.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder deniedDataAccessLabels(@Nullable Output> deniedDataAccessLabels) {
+            $.deniedDataAccessLabels = deniedDataAccessLabels;
+            return this;
+        }
+
+        /**
+         * @param deniedDataAccessLabels Optional. The denied labels for the scope.
+         * The logical operator for evaluation of the denied labels is AND.
+         * E.g.: A customer with scope with denied labels A and B won't be able
+         * to see data labeled with A and data labeled with B
+         * and data with labels A and B.
+         * Structure is documented below.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder deniedDataAccessLabels(List deniedDataAccessLabels) {
+            return deniedDataAccessLabels(Output.of(deniedDataAccessLabels));
+        }
+
+        /**
+         * @param deniedDataAccessLabels Optional. The denied labels for the scope.
+         * The logical operator for evaluation of the denied labels is AND.
+         * E.g.: A customer with scope with denied labels A and B won't be able
+         * to see data labeled with A and data labeled with B
+         * and data with labels A and B.
+         * Structure is documented below.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder deniedDataAccessLabels(DataAccessScopeDeniedDataAccessLabelArgs... deniedDataAccessLabels) {
+            return deniedDataAccessLabels(List.of(deniedDataAccessLabels));
+        }
+
+        /**
+         * @param description Optional. A description of the data access scope for a human reader.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder description(@Nullable Output description) {
+            $.description = description;
+            return this;
+        }
+
+        /**
+         * @param description Optional. A description of the data access scope for a human reader.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder description(String description) {
+            return description(Output.of(description));
+        }
+
+        /**
+         * @param displayName Output only. The name to be used for display to customers of the data access scope.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder displayName(@Nullable Output displayName) {
+            $.displayName = displayName;
+            return this;
+        }
+
+        /**
+         * @param displayName Output only. The name to be used for display to customers of the data access scope.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder displayName(String displayName) {
+            return displayName(Output.of(displayName));
+        }
+
+        /**
+         * @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 lastEditor Output only. The user who last updated the data access scope.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder lastEditor(@Nullable Output lastEditor) {
+            $.lastEditor = lastEditor;
+            return this;
+        }
+
+        /**
+         * @param lastEditor Output only. The user who last updated the data access scope.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder lastEditor(String lastEditor) {
+            return lastEditor(Output.of(lastEditor));
+        }
+
+        /**
+         * @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 name The unique full name of the data access scope. This unique identifier is generated using values provided for the URL parameters.
+         * Format:
+         * projects/{project}/locations/{location}/instances/{instance}/dataAccessScopes/{data_access_scope_id}
+         * 
+         * @return builder
+         * 
+         */
+        public Builder name(@Nullable Output name) {
+            $.name = name;
+            return this;
+        }
+
+        /**
+         * @param name The unique full name of the data access scope. This unique identifier is generated using values provided for the URL parameters.
+         * Format:
+         * projects/{project}/locations/{location}/instances/{instance}/dataAccessScopes/{data_access_scope_id}
+         * 
+         * @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 updateTime Output only. The time at which the data access scope was last updated.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder updateTime(@Nullable Output updateTime) {
+            $.updateTime = updateTime;
+            return this;
+        }
+
+        /**
+         * @param updateTime Output only. The time at which the data access scope was last updated.
+         * 
+         * @return builder
+         * 
+         */
+        public Builder updateTime(String updateTime) {
+            return updateTime(Output.of(updateTime));
+        }
+
+        public DataAccessScopeState 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
index d6c589d3e6..1f38ec5e0b 100644
--- 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
@@ -190,20 +190,16 @@ public Optional> 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-/.
+     * 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-/.
+     * @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() {
@@ -504,10 +500,8 @@ public Builder updateTime(String 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-/.
+         * @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
          * 
@@ -518,10 +512,8 @@ public Builder watchlistId(@Nullable Output watchlistId) {
         }
 
         /**
-         * @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-/.
+         * @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
          * 
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/chronicle/outputs/DataAccessScopeAllowedDataAccessLabel.java b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/outputs/DataAccessScopeAllowedDataAccessLabel.java
new file mode 100644
index 0000000000..439a78a00e
--- /dev/null
+++ b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/outputs/DataAccessScopeAllowedDataAccessLabel.java
@@ -0,0 +1,156 @@
+// *** 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.DataAccessScopeAllowedDataAccessLabelIngestionLabel;
+import java.lang.String;
+import java.util.Objects;
+import java.util.Optional;
+import javax.annotation.Nullable;
+
+@CustomType
+public final class DataAccessScopeAllowedDataAccessLabel {
+    /**
+     * @return The asset namespace configured in the forwarder
+     * of the customer's events.
+     * 
+     */
+    private @Nullable String assetNamespace;
+    /**
+     * @return The name of the data access label.
+     * 
+     */
+    private @Nullable String dataAccessLabel;
+    /**
+     * @return (Output)
+     * Output only. The display name of the label.
+     * Data access label and log types's name
+     * will match the display name of the resource.
+     * The asset namespace will match the namespace itself.
+     * The ingestion key value pair will match the key of the tuple.
+     * 
+     */
+    private @Nullable String displayName;
+    /**
+     * @return Representation of an ingestion label type.
+     * Structure is documented below.
+     * 
+     */
+    private @Nullable DataAccessScopeAllowedDataAccessLabelIngestionLabel ingestionLabel;
+    /**
+     * @return The name of the log type.
+     * 
+     */
+    private @Nullable String logType;
+
+    private DataAccessScopeAllowedDataAccessLabel() {}
+    /**
+     * @return The asset namespace configured in the forwarder
+     * of the customer's events.
+     * 
+     */
+    public Optional assetNamespace() {
+        return Optional.ofNullable(this.assetNamespace);
+    }
+    /**
+     * @return The name of the data access label.
+     * 
+     */
+    public Optional dataAccessLabel() {
+        return Optional.ofNullable(this.dataAccessLabel);
+    }
+    /**
+     * @return (Output)
+     * Output only. The display name of the label.
+     * Data access label and log types's name
+     * will match the display name of the resource.
+     * The asset namespace will match the namespace itself.
+     * The ingestion key value pair will match the key of the tuple.
+     * 
+     */
+    public Optional displayName() {
+        return Optional.ofNullable(this.displayName);
+    }
+    /**
+     * @return Representation of an ingestion label type.
+     * Structure is documented below.
+     * 
+     */
+    public Optional ingestionLabel() {
+        return Optional.ofNullable(this.ingestionLabel);
+    }
+    /**
+     * @return The name of the log type.
+     * 
+     */
+    public Optional logType() {
+        return Optional.ofNullable(this.logType);
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static Builder builder(DataAccessScopeAllowedDataAccessLabel defaults) {
+        return new Builder(defaults);
+    }
+    @CustomType.Builder
+    public static final class Builder {
+        private @Nullable String assetNamespace;
+        private @Nullable String dataAccessLabel;
+        private @Nullable String displayName;
+        private @Nullable DataAccessScopeAllowedDataAccessLabelIngestionLabel ingestionLabel;
+        private @Nullable String logType;
+        public Builder() {}
+        public Builder(DataAccessScopeAllowedDataAccessLabel defaults) {
+    	      Objects.requireNonNull(defaults);
+    	      this.assetNamespace = defaults.assetNamespace;
+    	      this.dataAccessLabel = defaults.dataAccessLabel;
+    	      this.displayName = defaults.displayName;
+    	      this.ingestionLabel = defaults.ingestionLabel;
+    	      this.logType = defaults.logType;
+        }
+
+        @CustomType.Setter
+        public Builder assetNamespace(@Nullable String assetNamespace) {
+
+            this.assetNamespace = assetNamespace;
+            return this;
+        }
+        @CustomType.Setter
+        public Builder dataAccessLabel(@Nullable String dataAccessLabel) {
+
+            this.dataAccessLabel = dataAccessLabel;
+            return this;
+        }
+        @CustomType.Setter
+        public Builder displayName(@Nullable String displayName) {
+
+            this.displayName = displayName;
+            return this;
+        }
+        @CustomType.Setter
+        public Builder ingestionLabel(@Nullable DataAccessScopeAllowedDataAccessLabelIngestionLabel ingestionLabel) {
+
+            this.ingestionLabel = ingestionLabel;
+            return this;
+        }
+        @CustomType.Setter
+        public Builder logType(@Nullable String logType) {
+
+            this.logType = logType;
+            return this;
+        }
+        public DataAccessScopeAllowedDataAccessLabel build() {
+            final var _resultValue = new DataAccessScopeAllowedDataAccessLabel();
+            _resultValue.assetNamespace = assetNamespace;
+            _resultValue.dataAccessLabel = dataAccessLabel;
+            _resultValue.displayName = displayName;
+            _resultValue.ingestionLabel = ingestionLabel;
+            _resultValue.logType = logType;
+            return _resultValue;
+        }
+    }
+}
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/chronicle/outputs/DataAccessScopeAllowedDataAccessLabelIngestionLabel.java b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/outputs/DataAccessScopeAllowedDataAccessLabelIngestionLabel.java
new file mode 100644
index 0000000000..957ff15fb7
--- /dev/null
+++ b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/outputs/DataAccessScopeAllowedDataAccessLabelIngestionLabel.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.chronicle.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 DataAccessScopeAllowedDataAccessLabelIngestionLabel {
+    /**
+     * @return Required. The key of the ingestion label. Always required.
+     * 
+     */
+    private String ingestionLabelKey;
+    /**
+     * @return Optional. The value of the ingestion label. Optional. An object
+     * with no provided value and some key provided would match
+     * against the given key and ANY value.
+     * 
+     */
+    private @Nullable String ingestionLabelValue;
+
+    private DataAccessScopeAllowedDataAccessLabelIngestionLabel() {}
+    /**
+     * @return Required. The key of the ingestion label. Always required.
+     * 
+     */
+    public String ingestionLabelKey() {
+        return this.ingestionLabelKey;
+    }
+    /**
+     * @return Optional. The value of the ingestion label. Optional. An object
+     * with no provided value and some key provided would match
+     * against the given key and ANY value.
+     * 
+     */
+    public Optional ingestionLabelValue() {
+        return Optional.ofNullable(this.ingestionLabelValue);
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static Builder builder(DataAccessScopeAllowedDataAccessLabelIngestionLabel defaults) {
+        return new Builder(defaults);
+    }
+    @CustomType.Builder
+    public static final class Builder {
+        private String ingestionLabelKey;
+        private @Nullable String ingestionLabelValue;
+        public Builder() {}
+        public Builder(DataAccessScopeAllowedDataAccessLabelIngestionLabel defaults) {
+    	      Objects.requireNonNull(defaults);
+    	      this.ingestionLabelKey = defaults.ingestionLabelKey;
+    	      this.ingestionLabelValue = defaults.ingestionLabelValue;
+        }
+
+        @CustomType.Setter
+        public Builder ingestionLabelKey(String ingestionLabelKey) {
+            if (ingestionLabelKey == null) {
+              throw new MissingRequiredPropertyException("DataAccessScopeAllowedDataAccessLabelIngestionLabel", "ingestionLabelKey");
+            }
+            this.ingestionLabelKey = ingestionLabelKey;
+            return this;
+        }
+        @CustomType.Setter
+        public Builder ingestionLabelValue(@Nullable String ingestionLabelValue) {
+
+            this.ingestionLabelValue = ingestionLabelValue;
+            return this;
+        }
+        public DataAccessScopeAllowedDataAccessLabelIngestionLabel build() {
+            final var _resultValue = new DataAccessScopeAllowedDataAccessLabelIngestionLabel();
+            _resultValue.ingestionLabelKey = ingestionLabelKey;
+            _resultValue.ingestionLabelValue = ingestionLabelValue;
+            return _resultValue;
+        }
+    }
+}
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/chronicle/outputs/DataAccessScopeDeniedDataAccessLabel.java b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/outputs/DataAccessScopeDeniedDataAccessLabel.java
new file mode 100644
index 0000000000..2d87b36b26
--- /dev/null
+++ b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/outputs/DataAccessScopeDeniedDataAccessLabel.java
@@ -0,0 +1,156 @@
+// *** 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.DataAccessScopeDeniedDataAccessLabelIngestionLabel;
+import java.lang.String;
+import java.util.Objects;
+import java.util.Optional;
+import javax.annotation.Nullable;
+
+@CustomType
+public final class DataAccessScopeDeniedDataAccessLabel {
+    /**
+     * @return The asset namespace configured in the forwarder
+     * of the customer's events.
+     * 
+     */
+    private @Nullable String assetNamespace;
+    /**
+     * @return The name of the data access label.
+     * 
+     */
+    private @Nullable String dataAccessLabel;
+    /**
+     * @return (Output)
+     * Output only. The display name of the label.
+     * Data access label and log types's name
+     * will match the display name of the resource.
+     * The asset namespace will match the namespace itself.
+     * The ingestion key value pair will match the key of the tuple.
+     * 
+     */
+    private @Nullable String displayName;
+    /**
+     * @return Representation of an ingestion label type.
+     * Structure is documented below.
+     * 
+     */
+    private @Nullable DataAccessScopeDeniedDataAccessLabelIngestionLabel ingestionLabel;
+    /**
+     * @return The name of the log type.
+     * 
+     */
+    private @Nullable String logType;
+
+    private DataAccessScopeDeniedDataAccessLabel() {}
+    /**
+     * @return The asset namespace configured in the forwarder
+     * of the customer's events.
+     * 
+     */
+    public Optional assetNamespace() {
+        return Optional.ofNullable(this.assetNamespace);
+    }
+    /**
+     * @return The name of the data access label.
+     * 
+     */
+    public Optional dataAccessLabel() {
+        return Optional.ofNullable(this.dataAccessLabel);
+    }
+    /**
+     * @return (Output)
+     * Output only. The display name of the label.
+     * Data access label and log types's name
+     * will match the display name of the resource.
+     * The asset namespace will match the namespace itself.
+     * The ingestion key value pair will match the key of the tuple.
+     * 
+     */
+    public Optional displayName() {
+        return Optional.ofNullable(this.displayName);
+    }
+    /**
+     * @return Representation of an ingestion label type.
+     * Structure is documented below.
+     * 
+     */
+    public Optional ingestionLabel() {
+        return Optional.ofNullable(this.ingestionLabel);
+    }
+    /**
+     * @return The name of the log type.
+     * 
+     */
+    public Optional logType() {
+        return Optional.ofNullable(this.logType);
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static Builder builder(DataAccessScopeDeniedDataAccessLabel defaults) {
+        return new Builder(defaults);
+    }
+    @CustomType.Builder
+    public static final class Builder {
+        private @Nullable String assetNamespace;
+        private @Nullable String dataAccessLabel;
+        private @Nullable String displayName;
+        private @Nullable DataAccessScopeDeniedDataAccessLabelIngestionLabel ingestionLabel;
+        private @Nullable String logType;
+        public Builder() {}
+        public Builder(DataAccessScopeDeniedDataAccessLabel defaults) {
+    	      Objects.requireNonNull(defaults);
+    	      this.assetNamespace = defaults.assetNamespace;
+    	      this.dataAccessLabel = defaults.dataAccessLabel;
+    	      this.displayName = defaults.displayName;
+    	      this.ingestionLabel = defaults.ingestionLabel;
+    	      this.logType = defaults.logType;
+        }
+
+        @CustomType.Setter
+        public Builder assetNamespace(@Nullable String assetNamespace) {
+
+            this.assetNamespace = assetNamespace;
+            return this;
+        }
+        @CustomType.Setter
+        public Builder dataAccessLabel(@Nullable String dataAccessLabel) {
+
+            this.dataAccessLabel = dataAccessLabel;
+            return this;
+        }
+        @CustomType.Setter
+        public Builder displayName(@Nullable String displayName) {
+
+            this.displayName = displayName;
+            return this;
+        }
+        @CustomType.Setter
+        public Builder ingestionLabel(@Nullable DataAccessScopeDeniedDataAccessLabelIngestionLabel ingestionLabel) {
+
+            this.ingestionLabel = ingestionLabel;
+            return this;
+        }
+        @CustomType.Setter
+        public Builder logType(@Nullable String logType) {
+
+            this.logType = logType;
+            return this;
+        }
+        public DataAccessScopeDeniedDataAccessLabel build() {
+            final var _resultValue = new DataAccessScopeDeniedDataAccessLabel();
+            _resultValue.assetNamespace = assetNamespace;
+            _resultValue.dataAccessLabel = dataAccessLabel;
+            _resultValue.displayName = displayName;
+            _resultValue.ingestionLabel = ingestionLabel;
+            _resultValue.logType = logType;
+            return _resultValue;
+        }
+    }
+}
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/chronicle/outputs/DataAccessScopeDeniedDataAccessLabelIngestionLabel.java b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/outputs/DataAccessScopeDeniedDataAccessLabelIngestionLabel.java
new file mode 100644
index 0000000000..73b89d85bb
--- /dev/null
+++ b/sdk/java/src/main/java/com/pulumi/gcp/chronicle/outputs/DataAccessScopeDeniedDataAccessLabelIngestionLabel.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.chronicle.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 DataAccessScopeDeniedDataAccessLabelIngestionLabel {
+    /**
+     * @return Required. The key of the ingestion label. Always required.
+     * 
+     */
+    private String ingestionLabelKey;
+    /**
+     * @return Optional. The value of the ingestion label. Optional. An object
+     * with no provided value and some key provided would match
+     * against the given key and ANY value.
+     * 
+     */
+    private @Nullable String ingestionLabelValue;
+
+    private DataAccessScopeDeniedDataAccessLabelIngestionLabel() {}
+    /**
+     * @return Required. The key of the ingestion label. Always required.
+     * 
+     */
+    public String ingestionLabelKey() {
+        return this.ingestionLabelKey;
+    }
+    /**
+     * @return Optional. The value of the ingestion label. Optional. An object
+     * with no provided value and some key provided would match
+     * against the given key and ANY value.
+     * 
+     */
+    public Optional ingestionLabelValue() {
+        return Optional.ofNullable(this.ingestionLabelValue);
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static Builder builder(DataAccessScopeDeniedDataAccessLabelIngestionLabel defaults) {
+        return new Builder(defaults);
+    }
+    @CustomType.Builder
+    public static final class Builder {
+        private String ingestionLabelKey;
+        private @Nullable String ingestionLabelValue;
+        public Builder() {}
+        public Builder(DataAccessScopeDeniedDataAccessLabelIngestionLabel defaults) {
+    	      Objects.requireNonNull(defaults);
+    	      this.ingestionLabelKey = defaults.ingestionLabelKey;
+    	      this.ingestionLabelValue = defaults.ingestionLabelValue;
+        }
+
+        @CustomType.Setter
+        public Builder ingestionLabelKey(String ingestionLabelKey) {
+            if (ingestionLabelKey == null) {
+              throw new MissingRequiredPropertyException("DataAccessScopeDeniedDataAccessLabelIngestionLabel", "ingestionLabelKey");
+            }
+            this.ingestionLabelKey = ingestionLabelKey;
+            return this;
+        }
+        @CustomType.Setter
+        public Builder ingestionLabelValue(@Nullable String ingestionLabelValue) {
+
+            this.ingestionLabelValue = ingestionLabelValue;
+            return this;
+        }
+        public DataAccessScopeDeniedDataAccessLabelIngestionLabel build() {
+            final var _resultValue = new DataAccessScopeDeniedDataAccessLabelIngestionLabel();
+            _resultValue.ingestionLabelKey = ingestionLabelKey;
+            _resultValue.ingestionLabelValue = ingestionLabelValue;
+            return _resultValue;
+        }
+    }
+}
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/inputs/TriggerBuildArtifactsObjectsArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/inputs/TriggerBuildArtifactsObjectsArgs.java
index f528a8d94b..71dbd81f12 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/inputs/TriggerBuildArtifactsObjectsArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/inputs/TriggerBuildArtifactsObjectsArgs.java
@@ -56,7 +56,7 @@ public Optional>> paths() {
      * Output only. Stores timing information for pushing all artifact objects.
      * Structure is documented below.
      * 
-     * <a name="nested_timing"></a>The `timing` block contains:
+     * <a name="nested_build_artifacts_objects_timing"></a>The `timing` block contains:
      * 
      */
     @Import(name="timings")
@@ -67,7 +67,7 @@ public Optional>> paths() {
      * Output only. Stores timing information for pushing all artifact objects.
      * Structure is documented below.
      * 
-     * <a name="nested_timing"></a>The `timing` block contains:
+     * <a name="nested_build_artifacts_objects_timing"></a>The `timing` block contains:
      * 
      */
     public Optional>> timings() {
@@ -161,7 +161,7 @@ public Builder paths(String... paths) {
          * Output only. Stores timing information for pushing all artifact objects.
          * Structure is documented below.
          * 
-         * <a name="nested_timing"></a>The `timing` block contains:
+         * <a name="nested_build_artifacts_objects_timing"></a>The `timing` block contains:
          * 
          * @return builder
          * 
@@ -176,7 +176,7 @@ public Builder timings(@Nullable Output timings) {
          * Output only. Stores timing information for pushing all artifact objects.
          * Structure is documented below.
          * 
-         * <a name="nested_timing"></a>The `timing` block contains:
+         * <a name="nested_build_artifacts_objects_timing"></a>The `timing` block contains:
          * 
          * @return builder
          * 
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/outputs/TriggerBuildArtifactsObjects.java b/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/outputs/TriggerBuildArtifactsObjects.java
index 6f321923f0..1f86d36159 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/outputs/TriggerBuildArtifactsObjects.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/outputs/TriggerBuildArtifactsObjects.java
@@ -30,7 +30,7 @@ public final class TriggerBuildArtifactsObjects {
      * Output only. Stores timing information for pushing all artifact objects.
      * Structure is documented below.
      * 
-     * <a name="nested_timing"></a>The `timing` block contains:
+     * <a name="nested_build_artifacts_objects_timing"></a>The `timing` block contains:
      * 
      */
     private @Nullable List timings;
@@ -57,7 +57,7 @@ public List paths() {
      * Output only. Stores timing information for pushing all artifact objects.
      * Structure is documented below.
      * 
-     * <a name="nested_timing"></a>The `timing` block contains:
+     * <a name="nested_build_artifacts_objects_timing"></a>The `timing` block contains:
      * 
      */
     public List timings() {
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/cloudquota/SQuotaAdjusterSettings.java b/sdk/java/src/main/java/com/pulumi/gcp/cloudquota/SQuotaAdjusterSettings.java
new file mode 100644
index 0000000000..c4d58e5bfe
--- /dev/null
+++ b/sdk/java/src/main/java/com/pulumi/gcp/cloudquota/SQuotaAdjusterSettings.java
@@ -0,0 +1,192 @@
+// *** 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.cloudquota;
+
+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.cloudquota.SQuotaAdjusterSettingsArgs;
+import com.pulumi.gcp.cloudquota.inputs.SQuotaAdjusterSettingsState;
+import java.lang.String;
+import javax.annotation.Nullable;
+
+/**
+ * ## Example Usage
+ * 
+ * ### Cloudquotas Quota Adjuster Settings Basic
+ * 
+ * <!--Start PulumiCodeChooser -->
+ * 
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.cloudquota.SQuotaAdjusterSettings;
+ * import com.pulumi.gcp.cloudquota.SQuotaAdjusterSettingsArgs;
+ * 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 adjusterSettings = new SQuotaAdjusterSettings("adjusterSettings", SQuotaAdjusterSettingsArgs.builder()
+ *             .parent("projects/104740170505")
+ *             .enablement("ENABLED")
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * + * ## Import + * + * QuotaAdjusterSettings can be imported using any of these accepted formats: + * + * * `{{parent}}/locations/global/quotaAdjusterSettings` + * + * When using the `pulumi import` command, QuotaAdjusterSettings can be imported using one of the formats above. For example: + * + * ```sh + * $ pulumi import gcp:cloudquota/sQuotaAdjusterSettings:SQuotaAdjusterSettings default {{parent}}/locations/global/quotaAdjusterSettings + * ``` + * + */ +@ResourceType(type="gcp:cloudquota/sQuotaAdjusterSettings:SQuotaAdjusterSettings") +public class SQuotaAdjusterSettings extends com.pulumi.resources.CustomResource { + /** + * Fields to capture the hierarchy enablement. + * The container (org/folder/project) that determines if the quota adjuster is set for this project/folder/org. We use the nearest-ancestor to determine the effective container. + * The nearest ancestor (including this container) with `enabled` set (either true or false) will be returned. + * + */ + @Export(name="effectiveContainer", refs={String.class}, tree="[0]") + private Output effectiveContainer; + + /** + * @return Fields to capture the hierarchy enablement. + * The container (org/folder/project) that determines if the quota adjuster is set for this project/folder/org. We use the nearest-ancestor to determine the effective container. + * The nearest ancestor (including this container) with `enabled` set (either true or false) will be returned. + * + */ + public Output effectiveContainer() { + return this.effectiveContainer; + } + /** + * Based on the effective container`s setting above, determines Whether this container has the quota adjuster enabled. + * + */ + @Export(name="effectiveEnablement", refs={String.class}, tree="[0]") + private Output effectiveEnablement; + + /** + * @return Based on the effective container`s setting above, determines Whether this container has the quota adjuster enabled. + * + */ + public Output effectiveEnablement() { + return this.effectiveEnablement; + } + /** + * Required. The configured value of the enablement at the given resource. + * Possible values are: `ENABLED`, `DISABLED`. + * + */ + @Export(name="enablement", refs={String.class}, tree="[0]") + private Output enablement; + + /** + * @return Required. The configured value of the enablement at the given resource. + * Possible values are: `ENABLED`, `DISABLED`. + * + */ + public Output enablement() { + return this.enablement; + } + /** + * The parent of the quota preference. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]". + * + * *** + * + */ + @Export(name="parent", refs={String.class}, tree="[0]") + private Output parent; + + /** + * @return The parent of the quota preference. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]". + * + * *** + * + */ + public Output parent() { + return this.parent; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public SQuotaAdjusterSettings(java.lang.String name) { + this(name, SQuotaAdjusterSettingsArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public SQuotaAdjusterSettings(java.lang.String name, SQuotaAdjusterSettingsArgs 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 SQuotaAdjusterSettings(java.lang.String name, SQuotaAdjusterSettingsArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("gcp:cloudquota/sQuotaAdjusterSettings:SQuotaAdjusterSettings", name, makeArgs(args, options), makeResourceOptions(options, Codegen.empty()), false); + } + + private SQuotaAdjusterSettings(java.lang.String name, Output id, @Nullable SQuotaAdjusterSettingsState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("gcp:cloudquota/sQuotaAdjusterSettings:SQuotaAdjusterSettings", name, state, makeResourceOptions(options, id), false); + } + + private static SQuotaAdjusterSettingsArgs makeArgs(SQuotaAdjusterSettingsArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + if (options != null && options.getUrn().isPresent()) { + return null; + } + return args == null ? SQuotaAdjusterSettingsArgs.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 SQuotaAdjusterSettings get(java.lang.String name, Output id, @Nullable SQuotaAdjusterSettingsState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new SQuotaAdjusterSettings(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/cloudquota/SQuotaAdjusterSettingsArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/cloudquota/SQuotaAdjusterSettingsArgs.java new file mode 100644 index 0000000000..3feeb79616 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/cloudquota/SQuotaAdjusterSettingsArgs.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.cloudquota; + +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 SQuotaAdjusterSettingsArgs extends com.pulumi.resources.ResourceArgs { + + public static final SQuotaAdjusterSettingsArgs Empty = new SQuotaAdjusterSettingsArgs(); + + /** + * Required. The configured value of the enablement at the given resource. + * Possible values are: `ENABLED`, `DISABLED`. + * + */ + @Import(name="enablement", required=true) + private Output enablement; + + /** + * @return Required. The configured value of the enablement at the given resource. + * Possible values are: `ENABLED`, `DISABLED`. + * + */ + public Output enablement() { + return this.enablement; + } + + /** + * The parent of the quota preference. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]". + * + * *** + * + */ + @Import(name="parent") + private @Nullable Output parent; + + /** + * @return The parent of the quota preference. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]". + * + * *** + * + */ + public Optional> parent() { + return Optional.ofNullable(this.parent); + } + + private SQuotaAdjusterSettingsArgs() {} + + private SQuotaAdjusterSettingsArgs(SQuotaAdjusterSettingsArgs $) { + this.enablement = $.enablement; + this.parent = $.parent; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(SQuotaAdjusterSettingsArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private SQuotaAdjusterSettingsArgs $; + + public Builder() { + $ = new SQuotaAdjusterSettingsArgs(); + } + + public Builder(SQuotaAdjusterSettingsArgs defaults) { + $ = new SQuotaAdjusterSettingsArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param enablement Required. The configured value of the enablement at the given resource. + * Possible values are: `ENABLED`, `DISABLED`. + * + * @return builder + * + */ + public Builder enablement(Output enablement) { + $.enablement = enablement; + return this; + } + + /** + * @param enablement Required. The configured value of the enablement at the given resource. + * Possible values are: `ENABLED`, `DISABLED`. + * + * @return builder + * + */ + public Builder enablement(String enablement) { + return enablement(Output.of(enablement)); + } + + /** + * @param parent The parent of the quota preference. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]". + * + * *** + * + * @return builder + * + */ + public Builder parent(@Nullable Output parent) { + $.parent = parent; + return this; + } + + /** + * @param parent The parent of the quota preference. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]". + * + * *** + * + * @return builder + * + */ + public Builder parent(String parent) { + return parent(Output.of(parent)); + } + + public SQuotaAdjusterSettingsArgs build() { + if ($.enablement == null) { + throw new MissingRequiredPropertyException("SQuotaAdjusterSettingsArgs", "enablement"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/cloudquota/inputs/SQuotaAdjusterSettingsState.java b/sdk/java/src/main/java/com/pulumi/gcp/cloudquota/inputs/SQuotaAdjusterSettingsState.java new file mode 100644 index 0000000000..96301dec78 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/cloudquota/inputs/SQuotaAdjusterSettingsState.java @@ -0,0 +1,214 @@ +// *** 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.cloudquota.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 SQuotaAdjusterSettingsState extends com.pulumi.resources.ResourceArgs { + + public static final SQuotaAdjusterSettingsState Empty = new SQuotaAdjusterSettingsState(); + + /** + * Fields to capture the hierarchy enablement. + * The container (org/folder/project) that determines if the quota adjuster is set for this project/folder/org. We use the nearest-ancestor to determine the effective container. + * The nearest ancestor (including this container) with `enabled` set (either true or false) will be returned. + * + */ + @Import(name="effectiveContainer") + private @Nullable Output effectiveContainer; + + /** + * @return Fields to capture the hierarchy enablement. + * The container (org/folder/project) that determines if the quota adjuster is set for this project/folder/org. We use the nearest-ancestor to determine the effective container. + * The nearest ancestor (including this container) with `enabled` set (either true or false) will be returned. + * + */ + public Optional> effectiveContainer() { + return Optional.ofNullable(this.effectiveContainer); + } + + /** + * Based on the effective container`s setting above, determines Whether this container has the quota adjuster enabled. + * + */ + @Import(name="effectiveEnablement") + private @Nullable Output effectiveEnablement; + + /** + * @return Based on the effective container`s setting above, determines Whether this container has the quota adjuster enabled. + * + */ + public Optional> effectiveEnablement() { + return Optional.ofNullable(this.effectiveEnablement); + } + + /** + * Required. The configured value of the enablement at the given resource. + * Possible values are: `ENABLED`, `DISABLED`. + * + */ + @Import(name="enablement") + private @Nullable Output enablement; + + /** + * @return Required. The configured value of the enablement at the given resource. + * Possible values are: `ENABLED`, `DISABLED`. + * + */ + public Optional> enablement() { + return Optional.ofNullable(this.enablement); + } + + /** + * The parent of the quota preference. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]". + * + * *** + * + */ + @Import(name="parent") + private @Nullable Output parent; + + /** + * @return The parent of the quota preference. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]". + * + * *** + * + */ + public Optional> parent() { + return Optional.ofNullable(this.parent); + } + + private SQuotaAdjusterSettingsState() {} + + private SQuotaAdjusterSettingsState(SQuotaAdjusterSettingsState $) { + this.effectiveContainer = $.effectiveContainer; + this.effectiveEnablement = $.effectiveEnablement; + this.enablement = $.enablement; + this.parent = $.parent; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(SQuotaAdjusterSettingsState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private SQuotaAdjusterSettingsState $; + + public Builder() { + $ = new SQuotaAdjusterSettingsState(); + } + + public Builder(SQuotaAdjusterSettingsState defaults) { + $ = new SQuotaAdjusterSettingsState(Objects.requireNonNull(defaults)); + } + + /** + * @param effectiveContainer Fields to capture the hierarchy enablement. + * The container (org/folder/project) that determines if the quota adjuster is set for this project/folder/org. We use the nearest-ancestor to determine the effective container. + * The nearest ancestor (including this container) with `enabled` set (either true or false) will be returned. + * + * @return builder + * + */ + public Builder effectiveContainer(@Nullable Output effectiveContainer) { + $.effectiveContainer = effectiveContainer; + return this; + } + + /** + * @param effectiveContainer Fields to capture the hierarchy enablement. + * The container (org/folder/project) that determines if the quota adjuster is set for this project/folder/org. We use the nearest-ancestor to determine the effective container. + * The nearest ancestor (including this container) with `enabled` set (either true or false) will be returned. + * + * @return builder + * + */ + public Builder effectiveContainer(String effectiveContainer) { + return effectiveContainer(Output.of(effectiveContainer)); + } + + /** + * @param effectiveEnablement Based on the effective container`s setting above, determines Whether this container has the quota adjuster enabled. + * + * @return builder + * + */ + public Builder effectiveEnablement(@Nullable Output effectiveEnablement) { + $.effectiveEnablement = effectiveEnablement; + return this; + } + + /** + * @param effectiveEnablement Based on the effective container`s setting above, determines Whether this container has the quota adjuster enabled. + * + * @return builder + * + */ + public Builder effectiveEnablement(String effectiveEnablement) { + return effectiveEnablement(Output.of(effectiveEnablement)); + } + + /** + * @param enablement Required. The configured value of the enablement at the given resource. + * Possible values are: `ENABLED`, `DISABLED`. + * + * @return builder + * + */ + public Builder enablement(@Nullable Output enablement) { + $.enablement = enablement; + return this; + } + + /** + * @param enablement Required. The configured value of the enablement at the given resource. + * Possible values are: `ENABLED`, `DISABLED`. + * + * @return builder + * + */ + public Builder enablement(String enablement) { + return enablement(Output.of(enablement)); + } + + /** + * @param parent The parent of the quota preference. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]". + * + * *** + * + * @return builder + * + */ + public Builder parent(@Nullable Output parent) { + $.parent = parent; + return this; + } + + /** + * @param parent The parent of the quota preference. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]". + * + * *** + * + * @return builder + * + */ + public Builder parent(String parent) { + return parent(Output.of(parent)); + } + + public SQuotaAdjusterSettingsState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/InstanceGroupManager.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/InstanceGroupManager.java index 97fc75139b..e80998bddc 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/compute/InstanceGroupManager.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/InstanceGroupManager.java @@ -163,7 +163,7 @@ *
* <!--End PulumiCodeChooser --> * - * ### With Standby Policy (`Google-Beta` Provider) + * ### With Standby Policy (`Google` Provider) * <!--Start PulumiCodeChooser --> *
  * {@code
@@ -504,14 +504,14 @@ public Output selfLink() {
         return this.selfLink;
     }
     /**
-     * The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch)
+     * The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig).
      * 
      */
     @Export(name="standbyPolicy", refs={InstanceGroupManagerStandbyPolicy.class}, tree="[0]")
     private Output standbyPolicy;
 
     /**
-     * @return The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch)
+     * @return The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig).
      * 
      */
     public Output standbyPolicy() {
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/InstanceGroupManagerArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/InstanceGroupManagerArgs.java
index 5a4415c2e2..433738e3cd 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/InstanceGroupManagerArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/InstanceGroupManagerArgs.java
@@ -223,14 +223,14 @@ public Optional> project() {
     }
 
     /**
-     * The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch)
+     * The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig).
      * 
      */
     @Import(name="standbyPolicy")
     private @Nullable Output standbyPolicy;
 
     /**
-     * @return The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch)
+     * @return The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig).
      * 
      */
     public Optional> standbyPolicy() {
@@ -753,7 +753,7 @@ public Builder project(String project) {
         }
 
         /**
-         * @param standbyPolicy The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch)
+         * @param standbyPolicy The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig).
          * 
          * @return builder
          * 
@@ -764,7 +764,7 @@ public Builder standbyPolicy(@Nullable Output
  * <!--End PulumiCodeChooser -->
  * 
- * ### With Standby Policy (`Google-Beta` Provider)
+ * ### With Standby Policy (`Google` Provider)
  * <!--Start PulumiCodeChooser -->
  * 
  * {@code
@@ -547,14 +547,14 @@ public Output selfLink() {
         return this.selfLink;
     }
     /**
-     * The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch)
+     * The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig).
      * 
      */
     @Export(name="standbyPolicy", refs={RegionInstanceGroupManagerStandbyPolicy.class}, tree="[0]")
     private Output standbyPolicy;
 
     /**
-     * @return The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch)
+     * @return The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig).
      * 
      */
     public Output standbyPolicy() {
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionInstanceGroupManagerArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionInstanceGroupManagerArgs.java
index b636d6982e..d4dd8d8c5e 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionInstanceGroupManagerArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionInstanceGroupManagerArgs.java
@@ -288,14 +288,14 @@ public Optional> region() {
     }
 
     /**
-     * The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch)
+     * The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig).
      * 
      */
     @Import(name="standbyPolicy")
     private @Nullable Output standbyPolicy;
 
     /**
-     * @return The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch)
+     * @return The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig).
      * 
      */
     public Optional> standbyPolicy() {
@@ -899,7 +899,7 @@ public Builder region(String region) {
         }
 
         /**
-         * @param standbyPolicy The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch)
+         * @param standbyPolicy The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig).
          * 
          * @return builder
          * 
@@ -910,7 +910,7 @@ public Builder standbyPolicy(@Nullable Output> awsV4Authentication() {
@@ -109,7 +109,7 @@ public Builder(BackendServiceSecuritySettingsArgs defaults) {
          * Allowed only for INTERNET_IP_PORT and INTERNET_FQDN_PORT NEG backends.
          * Structure is documented below.
          * 
-         * <a name="nested_aws_v4_authentication"></a>The `aws_v4_authentication` block supports:
+         * <a name="nested_security_settings_aws_v4_authentication"></a>The `aws_v4_authentication` block supports:
          * 
          * @return builder
          * 
@@ -124,7 +124,7 @@ public Builder awsV4Authentication(@Nullable Output>> srcRegionCodes() {
     /**
      * Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.
      * 
-     * <a name="nested_layer4_configs"></a>The `layer4_configs` block supports:
+     * <a name="nested_match_layer4_configs"></a>The `layer4_configs` block supports:
      * 
      */
     @Import(name="srcThreatIntelligences")
@@ -182,7 +182,7 @@ public Optional>> srcRegionCodes() {
     /**
      * @return Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.
      * 
-     * <a name="nested_layer4_configs"></a>The `layer4_configs` block supports:
+     * <a name="nested_match_layer4_configs"></a>The `layer4_configs` block supports:
      * 
      */
     public Optional>> srcThreatIntelligences() {
@@ -539,7 +539,7 @@ public Builder srcRegionCodes(String... srcRegionCodes) {
         /**
          * @param srcThreatIntelligences Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.
          * 
-         * <a name="nested_layer4_configs"></a>The `layer4_configs` block supports:
+         * <a name="nested_match_layer4_configs"></a>The `layer4_configs` block supports:
          * 
          * @return builder
          * 
@@ -552,7 +552,7 @@ public Builder srcThreatIntelligences(@Nullable Output> srcThreatIn
         /**
          * @param srcThreatIntelligences Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.
          * 
-         * <a name="nested_layer4_configs"></a>The `layer4_configs` block supports:
+         * <a name="nested_match_layer4_configs"></a>The `layer4_configs` block supports:
          * 
          * @return builder
          * 
@@ -564,7 +564,7 @@ public Builder srcThreatIntelligences(List srcThreatIntelligences) {
         /**
          * @param srcThreatIntelligences Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.
          * 
-         * <a name="nested_layer4_configs"></a>The `layer4_configs` block supports:
+         * <a name="nested_match_layer4_configs"></a>The `layer4_configs` block supports:
          * 
          * @return builder
          * 
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/FirewallPolicyWithRulesPredefinedRuleMatchArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/FirewallPolicyWithRulesPredefinedRuleMatchArgs.java
index 6f8eb98b33..85d3bfad7b 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/FirewallPolicyWithRulesPredefinedRuleMatchArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/FirewallPolicyWithRulesPredefinedRuleMatchArgs.java
@@ -110,7 +110,7 @@ public Optional>> destThreatIntelligences() {
      * Pairs of IP protocols and ports that the rule should match.
      * Structure is documented below.
      * 
-     * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+     * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
      * 
      */
     @Import(name="layer4Configs")
@@ -120,7 +120,7 @@ public Optional>> destThreatIntelligences() {
      * @return Pairs of IP protocols and ports that the rule should match.
      * Structure is documented below.
      * 
-     * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+     * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
      * 
      */
     public Optional>> layer4Configs() {
@@ -430,7 +430,7 @@ public Builder destThreatIntelligences(String... destThreatIntelligences) {
          * @param layer4Configs Pairs of IP protocols and ports that the rule should match.
          * Structure is documented below.
          * 
-         * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+         * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
          * 
          * @return builder
          * 
@@ -444,7 +444,7 @@ public Builder layer4Configs(@Nullable Output>> destThreatIntelligences() {
      * Pairs of IP protocols and ports that the rule should match.
      * Structure is documented below.
      * 
-     * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+     * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
      * 
      */
     @Import(name="layer4Configs", required=true)
@@ -121,7 +121,7 @@ public Optional>> destThreatIntelligences() {
      * @return Pairs of IP protocols and ports that the rule should match.
      * Structure is documented below.
      * 
-     * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+     * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
      * 
      */
     public Output> layer4Configs() {
@@ -431,7 +431,7 @@ public Builder destThreatIntelligences(String... destThreatIntelligences) {
          * @param layer4Configs Pairs of IP protocols and ports that the rule should match.
          * Structure is documented below.
          * 
-         * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+         * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
          * 
          * @return builder
          * 
@@ -445,7 +445,7 @@ public Builder layer4Configs(Output> selfLink() {
     }
 
     /**
-     * The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch)
+     * The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig).
      * 
      */
     @Import(name="standbyPolicy")
     private @Nullable Output standbyPolicy;
 
     /**
-     * @return The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch)
+     * @return The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig).
      * 
      */
     public Optional> standbyPolicy() {
@@ -971,7 +971,7 @@ public Builder selfLink(String selfLink) {
         }
 
         /**
-         * @param standbyPolicy The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch)
+         * @param standbyPolicy The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig).
          * 
          * @return builder
          * 
@@ -982,7 +982,7 @@ public Builder standbyPolicy(@Nullable Output>> sr
     /**
      * Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.
      * 
-     * <a name="nested_layer4_configs"></a>The `layer4_configs` block supports:
+     * <a name="nested_match_layer4_configs"></a>The `layer4_configs` block supports:
      * 
      */
     @Import(name="srcThreatIntelligences")
@@ -200,7 +200,7 @@ public Optional>> sr
     /**
      * @return Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.
      * 
-     * <a name="nested_layer4_configs"></a>The `layer4_configs` block supports:
+     * <a name="nested_match_layer4_configs"></a>The `layer4_configs` block supports:
      * 
      */
     public Optional>> srcThreatIntelligences() {
@@ -592,7 +592,7 @@ public Builder srcSecureTags(NetworkFirewallPolicyRuleMatchSrcSecureTagArgs... s
         /**
          * @param srcThreatIntelligences Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.
          * 
-         * <a name="nested_layer4_configs"></a>The `layer4_configs` block supports:
+         * <a name="nested_match_layer4_configs"></a>The `layer4_configs` block supports:
          * 
          * @return builder
          * 
@@ -605,7 +605,7 @@ public Builder srcThreatIntelligences(@Nullable Output> srcThreatIn
         /**
          * @param srcThreatIntelligences Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.
          * 
-         * <a name="nested_layer4_configs"></a>The `layer4_configs` block supports:
+         * <a name="nested_match_layer4_configs"></a>The `layer4_configs` block supports:
          * 
          * @return builder
          * 
@@ -617,7 +617,7 @@ public Builder srcThreatIntelligences(List srcThreatIntelligences) {
         /**
          * @param srcThreatIntelligences Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.
          * 
-         * <a name="nested_layer4_configs"></a>The `layer4_configs` block supports:
+         * <a name="nested_match_layer4_configs"></a>The `layer4_configs` block supports:
          * 
          * @return builder
          * 
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/NetworkFirewallPolicyWithRulesPredefinedRuleMatchArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/NetworkFirewallPolicyWithRulesPredefinedRuleMatchArgs.java
index cb22511076..b4c7321c0a 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/NetworkFirewallPolicyWithRulesPredefinedRuleMatchArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/NetworkFirewallPolicyWithRulesPredefinedRuleMatchArgs.java
@@ -204,7 +204,7 @@ public Optional>> srcRegionCodes() {
      * Maximum number of source tag values allowed is 256.
      * Structure is documented below.
      * 
-     * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+     * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
      * 
      */
     @Import(name="srcSecureTags")
@@ -218,7 +218,7 @@ public Optional>> srcRegionCodes() {
      * Maximum number of source tag values allowed is 256.
      * Structure is documented below.
      * 
-     * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+     * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
      * 
      */
     public Optional>> srcSecureTags() {
@@ -637,7 +637,7 @@ public Builder srcRegionCodes(String... srcRegionCodes) {
          * Maximum number of source tag values allowed is 256.
          * Structure is documented below.
          * 
-         * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+         * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
          * 
          * @return builder
          * 
@@ -655,7 +655,7 @@ public Builder srcSecureTags(@Nullable Output>> srcRegionCodes() {
      * Maximum number of source tag values allowed is 256.
      * Structure is documented below.
      * 
-     * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+     * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
      * 
      */
     @Import(name="srcSecureTags")
@@ -219,7 +219,7 @@ public Optional>> srcRegionCodes() {
      * Maximum number of source tag values allowed is 256.
      * Structure is documented below.
      * 
-     * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+     * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
      * 
      */
     public Optional>> srcSecureTags() {
@@ -638,7 +638,7 @@ public Builder srcRegionCodes(String... srcRegionCodes) {
          * Maximum number of source tag values allowed is 256.
          * Structure is documented below.
          * 
-         * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+         * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
          * 
          * @return builder
          * 
@@ -656,7 +656,7 @@ public Builder srcSecureTags(@Nullable Output>> destIpRanges() {
      * Pairs of IP protocols and ports that the rule should match.
      * Structure is documented below.
      * 
-     * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+     * <a name="nested_match_config_layer4_config"></a>The `layer4_config` block supports:
      * 
      */
     @Import(name="layer4Configs", required=true)
@@ -49,7 +49,7 @@ public Optional>> destIpRanges() {
      * @return Pairs of IP protocols and ports that the rule should match.
      * Structure is documented below.
      * 
-     * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+     * <a name="nested_match_config_layer4_config"></a>The `layer4_config` block supports:
      * 
      */
     public Output> layer4Configs() {
@@ -137,7 +137,7 @@ public Builder destIpRanges(String... destIpRanges) {
          * @param layer4Configs Pairs of IP protocols and ports that the rule should match.
          * Structure is documented below.
          * 
-         * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+         * <a name="nested_match_config_layer4_config"></a>The `layer4_config` block supports:
          * 
          * @return builder
          * 
@@ -151,7 +151,7 @@ public Builder layer4Configs(Output> selfLink() {
     }
 
     /**
-     * The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch)
+     * The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig).
      * 
      */
     @Import(name="standbyPolicy")
     private @Nullable Output standbyPolicy;
 
     /**
-     * @return The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch)
+     * @return The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig).
      * 
      */
     public Optional> standbyPolicy() {
@@ -1100,7 +1100,7 @@ public Builder selfLink(String selfLink) {
         }
 
         /**
-         * @param standbyPolicy The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch)
+         * @param standbyPolicy The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig).
          * 
          * @return builder
          * 
@@ -1111,7 +1111,7 @@ public Builder standbyPolicy(@Nullable Output>> srcThreatIntelligences() {
@@ -592,7 +592,7 @@ public Builder srcSecureTags(RegionNetworkFirewallPolicyRuleMatchSrcSecureTagArg
         /**
          * @param srcThreatIntelligences Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.
          * 
-         * <a name="nested_layer4_configs"></a>The `layer4_configs` block supports:
+         * <a name="nested_match_layer4_configs"></a>The `layer4_configs` block supports:
          * 
          * @return builder
          * 
@@ -605,7 +605,7 @@ public Builder srcThreatIntelligences(@Nullable Output> srcThreatIn
         /**
          * @param srcThreatIntelligences Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.
          * 
-         * <a name="nested_layer4_configs"></a>The `layer4_configs` block supports:
+         * <a name="nested_match_layer4_configs"></a>The `layer4_configs` block supports:
          * 
          * @return builder
          * 
@@ -617,7 +617,7 @@ public Builder srcThreatIntelligences(List srcThreatIntelligences) {
         /**
          * @param srcThreatIntelligences Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.
          * 
-         * <a name="nested_layer4_configs"></a>The `layer4_configs` block supports:
+         * <a name="nested_match_layer4_configs"></a>The `layer4_configs` block supports:
          * 
          * @return builder
          * 
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchArgs.java
index a9199b0523..55c8fd5525 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchArgs.java
@@ -204,7 +204,7 @@ public Optional>> srcRegionCodes() {
      * Maximum number of source tag values allowed is 256.
      * Structure is documented below.
      * 
-     * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+     * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
      * 
      */
     @Import(name="srcSecureTags")
@@ -218,7 +218,7 @@ public Optional>> srcRegionCodes() {
      * Maximum number of source tag values allowed is 256.
      * Structure is documented below.
      * 
-     * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+     * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
      * 
      */
     public Optional>> srcSecureTags() {
@@ -637,7 +637,7 @@ public Builder srcRegionCodes(String... srcRegionCodes) {
          * Maximum number of source tag values allowed is 256.
          * Structure is documented below.
          * 
-         * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+         * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
          * 
          * @return builder
          * 
@@ -655,7 +655,7 @@ public Builder srcSecureTags(@Nullable Output>> srcRegionCodes() {
      * Maximum number of source tag values allowed is 256.
      * Structure is documented below.
      * 
-     * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+     * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
      * 
      */
     @Import(name="srcSecureTags")
@@ -219,7 +219,7 @@ public Optional>> srcRegionCodes() {
      * Maximum number of source tag values allowed is 256.
      * Structure is documented below.
      * 
-     * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+     * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
      * 
      */
     public Optional>> srcSecureTags() {
@@ -638,7 +638,7 @@ public Builder srcRegionCodes(String... srcRegionCodes) {
          * Maximum number of source tag values allowed is 256.
          * Structure is documented below.
          * 
-         * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+         * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
          * 
          * @return builder
          * 
@@ -656,7 +656,7 @@ public Builder srcSecureTags(@Nullable Output awsV4Authentication() {
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/FirewallPolicyRuleMatch.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/FirewallPolicyRuleMatch.java
index 9f68de00ec..477ce6041e 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/FirewallPolicyRuleMatch.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/FirewallPolicyRuleMatch.java
@@ -67,7 +67,7 @@ public final class FirewallPolicyRuleMatch {
     /**
      * @return Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.
      * 
-     * <a name="nested_layer4_configs"></a>The `layer4_configs` block supports:
+     * <a name="nested_match_layer4_configs"></a>The `layer4_configs` block supports:
      * 
      */
     private @Nullable List srcThreatIntelligences;
@@ -147,7 +147,7 @@ public List srcRegionCodes() {
     /**
      * @return Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.
      * 
-     * <a name="nested_layer4_configs"></a>The `layer4_configs` block supports:
+     * <a name="nested_match_layer4_configs"></a>The `layer4_configs` block supports:
      * 
      */
     public List srcThreatIntelligences() {
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/FirewallPolicyWithRulesPredefinedRuleMatch.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/FirewallPolicyWithRulesPredefinedRuleMatch.java
index ec0d700eb0..d78784417d 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/FirewallPolicyWithRulesPredefinedRuleMatch.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/FirewallPolicyWithRulesPredefinedRuleMatch.java
@@ -48,7 +48,7 @@ public final class FirewallPolicyWithRulesPredefinedRuleMatch {
      * @return Pairs of IP protocols and ports that the rule should match.
      * Structure is documented below.
      * 
-     * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+     * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
      * 
      */
     private @Nullable List layer4Configs;
@@ -132,7 +132,7 @@ public List destThreatIntelligences() {
      * @return Pairs of IP protocols and ports that the rule should match.
      * Structure is documented below.
      * 
-     * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+     * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
      * 
      */
     public List layer4Configs() {
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/FirewallPolicyWithRulesRuleMatch.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/FirewallPolicyWithRulesRuleMatch.java
index 74db74b5cc..6c7da999c6 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/FirewallPolicyWithRulesRuleMatch.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/FirewallPolicyWithRulesRuleMatch.java
@@ -49,7 +49,7 @@ public final class FirewallPolicyWithRulesRuleMatch {
      * @return Pairs of IP protocols and ports that the rule should match.
      * Structure is documented below.
      * 
-     * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+     * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
      * 
      */
     private List layer4Configs;
@@ -133,7 +133,7 @@ public List destThreatIntelligences() {
      * @return Pairs of IP protocols and ports that the rule should match.
      * Structure is documented below.
      * 
-     * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+     * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
      * 
      */
     public List layer4Configs() {
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/NetworkFirewallPolicyRuleMatch.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/NetworkFirewallPolicyRuleMatch.java
index 51e7760427..9dd96f7d7f 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/NetworkFirewallPolicyRuleMatch.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/NetworkFirewallPolicyRuleMatch.java
@@ -74,7 +74,7 @@ public final class NetworkFirewallPolicyRuleMatch {
     /**
      * @return Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.
      * 
-     * <a name="nested_layer4_configs"></a>The `layer4_configs` block supports:
+     * <a name="nested_match_layer4_configs"></a>The `layer4_configs` block supports:
      * 
      */
     private @Nullable List srcThreatIntelligences;
@@ -162,7 +162,7 @@ public List srcSecureTags() {
     /**
      * @return Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.
      * 
-     * <a name="nested_layer4_configs"></a>The `layer4_configs` block supports:
+     * <a name="nested_match_layer4_configs"></a>The `layer4_configs` block supports:
      * 
      */
     public List srcThreatIntelligences() {
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/NetworkFirewallPolicyWithRulesPredefinedRuleMatch.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/NetworkFirewallPolicyWithRulesPredefinedRuleMatch.java
index ac11c3c610..092559b782 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/NetworkFirewallPolicyWithRulesPredefinedRuleMatch.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/NetworkFirewallPolicyWithRulesPredefinedRuleMatch.java
@@ -85,7 +85,7 @@ public final class NetworkFirewallPolicyWithRulesPredefinedRuleMatch {
      * Maximum number of source tag values allowed is 256.
      * Structure is documented below.
      * 
-     * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+     * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
      * 
      */
     private @Nullable List srcSecureTags;
@@ -189,7 +189,7 @@ public List srcRegionCodes() {
      * Maximum number of source tag values allowed is 256.
      * Structure is documented below.
      * 
-     * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+     * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
      * 
      */
     public List srcSecureTags() {
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/NetworkFirewallPolicyWithRulesRuleMatch.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/NetworkFirewallPolicyWithRulesRuleMatch.java
index 98f5c36098..2775994b0a 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/NetworkFirewallPolicyWithRulesRuleMatch.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/NetworkFirewallPolicyWithRulesRuleMatch.java
@@ -86,7 +86,7 @@ public final class NetworkFirewallPolicyWithRulesRuleMatch {
      * Maximum number of source tag values allowed is 256.
      * Structure is documented below.
      * 
-     * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+     * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
      * 
      */
     private @Nullable List srcSecureTags;
@@ -190,7 +190,7 @@ public List srcRegionCodes() {
      * Maximum number of source tag values allowed is 256.
      * Structure is documented below.
      * 
-     * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+     * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
      * 
      */
     public List srcSecureTags() {
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/OrganizationSecurityPolicyRuleMatchConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/OrganizationSecurityPolicyRuleMatchConfig.java
index 11f1a2a8f6..4b60867d47 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/OrganizationSecurityPolicyRuleMatchConfig.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/OrganizationSecurityPolicyRuleMatchConfig.java
@@ -23,7 +23,7 @@ public final class OrganizationSecurityPolicyRuleMatchConfig {
      * @return Pairs of IP protocols and ports that the rule should match.
      * Structure is documented below.
      * 
-     * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+     * <a name="nested_match_config_layer4_config"></a>The `layer4_config` block supports:
      * 
      */
     private List layer4Configs;
@@ -47,7 +47,7 @@ public List destIpRanges() {
      * @return Pairs of IP protocols and ports that the rule should match.
      * Structure is documented below.
      * 
-     * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+     * <a name="nested_match_config_layer4_config"></a>The `layer4_config` block supports:
      * 
      */
     public List layer4Configs() {
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionNetworkFirewallPolicyRuleMatch.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionNetworkFirewallPolicyRuleMatch.java
index 64113d141a..50e1aadffd 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionNetworkFirewallPolicyRuleMatch.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionNetworkFirewallPolicyRuleMatch.java
@@ -74,7 +74,7 @@ public final class RegionNetworkFirewallPolicyRuleMatch {
     /**
      * @return Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.
      * 
-     * <a name="nested_layer4_configs"></a>The `layer4_configs` block supports:
+     * <a name="nested_match_layer4_configs"></a>The `layer4_configs` block supports:
      * 
      */
     private @Nullable List srcThreatIntelligences;
@@ -162,7 +162,7 @@ public List srcSecureTags() {
     /**
      * @return Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.
      * 
-     * <a name="nested_layer4_configs"></a>The `layer4_configs` block supports:
+     * <a name="nested_match_layer4_configs"></a>The `layer4_configs` block supports:
      * 
      */
     public List srcThreatIntelligences() {
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatch.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatch.java
index 730bfcbfdd..46b18085df 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatch.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatch.java
@@ -85,7 +85,7 @@ public final class RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatch {
      * Maximum number of source tag values allowed is 256.
      * Structure is documented below.
      * 
-     * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+     * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
      * 
      */
     private @Nullable List srcSecureTags;
@@ -189,7 +189,7 @@ public List srcRegionCodes() {
      * Maximum number of source tag values allowed is 256.
      * Structure is documented below.
      * 
-     * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+     * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
      * 
      */
     public List srcSecureTags() {
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionNetworkFirewallPolicyWithRulesRuleMatch.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionNetworkFirewallPolicyWithRulesRuleMatch.java
index 0e5449b670..4e9924793a 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionNetworkFirewallPolicyWithRulesRuleMatch.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionNetworkFirewallPolicyWithRulesRuleMatch.java
@@ -86,7 +86,7 @@ public final class RegionNetworkFirewallPolicyWithRulesRuleMatch {
      * Maximum number of source tag values allowed is 256.
      * Structure is documented below.
      * 
-     * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+     * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
      * 
      */
     private @Nullable List srcSecureTags;
@@ -190,7 +190,7 @@ public List srcRegionCodes() {
      * Maximum number of source tag values allowed is 256.
      * Structure is documented below.
      * 
-     * <a name="nested_layer4_config"></a>The `layer4_config` block supports:
+     * <a name="nested_rule_rule_match_layer4_config"></a>The `layer4_config` block supports:
      * 
      */
     public List srcSecureTags() {
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/datacatalog/inputs/EntryGcsFilesetSpecArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/datacatalog/inputs/EntryGcsFilesetSpecArgs.java
index 47f1395cab..11063544c7 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/datacatalog/inputs/EntryGcsFilesetSpecArgs.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/datacatalog/inputs/EntryGcsFilesetSpecArgs.java
@@ -58,7 +58,7 @@ public Output> filePatterns() {
      * Sample files contained in this fileset, not all files contained in this fileset are represented here.
      * Structure is documented below.
      * 
-     * <a name="nested_sample_gcs_file_specs"></a>The `sample_gcs_file_specs` block contains:
+     * <a name="nested_gcs_fileset_spec_sample_gcs_file_specs"></a>The `sample_gcs_file_specs` block contains:
      * 
      */
     @Import(name="sampleGcsFileSpecs")
@@ -69,7 +69,7 @@ public Output> filePatterns() {
      * Sample files contained in this fileset, not all files contained in this fileset are represented here.
      * Structure is documented below.
      * 
-     * <a name="nested_sample_gcs_file_specs"></a>The `sample_gcs_file_specs` block contains:
+     * <a name="nested_gcs_fileset_spec_sample_gcs_file_specs"></a>The `sample_gcs_file_specs` block contains:
      * 
      */
     public Optional>> sampleGcsFileSpecs() {
@@ -167,7 +167,7 @@ public Builder filePatterns(String... filePatterns) {
          * Sample files contained in this fileset, not all files contained in this fileset are represented here.
          * Structure is documented below.
          * 
-         * <a name="nested_sample_gcs_file_specs"></a>The `sample_gcs_file_specs` block contains:
+         * <a name="nested_gcs_fileset_spec_sample_gcs_file_specs"></a>The `sample_gcs_file_specs` block contains:
          * 
          * @return builder
          * 
@@ -182,7 +182,7 @@ public Builder sampleGcsFileSpecs(@Nullable Output
          * Sample files contained in this fileset, not all files contained in this fileset are represented here.
          * Structure is documented below.
          * 
-         * <a name="nested_sample_gcs_file_specs"></a>The `sample_gcs_file_specs` block contains:
+         * <a name="nested_gcs_fileset_spec_sample_gcs_file_specs"></a>The `sample_gcs_file_specs` block contains:
          * 
          * @return builder
          * 
diff --git a/sdk/java/src/main/java/com/pulumi/gcp/datacatalog/outputs/EntryGcsFilesetSpec.java b/sdk/java/src/main/java/com/pulumi/gcp/datacatalog/outputs/EntryGcsFilesetSpec.java
index 87126cbe4a..1fa204257c 100644
--- a/sdk/java/src/main/java/com/pulumi/gcp/datacatalog/outputs/EntryGcsFilesetSpec.java
+++ b/sdk/java/src/main/java/com/pulumi/gcp/datacatalog/outputs/EntryGcsFilesetSpec.java
@@ -33,7 +33,7 @@ public final class EntryGcsFilesetSpec {
      * Sample files contained in this fileset, not all files contained in this fileset are represented here.
      * Structure is documented below.
      * 
-     * <a name="nested_sample_gcs_file_specs"></a>The `sample_gcs_file_specs` block contains:
+     * <a name="nested_gcs_fileset_spec_sample_gcs_file_specs"></a>The `sample_gcs_file_specs` block contains:
      * 
      */
     private @Nullable List sampleGcsFileSpecs;
@@ -61,7 +61,7 @@ public List filePatterns() {
      * Sample files contained in this fileset, not all files contained in this fileset are represented here.
      * Structure is documented below.
      * 
-     * <a name="nested_sample_gcs_file_specs"></a>The `sample_gcs_file_specs` block contains:
+     * <a name="nested_gcs_fileset_spec_sample_gcs_file_specs"></a>The `sample_gcs_file_specs` block contains:
      * 
      */
     public List sampleGcsFileSpecs() {
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 4042a2ec48..91cd829da8 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
@@ -10,7 +10,11 @@
 import com.pulumi.gcp.Utilities;
 import com.pulumi.gcp.developerconnect.ConnectionArgs;
 import com.pulumi.gcp.developerconnect.inputs.ConnectionState;
+import com.pulumi.gcp.developerconnect.outputs.ConnectionCryptoKeyConfig;
 import com.pulumi.gcp.developerconnect.outputs.ConnectionGithubConfig;
+import com.pulumi.gcp.developerconnect.outputs.ConnectionGithubEnterpriseConfig;
+import com.pulumi.gcp.developerconnect.outputs.ConnectionGitlabConfig;
+import com.pulumi.gcp.developerconnect.outputs.ConnectionGitlabEnterpriseConfig;
 import com.pulumi.gcp.developerconnect.outputs.ConnectionInstallationState;
 import java.lang.Boolean;
 import java.lang.String;
@@ -20,6 +24,8 @@
 import javax.annotation.Nullable;
 
 /**
+ * A connection for GitHub, GitHub Enterprise, GitLab, and GitLab Enterprise.
+ * 
  * ## Example Usage
  * 
  * ### Developer Connect Connection New
@@ -210,7 +216,368 @@
  * }
  * 
* <!--End PulumiCodeChooser --> + * ### Developer Connect Connection Github + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.developerconnect.Connection;
+ * import com.pulumi.gcp.developerconnect.ConnectionArgs;
+ * import com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigArgs;
+ * import com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;
+ * 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_connection = new Connection("my-connection", ConnectionArgs.builder()
+ *             .location("us-central1")
+ *             .connectionId("tf-test-connection")
+ *             .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")
+ *                     .build())
+ *                 .build())
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * ### Developer Connect Connection Github Doc * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.secretmanager.Secret;
+ * import com.pulumi.gcp.secretmanager.SecretArgs;
+ * import com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;
+ * import com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;
+ * import com.pulumi.gcp.secretmanager.SecretVersion;
+ * import com.pulumi.gcp.secretmanager.SecretVersionArgs;
+ * import com.pulumi.gcp.organizations.OrganizationsFunctions;
+ * import com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;
+ * import com.pulumi.gcp.secretmanager.SecretIamPolicy;
+ * import com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;
+ * import com.pulumi.gcp.developerconnect.Connection;
+ * import com.pulumi.gcp.developerconnect.ConnectionArgs;
+ * import com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigArgs;
+ * import com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;
+ * 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 github_token_secret = new Secret("github-token-secret", SecretArgs.builder()
+ *             .secretId("github-token-secret")
+ *             .replication(SecretReplicationArgs.builder()
+ *                 .auto()
+ *                 .build())
+ *             .build());
+ * 
+ *         var github_token_secret_version = new SecretVersion("github-token-secret-version", SecretVersionArgs.builder()
+ *             .secret(github_token_secret.id())
+ *             .secretData(StdFunctions.file(FileArgs.builder()
+ *                 .input("my-github-token.txt")
+ *                 .build()).result())
+ *             .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")
+ *                 .build())
+ *             .build());
+ * 
+ *         var policy = new SecretIamPolicy("policy", SecretIamPolicyArgs.builder()
+ *             .secretId(github_token_secret.secretId())
+ *             .policyData(p4sa_secretAccessor.policyData())
+ *             .build());
+ * 
+ *         var my_connection = new Connection("my-connection", ConnectionArgs.builder()
+ *             .location("us-central1")
+ *             .connectionId("my-connection")
+ *             .githubConfig(ConnectionGithubConfigArgs.builder()
+ *                 .githubApp("DEVELOPER_CONNECT")
+ *                 .appInstallationId(123123)
+ *                 .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()
+ *                     .oauthTokenSecretVersion(github_token_secret_version.id())
+ *                     .build())
+ *                 .build())
+ *             .build());
+ * 
+ *     }}{@code
+ * }}{@code
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * ### Developer Connect Connection Github Enterprise + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.developerconnect.Connection;
+ * import com.pulumi.gcp.developerconnect.ConnectionArgs;
+ * import com.pulumi.gcp.developerconnect.inputs.ConnectionGithubEnterpriseConfigArgs;
+ * 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_connection = new Connection("my-connection", ConnectionArgs.builder()
+ *             .location("us-central1")
+ *             .connectionId("tf-test-connection")
+ *             .githubEnterpriseConfig(ConnectionGithubEnterpriseConfigArgs.builder()
+ *                 .hostUri("https://ghe.proctor-staging-test.com")
+ *                 .appId(864434)
+ *                 .privateKeySecretVersion("projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-private-key-f522d2/versions/latest")
+ *                 .webhookSecretSecretVersion("projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-webhook-secret-3c806f/versions/latest")
+ *                 .appInstallationId(837537)
+ *                 .build())
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * ### Developer Connect Connection Github Enterprise Doc + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.secretmanager.Secret;
+ * import com.pulumi.gcp.secretmanager.SecretArgs;
+ * import com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;
+ * import com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;
+ * import com.pulumi.gcp.secretmanager.SecretVersion;
+ * import com.pulumi.gcp.secretmanager.SecretVersionArgs;
+ * import com.pulumi.gcp.organizations.OrganizationsFunctions;
+ * import com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;
+ * import com.pulumi.gcp.secretmanager.SecretIamPolicy;
+ * import com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;
+ * import com.pulumi.gcp.developerconnect.Connection;
+ * import com.pulumi.gcp.developerconnect.ConnectionArgs;
+ * import com.pulumi.gcp.developerconnect.inputs.ConnectionGithubEnterpriseConfigArgs;
+ * 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 }{{@code
+ *     public static void main(String[] args) }{{@code
+ *         Pulumi.run(App::stack);
+ *     }}{@code
+ * 
+ *     public static void stack(Context ctx) }{{@code
+ *         var private_key_secret = new Secret("private-key-secret", SecretArgs.builder()
+ *             .secretId("ghe-pk-secret")
+ *             .replication(SecretReplicationArgs.builder()
+ *                 .auto()
+ *                 .build())
+ *             .build());
+ * 
+ *         var private_key_secret_version = new SecretVersion("private-key-secret-version", SecretVersionArgs.builder()
+ *             .secret(private_key_secret.id())
+ *             .secretData(StdFunctions.file(FileArgs.builder()
+ *                 .input("private-key.pem")
+ *                 .build()).result())
+ *             .build());
+ * 
+ *         var webhook_secret_secret = new Secret("webhook-secret-secret", SecretArgs.builder()
+ *             .secretId("ghe-token-secret")
+ *             .replication(SecretReplicationArgs.builder()
+ *                 .auto()
+ *                 .build())
+ *             .build());
+ * 
+ *         var webhook_secret_secret_version = new SecretVersion("webhook-secret-secret-version", SecretVersionArgs.builder()
+ *             .secret(webhook_secret_secret.id())
+ *             .secretData("")
+ *             .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")
+ *                 .build())
+ *             .build());
+ * 
+ *         var policy_pk = new SecretIamPolicy("policy-pk", SecretIamPolicyArgs.builder()
+ *             .secretId(private_key_secret.secretId())
+ *             .policyData(p4sa_secretAccessor.policyData())
+ *             .build());
+ * 
+ *         var policy_whs = new SecretIamPolicy("policy-whs", SecretIamPolicyArgs.builder()
+ *             .secretId(webhook_secret_secret.secretId())
+ *             .policyData(p4sa_secretAccessor.policyData())
+ *             .build());
+ * 
+ *         var my_connection = new Connection("my-connection", ConnectionArgs.builder()
+ *             .location("us-central1")
+ *             .connectionId("my-connection")
+ *             .githubEnterpriseConfig(ConnectionGithubEnterpriseConfigArgs.builder()
+ *                 .hostUri("https://ghe.com")
+ *                 .privateKeySecretVersion(private_key_secret_version.id())
+ *                 .webhookSecretSecretVersion(webhook_secret_secret_version.id())
+ *                 .appId(100)
+ *                 .appInstallationId(123123)
+ *                 .build())
+ *             .build(), CustomResourceOptions.builder()
+ *                 .dependsOn(                
+ *                     policy_pk,
+ *                     policy_whs)
+ *                 .build());
+ * 
+ *     }}{@code
+ * }}{@code
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * ### Developer Connect Connection Gitlab + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.developerconnect.Connection;
+ * import com.pulumi.gcp.developerconnect.ConnectionArgs;
+ * import com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabConfigArgs;
+ * import com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabConfigReadAuthorizerCredentialArgs;
+ * import com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabConfigAuthorizerCredentialArgs;
+ * 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_connection = new Connection("my-connection", ConnectionArgs.builder()
+ *             .location("us-central1")
+ *             .connectionId("tf-test-connection")
+ *             .gitlabConfig(ConnectionGitlabConfigArgs.builder()
+ *                 .webhookSecretSecretVersion("projects/devconnect-terraform-creds/secrets/gitlab-webhook/versions/latest")
+ *                 .readAuthorizerCredential(ConnectionGitlabConfigReadAuthorizerCredentialArgs.builder()
+ *                     .userTokenSecretVersion("projects/devconnect-terraform-creds/secrets/gitlab-read-cred/versions/latest")
+ *                     .build())
+ *                 .authorizerCredential(ConnectionGitlabConfigAuthorizerCredentialArgs.builder()
+ *                     .userTokenSecretVersion("projects/devconnect-terraform-creds/secrets/gitlab-auth-cred/versions/latest")
+ *                     .build())
+ *                 .build())
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * ### Developer Connect Connection Gitlab Enterprise + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.developerconnect.Connection;
+ * import com.pulumi.gcp.developerconnect.ConnectionArgs;
+ * import com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabEnterpriseConfigArgs;
+ * import com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs;
+ * import com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs;
+ * 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_connection = new Connection("my-connection", ConnectionArgs.builder()
+ *             .location("us-central1")
+ *             .connectionId("tf-test-connection")
+ *             .gitlabEnterpriseConfig(ConnectionGitlabEnterpriseConfigArgs.builder()
+ *                 .hostUri("https://gle-us-central1.gcb-test.com")
+ *                 .webhookSecretSecretVersion("projects/devconnect-terraform-creds/secrets/gitlab-enterprise-webhook/versions/latest")
+ *                 .readAuthorizerCredential(ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs.builder()
+ *                     .userTokenSecretVersion("projects/devconnect-terraform-creds/secrets/gitlab-enterprise-read-cred/versions/latest")
+ *                     .build())
+ *                 .authorizerCredential(ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs.builder()
+ *                     .userTokenSecretVersion("projects/devconnect-terraform-creds/secrets/gitlab-enterprise-auth-cred/versions/latest")
+ *                     .build())
+ *                 .build())
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> * ## Import * * Connection can be imported using any of these accepted formats: @@ -240,7 +607,6 @@ public class Connection extends com.pulumi.resources.CustomResource { /** * Optional. Allows clients to store small amounts of arbitrary data. - * * **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. * @@ -250,7 +616,6 @@ public class Connection extends com.pulumi.resources.CustomResource { /** * @return Optional. Allows clients to store small amounts of arbitrary data. - * * **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. * @@ -259,8 +624,9 @@ public Output>> annotations() { return Codegen.optional(this.annotations); } /** - * Required. Id of the requesting object. If auto-generating Id server-side, - * remove this field and connection_id from the method_signature of Create RPC. + * Required. Id of the requesting object + * If auto-generating Id server-side, remove this field and + * connection_id from the method_signature of Create RPC * * *** * @@ -269,8 +635,9 @@ public Output>> annotations() { private Output connectionId; /** - * @return Required. Id of the requesting object. If auto-generating Id server-side, - * remove this field and connection_id from the method_signature of Create RPC. + * @return Required. Id of the requesting object + * If auto-generating Id server-side, remove this field and + * connection_id from the method_signature of Create RPC * * *** * @@ -292,6 +659,24 @@ public Output connectionId() { public Output createTime() { return this.createTime; } + /** + * The crypto key configuration. This field is used by the Customer-managed + * encryption keys (CMEK) feature. + * Structure is documented below. + * + */ + @Export(name="cryptoKeyConfig", refs={ConnectionCryptoKeyConfig.class}, tree="[0]") + private Output cryptoKeyConfig; + + /** + * @return The crypto key configuration. This field is used by the Customer-managed + * encryption keys (CMEK) feature. + * Structure is documented below. + * + */ + public Output> cryptoKeyConfig() { + return Codegen.optional(this.cryptoKeyConfig); + } /** * Output only. [Output only] Delete timestamp * @@ -307,14 +692,18 @@ public Output deleteTime() { return this.deleteTime; } /** - * Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled. + * Optional. If disabled is set to true, functionality is disabled for this connection. + * Repository based API methods and webhooks processing for repositories in + * this connection will be disabled. * */ @Export(name="disabled", refs={Boolean.class}, tree="[0]") private Output disabled; /** - * @return Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled. + * @return Optional. If disabled is set to true, functionality is disabled for this connection. + * Repository based API methods and webhooks processing for repositories in + * this connection will be disabled. * */ public Output> disabled() { @@ -341,8 +730,8 @@ public Output> effectiveLabels() { return this.effectiveLabels; } /** - * Optional. 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 + * Optional. 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. * */ @@ -350,8 +739,8 @@ public Output> effectiveLabels() { private Output etag; /** - * @return Optional. 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 + * @return Optional. 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. * */ @@ -375,8 +764,57 @@ public Output> githubConfig() { return Codegen.optional(this.githubConfig); } /** - * Describes stage and necessary actions to be taken by the user to complete the installation. - * Used for GitHub and GitHub Enterprise based connections. + * Configuration for connections to an instance of GitHub Enterprise. + * Structure is documented below. + * + */ + @Export(name="githubEnterpriseConfig", refs={ConnectionGithubEnterpriseConfig.class}, tree="[0]") + private Output githubEnterpriseConfig; + + /** + * @return Configuration for connections to an instance of GitHub Enterprise. + * Structure is documented below. + * + */ + public Output> githubEnterpriseConfig() { + return Codegen.optional(this.githubEnterpriseConfig); + } + /** + * Configuration for connections to gitlab.com. + * Structure is documented below. + * + */ + @Export(name="gitlabConfig", refs={ConnectionGitlabConfig.class}, tree="[0]") + private Output gitlabConfig; + + /** + * @return Configuration for connections to gitlab.com. + * Structure is documented below. + * + */ + public Output> gitlabConfig() { + return Codegen.optional(this.gitlabConfig); + } + /** + * Configuration for connections to an instance of GitLab Enterprise. + * Structure is documented below. + * + */ + @Export(name="gitlabEnterpriseConfig", refs={ConnectionGitlabEnterpriseConfig.class}, tree="[0]") + private Output gitlabEnterpriseConfig; + + /** + * @return Configuration for connections to an instance of GitLab Enterprise. + * Structure is documented below. + * + */ + public Output> gitlabEnterpriseConfig() { + return Codegen.optional(this.gitlabEnterpriseConfig); + } + /** + * Describes stage and necessary actions to be taken by the + * user to complete the installation. Used for GitHub and GitHub Enterprise + * based connections. * Structure is documented below. * */ @@ -384,8 +822,9 @@ public Output> githubConfig() { private Output> installationStates; /** - * @return Describes stage and necessary actions to be taken by the user to complete the installation. - * Used for GitHub and GitHub Enterprise based connections. + * @return Describes stage and necessary actions to be taken by the + * user to complete the installation. Used for GitHub and GitHub Enterprise + * based connections. * Structure is documented below. * */ @@ -394,7 +833,6 @@ public Output> installationStates() { } /** * 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. * @@ -404,7 +842,6 @@ public Output> installationStates() { /** * @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. * @@ -413,18 +850,14 @@ public Output>> labels() { return Codegen.optional(this.labels); } /** - * Resource ID segment making up resource `name`. It identifies the resource - * within its parent collection as described in https://google.aip.dev/122. See documentation - * for resource type `developerconnect.googleapis.com/GitRepositoryLink`. + * Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. * */ @Export(name="location", refs={String.class}, tree="[0]") private Output location; /** - * @return Resource ID segment making up resource `name`. It identifies the resource - * within its parent collection as described in https://google.aip.dev/122. See documentation - * for resource type `developerconnect.googleapis.com/GitRepositoryLink`. + * @return Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. * */ public Output location() { @@ -479,16 +912,16 @@ public Output> pulumiLabels() { return this.pulumiLabels; } /** - * Output only. Set to true when the connection is being set up or updated - * in the background. + * Output only. Set to true when the connection is being set up or updated in the + * background. * */ @Export(name="reconciling", refs={Boolean.class}, tree="[0]") private Output reconciling; /** - * @return Output only. Set to true when the connection is being set up or updated - * in the background. + * @return Output only. Set to true when the connection is being set up or updated in the + * background. * */ public Output reconciling() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/ConnectionArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/ConnectionArgs.java index b551bff58d..0f2095c7cb 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/ConnectionArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/ConnectionArgs.java @@ -6,7 +6,11 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.developerconnect.inputs.ConnectionCryptoKeyConfigArgs; import com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigArgs; +import com.pulumi.gcp.developerconnect.inputs.ConnectionGithubEnterpriseConfigArgs; +import com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabConfigArgs; +import com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabEnterpriseConfigArgs; import java.lang.Boolean; import java.lang.String; import java.util.Map; @@ -21,7 +25,6 @@ public final class ConnectionArgs extends com.pulumi.resources.ResourceArgs { /** * Optional. Allows clients to store small amounts of arbitrary data. - * * **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. * @@ -31,7 +34,6 @@ public final class ConnectionArgs extends com.pulumi.resources.ResourceArgs { /** * @return Optional. Allows clients to store small amounts of arbitrary data. - * * **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. * @@ -41,8 +43,9 @@ public Optional>> annotations() { } /** - * Required. Id of the requesting object. If auto-generating Id server-side, - * remove this field and connection_id from the method_signature of Create RPC. + * Required. Id of the requesting object + * If auto-generating Id server-side, remove this field and + * connection_id from the method_signature of Create RPC * * *** * @@ -51,8 +54,9 @@ public Optional>> annotations() { private Output connectionId; /** - * @return Required. Id of the requesting object. If auto-generating Id server-side, - * remove this field and connection_id from the method_signature of Create RPC. + * @return Required. Id of the requesting object + * If auto-generating Id server-side, remove this field and + * connection_id from the method_signature of Create RPC * * *** * @@ -62,14 +66,37 @@ public Output connectionId() { } /** - * Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled. + * The crypto key configuration. This field is used by the Customer-managed + * encryption keys (CMEK) feature. + * Structure is documented below. + * + */ + @Import(name="cryptoKeyConfig") + private @Nullable Output cryptoKeyConfig; + + /** + * @return The crypto key configuration. This field is used by the Customer-managed + * encryption keys (CMEK) feature. + * Structure is documented below. + * + */ + public Optional> cryptoKeyConfig() { + return Optional.ofNullable(this.cryptoKeyConfig); + } + + /** + * Optional. If disabled is set to true, functionality is disabled for this connection. + * Repository based API methods and webhooks processing for repositories in + * this connection will be disabled. * */ @Import(name="disabled") private @Nullable Output disabled; /** - * @return Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled. + * @return Optional. If disabled is set to true, functionality is disabled for this connection. + * Repository based API methods and webhooks processing for repositories in + * this connection will be disabled. * */ public Optional> disabled() { @@ -77,8 +104,8 @@ public Optional> disabled() { } /** - * Optional. 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 + * Optional. 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. * */ @@ -86,8 +113,8 @@ public Optional> disabled() { private @Nullable Output etag; /** - * @return Optional. 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 + * @return Optional. 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. * */ @@ -113,8 +140,58 @@ public Optional> githubConfig() { } /** - * Optional. Labels as key value pairs + * Configuration for connections to an instance of GitHub Enterprise. + * Structure is documented below. + * + */ + @Import(name="githubEnterpriseConfig") + private @Nullable Output githubEnterpriseConfig; + + /** + * @return Configuration for connections to an instance of GitHub Enterprise. + * Structure is documented below. + * + */ + public Optional> githubEnterpriseConfig() { + return Optional.ofNullable(this.githubEnterpriseConfig); + } + + /** + * Configuration for connections to gitlab.com. + * Structure is documented below. + * + */ + @Import(name="gitlabConfig") + private @Nullable Output gitlabConfig; + + /** + * @return Configuration for connections to gitlab.com. + * Structure is documented below. + * + */ + public Optional> gitlabConfig() { + return Optional.ofNullable(this.gitlabConfig); + } + + /** + * Configuration for connections to an instance of GitLab Enterprise. + * Structure is documented below. * + */ + @Import(name="gitlabEnterpriseConfig") + private @Nullable Output gitlabEnterpriseConfig; + + /** + * @return Configuration for connections to an instance of GitLab Enterprise. + * Structure is documented below. + * + */ + public Optional> gitlabEnterpriseConfig() { + return Optional.ofNullable(this.gitlabEnterpriseConfig); + } + + /** + * 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. * @@ -124,7 +201,6 @@ public Optional> githubConfig() { /** * @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. * @@ -134,18 +210,14 @@ public Optional>> labels() { } /** - * Resource ID segment making up resource `name`. It identifies the resource - * within its parent collection as described in https://google.aip.dev/122. See documentation - * for resource type `developerconnect.googleapis.com/GitRepositoryLink`. + * Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. * */ @Import(name="location", required=true) private Output location; /** - * @return Resource ID segment making up resource `name`. It identifies the resource - * within its parent collection as described in https://google.aip.dev/122. See documentation - * for resource type `developerconnect.googleapis.com/GitRepositoryLink`. + * @return Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. * */ public Output location() { @@ -174,9 +246,13 @@ private ConnectionArgs() {} private ConnectionArgs(ConnectionArgs $) { this.annotations = $.annotations; this.connectionId = $.connectionId; + this.cryptoKeyConfig = $.cryptoKeyConfig; this.disabled = $.disabled; this.etag = $.etag; this.githubConfig = $.githubConfig; + this.githubEnterpriseConfig = $.githubEnterpriseConfig; + this.gitlabConfig = $.gitlabConfig; + this.gitlabEnterpriseConfig = $.gitlabEnterpriseConfig; this.labels = $.labels; this.location = $.location; this.project = $.project; @@ -202,7 +278,6 @@ public Builder(ConnectionArgs defaults) { /** * @param annotations Optional. Allows clients to store small amounts of arbitrary data. - * * **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. * @@ -216,7 +291,6 @@ public Builder annotations(@Nullable Output> annotations) { /** * @param annotations Optional. Allows clients to store small amounts of arbitrary data. - * * **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. * @@ -228,8 +302,9 @@ public Builder annotations(Map annotations) { } /** - * @param connectionId Required. Id of the requesting object. If auto-generating Id server-side, - * remove this field and connection_id from the method_signature of Create RPC. + * @param connectionId Required. Id of the requesting object + * If auto-generating Id server-side, remove this field and + * connection_id from the method_signature of Create RPC * * *** * @@ -242,8 +317,9 @@ public Builder connectionId(Output connectionId) { } /** - * @param connectionId Required. Id of the requesting object. If auto-generating Id server-side, - * remove this field and connection_id from the method_signature of Create RPC. + * @param connectionId Required. Id of the requesting object + * If auto-generating Id server-side, remove this field and + * connection_id from the method_signature of Create RPC * * *** * @@ -255,7 +331,34 @@ public Builder connectionId(String connectionId) { } /** - * @param disabled Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled. + * @param cryptoKeyConfig The crypto key configuration. This field is used by the Customer-managed + * encryption keys (CMEK) feature. + * Structure is documented below. + * + * @return builder + * + */ + public Builder cryptoKeyConfig(@Nullable Output cryptoKeyConfig) { + $.cryptoKeyConfig = cryptoKeyConfig; + return this; + } + + /** + * @param cryptoKeyConfig The crypto key configuration. This field is used by the Customer-managed + * encryption keys (CMEK) feature. + * Structure is documented below. + * + * @return builder + * + */ + public Builder cryptoKeyConfig(ConnectionCryptoKeyConfigArgs cryptoKeyConfig) { + return cryptoKeyConfig(Output.of(cryptoKeyConfig)); + } + + /** + * @param disabled Optional. If disabled is set to true, functionality is disabled for this connection. + * Repository based API methods and webhooks processing for repositories in + * this connection will be disabled. * * @return builder * @@ -266,7 +369,9 @@ public Builder disabled(@Nullable Output disabled) { } /** - * @param disabled Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled. + * @param disabled Optional. If disabled is set to true, functionality is disabled for this connection. + * Repository based API methods and webhooks processing for repositories in + * this connection will be disabled. * * @return builder * @@ -276,8 +381,8 @@ public Builder disabled(Boolean disabled) { } /** - * @param etag Optional. 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 + * @param etag Optional. 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. * * @return builder @@ -289,8 +394,8 @@ public Builder etag(@Nullable Output etag) { } /** - * @param etag Optional. 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 + * @param etag Optional. 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. * * @return builder @@ -324,8 +429,76 @@ public Builder githubConfig(ConnectionGithubConfigArgs githubConfig) { } /** - * @param labels Optional. Labels as key value pairs + * @param githubEnterpriseConfig Configuration for connections to an instance of GitHub Enterprise. + * Structure is documented below. + * + * @return builder + * + */ + public Builder githubEnterpriseConfig(@Nullable Output githubEnterpriseConfig) { + $.githubEnterpriseConfig = githubEnterpriseConfig; + return this; + } + + /** + * @param githubEnterpriseConfig Configuration for connections to an instance of GitHub Enterprise. + * Structure is documented below. + * + * @return builder + * + */ + public Builder githubEnterpriseConfig(ConnectionGithubEnterpriseConfigArgs githubEnterpriseConfig) { + return githubEnterpriseConfig(Output.of(githubEnterpriseConfig)); + } + + /** + * @param gitlabConfig Configuration for connections to gitlab.com. + * Structure is documented below. + * + * @return builder + * + */ + public Builder gitlabConfig(@Nullable Output gitlabConfig) { + $.gitlabConfig = gitlabConfig; + return this; + } + + /** + * @param gitlabConfig Configuration for connections to gitlab.com. + * Structure is documented below. + * + * @return builder + * + */ + public Builder gitlabConfig(ConnectionGitlabConfigArgs gitlabConfig) { + return gitlabConfig(Output.of(gitlabConfig)); + } + + /** + * @param gitlabEnterpriseConfig Configuration for connections to an instance of GitLab Enterprise. + * Structure is documented below. + * + * @return builder * + */ + public Builder gitlabEnterpriseConfig(@Nullable Output gitlabEnterpriseConfig) { + $.gitlabEnterpriseConfig = gitlabEnterpriseConfig; + return this; + } + + /** + * @param gitlabEnterpriseConfig Configuration for connections to an instance of GitLab Enterprise. + * Structure is documented below. + * + * @return builder + * + */ + public Builder gitlabEnterpriseConfig(ConnectionGitlabEnterpriseConfigArgs gitlabEnterpriseConfig) { + return gitlabEnterpriseConfig(Output.of(gitlabEnterpriseConfig)); + } + + /** + * @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. * @@ -339,7 +512,6 @@ public Builder labels(@Nullable Output> labels) { /** * @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. * @@ -351,9 +523,7 @@ public Builder labels(Map labels) { } /** - * @param location Resource ID segment making up resource `name`. It identifies the resource - * within its parent collection as described in https://google.aip.dev/122. See documentation - * for resource type `developerconnect.googleapis.com/GitRepositoryLink`. + * @param location Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. * * @return builder * @@ -364,9 +534,7 @@ public Builder location(Output location) { } /** - * @param location Resource ID segment making up resource `name`. It identifies the resource - * within its parent collection as described in https://google.aip.dev/122. See documentation - * for resource type `developerconnect.googleapis.com/GitRepositoryLink`. + * @param location Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/GitRepositoryLink.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/GitRepositoryLink.java index 32edcc47f2..eb2d555c52 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/GitRepositoryLink.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/GitRepositoryLink.java @@ -18,6 +18,8 @@ import javax.annotation.Nullable; /** + * A git repository link to a parent connection. + * * ## Example Usage * * ### Developer Connect Git Repository Link Github Doc diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionCryptoKeyConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionCryptoKeyConfigArgs.java new file mode 100644 index 0000000000..581bdfe90f --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionCryptoKeyConfigArgs.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.developerconnect.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 ConnectionCryptoKeyConfigArgs extends com.pulumi.resources.ResourceArgs { + + public static final ConnectionCryptoKeyConfigArgs Empty = new ConnectionCryptoKeyConfigArgs(); + + /** + * Required. The name of the key which is used to encrypt/decrypt customer data. For key + * in Cloud KMS, the key should be in the format of + * `projects/*/locations/*/keyRings/*/cryptoKeys/*`. + * + */ + @Import(name="keyReference", required=true) + private Output keyReference; + + /** + * @return Required. The name of the key which is used to encrypt/decrypt customer data. For key + * in Cloud KMS, the key should be in the format of + * `projects/*/locations/*/keyRings/*/cryptoKeys/*`. + * + */ + public Output keyReference() { + return this.keyReference; + } + + private ConnectionCryptoKeyConfigArgs() {} + + private ConnectionCryptoKeyConfigArgs(ConnectionCryptoKeyConfigArgs $) { + this.keyReference = $.keyReference; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ConnectionCryptoKeyConfigArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ConnectionCryptoKeyConfigArgs $; + + public Builder() { + $ = new ConnectionCryptoKeyConfigArgs(); + } + + public Builder(ConnectionCryptoKeyConfigArgs defaults) { + $ = new ConnectionCryptoKeyConfigArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param keyReference Required. The name of the key which is used to encrypt/decrypt customer data. For key + * in Cloud KMS, the key should be in the format of + * `projects/*/locations/*/keyRings/*/cryptoKeys/*`. + * + * @return builder + * + */ + public Builder keyReference(Output keyReference) { + $.keyReference = keyReference; + return this; + } + + /** + * @param keyReference Required. The name of the key which is used to encrypt/decrypt customer data. For key + * in Cloud KMS, the key should be in the format of + * `projects/*/locations/*/keyRings/*/cryptoKeys/*`. + * + * @return builder + * + */ + public Builder keyReference(String keyReference) { + return keyReference(Output.of(keyReference)); + } + + public ConnectionCryptoKeyConfigArgs build() { + if ($.keyReference == null) { + throw new MissingRequiredPropertyException("ConnectionCryptoKeyConfigArgs", "keyReference"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGithubConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGithubConfigArgs.java index 70f82acd28..f226aeb5b3 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGithubConfigArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGithubConfigArgs.java @@ -33,8 +33,8 @@ public Optional> appInstallationId() { } /** - * Represents an OAuth token of the account that authorized the Connection,and - * associated metadata. + * Represents an OAuth token of the account that authorized the Connection, + * and associated metadata. * Structure is documented below. * */ @@ -42,8 +42,8 @@ public Optional> appInstallationId() { private @Nullable Output authorizerCredential; /** - * @return Represents an OAuth token of the account that authorized the Connection,and - * associated metadata. + * @return Represents an OAuth token of the account that authorized the Connection, + * and associated metadata. * Structure is documented below. * */ @@ -52,24 +52,24 @@ public Optional> authoriz } /** - * Required. Immutable. The GitHub Application that was installed to - * the GitHub user or organization. + * Required. Immutable. The GitHub Application that was installed to the GitHub user or + * organization. * Possible values: * GIT_HUB_APP_UNSPECIFIED * DEVELOPER_CONNECT - * FIREBASE" + * FIREBASE * */ @Import(name="githubApp", required=true) private Output githubApp; /** - * @return Required. Immutable. The GitHub Application that was installed to - * the GitHub user or organization. + * @return Required. Immutable. The GitHub Application that was installed to the GitHub user or + * organization. * Possible values: * GIT_HUB_APP_UNSPECIFIED * DEVELOPER_CONNECT - * FIREBASE" + * FIREBASE * */ public Output githubApp() { @@ -78,8 +78,8 @@ public Output githubApp() { /** * (Output) - * Output only. The URI to navigate to in order to manage the installation - * associated with this GitHubConfig. + * Output only. The URI to navigate to in order to manage the installation associated + * with this GitHubConfig. * */ @Import(name="installationUri") @@ -87,8 +87,8 @@ public Output githubApp() { /** * @return (Output) - * Output only. The URI to navigate to in order to manage the installation - * associated with this GitHubConfig. + * Output only. The URI to navigate to in order to manage the installation associated + * with this GitHubConfig. * */ public Optional> installationUri() { @@ -144,8 +144,8 @@ public Builder appInstallationId(String appInstallationId) { } /** - * @param authorizerCredential Represents an OAuth token of the account that authorized the Connection,and - * associated metadata. + * @param authorizerCredential Represents an OAuth token of the account that authorized the Connection, + * and associated metadata. * Structure is documented below. * * @return builder @@ -157,8 +157,8 @@ public Builder authorizerCredential(@Nullable Output githubApp) { } /** - * @param githubApp Required. Immutable. The GitHub Application that was installed to - * the GitHub user or organization. + * @param githubApp Required. Immutable. The GitHub Application that was installed to the GitHub user or + * organization. * Possible values: * GIT_HUB_APP_UNSPECIFIED * DEVELOPER_CONNECT - * FIREBASE" + * FIREBASE * * @return builder * @@ -201,8 +201,8 @@ public Builder githubApp(String githubApp) { /** * @param installationUri (Output) - * Output only. The URI to navigate to in order to manage the installation - * associated with this GitHubConfig. + * Output only. The URI to navigate to in order to manage the installation associated + * with this GitHubConfig. * * @return builder * @@ -214,8 +214,8 @@ public Builder installationUri(@Nullable Output installationUri) { /** * @param installationUri (Output) - * Output only. The URI to navigate to in order to manage the installation - * associated with this GitHubConfig. + * Output only. The URI to navigate to in order to manage the installation associated + * with this GitHubConfig. * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGithubConfigAuthorizerCredentialArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGithubConfigAuthorizerCredentialArgs.java index 5a438a3c13..ec0e036e97 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGithubConfigAuthorizerCredentialArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGithubConfigAuthorizerCredentialArgs.java @@ -17,18 +17,16 @@ public final class ConnectionGithubConfigAuthorizerCredentialArgs extends com.pu public static final ConnectionGithubConfigAuthorizerCredentialArgs Empty = new ConnectionGithubConfigAuthorizerCredentialArgs(); /** - * Required. A SecretManager resource containing the OAuth token - * that authorizes the connection. - * Format: `projects/*/secrets/*/versions/*`. + * Required. A SecretManager resource containing the OAuth token that authorizes + * the connection. Format: `projects/*/secrets/*/versions/*`. * */ @Import(name="oauthTokenSecretVersion", required=true) private Output oauthTokenSecretVersion; /** - * @return Required. A SecretManager resource containing the OAuth token - * that authorizes the connection. - * Format: `projects/*/secrets/*/versions/*`. + * @return Required. A SecretManager resource containing the OAuth token that authorizes + * the connection. Format: `projects/*/secrets/*/versions/*`. * */ public Output oauthTokenSecretVersion() { @@ -78,9 +76,8 @@ public Builder(ConnectionGithubConfigAuthorizerCredentialArgs defaults) { } /** - * @param oauthTokenSecretVersion Required. A SecretManager resource containing the OAuth token - * that authorizes the connection. - * Format: `projects/*/secrets/*/versions/*`. + * @param oauthTokenSecretVersion Required. A SecretManager resource containing the OAuth token that authorizes + * the connection. Format: `projects/*/secrets/*/versions/*`. * * @return builder * @@ -91,9 +88,8 @@ public Builder oauthTokenSecretVersion(Output oauthTokenSecretVersion) { } /** - * @param oauthTokenSecretVersion Required. A SecretManager resource containing the OAuth token - * that authorizes the connection. - * Format: `projects/*/secrets/*/versions/*`. + * @param oauthTokenSecretVersion Required. A SecretManager resource containing the OAuth token that authorizes + * the connection. Format: `projects/*/secrets/*/versions/*`. * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGithubEnterpriseConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGithubEnterpriseConfigArgs.java new file mode 100644 index 0000000000..5e23efb70d --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGithubEnterpriseConfigArgs.java @@ -0,0 +1,453 @@ +// *** 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.developerconnect.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.developerconnect.inputs.ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class ConnectionGithubEnterpriseConfigArgs extends com.pulumi.resources.ResourceArgs { + + public static final ConnectionGithubEnterpriseConfigArgs Empty = new ConnectionGithubEnterpriseConfigArgs(); + + /** + * Optional. ID of the GitHub App created from the manifest. + * + */ + @Import(name="appId") + private @Nullable Output appId; + + /** + * @return Optional. ID of the GitHub App created from the manifest. + * + */ + public Optional> appId() { + return Optional.ofNullable(this.appId); + } + + /** + * Optional. ID of the installation of the GitHub App. + * + */ + @Import(name="appInstallationId") + private @Nullable Output appInstallationId; + + /** + * @return Optional. ID of the installation of the GitHub App. + * + */ + public Optional> appInstallationId() { + return Optional.ofNullable(this.appInstallationId); + } + + /** + * (Output) + * Output only. The URL-friendly name of the GitHub App. + * + */ + @Import(name="appSlug") + private @Nullable Output appSlug; + + /** + * @return (Output) + * Output only. The URL-friendly name of the GitHub App. + * + */ + public Optional> appSlug() { + return Optional.ofNullable(this.appSlug); + } + + /** + * Required. The URI of the GitHub Enterprise host this connection is for. + * + */ + @Import(name="hostUri", required=true) + private Output hostUri; + + /** + * @return Required. The URI of the GitHub Enterprise host this connection is for. + * + */ + public Output hostUri() { + return this.hostUri; + } + + /** + * (Output) + * Output only. The URI to navigate to in order to manage the installation associated + * with this GitHubEnterpriseConfig. + * + */ + @Import(name="installationUri") + private @Nullable Output installationUri; + + /** + * @return (Output) + * Output only. The URI to navigate to in order to manage the installation associated + * with this GitHubEnterpriseConfig. + * + */ + public Optional> installationUri() { + return Optional.ofNullable(this.installationUri); + } + + /** + * Optional. SecretManager resource containing the private key of the GitHub App, + * formatted as `projects/*/secrets/*/versions/*`. + * + */ + @Import(name="privateKeySecretVersion") + private @Nullable Output privateKeySecretVersion; + + /** + * @return Optional. SecretManager resource containing the private key of the GitHub App, + * formatted as `projects/*/secrets/*/versions/*`. + * + */ + public Optional> privateKeySecretVersion() { + return Optional.ofNullable(this.privateKeySecretVersion); + } + + /** + * (Output) + * Output only. GitHub Enterprise version installed at the host_uri. + * + */ + @Import(name="serverVersion") + private @Nullable Output serverVersion; + + /** + * @return (Output) + * Output only. GitHub Enterprise version installed at the host_uri. + * + */ + public Optional> serverVersion() { + return Optional.ofNullable(this.serverVersion); + } + + /** + * ServiceDirectoryConfig represents Service Directory configuration for a + * connection. + * Structure is documented below. + * + */ + @Import(name="serviceDirectoryConfig") + private @Nullable Output serviceDirectoryConfig; + + /** + * @return ServiceDirectoryConfig represents Service Directory configuration for a + * connection. + * Structure is documented below. + * + */ + public Optional> serviceDirectoryConfig() { + return Optional.ofNullable(this.serviceDirectoryConfig); + } + + /** + * Optional. SSL certificate to use for requests to GitHub Enterprise. + * + */ + @Import(name="sslCaCertificate") + private @Nullable Output sslCaCertificate; + + /** + * @return Optional. SSL certificate to use for requests to GitHub Enterprise. + * + */ + public Optional> sslCaCertificate() { + return Optional.ofNullable(this.sslCaCertificate); + } + + /** + * Optional. SecretManager resource containing the webhook secret of the GitHub App, + * formatted as `projects/*/secrets/*/versions/*`. + * + */ + @Import(name="webhookSecretSecretVersion") + private @Nullable Output webhookSecretSecretVersion; + + /** + * @return Optional. SecretManager resource containing the webhook secret of the GitHub App, + * formatted as `projects/*/secrets/*/versions/*`. + * + */ + public Optional> webhookSecretSecretVersion() { + return Optional.ofNullable(this.webhookSecretSecretVersion); + } + + private ConnectionGithubEnterpriseConfigArgs() {} + + private ConnectionGithubEnterpriseConfigArgs(ConnectionGithubEnterpriseConfigArgs $) { + this.appId = $.appId; + this.appInstallationId = $.appInstallationId; + this.appSlug = $.appSlug; + this.hostUri = $.hostUri; + this.installationUri = $.installationUri; + this.privateKeySecretVersion = $.privateKeySecretVersion; + this.serverVersion = $.serverVersion; + this.serviceDirectoryConfig = $.serviceDirectoryConfig; + this.sslCaCertificate = $.sslCaCertificate; + this.webhookSecretSecretVersion = $.webhookSecretSecretVersion; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ConnectionGithubEnterpriseConfigArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ConnectionGithubEnterpriseConfigArgs $; + + public Builder() { + $ = new ConnectionGithubEnterpriseConfigArgs(); + } + + public Builder(ConnectionGithubEnterpriseConfigArgs defaults) { + $ = new ConnectionGithubEnterpriseConfigArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param appId Optional. ID of the GitHub App created from the manifest. + * + * @return builder + * + */ + public Builder appId(@Nullable Output appId) { + $.appId = appId; + return this; + } + + /** + * @param appId Optional. ID of the GitHub App created from the manifest. + * + * @return builder + * + */ + public Builder appId(String appId) { + return appId(Output.of(appId)); + } + + /** + * @param appInstallationId Optional. ID of the installation of the GitHub App. + * + * @return builder + * + */ + public Builder appInstallationId(@Nullable Output appInstallationId) { + $.appInstallationId = appInstallationId; + return this; + } + + /** + * @param appInstallationId Optional. ID of the installation of the GitHub App. + * + * @return builder + * + */ + public Builder appInstallationId(String appInstallationId) { + return appInstallationId(Output.of(appInstallationId)); + } + + /** + * @param appSlug (Output) + * Output only. The URL-friendly name of the GitHub App. + * + * @return builder + * + */ + public Builder appSlug(@Nullable Output appSlug) { + $.appSlug = appSlug; + return this; + } + + /** + * @param appSlug (Output) + * Output only. The URL-friendly name of the GitHub App. + * + * @return builder + * + */ + public Builder appSlug(String appSlug) { + return appSlug(Output.of(appSlug)); + } + + /** + * @param hostUri Required. The URI of the GitHub Enterprise host this connection is for. + * + * @return builder + * + */ + public Builder hostUri(Output hostUri) { + $.hostUri = hostUri; + return this; + } + + /** + * @param hostUri Required. The URI of the GitHub Enterprise host this connection is for. + * + * @return builder + * + */ + public Builder hostUri(String hostUri) { + return hostUri(Output.of(hostUri)); + } + + /** + * @param installationUri (Output) + * Output only. The URI to navigate to in order to manage the installation associated + * with this GitHubEnterpriseConfig. + * + * @return builder + * + */ + public Builder installationUri(@Nullable Output installationUri) { + $.installationUri = installationUri; + return this; + } + + /** + * @param installationUri (Output) + * Output only. The URI to navigate to in order to manage the installation associated + * with this GitHubEnterpriseConfig. + * + * @return builder + * + */ + public Builder installationUri(String installationUri) { + return installationUri(Output.of(installationUri)); + } + + /** + * @param privateKeySecretVersion Optional. SecretManager resource containing the private key of the GitHub App, + * formatted as `projects/*/secrets/*/versions/*`. + * + * @return builder + * + */ + public Builder privateKeySecretVersion(@Nullable Output privateKeySecretVersion) { + $.privateKeySecretVersion = privateKeySecretVersion; + return this; + } + + /** + * @param privateKeySecretVersion Optional. SecretManager resource containing the private key of the GitHub App, + * formatted as `projects/*/secrets/*/versions/*`. + * + * @return builder + * + */ + public Builder privateKeySecretVersion(String privateKeySecretVersion) { + return privateKeySecretVersion(Output.of(privateKeySecretVersion)); + } + + /** + * @param serverVersion (Output) + * Output only. GitHub Enterprise version installed at the host_uri. + * + * @return builder + * + */ + public Builder serverVersion(@Nullable Output serverVersion) { + $.serverVersion = serverVersion; + return this; + } + + /** + * @param serverVersion (Output) + * Output only. GitHub Enterprise version installed at the host_uri. + * + * @return builder + * + */ + public Builder serverVersion(String serverVersion) { + return serverVersion(Output.of(serverVersion)); + } + + /** + * @param serviceDirectoryConfig ServiceDirectoryConfig represents Service Directory configuration for a + * connection. + * Structure is documented below. + * + * @return builder + * + */ + public Builder serviceDirectoryConfig(@Nullable Output serviceDirectoryConfig) { + $.serviceDirectoryConfig = serviceDirectoryConfig; + return this; + } + + /** + * @param serviceDirectoryConfig ServiceDirectoryConfig represents Service Directory configuration for a + * connection. + * Structure is documented below. + * + * @return builder + * + */ + public Builder serviceDirectoryConfig(ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs serviceDirectoryConfig) { + return serviceDirectoryConfig(Output.of(serviceDirectoryConfig)); + } + + /** + * @param sslCaCertificate Optional. SSL certificate to use for requests to GitHub Enterprise. + * + * @return builder + * + */ + public Builder sslCaCertificate(@Nullable Output sslCaCertificate) { + $.sslCaCertificate = sslCaCertificate; + return this; + } + + /** + * @param sslCaCertificate Optional. SSL certificate to use for requests to GitHub Enterprise. + * + * @return builder + * + */ + public Builder sslCaCertificate(String sslCaCertificate) { + return sslCaCertificate(Output.of(sslCaCertificate)); + } + + /** + * @param webhookSecretSecretVersion Optional. SecretManager resource containing the webhook secret of the GitHub App, + * formatted as `projects/*/secrets/*/versions/*`. + * + * @return builder + * + */ + public Builder webhookSecretSecretVersion(@Nullable Output webhookSecretSecretVersion) { + $.webhookSecretSecretVersion = webhookSecretSecretVersion; + return this; + } + + /** + * @param webhookSecretSecretVersion Optional. SecretManager resource containing the webhook secret of the GitHub App, + * formatted as `projects/*/secrets/*/versions/*`. + * + * @return builder + * + */ + public Builder webhookSecretSecretVersion(String webhookSecretSecretVersion) { + return webhookSecretSecretVersion(Output.of(webhookSecretSecretVersion)); + } + + public ConnectionGithubEnterpriseConfigArgs build() { + if ($.hostUri == null) { + throw new MissingRequiredPropertyException("ConnectionGithubEnterpriseConfigArgs", "hostUri"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs.java new file mode 100644 index 0000000000..69c0021b0b --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs.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.developerconnect.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 ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs extends com.pulumi.resources.ResourceArgs { + + public static final ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs Empty = new ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs(); + + /** + * Required. The Service Directory service name. + * Format: + * projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + * + */ + @Import(name="service", required=true) + private Output service; + + /** + * @return Required. The Service Directory service name. + * Format: + * projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + * + */ + public Output service() { + return this.service; + } + + private ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs() {} + + private ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs(ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs $) { + this.service = $.service; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs $; + + public Builder() { + $ = new ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs(); + } + + public Builder(ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs defaults) { + $ = new ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param service Required. The Service Directory service name. + * Format: + * projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + * + * @return builder + * + */ + public Builder service(Output service) { + $.service = service; + return this; + } + + /** + * @param service Required. The Service Directory service name. + * Format: + * projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + * + * @return builder + * + */ + public Builder service(String service) { + return service(Output.of(service)); + } + + public ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs build() { + if ($.service == null) { + throw new MissingRequiredPropertyException("ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs", "service"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGitlabConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGitlabConfigArgs.java new file mode 100644 index 0000000000..bd75c09ba0 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGitlabConfigArgs.java @@ -0,0 +1,191 @@ +// *** 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.developerconnect.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabConfigAuthorizerCredentialArgs; +import com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabConfigReadAuthorizerCredentialArgs; +import java.lang.String; +import java.util.Objects; + + +public final class ConnectionGitlabConfigArgs extends com.pulumi.resources.ResourceArgs { + + public static final ConnectionGitlabConfigArgs Empty = new ConnectionGitlabConfigArgs(); + + /** + * Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + * + */ + @Import(name="authorizerCredential", required=true) + private Output authorizerCredential; + + /** + * @return Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + * + */ + public Output authorizerCredential() { + return this.authorizerCredential; + } + + /** + * Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + * + */ + @Import(name="readAuthorizerCredential", required=true) + private Output readAuthorizerCredential; + + /** + * @return Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + * + */ + public Output readAuthorizerCredential() { + return this.readAuthorizerCredential; + } + + /** + * Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + * formatted as `projects/*/secrets/*/versions/*`. This is used to validate + * webhooks. + * + */ + @Import(name="webhookSecretSecretVersion", required=true) + private Output webhookSecretSecretVersion; + + /** + * @return Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + * formatted as `projects/*/secrets/*/versions/*`. This is used to validate + * webhooks. + * + */ + public Output webhookSecretSecretVersion() { + return this.webhookSecretSecretVersion; + } + + private ConnectionGitlabConfigArgs() {} + + private ConnectionGitlabConfigArgs(ConnectionGitlabConfigArgs $) { + this.authorizerCredential = $.authorizerCredential; + this.readAuthorizerCredential = $.readAuthorizerCredential; + this.webhookSecretSecretVersion = $.webhookSecretSecretVersion; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ConnectionGitlabConfigArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ConnectionGitlabConfigArgs $; + + public Builder() { + $ = new ConnectionGitlabConfigArgs(); + } + + public Builder(ConnectionGitlabConfigArgs defaults) { + $ = new ConnectionGitlabConfigArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param authorizerCredential Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + * + * @return builder + * + */ + public Builder authorizerCredential(Output authorizerCredential) { + $.authorizerCredential = authorizerCredential; + return this; + } + + /** + * @param authorizerCredential Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + * + * @return builder + * + */ + public Builder authorizerCredential(ConnectionGitlabConfigAuthorizerCredentialArgs authorizerCredential) { + return authorizerCredential(Output.of(authorizerCredential)); + } + + /** + * @param readAuthorizerCredential Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + * + * @return builder + * + */ + public Builder readAuthorizerCredential(Output readAuthorizerCredential) { + $.readAuthorizerCredential = readAuthorizerCredential; + return this; + } + + /** + * @param readAuthorizerCredential Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + * + * @return builder + * + */ + public Builder readAuthorizerCredential(ConnectionGitlabConfigReadAuthorizerCredentialArgs readAuthorizerCredential) { + return readAuthorizerCredential(Output.of(readAuthorizerCredential)); + } + + /** + * @param webhookSecretSecretVersion Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + * formatted as `projects/*/secrets/*/versions/*`. This is used to validate + * webhooks. + * + * @return builder + * + */ + public Builder webhookSecretSecretVersion(Output webhookSecretSecretVersion) { + $.webhookSecretSecretVersion = webhookSecretSecretVersion; + return this; + } + + /** + * @param webhookSecretSecretVersion Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + * formatted as `projects/*/secrets/*/versions/*`. This is used to validate + * webhooks. + * + * @return builder + * + */ + public Builder webhookSecretSecretVersion(String webhookSecretSecretVersion) { + return webhookSecretSecretVersion(Output.of(webhookSecretSecretVersion)); + } + + public ConnectionGitlabConfigArgs build() { + if ($.authorizerCredential == null) { + throw new MissingRequiredPropertyException("ConnectionGitlabConfigArgs", "authorizerCredential"); + } + if ($.readAuthorizerCredential == null) { + throw new MissingRequiredPropertyException("ConnectionGitlabConfigArgs", "readAuthorizerCredential"); + } + if ($.webhookSecretSecretVersion == null) { + throw new MissingRequiredPropertyException("ConnectionGitlabConfigArgs", "webhookSecretSecretVersion"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGitlabConfigAuthorizerCredentialArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGitlabConfigAuthorizerCredentialArgs.java new file mode 100644 index 0000000000..817500cf21 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGitlabConfigAuthorizerCredentialArgs.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.developerconnect.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 ConnectionGitlabConfigAuthorizerCredentialArgs extends com.pulumi.resources.ResourceArgs { + + public static final ConnectionGitlabConfigAuthorizerCredentialArgs Empty = new ConnectionGitlabConfigAuthorizerCredentialArgs(); + + /** + * Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + * + */ + @Import(name="userTokenSecretVersion", required=true) + private Output userTokenSecretVersion; + + /** + * @return Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + * + */ + public Output userTokenSecretVersion() { + return this.userTokenSecretVersion; + } + + /** + * (Output) + * Output only. The username associated with this token. + * + */ + @Import(name="username") + private @Nullable Output username; + + /** + * @return (Output) + * Output only. The username associated with this token. + * + */ + public Optional> username() { + return Optional.ofNullable(this.username); + } + + private ConnectionGitlabConfigAuthorizerCredentialArgs() {} + + private ConnectionGitlabConfigAuthorizerCredentialArgs(ConnectionGitlabConfigAuthorizerCredentialArgs $) { + this.userTokenSecretVersion = $.userTokenSecretVersion; + this.username = $.username; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ConnectionGitlabConfigAuthorizerCredentialArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ConnectionGitlabConfigAuthorizerCredentialArgs $; + + public Builder() { + $ = new ConnectionGitlabConfigAuthorizerCredentialArgs(); + } + + public Builder(ConnectionGitlabConfigAuthorizerCredentialArgs defaults) { + $ = new ConnectionGitlabConfigAuthorizerCredentialArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param userTokenSecretVersion Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + * + * @return builder + * + */ + public Builder userTokenSecretVersion(Output userTokenSecretVersion) { + $.userTokenSecretVersion = userTokenSecretVersion; + return this; + } + + /** + * @param userTokenSecretVersion Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + * + * @return builder + * + */ + public Builder userTokenSecretVersion(String userTokenSecretVersion) { + return userTokenSecretVersion(Output.of(userTokenSecretVersion)); + } + + /** + * @param username (Output) + * Output only. The username associated with this token. + * + * @return builder + * + */ + public Builder username(@Nullable Output username) { + $.username = username; + return this; + } + + /** + * @param username (Output) + * Output only. The username associated with this token. + * + * @return builder + * + */ + public Builder username(String username) { + return username(Output.of(username)); + } + + public ConnectionGitlabConfigAuthorizerCredentialArgs build() { + if ($.userTokenSecretVersion == null) { + throw new MissingRequiredPropertyException("ConnectionGitlabConfigAuthorizerCredentialArgs", "userTokenSecretVersion"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGitlabConfigReadAuthorizerCredentialArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGitlabConfigReadAuthorizerCredentialArgs.java new file mode 100644 index 0000000000..a08e062907 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGitlabConfigReadAuthorizerCredentialArgs.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.developerconnect.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 ConnectionGitlabConfigReadAuthorizerCredentialArgs extends com.pulumi.resources.ResourceArgs { + + public static final ConnectionGitlabConfigReadAuthorizerCredentialArgs Empty = new ConnectionGitlabConfigReadAuthorizerCredentialArgs(); + + /** + * Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + * + */ + @Import(name="userTokenSecretVersion", required=true) + private Output userTokenSecretVersion; + + /** + * @return Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + * + */ + public Output userTokenSecretVersion() { + return this.userTokenSecretVersion; + } + + /** + * (Output) + * Output only. The username associated with this token. + * + */ + @Import(name="username") + private @Nullable Output username; + + /** + * @return (Output) + * Output only. The username associated with this token. + * + */ + public Optional> username() { + return Optional.ofNullable(this.username); + } + + private ConnectionGitlabConfigReadAuthorizerCredentialArgs() {} + + private ConnectionGitlabConfigReadAuthorizerCredentialArgs(ConnectionGitlabConfigReadAuthorizerCredentialArgs $) { + this.userTokenSecretVersion = $.userTokenSecretVersion; + this.username = $.username; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ConnectionGitlabConfigReadAuthorizerCredentialArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ConnectionGitlabConfigReadAuthorizerCredentialArgs $; + + public Builder() { + $ = new ConnectionGitlabConfigReadAuthorizerCredentialArgs(); + } + + public Builder(ConnectionGitlabConfigReadAuthorizerCredentialArgs defaults) { + $ = new ConnectionGitlabConfigReadAuthorizerCredentialArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param userTokenSecretVersion Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + * + * @return builder + * + */ + public Builder userTokenSecretVersion(Output userTokenSecretVersion) { + $.userTokenSecretVersion = userTokenSecretVersion; + return this; + } + + /** + * @param userTokenSecretVersion Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + * + * @return builder + * + */ + public Builder userTokenSecretVersion(String userTokenSecretVersion) { + return userTokenSecretVersion(Output.of(userTokenSecretVersion)); + } + + /** + * @param username (Output) + * Output only. The username associated with this token. + * + * @return builder + * + */ + public Builder username(@Nullable Output username) { + $.username = username; + return this; + } + + /** + * @param username (Output) + * Output only. The username associated with this token. + * + * @return builder + * + */ + public Builder username(String username) { + return username(Output.of(username)); + } + + public ConnectionGitlabConfigReadAuthorizerCredentialArgs build() { + if ($.userTokenSecretVersion == null) { + throw new MissingRequiredPropertyException("ConnectionGitlabConfigReadAuthorizerCredentialArgs", "userTokenSecretVersion"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGitlabEnterpriseConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGitlabEnterpriseConfigArgs.java new file mode 100644 index 0000000000..19fb0c9283 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGitlabEnterpriseConfigArgs.java @@ -0,0 +1,361 @@ +// *** 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.developerconnect.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs; +import com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs; +import com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class ConnectionGitlabEnterpriseConfigArgs extends com.pulumi.resources.ResourceArgs { + + public static final ConnectionGitlabEnterpriseConfigArgs Empty = new ConnectionGitlabEnterpriseConfigArgs(); + + /** + * Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + * + */ + @Import(name="authorizerCredential", required=true) + private Output authorizerCredential; + + /** + * @return Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + * + */ + public Output authorizerCredential() { + return this.authorizerCredential; + } + + /** + * Required. The URI of the GitLab Enterprise host this connection is for. + * + */ + @Import(name="hostUri", required=true) + private Output hostUri; + + /** + * @return Required. The URI of the GitLab Enterprise host this connection is for. + * + */ + public Output hostUri() { + return this.hostUri; + } + + /** + * Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + * + */ + @Import(name="readAuthorizerCredential", required=true) + private Output readAuthorizerCredential; + + /** + * @return Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + * + */ + public Output readAuthorizerCredential() { + return this.readAuthorizerCredential; + } + + /** + * (Output) + * Output only. Version of the GitLab Enterprise server running on the `host_uri`. + * + */ + @Import(name="serverVersion") + private @Nullable Output serverVersion; + + /** + * @return (Output) + * Output only. Version of the GitLab Enterprise server running on the `host_uri`. + * + */ + public Optional> serverVersion() { + return Optional.ofNullable(this.serverVersion); + } + + /** + * ServiceDirectoryConfig represents Service Directory configuration for a + * connection. + * Structure is documented below. + * + */ + @Import(name="serviceDirectoryConfig") + private @Nullable Output serviceDirectoryConfig; + + /** + * @return ServiceDirectoryConfig represents Service Directory configuration for a + * connection. + * Structure is documented below. + * + */ + public Optional> serviceDirectoryConfig() { + return Optional.ofNullable(this.serviceDirectoryConfig); + } + + /** + * Optional. SSL Certificate Authority certificate to use for requests to GitLab + * Enterprise instance. + * + */ + @Import(name="sslCaCertificate") + private @Nullable Output sslCaCertificate; + + /** + * @return Optional. SSL Certificate Authority certificate to use for requests to GitLab + * Enterprise instance. + * + */ + public Optional> sslCaCertificate() { + return Optional.ofNullable(this.sslCaCertificate); + } + + /** + * Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + * formatted as `projects/*/secrets/*/versions/*`. This is used to validate + * webhooks. + * + */ + @Import(name="webhookSecretSecretVersion", required=true) + private Output webhookSecretSecretVersion; + + /** + * @return Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + * formatted as `projects/*/secrets/*/versions/*`. This is used to validate + * webhooks. + * + */ + public Output webhookSecretSecretVersion() { + return this.webhookSecretSecretVersion; + } + + private ConnectionGitlabEnterpriseConfigArgs() {} + + private ConnectionGitlabEnterpriseConfigArgs(ConnectionGitlabEnterpriseConfigArgs $) { + this.authorizerCredential = $.authorizerCredential; + this.hostUri = $.hostUri; + this.readAuthorizerCredential = $.readAuthorizerCredential; + this.serverVersion = $.serverVersion; + this.serviceDirectoryConfig = $.serviceDirectoryConfig; + this.sslCaCertificate = $.sslCaCertificate; + this.webhookSecretSecretVersion = $.webhookSecretSecretVersion; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ConnectionGitlabEnterpriseConfigArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ConnectionGitlabEnterpriseConfigArgs $; + + public Builder() { + $ = new ConnectionGitlabEnterpriseConfigArgs(); + } + + public Builder(ConnectionGitlabEnterpriseConfigArgs defaults) { + $ = new ConnectionGitlabEnterpriseConfigArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param authorizerCredential Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + * + * @return builder + * + */ + public Builder authorizerCredential(Output authorizerCredential) { + $.authorizerCredential = authorizerCredential; + return this; + } + + /** + * @param authorizerCredential Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + * + * @return builder + * + */ + public Builder authorizerCredential(ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs authorizerCredential) { + return authorizerCredential(Output.of(authorizerCredential)); + } + + /** + * @param hostUri Required. The URI of the GitLab Enterprise host this connection is for. + * + * @return builder + * + */ + public Builder hostUri(Output hostUri) { + $.hostUri = hostUri; + return this; + } + + /** + * @param hostUri Required. The URI of the GitLab Enterprise host this connection is for. + * + * @return builder + * + */ + public Builder hostUri(String hostUri) { + return hostUri(Output.of(hostUri)); + } + + /** + * @param readAuthorizerCredential Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + * + * @return builder + * + */ + public Builder readAuthorizerCredential(Output readAuthorizerCredential) { + $.readAuthorizerCredential = readAuthorizerCredential; + return this; + } + + /** + * @param readAuthorizerCredential Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + * + * @return builder + * + */ + public Builder readAuthorizerCredential(ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs readAuthorizerCredential) { + return readAuthorizerCredential(Output.of(readAuthorizerCredential)); + } + + /** + * @param serverVersion (Output) + * Output only. Version of the GitLab Enterprise server running on the `host_uri`. + * + * @return builder + * + */ + public Builder serverVersion(@Nullable Output serverVersion) { + $.serverVersion = serverVersion; + return this; + } + + /** + * @param serverVersion (Output) + * Output only. Version of the GitLab Enterprise server running on the `host_uri`. + * + * @return builder + * + */ + public Builder serverVersion(String serverVersion) { + return serverVersion(Output.of(serverVersion)); + } + + /** + * @param serviceDirectoryConfig ServiceDirectoryConfig represents Service Directory configuration for a + * connection. + * Structure is documented below. + * + * @return builder + * + */ + public Builder serviceDirectoryConfig(@Nullable Output serviceDirectoryConfig) { + $.serviceDirectoryConfig = serviceDirectoryConfig; + return this; + } + + /** + * @param serviceDirectoryConfig ServiceDirectoryConfig represents Service Directory configuration for a + * connection. + * Structure is documented below. + * + * @return builder + * + */ + public Builder serviceDirectoryConfig(ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs serviceDirectoryConfig) { + return serviceDirectoryConfig(Output.of(serviceDirectoryConfig)); + } + + /** + * @param sslCaCertificate Optional. SSL Certificate Authority certificate to use for requests to GitLab + * Enterprise instance. + * + * @return builder + * + */ + public Builder sslCaCertificate(@Nullable Output sslCaCertificate) { + $.sslCaCertificate = sslCaCertificate; + return this; + } + + /** + * @param sslCaCertificate Optional. SSL Certificate Authority certificate to use for requests to GitLab + * Enterprise instance. + * + * @return builder + * + */ + public Builder sslCaCertificate(String sslCaCertificate) { + return sslCaCertificate(Output.of(sslCaCertificate)); + } + + /** + * @param webhookSecretSecretVersion Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + * formatted as `projects/*/secrets/*/versions/*`. This is used to validate + * webhooks. + * + * @return builder + * + */ + public Builder webhookSecretSecretVersion(Output webhookSecretSecretVersion) { + $.webhookSecretSecretVersion = webhookSecretSecretVersion; + return this; + } + + /** + * @param webhookSecretSecretVersion Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + * formatted as `projects/*/secrets/*/versions/*`. This is used to validate + * webhooks. + * + * @return builder + * + */ + public Builder webhookSecretSecretVersion(String webhookSecretSecretVersion) { + return webhookSecretSecretVersion(Output.of(webhookSecretSecretVersion)); + } + + public ConnectionGitlabEnterpriseConfigArgs build() { + if ($.authorizerCredential == null) { + throw new MissingRequiredPropertyException("ConnectionGitlabEnterpriseConfigArgs", "authorizerCredential"); + } + if ($.hostUri == null) { + throw new MissingRequiredPropertyException("ConnectionGitlabEnterpriseConfigArgs", "hostUri"); + } + if ($.readAuthorizerCredential == null) { + throw new MissingRequiredPropertyException("ConnectionGitlabEnterpriseConfigArgs", "readAuthorizerCredential"); + } + if ($.webhookSecretSecretVersion == null) { + throw new MissingRequiredPropertyException("ConnectionGitlabEnterpriseConfigArgs", "webhookSecretSecretVersion"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs.java new file mode 100644 index 0000000000..886517c4fe --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs.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.developerconnect.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 ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs extends com.pulumi.resources.ResourceArgs { + + public static final ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs Empty = new ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs(); + + /** + * Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + * + */ + @Import(name="userTokenSecretVersion", required=true) + private Output userTokenSecretVersion; + + /** + * @return Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + * + */ + public Output userTokenSecretVersion() { + return this.userTokenSecretVersion; + } + + /** + * (Output) + * Output only. The username associated with this token. + * + */ + @Import(name="username") + private @Nullable Output username; + + /** + * @return (Output) + * Output only. The username associated with this token. + * + */ + public Optional> username() { + return Optional.ofNullable(this.username); + } + + private ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs() {} + + private ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs(ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs $) { + this.userTokenSecretVersion = $.userTokenSecretVersion; + this.username = $.username; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs $; + + public Builder() { + $ = new ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs(); + } + + public Builder(ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs defaults) { + $ = new ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param userTokenSecretVersion Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + * + * @return builder + * + */ + public Builder userTokenSecretVersion(Output userTokenSecretVersion) { + $.userTokenSecretVersion = userTokenSecretVersion; + return this; + } + + /** + * @param userTokenSecretVersion Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + * + * @return builder + * + */ + public Builder userTokenSecretVersion(String userTokenSecretVersion) { + return userTokenSecretVersion(Output.of(userTokenSecretVersion)); + } + + /** + * @param username (Output) + * Output only. The username associated with this token. + * + * @return builder + * + */ + public Builder username(@Nullable Output username) { + $.username = username; + return this; + } + + /** + * @param username (Output) + * Output only. The username associated with this token. + * + * @return builder + * + */ + public Builder username(String username) { + return username(Output.of(username)); + } + + public ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs build() { + if ($.userTokenSecretVersion == null) { + throw new MissingRequiredPropertyException("ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs", "userTokenSecretVersion"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs.java new file mode 100644 index 0000000000..720f6686dd --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs.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.developerconnect.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 ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs extends com.pulumi.resources.ResourceArgs { + + public static final ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs Empty = new ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs(); + + /** + * Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + * + */ + @Import(name="userTokenSecretVersion", required=true) + private Output userTokenSecretVersion; + + /** + * @return Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + * + */ + public Output userTokenSecretVersion() { + return this.userTokenSecretVersion; + } + + /** + * (Output) + * Output only. The username associated with this token. + * + */ + @Import(name="username") + private @Nullable Output username; + + /** + * @return (Output) + * Output only. The username associated with this token. + * + */ + public Optional> username() { + return Optional.ofNullable(this.username); + } + + private ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs() {} + + private ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs(ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs $) { + this.userTokenSecretVersion = $.userTokenSecretVersion; + this.username = $.username; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs $; + + public Builder() { + $ = new ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs(); + } + + public Builder(ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs defaults) { + $ = new ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param userTokenSecretVersion Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + * + * @return builder + * + */ + public Builder userTokenSecretVersion(Output userTokenSecretVersion) { + $.userTokenSecretVersion = userTokenSecretVersion; + return this; + } + + /** + * @param userTokenSecretVersion Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + * + * @return builder + * + */ + public Builder userTokenSecretVersion(String userTokenSecretVersion) { + return userTokenSecretVersion(Output.of(userTokenSecretVersion)); + } + + /** + * @param username (Output) + * Output only. The username associated with this token. + * + * @return builder + * + */ + public Builder username(@Nullable Output username) { + $.username = username; + return this; + } + + /** + * @param username (Output) + * Output only. The username associated with this token. + * + * @return builder + * + */ + public Builder username(String username) { + return username(Output.of(username)); + } + + public ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs build() { + if ($.userTokenSecretVersion == null) { + throw new MissingRequiredPropertyException("ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs", "userTokenSecretVersion"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs.java new file mode 100644 index 0000000000..da15b11440 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs.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.developerconnect.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 ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs extends com.pulumi.resources.ResourceArgs { + + public static final ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs Empty = new ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs(); + + /** + * Required. The Service Directory service name. + * Format: + * projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + * + */ + @Import(name="service", required=true) + private Output service; + + /** + * @return Required. The Service Directory service name. + * Format: + * projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + * + */ + public Output service() { + return this.service; + } + + private ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs() {} + + private ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs(ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs $) { + this.service = $.service; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs $; + + public Builder() { + $ = new ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs(); + } + + public Builder(ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs defaults) { + $ = new ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param service Required. The Service Directory service name. + * Format: + * projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + * + * @return builder + * + */ + public Builder service(Output service) { + $.service = service; + return this; + } + + /** + * @param service Required. The Service Directory service name. + * Format: + * projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + * + * @return builder + * + */ + public Builder service(String service) { + return service(Output.of(service)); + } + + public ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs build() { + if ($.service == null) { + throw new MissingRequiredPropertyException("ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs", "service"); + } + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionInstallationStateArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionInstallationStateArgs.java index e6000572a6..dc141c7878 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionInstallationStateArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionInstallationStateArgs.java @@ -16,16 +16,16 @@ public final class ConnectionInstallationStateArgs extends com.pulumi.resources. public static final ConnectionInstallationStateArgs Empty = new ConnectionInstallationStateArgs(); /** - * Output only. Link to follow for next action. Empty string if the - * installation is already complete. + * Output only. Link to follow for next action. Empty string if the installation is already + * complete. * */ @Import(name="actionUri") private @Nullable Output actionUri; /** - * @return Output only. Link to follow for next action. Empty string if the - * installation is already complete. + * @return Output only. Link to follow for next action. Empty string if the installation is already + * complete. * */ public Optional> actionUri() { @@ -33,16 +33,16 @@ public Optional> actionUri() { } /** - * Output only. Message of what the user should do next to continue - * the installation.Empty string if the installation is already complete. + * Output only. Message of what the user should do next to continue the installation. + * Empty string if the installation is already complete. * */ @Import(name="message") private @Nullable Output message; /** - * @return Output only. Message of what the user should do next to continue - * the installation.Empty string if the installation is already complete. + * @return Output only. Message of what the user should do next to continue the installation. + * Empty string if the installation is already complete. * */ public Optional> message() { @@ -105,8 +105,8 @@ public Builder(ConnectionInstallationStateArgs defaults) { } /** - * @param actionUri Output only. Link to follow for next action. Empty string if the - * installation is already complete. + * @param actionUri Output only. Link to follow for next action. Empty string if the installation is already + * complete. * * @return builder * @@ -117,8 +117,8 @@ public Builder actionUri(@Nullable Output actionUri) { } /** - * @param actionUri Output only. Link to follow for next action. Empty string if the - * installation is already complete. + * @param actionUri Output only. Link to follow for next action. Empty string if the installation is already + * complete. * * @return builder * @@ -128,8 +128,8 @@ public Builder actionUri(String actionUri) { } /** - * @param message Output only. Message of what the user should do next to continue - * the installation.Empty string if the installation is already complete. + * @param message Output only. Message of what the user should do next to continue the installation. + * Empty string if the installation is already complete. * * @return builder * @@ -140,8 +140,8 @@ public Builder message(@Nullable Output message) { } /** - * @param message Output only. Message of what the user should do next to continue - * the installation.Empty string if the installation is already complete. + * @param message Output only. Message of what the user should do next to continue the installation. + * Empty string if the installation is already complete. * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionState.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionState.java index 36c3a4592e..14b262bb93 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/inputs/ConnectionState.java @@ -5,7 +5,11 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.developerconnect.inputs.ConnectionCryptoKeyConfigArgs; import com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigArgs; +import com.pulumi.gcp.developerconnect.inputs.ConnectionGithubEnterpriseConfigArgs; +import com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabConfigArgs; +import com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabEnterpriseConfigArgs; import com.pulumi.gcp.developerconnect.inputs.ConnectionInstallationStateArgs; import java.lang.Boolean; import java.lang.String; @@ -22,7 +26,6 @@ public final class ConnectionState extends com.pulumi.resources.ResourceArgs { /** * Optional. Allows clients to store small amounts of arbitrary data. - * * **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. * @@ -32,7 +35,6 @@ public final class ConnectionState extends com.pulumi.resources.ResourceArgs { /** * @return Optional. Allows clients to store small amounts of arbitrary data. - * * **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. * @@ -42,8 +44,9 @@ public Optional>> annotations() { } /** - * Required. Id of the requesting object. If auto-generating Id server-side, - * remove this field and connection_id from the method_signature of Create RPC. + * Required. Id of the requesting object + * If auto-generating Id server-side, remove this field and + * connection_id from the method_signature of Create RPC * * *** * @@ -52,8 +55,9 @@ public Optional>> annotations() { private @Nullable Output connectionId; /** - * @return Required. Id of the requesting object. If auto-generating Id server-side, - * remove this field and connection_id from the method_signature of Create RPC. + * @return Required. Id of the requesting object + * If auto-generating Id server-side, remove this field and + * connection_id from the method_signature of Create RPC * * *** * @@ -77,6 +81,25 @@ public Optional> createTime() { return Optional.ofNullable(this.createTime); } + /** + * The crypto key configuration. This field is used by the Customer-managed + * encryption keys (CMEK) feature. + * Structure is documented below. + * + */ + @Import(name="cryptoKeyConfig") + private @Nullable Output cryptoKeyConfig; + + /** + * @return The crypto key configuration. This field is used by the Customer-managed + * encryption keys (CMEK) feature. + * Structure is documented below. + * + */ + public Optional> cryptoKeyConfig() { + return Optional.ofNullable(this.cryptoKeyConfig); + } + /** * Output only. [Output only] Delete timestamp * @@ -93,14 +116,18 @@ public Optional> deleteTime() { } /** - * Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled. + * Optional. If disabled is set to true, functionality is disabled for this connection. + * Repository based API methods and webhooks processing for repositories in + * this connection will be disabled. * */ @Import(name="disabled") private @Nullable Output disabled; /** - * @return Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled. + * @return Optional. If disabled is set to true, functionality is disabled for this connection. + * Repository based API methods and webhooks processing for repositories in + * this connection will be disabled. * */ public Optional> disabled() { @@ -130,8 +157,8 @@ public Optional>> effectiveLabels() { } /** - * Optional. 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 + * Optional. 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. * */ @@ -139,8 +166,8 @@ public Optional>> effectiveLabels() { private @Nullable Output etag; /** - * @return Optional. 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 + * @return Optional. 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. * */ @@ -166,8 +193,60 @@ public Optional> githubConfig() { } /** - * Describes stage and necessary actions to be taken by the user to complete the installation. - * Used for GitHub and GitHub Enterprise based connections. + * Configuration for connections to an instance of GitHub Enterprise. + * Structure is documented below. + * + */ + @Import(name="githubEnterpriseConfig") + private @Nullable Output githubEnterpriseConfig; + + /** + * @return Configuration for connections to an instance of GitHub Enterprise. + * Structure is documented below. + * + */ + public Optional> githubEnterpriseConfig() { + return Optional.ofNullable(this.githubEnterpriseConfig); + } + + /** + * Configuration for connections to gitlab.com. + * Structure is documented below. + * + */ + @Import(name="gitlabConfig") + private @Nullable Output gitlabConfig; + + /** + * @return Configuration for connections to gitlab.com. + * Structure is documented below. + * + */ + public Optional> gitlabConfig() { + return Optional.ofNullable(this.gitlabConfig); + } + + /** + * Configuration for connections to an instance of GitLab Enterprise. + * Structure is documented below. + * + */ + @Import(name="gitlabEnterpriseConfig") + private @Nullable Output gitlabEnterpriseConfig; + + /** + * @return Configuration for connections to an instance of GitLab Enterprise. + * Structure is documented below. + * + */ + public Optional> gitlabEnterpriseConfig() { + return Optional.ofNullable(this.gitlabEnterpriseConfig); + } + + /** + * Describes stage and necessary actions to be taken by the + * user to complete the installation. Used for GitHub and GitHub Enterprise + * based connections. * Structure is documented below. * */ @@ -175,8 +254,9 @@ public Optional> githubConfig() { private @Nullable Output> installationStates; /** - * @return Describes stage and necessary actions to be taken by the user to complete the installation. - * Used for GitHub and GitHub Enterprise based connections. + * @return Describes stage and necessary actions to be taken by the + * user to complete the installation. Used for GitHub and GitHub Enterprise + * based connections. * Structure is documented below. * */ @@ -186,7 +266,6 @@ public Optional>> installationState /** * 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. * @@ -196,7 +275,6 @@ public Optional>> installationState /** * @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. * @@ -206,18 +284,14 @@ public Optional>> labels() { } /** - * Resource ID segment making up resource `name`. It identifies the resource - * within its parent collection as described in https://google.aip.dev/122. See documentation - * for resource type `developerconnect.googleapis.com/GitRepositoryLink`. + * Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. * */ @Import(name="location") private @Nullable Output location; /** - * @return Resource ID segment making up resource `name`. It identifies the resource - * within its parent collection as described in https://google.aip.dev/122. See documentation - * for resource type `developerconnect.googleapis.com/GitRepositoryLink`. + * @return Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. * */ public Optional> location() { @@ -276,16 +350,16 @@ public Optional>> pulumiLabels() { } /** - * Output only. Set to true when the connection is being set up or updated - * in the background. + * Output only. Set to true when the connection is being set up or updated in the + * background. * */ @Import(name="reconciling") private @Nullable Output reconciling; /** - * @return Output only. Set to true when the connection is being set up or updated - * in the background. + * @return Output only. Set to true when the connection is being set up or updated in the + * background. * */ public Optional> reconciling() { @@ -328,12 +402,16 @@ private ConnectionState(ConnectionState $) { this.annotations = $.annotations; this.connectionId = $.connectionId; this.createTime = $.createTime; + this.cryptoKeyConfig = $.cryptoKeyConfig; this.deleteTime = $.deleteTime; this.disabled = $.disabled; this.effectiveAnnotations = $.effectiveAnnotations; this.effectiveLabels = $.effectiveLabels; this.etag = $.etag; this.githubConfig = $.githubConfig; + this.githubEnterpriseConfig = $.githubEnterpriseConfig; + this.gitlabConfig = $.gitlabConfig; + this.gitlabEnterpriseConfig = $.gitlabEnterpriseConfig; this.installationStates = $.installationStates; this.labels = $.labels; this.location = $.location; @@ -365,7 +443,6 @@ public Builder(ConnectionState defaults) { /** * @param annotations Optional. Allows clients to store small amounts of arbitrary data. - * * **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. * @@ -379,7 +456,6 @@ public Builder annotations(@Nullable Output> annotations) { /** * @param annotations Optional. Allows clients to store small amounts of arbitrary data. - * * **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. * @@ -391,8 +467,9 @@ public Builder annotations(Map annotations) { } /** - * @param connectionId Required. Id of the requesting object. If auto-generating Id server-side, - * remove this field and connection_id from the method_signature of Create RPC. + * @param connectionId Required. Id of the requesting object + * If auto-generating Id server-side, remove this field and + * connection_id from the method_signature of Create RPC * * *** * @@ -405,8 +482,9 @@ public Builder connectionId(@Nullable Output connectionId) { } /** - * @param connectionId Required. Id of the requesting object. If auto-generating Id server-side, - * remove this field and connection_id from the method_signature of Create RPC. + * @param connectionId Required. Id of the requesting object + * If auto-generating Id server-side, remove this field and + * connection_id from the method_signature of Create RPC * * *** * @@ -438,6 +516,31 @@ public Builder createTime(String createTime) { return createTime(Output.of(createTime)); } + /** + * @param cryptoKeyConfig The crypto key configuration. This field is used by the Customer-managed + * encryption keys (CMEK) feature. + * Structure is documented below. + * + * @return builder + * + */ + public Builder cryptoKeyConfig(@Nullable Output cryptoKeyConfig) { + $.cryptoKeyConfig = cryptoKeyConfig; + return this; + } + + /** + * @param cryptoKeyConfig The crypto key configuration. This field is used by the Customer-managed + * encryption keys (CMEK) feature. + * Structure is documented below. + * + * @return builder + * + */ + public Builder cryptoKeyConfig(ConnectionCryptoKeyConfigArgs cryptoKeyConfig) { + return cryptoKeyConfig(Output.of(cryptoKeyConfig)); + } + /** * @param deleteTime Output only. [Output only] Delete timestamp * @@ -460,7 +563,9 @@ public Builder deleteTime(String deleteTime) { } /** - * @param disabled Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled. + * @param disabled Optional. If disabled is set to true, functionality is disabled for this connection. + * Repository based API methods and webhooks processing for repositories in + * this connection will be disabled. * * @return builder * @@ -471,7 +576,9 @@ public Builder disabled(@Nullable Output disabled) { } /** - * @param disabled Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled. + * @param disabled Optional. If disabled is set to true, functionality is disabled for this connection. + * Repository based API methods and webhooks processing for repositories in + * this connection will be disabled. * * @return builder * @@ -511,8 +618,8 @@ public Builder effectiveLabels(Map effectiveLabels) { } /** - * @param etag Optional. 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 + * @param etag Optional. 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. * * @return builder @@ -524,8 +631,8 @@ public Builder etag(@Nullable Output etag) { } /** - * @param etag Optional. 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 + * @param etag Optional. 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. * * @return builder @@ -559,8 +666,78 @@ public Builder githubConfig(ConnectionGithubConfigArgs githubConfig) { } /** - * @param installationStates Describes stage and necessary actions to be taken by the user to complete the installation. - * Used for GitHub and GitHub Enterprise based connections. + * @param githubEnterpriseConfig Configuration for connections to an instance of GitHub Enterprise. + * Structure is documented below. + * + * @return builder + * + */ + public Builder githubEnterpriseConfig(@Nullable Output githubEnterpriseConfig) { + $.githubEnterpriseConfig = githubEnterpriseConfig; + return this; + } + + /** + * @param githubEnterpriseConfig Configuration for connections to an instance of GitHub Enterprise. + * Structure is documented below. + * + * @return builder + * + */ + public Builder githubEnterpriseConfig(ConnectionGithubEnterpriseConfigArgs githubEnterpriseConfig) { + return githubEnterpriseConfig(Output.of(githubEnterpriseConfig)); + } + + /** + * @param gitlabConfig Configuration for connections to gitlab.com. + * Structure is documented below. + * + * @return builder + * + */ + public Builder gitlabConfig(@Nullable Output gitlabConfig) { + $.gitlabConfig = gitlabConfig; + return this; + } + + /** + * @param gitlabConfig Configuration for connections to gitlab.com. + * Structure is documented below. + * + * @return builder + * + */ + public Builder gitlabConfig(ConnectionGitlabConfigArgs gitlabConfig) { + return gitlabConfig(Output.of(gitlabConfig)); + } + + /** + * @param gitlabEnterpriseConfig Configuration for connections to an instance of GitLab Enterprise. + * Structure is documented below. + * + * @return builder + * + */ + public Builder gitlabEnterpriseConfig(@Nullable Output gitlabEnterpriseConfig) { + $.gitlabEnterpriseConfig = gitlabEnterpriseConfig; + return this; + } + + /** + * @param gitlabEnterpriseConfig Configuration for connections to an instance of GitLab Enterprise. + * Structure is documented below. + * + * @return builder + * + */ + public Builder gitlabEnterpriseConfig(ConnectionGitlabEnterpriseConfigArgs gitlabEnterpriseConfig) { + return gitlabEnterpriseConfig(Output.of(gitlabEnterpriseConfig)); + } + + /** + * @param installationStates Describes stage and necessary actions to be taken by the + * user to complete the installation. Used for GitHub and GitHub Enterprise + * based connections. * Structure is documented below. * * @return builder @@ -572,8 +749,9 @@ public Builder installationStates(@Nullable Output installa } /** - * @param installationStates Describes stage and necessary actions to be taken by the user to complete the installation. - * Used for GitHub and GitHub Enterprise based connections. + * @param installationStates Describes stage and necessary actions to be taken by the + * user to complete the installation. Used for GitHub and GitHub Enterprise + * based connections. * Structure is documented below. * * @return builder @@ -597,7 +776,6 @@ public Builder installationStates(ConnectionInstallationStateArgs... installatio /** * @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. * @@ -611,7 +789,6 @@ public Builder labels(@Nullable Output> labels) { /** * @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. * @@ -623,9 +800,7 @@ public Builder labels(Map labels) { } /** - * @param location Resource ID segment making up resource `name`. It identifies the resource - * within its parent collection as described in https://google.aip.dev/122. See documentation - * for resource type `developerconnect.googleapis.com/GitRepositoryLink`. + * @param location Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. * * @return builder * @@ -636,9 +811,7 @@ public Builder location(@Nullable Output location) { } /** - * @param location Resource ID segment making up resource `name`. It identifies the resource - * within its parent collection as described in https://google.aip.dev/122. See documentation - * for resource type `developerconnect.googleapis.com/GitRepositoryLink`. + * @param location Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. * * @return builder * @@ -717,8 +890,8 @@ public Builder pulumiLabels(Map pulumiLabels) { } /** - * @param reconciling Output only. Set to true when the connection is being set up or updated - * in the background. + * @param reconciling Output only. Set to true when the connection is being set up or updated in the + * background. * * @return builder * @@ -729,8 +902,8 @@ public Builder reconciling(@Nullable Output reconciling) { } /** - * @param reconciling Output only. Set to true when the connection is being set up or updated - * in the background. + * @param reconciling Output only. Set to true when the connection is being set up or updated in the + * background. * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionCryptoKeyConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionCryptoKeyConfig.java new file mode 100644 index 0000000000..36bdcdfb59 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionCryptoKeyConfig.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.developerconnect.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class ConnectionCryptoKeyConfig { + /** + * @return Required. The name of the key which is used to encrypt/decrypt customer data. For key + * in Cloud KMS, the key should be in the format of + * `projects/*/locations/*/keyRings/*/cryptoKeys/*`. + * + */ + private String keyReference; + + private ConnectionCryptoKeyConfig() {} + /** + * @return Required. The name of the key which is used to encrypt/decrypt customer data. For key + * in Cloud KMS, the key should be in the format of + * `projects/*/locations/*/keyRings/*/cryptoKeys/*`. + * + */ + public String keyReference() { + return this.keyReference; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(ConnectionCryptoKeyConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String keyReference; + public Builder() {} + public Builder(ConnectionCryptoKeyConfig defaults) { + Objects.requireNonNull(defaults); + this.keyReference = defaults.keyReference; + } + + @CustomType.Setter + public Builder keyReference(String keyReference) { + if (keyReference == null) { + throw new MissingRequiredPropertyException("ConnectionCryptoKeyConfig", "keyReference"); + } + this.keyReference = keyReference; + return this; + } + public ConnectionCryptoKeyConfig build() { + final var _resultValue = new ConnectionCryptoKeyConfig(); + _resultValue.keyReference = keyReference; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGithubConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGithubConfig.java index 8e3925f575..9a587380a8 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGithubConfig.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGithubConfig.java @@ -19,26 +19,26 @@ public final class ConnectionGithubConfig { */ private @Nullable String appInstallationId; /** - * @return Represents an OAuth token of the account that authorized the Connection,and - * associated metadata. + * @return Represents an OAuth token of the account that authorized the Connection, + * and associated metadata. * Structure is documented below. * */ private @Nullable ConnectionGithubConfigAuthorizerCredential authorizerCredential; /** - * @return Required. Immutable. The GitHub Application that was installed to - * the GitHub user or organization. + * @return Required. Immutable. The GitHub Application that was installed to the GitHub user or + * organization. * Possible values: * GIT_HUB_APP_UNSPECIFIED * DEVELOPER_CONNECT - * FIREBASE" + * FIREBASE * */ private String githubApp; /** * @return (Output) - * Output only. The URI to navigate to in order to manage the installation - * associated with this GitHubConfig. + * Output only. The URI to navigate to in order to manage the installation associated + * with this GitHubConfig. * */ private @Nullable String installationUri; @@ -52,8 +52,8 @@ public Optional appInstallationId() { return Optional.ofNullable(this.appInstallationId); } /** - * @return Represents an OAuth token of the account that authorized the Connection,and - * associated metadata. + * @return Represents an OAuth token of the account that authorized the Connection, + * and associated metadata. * Structure is documented below. * */ @@ -61,12 +61,12 @@ public Optional authorizerCredential return Optional.ofNullable(this.authorizerCredential); } /** - * @return Required. Immutable. The GitHub Application that was installed to - * the GitHub user or organization. + * @return Required. Immutable. The GitHub Application that was installed to the GitHub user or + * organization. * Possible values: * GIT_HUB_APP_UNSPECIFIED * DEVELOPER_CONNECT - * FIREBASE" + * FIREBASE * */ public String githubApp() { @@ -74,8 +74,8 @@ public String githubApp() { } /** * @return (Output) - * Output only. The URI to navigate to in order to manage the installation - * associated with this GitHubConfig. + * Output only. The URI to navigate to in order to manage the installation associated + * with this GitHubConfig. * */ public Optional installationUri() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGithubConfigAuthorizerCredential.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGithubConfigAuthorizerCredential.java index 7bcaa0e121..2d5a602243 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGithubConfigAuthorizerCredential.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGithubConfigAuthorizerCredential.java @@ -13,9 +13,8 @@ @CustomType public final class ConnectionGithubConfigAuthorizerCredential { /** - * @return Required. A SecretManager resource containing the OAuth token - * that authorizes the connection. - * Format: `projects/*/secrets/*/versions/*`. + * @return Required. A SecretManager resource containing the OAuth token that authorizes + * the connection. Format: `projects/*/secrets/*/versions/*`. * */ private String oauthTokenSecretVersion; @@ -28,9 +27,8 @@ public final class ConnectionGithubConfigAuthorizerCredential { private ConnectionGithubConfigAuthorizerCredential() {} /** - * @return Required. A SecretManager resource containing the OAuth token - * that authorizes the connection. - * Format: `projects/*/secrets/*/versions/*`. + * @return Required. A SecretManager resource containing the OAuth token that authorizes + * the connection. Format: `projects/*/secrets/*/versions/*`. * */ public String oauthTokenSecretVersion() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGithubEnterpriseConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGithubEnterpriseConfig.java new file mode 100644 index 0000000000..bc1dd22013 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGithubEnterpriseConfig.java @@ -0,0 +1,266 @@ +// *** 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.developerconnect.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.developerconnect.outputs.ConnectionGithubEnterpriseConfigServiceDirectoryConfig; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class ConnectionGithubEnterpriseConfig { + /** + * @return Optional. ID of the GitHub App created from the manifest. + * + */ + private @Nullable String appId; + /** + * @return Optional. ID of the installation of the GitHub App. + * + */ + private @Nullable String appInstallationId; + /** + * @return (Output) + * Output only. The URL-friendly name of the GitHub App. + * + */ + private @Nullable String appSlug; + /** + * @return Required. The URI of the GitHub Enterprise host this connection is for. + * + */ + private String hostUri; + /** + * @return (Output) + * Output only. The URI to navigate to in order to manage the installation associated + * with this GitHubEnterpriseConfig. + * + */ + private @Nullable String installationUri; + /** + * @return Optional. SecretManager resource containing the private key of the GitHub App, + * formatted as `projects/*/secrets/*/versions/*`. + * + */ + private @Nullable String privateKeySecretVersion; + /** + * @return (Output) + * Output only. GitHub Enterprise version installed at the host_uri. + * + */ + private @Nullable String serverVersion; + /** + * @return ServiceDirectoryConfig represents Service Directory configuration for a + * connection. + * Structure is documented below. + * + */ + private @Nullable ConnectionGithubEnterpriseConfigServiceDirectoryConfig serviceDirectoryConfig; + /** + * @return Optional. SSL certificate to use for requests to GitHub Enterprise. + * + */ + private @Nullable String sslCaCertificate; + /** + * @return Optional. SecretManager resource containing the webhook secret of the GitHub App, + * formatted as `projects/*/secrets/*/versions/*`. + * + */ + private @Nullable String webhookSecretSecretVersion; + + private ConnectionGithubEnterpriseConfig() {} + /** + * @return Optional. ID of the GitHub App created from the manifest. + * + */ + public Optional appId() { + return Optional.ofNullable(this.appId); + } + /** + * @return Optional. ID of the installation of the GitHub App. + * + */ + public Optional appInstallationId() { + return Optional.ofNullable(this.appInstallationId); + } + /** + * @return (Output) + * Output only. The URL-friendly name of the GitHub App. + * + */ + public Optional appSlug() { + return Optional.ofNullable(this.appSlug); + } + /** + * @return Required. The URI of the GitHub Enterprise host this connection is for. + * + */ + public String hostUri() { + return this.hostUri; + } + /** + * @return (Output) + * Output only. The URI to navigate to in order to manage the installation associated + * with this GitHubEnterpriseConfig. + * + */ + public Optional installationUri() { + return Optional.ofNullable(this.installationUri); + } + /** + * @return Optional. SecretManager resource containing the private key of the GitHub App, + * formatted as `projects/*/secrets/*/versions/*`. + * + */ + public Optional privateKeySecretVersion() { + return Optional.ofNullable(this.privateKeySecretVersion); + } + /** + * @return (Output) + * Output only. GitHub Enterprise version installed at the host_uri. + * + */ + public Optional serverVersion() { + return Optional.ofNullable(this.serverVersion); + } + /** + * @return ServiceDirectoryConfig represents Service Directory configuration for a + * connection. + * Structure is documented below. + * + */ + public Optional serviceDirectoryConfig() { + return Optional.ofNullable(this.serviceDirectoryConfig); + } + /** + * @return Optional. SSL certificate to use for requests to GitHub Enterprise. + * + */ + public Optional sslCaCertificate() { + return Optional.ofNullable(this.sslCaCertificate); + } + /** + * @return Optional. SecretManager resource containing the webhook secret of the GitHub App, + * formatted as `projects/*/secrets/*/versions/*`. + * + */ + public Optional webhookSecretSecretVersion() { + return Optional.ofNullable(this.webhookSecretSecretVersion); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(ConnectionGithubEnterpriseConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String appId; + private @Nullable String appInstallationId; + private @Nullable String appSlug; + private String hostUri; + private @Nullable String installationUri; + private @Nullable String privateKeySecretVersion; + private @Nullable String serverVersion; + private @Nullable ConnectionGithubEnterpriseConfigServiceDirectoryConfig serviceDirectoryConfig; + private @Nullable String sslCaCertificate; + private @Nullable String webhookSecretSecretVersion; + public Builder() {} + public Builder(ConnectionGithubEnterpriseConfig defaults) { + Objects.requireNonNull(defaults); + this.appId = defaults.appId; + this.appInstallationId = defaults.appInstallationId; + this.appSlug = defaults.appSlug; + this.hostUri = defaults.hostUri; + this.installationUri = defaults.installationUri; + this.privateKeySecretVersion = defaults.privateKeySecretVersion; + this.serverVersion = defaults.serverVersion; + this.serviceDirectoryConfig = defaults.serviceDirectoryConfig; + this.sslCaCertificate = defaults.sslCaCertificate; + this.webhookSecretSecretVersion = defaults.webhookSecretSecretVersion; + } + + @CustomType.Setter + public Builder appId(@Nullable String appId) { + + this.appId = appId; + return this; + } + @CustomType.Setter + public Builder appInstallationId(@Nullable String appInstallationId) { + + this.appInstallationId = appInstallationId; + return this; + } + @CustomType.Setter + public Builder appSlug(@Nullable String appSlug) { + + this.appSlug = appSlug; + return this; + } + @CustomType.Setter + public Builder hostUri(String hostUri) { + if (hostUri == null) { + throw new MissingRequiredPropertyException("ConnectionGithubEnterpriseConfig", "hostUri"); + } + this.hostUri = hostUri; + return this; + } + @CustomType.Setter + public Builder installationUri(@Nullable String installationUri) { + + this.installationUri = installationUri; + return this; + } + @CustomType.Setter + public Builder privateKeySecretVersion(@Nullable String privateKeySecretVersion) { + + this.privateKeySecretVersion = privateKeySecretVersion; + return this; + } + @CustomType.Setter + public Builder serverVersion(@Nullable String serverVersion) { + + this.serverVersion = serverVersion; + return this; + } + @CustomType.Setter + public Builder serviceDirectoryConfig(@Nullable ConnectionGithubEnterpriseConfigServiceDirectoryConfig serviceDirectoryConfig) { + + this.serviceDirectoryConfig = serviceDirectoryConfig; + return this; + } + @CustomType.Setter + public Builder sslCaCertificate(@Nullable String sslCaCertificate) { + + this.sslCaCertificate = sslCaCertificate; + return this; + } + @CustomType.Setter + public Builder webhookSecretSecretVersion(@Nullable String webhookSecretSecretVersion) { + + this.webhookSecretSecretVersion = webhookSecretSecretVersion; + return this; + } + public ConnectionGithubEnterpriseConfig build() { + final var _resultValue = new ConnectionGithubEnterpriseConfig(); + _resultValue.appId = appId; + _resultValue.appInstallationId = appInstallationId; + _resultValue.appSlug = appSlug; + _resultValue.hostUri = hostUri; + _resultValue.installationUri = installationUri; + _resultValue.privateKeySecretVersion = privateKeySecretVersion; + _resultValue.serverVersion = serverVersion; + _resultValue.serviceDirectoryConfig = serviceDirectoryConfig; + _resultValue.sslCaCertificate = sslCaCertificate; + _resultValue.webhookSecretSecretVersion = webhookSecretSecretVersion; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGithubEnterpriseConfigServiceDirectoryConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGithubEnterpriseConfigServiceDirectoryConfig.java new file mode 100644 index 0000000000..e65695941e --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGithubEnterpriseConfigServiceDirectoryConfig.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.developerconnect.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class ConnectionGithubEnterpriseConfigServiceDirectoryConfig { + /** + * @return Required. The Service Directory service name. + * Format: + * projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + * + */ + private String service; + + private ConnectionGithubEnterpriseConfigServiceDirectoryConfig() {} + /** + * @return Required. The Service Directory service name. + * Format: + * projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + * + */ + public String service() { + return this.service; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(ConnectionGithubEnterpriseConfigServiceDirectoryConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String service; + public Builder() {} + public Builder(ConnectionGithubEnterpriseConfigServiceDirectoryConfig defaults) { + Objects.requireNonNull(defaults); + this.service = defaults.service; + } + + @CustomType.Setter + public Builder service(String service) { + if (service == null) { + throw new MissingRequiredPropertyException("ConnectionGithubEnterpriseConfigServiceDirectoryConfig", "service"); + } + this.service = service; + return this; + } + public ConnectionGithubEnterpriseConfigServiceDirectoryConfig build() { + final var _resultValue = new ConnectionGithubEnterpriseConfigServiceDirectoryConfig(); + _resultValue.service = service; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGitlabConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGitlabConfig.java new file mode 100644 index 0000000000..6ac22975b9 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGitlabConfig.java @@ -0,0 +1,118 @@ +// *** 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.developerconnect.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.developerconnect.outputs.ConnectionGitlabConfigAuthorizerCredential; +import com.pulumi.gcp.developerconnect.outputs.ConnectionGitlabConfigReadAuthorizerCredential; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class ConnectionGitlabConfig { + /** + * @return Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + * + */ + private ConnectionGitlabConfigAuthorizerCredential authorizerCredential; + /** + * @return Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + * + */ + private ConnectionGitlabConfigReadAuthorizerCredential readAuthorizerCredential; + /** + * @return Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + * formatted as `projects/*/secrets/*/versions/*`. This is used to validate + * webhooks. + * + */ + private String webhookSecretSecretVersion; + + private ConnectionGitlabConfig() {} + /** + * @return Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + * + */ + public ConnectionGitlabConfigAuthorizerCredential authorizerCredential() { + return this.authorizerCredential; + } + /** + * @return Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + * + */ + public ConnectionGitlabConfigReadAuthorizerCredential readAuthorizerCredential() { + return this.readAuthorizerCredential; + } + /** + * @return Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + * formatted as `projects/*/secrets/*/versions/*`. This is used to validate + * webhooks. + * + */ + public String webhookSecretSecretVersion() { + return this.webhookSecretSecretVersion; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(ConnectionGitlabConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private ConnectionGitlabConfigAuthorizerCredential authorizerCredential; + private ConnectionGitlabConfigReadAuthorizerCredential readAuthorizerCredential; + private String webhookSecretSecretVersion; + public Builder() {} + public Builder(ConnectionGitlabConfig defaults) { + Objects.requireNonNull(defaults); + this.authorizerCredential = defaults.authorizerCredential; + this.readAuthorizerCredential = defaults.readAuthorizerCredential; + this.webhookSecretSecretVersion = defaults.webhookSecretSecretVersion; + } + + @CustomType.Setter + public Builder authorizerCredential(ConnectionGitlabConfigAuthorizerCredential authorizerCredential) { + if (authorizerCredential == null) { + throw new MissingRequiredPropertyException("ConnectionGitlabConfig", "authorizerCredential"); + } + this.authorizerCredential = authorizerCredential; + return this; + } + @CustomType.Setter + public Builder readAuthorizerCredential(ConnectionGitlabConfigReadAuthorizerCredential readAuthorizerCredential) { + if (readAuthorizerCredential == null) { + throw new MissingRequiredPropertyException("ConnectionGitlabConfig", "readAuthorizerCredential"); + } + this.readAuthorizerCredential = readAuthorizerCredential; + return this; + } + @CustomType.Setter + public Builder webhookSecretSecretVersion(String webhookSecretSecretVersion) { + if (webhookSecretSecretVersion == null) { + throw new MissingRequiredPropertyException("ConnectionGitlabConfig", "webhookSecretSecretVersion"); + } + this.webhookSecretSecretVersion = webhookSecretSecretVersion; + return this; + } + public ConnectionGitlabConfig build() { + final var _resultValue = new ConnectionGitlabConfig(); + _resultValue.authorizerCredential = authorizerCredential; + _resultValue.readAuthorizerCredential = readAuthorizerCredential; + _resultValue.webhookSecretSecretVersion = webhookSecretSecretVersion; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGitlabConfigAuthorizerCredential.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGitlabConfigAuthorizerCredential.java new file mode 100644 index 0000000000..c34911c52c --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGitlabConfigAuthorizerCredential.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.developerconnect.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 ConnectionGitlabConfigAuthorizerCredential { + /** + * @return Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + * + */ + private String userTokenSecretVersion; + /** + * @return (Output) + * Output only. The username associated with this token. + * + */ + private @Nullable String username; + + private ConnectionGitlabConfigAuthorizerCredential() {} + /** + * @return Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + * + */ + public String userTokenSecretVersion() { + return this.userTokenSecretVersion; + } + /** + * @return (Output) + * Output only. The username associated with this token. + * + */ + public Optional username() { + return Optional.ofNullable(this.username); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(ConnectionGitlabConfigAuthorizerCredential defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String userTokenSecretVersion; + private @Nullable String username; + public Builder() {} + public Builder(ConnectionGitlabConfigAuthorizerCredential defaults) { + Objects.requireNonNull(defaults); + this.userTokenSecretVersion = defaults.userTokenSecretVersion; + this.username = defaults.username; + } + + @CustomType.Setter + public Builder userTokenSecretVersion(String userTokenSecretVersion) { + if (userTokenSecretVersion == null) { + throw new MissingRequiredPropertyException("ConnectionGitlabConfigAuthorizerCredential", "userTokenSecretVersion"); + } + this.userTokenSecretVersion = userTokenSecretVersion; + return this; + } + @CustomType.Setter + public Builder username(@Nullable String username) { + + this.username = username; + return this; + } + public ConnectionGitlabConfigAuthorizerCredential build() { + final var _resultValue = new ConnectionGitlabConfigAuthorizerCredential(); + _resultValue.userTokenSecretVersion = userTokenSecretVersion; + _resultValue.username = username; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGitlabConfigReadAuthorizerCredential.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGitlabConfigReadAuthorizerCredential.java new file mode 100644 index 0000000000..0915230586 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGitlabConfigReadAuthorizerCredential.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.developerconnect.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 ConnectionGitlabConfigReadAuthorizerCredential { + /** + * @return Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + * + */ + private String userTokenSecretVersion; + /** + * @return (Output) + * Output only. The username associated with this token. + * + */ + private @Nullable String username; + + private ConnectionGitlabConfigReadAuthorizerCredential() {} + /** + * @return Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + * + */ + public String userTokenSecretVersion() { + return this.userTokenSecretVersion; + } + /** + * @return (Output) + * Output only. The username associated with this token. + * + */ + public Optional username() { + return Optional.ofNullable(this.username); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(ConnectionGitlabConfigReadAuthorizerCredential defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String userTokenSecretVersion; + private @Nullable String username; + public Builder() {} + public Builder(ConnectionGitlabConfigReadAuthorizerCredential defaults) { + Objects.requireNonNull(defaults); + this.userTokenSecretVersion = defaults.userTokenSecretVersion; + this.username = defaults.username; + } + + @CustomType.Setter + public Builder userTokenSecretVersion(String userTokenSecretVersion) { + if (userTokenSecretVersion == null) { + throw new MissingRequiredPropertyException("ConnectionGitlabConfigReadAuthorizerCredential", "userTokenSecretVersion"); + } + this.userTokenSecretVersion = userTokenSecretVersion; + return this; + } + @CustomType.Setter + public Builder username(@Nullable String username) { + + this.username = username; + return this; + } + public ConnectionGitlabConfigReadAuthorizerCredential build() { + final var _resultValue = new ConnectionGitlabConfigReadAuthorizerCredential(); + _resultValue.userTokenSecretVersion = userTokenSecretVersion; + _resultValue.username = username; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGitlabEnterpriseConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGitlabEnterpriseConfig.java new file mode 100644 index 0000000000..6290f7fe82 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGitlabEnterpriseConfig.java @@ -0,0 +1,215 @@ +// *** 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.developerconnect.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import com.pulumi.gcp.developerconnect.outputs.ConnectionGitlabEnterpriseConfigAuthorizerCredential; +import com.pulumi.gcp.developerconnect.outputs.ConnectionGitlabEnterpriseConfigReadAuthorizerCredential; +import com.pulumi.gcp.developerconnect.outputs.ConnectionGitlabEnterpriseConfigServiceDirectoryConfig; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class ConnectionGitlabEnterpriseConfig { + /** + * @return Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + * + */ + private ConnectionGitlabEnterpriseConfigAuthorizerCredential authorizerCredential; + /** + * @return Required. The URI of the GitLab Enterprise host this connection is for. + * + */ + private String hostUri; + /** + * @return Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + * + */ + private ConnectionGitlabEnterpriseConfigReadAuthorizerCredential readAuthorizerCredential; + /** + * @return (Output) + * Output only. Version of the GitLab Enterprise server running on the `host_uri`. + * + */ + private @Nullable String serverVersion; + /** + * @return ServiceDirectoryConfig represents Service Directory configuration for a + * connection. + * Structure is documented below. + * + */ + private @Nullable ConnectionGitlabEnterpriseConfigServiceDirectoryConfig serviceDirectoryConfig; + /** + * @return Optional. SSL Certificate Authority certificate to use for requests to GitLab + * Enterprise instance. + * + */ + private @Nullable String sslCaCertificate; + /** + * @return Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + * formatted as `projects/*/secrets/*/versions/*`. This is used to validate + * webhooks. + * + */ + private String webhookSecretSecretVersion; + + private ConnectionGitlabEnterpriseConfig() {} + /** + * @return Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + * + */ + public ConnectionGitlabEnterpriseConfigAuthorizerCredential authorizerCredential() { + return this.authorizerCredential; + } + /** + * @return Required. The URI of the GitLab Enterprise host this connection is for. + * + */ + public String hostUri() { + return this.hostUri; + } + /** + * @return Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + * + */ + public ConnectionGitlabEnterpriseConfigReadAuthorizerCredential readAuthorizerCredential() { + return this.readAuthorizerCredential; + } + /** + * @return (Output) + * Output only. Version of the GitLab Enterprise server running on the `host_uri`. + * + */ + public Optional serverVersion() { + return Optional.ofNullable(this.serverVersion); + } + /** + * @return ServiceDirectoryConfig represents Service Directory configuration for a + * connection. + * Structure is documented below. + * + */ + public Optional serviceDirectoryConfig() { + return Optional.ofNullable(this.serviceDirectoryConfig); + } + /** + * @return Optional. SSL Certificate Authority certificate to use for requests to GitLab + * Enterprise instance. + * + */ + public Optional sslCaCertificate() { + return Optional.ofNullable(this.sslCaCertificate); + } + /** + * @return Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + * formatted as `projects/*/secrets/*/versions/*`. This is used to validate + * webhooks. + * + */ + public String webhookSecretSecretVersion() { + return this.webhookSecretSecretVersion; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(ConnectionGitlabEnterpriseConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private ConnectionGitlabEnterpriseConfigAuthorizerCredential authorizerCredential; + private String hostUri; + private ConnectionGitlabEnterpriseConfigReadAuthorizerCredential readAuthorizerCredential; + private @Nullable String serverVersion; + private @Nullable ConnectionGitlabEnterpriseConfigServiceDirectoryConfig serviceDirectoryConfig; + private @Nullable String sslCaCertificate; + private String webhookSecretSecretVersion; + public Builder() {} + public Builder(ConnectionGitlabEnterpriseConfig defaults) { + Objects.requireNonNull(defaults); + this.authorizerCredential = defaults.authorizerCredential; + this.hostUri = defaults.hostUri; + this.readAuthorizerCredential = defaults.readAuthorizerCredential; + this.serverVersion = defaults.serverVersion; + this.serviceDirectoryConfig = defaults.serviceDirectoryConfig; + this.sslCaCertificate = defaults.sslCaCertificate; + this.webhookSecretSecretVersion = defaults.webhookSecretSecretVersion; + } + + @CustomType.Setter + public Builder authorizerCredential(ConnectionGitlabEnterpriseConfigAuthorizerCredential authorizerCredential) { + if (authorizerCredential == null) { + throw new MissingRequiredPropertyException("ConnectionGitlabEnterpriseConfig", "authorizerCredential"); + } + this.authorizerCredential = authorizerCredential; + return this; + } + @CustomType.Setter + public Builder hostUri(String hostUri) { + if (hostUri == null) { + throw new MissingRequiredPropertyException("ConnectionGitlabEnterpriseConfig", "hostUri"); + } + this.hostUri = hostUri; + return this; + } + @CustomType.Setter + public Builder readAuthorizerCredential(ConnectionGitlabEnterpriseConfigReadAuthorizerCredential readAuthorizerCredential) { + if (readAuthorizerCredential == null) { + throw new MissingRequiredPropertyException("ConnectionGitlabEnterpriseConfig", "readAuthorizerCredential"); + } + this.readAuthorizerCredential = readAuthorizerCredential; + return this; + } + @CustomType.Setter + public Builder serverVersion(@Nullable String serverVersion) { + + this.serverVersion = serverVersion; + return this; + } + @CustomType.Setter + public Builder serviceDirectoryConfig(@Nullable ConnectionGitlabEnterpriseConfigServiceDirectoryConfig serviceDirectoryConfig) { + + this.serviceDirectoryConfig = serviceDirectoryConfig; + return this; + } + @CustomType.Setter + public Builder sslCaCertificate(@Nullable String sslCaCertificate) { + + this.sslCaCertificate = sslCaCertificate; + return this; + } + @CustomType.Setter + public Builder webhookSecretSecretVersion(String webhookSecretSecretVersion) { + if (webhookSecretSecretVersion == null) { + throw new MissingRequiredPropertyException("ConnectionGitlabEnterpriseConfig", "webhookSecretSecretVersion"); + } + this.webhookSecretSecretVersion = webhookSecretSecretVersion; + return this; + } + public ConnectionGitlabEnterpriseConfig build() { + final var _resultValue = new ConnectionGitlabEnterpriseConfig(); + _resultValue.authorizerCredential = authorizerCredential; + _resultValue.hostUri = hostUri; + _resultValue.readAuthorizerCredential = readAuthorizerCredential; + _resultValue.serverVersion = serverVersion; + _resultValue.serviceDirectoryConfig = serviceDirectoryConfig; + _resultValue.sslCaCertificate = sslCaCertificate; + _resultValue.webhookSecretSecretVersion = webhookSecretSecretVersion; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGitlabEnterpriseConfigAuthorizerCredential.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGitlabEnterpriseConfigAuthorizerCredential.java new file mode 100644 index 0000000000..0d7d838d7f --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGitlabEnterpriseConfigAuthorizerCredential.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.developerconnect.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 ConnectionGitlabEnterpriseConfigAuthorizerCredential { + /** + * @return Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + * + */ + private String userTokenSecretVersion; + /** + * @return (Output) + * Output only. The username associated with this token. + * + */ + private @Nullable String username; + + private ConnectionGitlabEnterpriseConfigAuthorizerCredential() {} + /** + * @return Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + * + */ + public String userTokenSecretVersion() { + return this.userTokenSecretVersion; + } + /** + * @return (Output) + * Output only. The username associated with this token. + * + */ + public Optional username() { + return Optional.ofNullable(this.username); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(ConnectionGitlabEnterpriseConfigAuthorizerCredential defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String userTokenSecretVersion; + private @Nullable String username; + public Builder() {} + public Builder(ConnectionGitlabEnterpriseConfigAuthorizerCredential defaults) { + Objects.requireNonNull(defaults); + this.userTokenSecretVersion = defaults.userTokenSecretVersion; + this.username = defaults.username; + } + + @CustomType.Setter + public Builder userTokenSecretVersion(String userTokenSecretVersion) { + if (userTokenSecretVersion == null) { + throw new MissingRequiredPropertyException("ConnectionGitlabEnterpriseConfigAuthorizerCredential", "userTokenSecretVersion"); + } + this.userTokenSecretVersion = userTokenSecretVersion; + return this; + } + @CustomType.Setter + public Builder username(@Nullable String username) { + + this.username = username; + return this; + } + public ConnectionGitlabEnterpriseConfigAuthorizerCredential build() { + final var _resultValue = new ConnectionGitlabEnterpriseConfigAuthorizerCredential(); + _resultValue.userTokenSecretVersion = userTokenSecretVersion; + _resultValue.username = username; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGitlabEnterpriseConfigReadAuthorizerCredential.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGitlabEnterpriseConfigReadAuthorizerCredential.java new file mode 100644 index 0000000000..3418e01294 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGitlabEnterpriseConfigReadAuthorizerCredential.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.developerconnect.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 ConnectionGitlabEnterpriseConfigReadAuthorizerCredential { + /** + * @return Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + * + */ + private String userTokenSecretVersion; + /** + * @return (Output) + * Output only. The username associated with this token. + * + */ + private @Nullable String username; + + private ConnectionGitlabEnterpriseConfigReadAuthorizerCredential() {} + /** + * @return Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + * + */ + public String userTokenSecretVersion() { + return this.userTokenSecretVersion; + } + /** + * @return (Output) + * Output only. The username associated with this token. + * + */ + public Optional username() { + return Optional.ofNullable(this.username); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(ConnectionGitlabEnterpriseConfigReadAuthorizerCredential defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String userTokenSecretVersion; + private @Nullable String username; + public Builder() {} + public Builder(ConnectionGitlabEnterpriseConfigReadAuthorizerCredential defaults) { + Objects.requireNonNull(defaults); + this.userTokenSecretVersion = defaults.userTokenSecretVersion; + this.username = defaults.username; + } + + @CustomType.Setter + public Builder userTokenSecretVersion(String userTokenSecretVersion) { + if (userTokenSecretVersion == null) { + throw new MissingRequiredPropertyException("ConnectionGitlabEnterpriseConfigReadAuthorizerCredential", "userTokenSecretVersion"); + } + this.userTokenSecretVersion = userTokenSecretVersion; + return this; + } + @CustomType.Setter + public Builder username(@Nullable String username) { + + this.username = username; + return this; + } + public ConnectionGitlabEnterpriseConfigReadAuthorizerCredential build() { + final var _resultValue = new ConnectionGitlabEnterpriseConfigReadAuthorizerCredential(); + _resultValue.userTokenSecretVersion = userTokenSecretVersion; + _resultValue.username = username; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGitlabEnterpriseConfigServiceDirectoryConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGitlabEnterpriseConfigServiceDirectoryConfig.java new file mode 100644 index 0000000000..5445a2a907 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionGitlabEnterpriseConfigServiceDirectoryConfig.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.developerconnect.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.exceptions.MissingRequiredPropertyException; +import java.lang.String; +import java.util.Objects; + +@CustomType +public final class ConnectionGitlabEnterpriseConfigServiceDirectoryConfig { + /** + * @return Required. The Service Directory service name. + * Format: + * projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + * + */ + private String service; + + private ConnectionGitlabEnterpriseConfigServiceDirectoryConfig() {} + /** + * @return Required. The Service Directory service name. + * Format: + * projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + * + */ + public String service() { + return this.service; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(ConnectionGitlabEnterpriseConfigServiceDirectoryConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String service; + public Builder() {} + public Builder(ConnectionGitlabEnterpriseConfigServiceDirectoryConfig defaults) { + Objects.requireNonNull(defaults); + this.service = defaults.service; + } + + @CustomType.Setter + public Builder service(String service) { + if (service == null) { + throw new MissingRequiredPropertyException("ConnectionGitlabEnterpriseConfigServiceDirectoryConfig", "service"); + } + this.service = service; + return this; + } + public ConnectionGitlabEnterpriseConfigServiceDirectoryConfig build() { + final var _resultValue = new ConnectionGitlabEnterpriseConfigServiceDirectoryConfig(); + _resultValue.service = service; + return _resultValue; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionInstallationState.java b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionInstallationState.java index 011137d032..6712c7772c 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionInstallationState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/developerconnect/outputs/ConnectionInstallationState.java @@ -12,14 +12,14 @@ @CustomType public final class ConnectionInstallationState { /** - * @return Output only. Link to follow for next action. Empty string if the - * installation is already complete. + * @return Output only. Link to follow for next action. Empty string if the installation is already + * complete. * */ private @Nullable String actionUri; /** - * @return Output only. Message of what the user should do next to continue - * the installation.Empty string if the installation is already complete. + * @return Output only. Message of what the user should do next to continue the installation. + * Empty string if the installation is already complete. * */ private @Nullable String message; @@ -38,16 +38,16 @@ public final class ConnectionInstallationState { private ConnectionInstallationState() {} /** - * @return Output only. Link to follow for next action. Empty string if the - * installation is already complete. + * @return Output only. Link to follow for next action. Empty string if the installation is already + * complete. * */ public Optional actionUri() { return Optional.ofNullable(this.actionUri); } /** - * @return Output only. Message of what the user should do next to continue - * the installation.Empty string if the installation is already complete. + * @return Output only. Message of what the user should do next to continue the installation. + * Empty string if the installation is already complete. * */ public Optional message() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/RecordSet.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/RecordSet.java index f131913441..ca4a5f5583 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/RecordSet.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/RecordSet.java @@ -428,6 +428,84 @@ *
* <!--End PulumiCodeChooser --> * + * ### Public zone failover + * + * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.compute.HealthCheck;
+ * import com.pulumi.gcp.compute.HealthCheckArgs;
+ * import com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;
+ * import com.pulumi.gcp.dns.ManagedZone;
+ * import com.pulumi.gcp.dns.ManagedZoneArgs;
+ * import com.pulumi.gcp.dns.RecordSet;
+ * import com.pulumi.gcp.dns.RecordSetArgs;
+ * import com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyArgs;
+ * import com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyPrimaryBackupArgs;
+ * import com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs;
+ * 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 http_health_check = new HealthCheck("http-health-check", HealthCheckArgs.builder()
+ *             .name("http-health-check")
+ *             .description("Health check via http")
+ *             .timeoutSec(5)
+ *             .checkIntervalSec(30)
+ *             .healthyThreshold(4)
+ *             .unhealthyThreshold(5)
+ *             .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()
+ *                 .portSpecification("USE_SERVING_PORT")
+ *                 .build())
+ *             .build());
+ * 
+ *         var prod = new ManagedZone("prod", ManagedZoneArgs.builder()
+ *             .name("prod-zone")
+ *             .dnsName("prod.mydomain.com.")
+ *             .build());
+ * 
+ *         var a = new RecordSet("a", RecordSetArgs.builder()
+ *             .name(prod.dnsName().applyValue(dnsName -> String.format("backend.%s", dnsName)))
+ *             .managedZone(prod.name())
+ *             .type("A")
+ *             .ttl(300)
+ *             .routingPolicy(RecordSetRoutingPolicyArgs.builder()
+ *                 .healthCheck(http_health_check.id())
+ *                 .primaryBackup(RecordSetRoutingPolicyPrimaryBackupArgs.builder()
+ *                     .trickleRatio(0.1)
+ *                     .primary(RecordSetRoutingPolicyPrimaryBackupPrimaryArgs.builder()
+ *                         .externalEndpoints("10.128.1.1")
+ *                         .build())
+ *                     .backupGeos(RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs.builder()
+ *                         .location("us-west1")
+ *                         .healthCheckedTargets(RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs.builder()
+ *                             .externalEndpoints("10.130.1.1")
+ *                             .build())
+ *                         .build())
+ *                     .build())
+ *                 .build())
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
+ * <!--End PulumiCodeChooser --> + * * ## Import * * DNS record sets can be imported using either of these accepted formats: diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyArgs.java index e927fe2160..632faea50a 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyArgs.java @@ -9,6 +9,7 @@ import com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyPrimaryBackupArgs; import com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyWrrArgs; import java.lang.Boolean; +import java.lang.String; import java.util.List; import java.util.Objects; import java.util.Optional; @@ -51,6 +52,21 @@ public Optional>> geos() { return Optional.ofNullable(this.geos); } + /** + * Specifies the health check (used with external endpoints). + * + */ + @Import(name="healthCheck") + private @Nullable Output healthCheck; + + /** + * @return Specifies the health check (used with external endpoints). + * + */ + public Optional> healthCheck() { + return Optional.ofNullable(this.healthCheck); + } + /** * The configuration for a failover policy with global to regional failover. Queries are responded to with the global primary targets, but if none of the primary targets are healthy, then we fallback to a regional failover policy. * Structure is documented below. @@ -90,6 +106,7 @@ private RecordSetRoutingPolicyArgs() {} private RecordSetRoutingPolicyArgs(RecordSetRoutingPolicyArgs $) { this.enableGeoFencing = $.enableGeoFencing; this.geos = $.geos; + this.healthCheck = $.healthCheck; this.primaryBackup = $.primaryBackup; this.wrrs = $.wrrs; } @@ -167,6 +184,27 @@ public Builder geos(RecordSetRoutingPolicyGeoArgs... geos) { return geos(List.of(geos)); } + /** + * @param healthCheck Specifies the health check (used with external endpoints). + * + * @return builder + * + */ + public Builder healthCheck(@Nullable Output healthCheck) { + $.healthCheck = healthCheck; + return this; + } + + /** + * @param healthCheck Specifies the health check (used with external endpoints). + * + * @return builder + * + */ + public Builder healthCheck(String healthCheck) { + return healthCheck(Output.of(healthCheck)); + } + /** * @param primaryBackup The configuration for a failover policy with global to regional failover. Queries are responded to with the global primary targets, but if none of the primary targets are healthy, then we fallback to a regional failover policy. * Structure is documented below. diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyGeoHealthCheckedTargetsArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyGeoHealthCheckedTargetsArgs.java index aef5f27ee8..bbac346d10 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyGeoHealthCheckedTargetsArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyGeoHealthCheckedTargetsArgs.java @@ -5,36 +5,54 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; -import com.pulumi.exceptions.MissingRequiredPropertyException; import com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancerArgs; +import java.lang.String; import java.util.List; import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; public final class RecordSetRoutingPolicyGeoHealthCheckedTargetsArgs extends com.pulumi.resources.ResourceArgs { public static final RecordSetRoutingPolicyGeoHealthCheckedTargetsArgs Empty = new RecordSetRoutingPolicyGeoHealthCheckedTargetsArgs(); + /** + * The list of external endpoint addresses to health check. + * + */ + @Import(name="externalEndpoints") + private @Nullable Output> externalEndpoints; + + /** + * @return The list of external endpoint addresses to health check. + * + */ + public Optional>> externalEndpoints() { + return Optional.ofNullable(this.externalEndpoints); + } + /** * The list of internal load balancers to health check. * Structure is documented below. * */ - @Import(name="internalLoadBalancers", required=true) - private Output> internalLoadBalancers; + @Import(name="internalLoadBalancers") + private @Nullable Output> internalLoadBalancers; /** * @return The list of internal load balancers to health check. * Structure is documented below. * */ - public Output> internalLoadBalancers() { - return this.internalLoadBalancers; + public Optional>> internalLoadBalancers() { + return Optional.ofNullable(this.internalLoadBalancers); } private RecordSetRoutingPolicyGeoHealthCheckedTargetsArgs() {} private RecordSetRoutingPolicyGeoHealthCheckedTargetsArgs(RecordSetRoutingPolicyGeoHealthCheckedTargetsArgs $) { + this.externalEndpoints = $.externalEndpoints; this.internalLoadBalancers = $.internalLoadBalancers; } @@ -56,6 +74,37 @@ public Builder(RecordSetRoutingPolicyGeoHealthCheckedTargetsArgs defaults) { $ = new RecordSetRoutingPolicyGeoHealthCheckedTargetsArgs(Objects.requireNonNull(defaults)); } + /** + * @param externalEndpoints The list of external endpoint addresses to health check. + * + * @return builder + * + */ + public Builder externalEndpoints(@Nullable Output> externalEndpoints) { + $.externalEndpoints = externalEndpoints; + return this; + } + + /** + * @param externalEndpoints The list of external endpoint addresses to health check. + * + * @return builder + * + */ + public Builder externalEndpoints(List externalEndpoints) { + return externalEndpoints(Output.of(externalEndpoints)); + } + + /** + * @param externalEndpoints The list of external endpoint addresses to health check. + * + * @return builder + * + */ + public Builder externalEndpoints(String... externalEndpoints) { + return externalEndpoints(List.of(externalEndpoints)); + } + /** * @param internalLoadBalancers The list of internal load balancers to health check. * Structure is documented below. @@ -63,7 +112,7 @@ public Builder(RecordSetRoutingPolicyGeoHealthCheckedTargetsArgs defaults) { * @return builder * */ - public Builder internalLoadBalancers(Output> internalLoadBalancers) { + public Builder internalLoadBalancers(@Nullable Output> internalLoadBalancers) { $.internalLoadBalancers = internalLoadBalancers; return this; } @@ -91,9 +140,6 @@ public Builder internalLoadBalancers(RecordSetRoutingPolicyGeoHealthCheckedTarge } public RecordSetRoutingPolicyGeoHealthCheckedTargetsArgs build() { - if ($.internalLoadBalancers == null) { - throw new MissingRequiredPropertyException("RecordSetRoutingPolicyGeoHealthCheckedTargetsArgs", "internalLoadBalancers"); - } return $; } } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs.java index 4d62f55f3f..f2ad93517b 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs.java @@ -5,36 +5,54 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; -import com.pulumi.exceptions.MissingRequiredPropertyException; import com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancerArgs; +import java.lang.String; import java.util.List; import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; public final class RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs extends com.pulumi.resources.ResourceArgs { public static final RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs Empty = new RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs(); + /** + * The list of external endpoint addresses to health check. + * + */ + @Import(name="externalEndpoints") + private @Nullable Output> externalEndpoints; + + /** + * @return The list of external endpoint addresses to health check. + * + */ + public Optional>> externalEndpoints() { + return Optional.ofNullable(this.externalEndpoints); + } + /** * The list of internal load balancers to health check. * Structure is documented below. * */ - @Import(name="internalLoadBalancers", required=true) - private Output> internalLoadBalancers; + @Import(name="internalLoadBalancers") + private @Nullable Output> internalLoadBalancers; /** * @return The list of internal load balancers to health check. * Structure is documented below. * */ - public Output> internalLoadBalancers() { - return this.internalLoadBalancers; + public Optional>> internalLoadBalancers() { + return Optional.ofNullable(this.internalLoadBalancers); } private RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs() {} private RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs(RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs $) { + this.externalEndpoints = $.externalEndpoints; this.internalLoadBalancers = $.internalLoadBalancers; } @@ -56,6 +74,37 @@ public Builder(RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsA $ = new RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs(Objects.requireNonNull(defaults)); } + /** + * @param externalEndpoints The list of external endpoint addresses to health check. + * + * @return builder + * + */ + public Builder externalEndpoints(@Nullable Output> externalEndpoints) { + $.externalEndpoints = externalEndpoints; + return this; + } + + /** + * @param externalEndpoints The list of external endpoint addresses to health check. + * + * @return builder + * + */ + public Builder externalEndpoints(List externalEndpoints) { + return externalEndpoints(Output.of(externalEndpoints)); + } + + /** + * @param externalEndpoints The list of external endpoint addresses to health check. + * + * @return builder + * + */ + public Builder externalEndpoints(String... externalEndpoints) { + return externalEndpoints(List.of(externalEndpoints)); + } + /** * @param internalLoadBalancers The list of internal load balancers to health check. * Structure is documented below. @@ -63,7 +112,7 @@ public Builder(RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsA * @return builder * */ - public Builder internalLoadBalancers(Output> internalLoadBalancers) { + public Builder internalLoadBalancers(@Nullable Output> internalLoadBalancers) { $.internalLoadBalancers = internalLoadBalancers; return this; } @@ -91,9 +140,6 @@ public Builder internalLoadBalancers(RecordSetRoutingPolicyPrimaryBackupBackupGe } public RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs build() { - if ($.internalLoadBalancers == null) { - throw new MissingRequiredPropertyException("RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs", "internalLoadBalancers"); - } return $; } } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyPrimaryBackupPrimaryArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyPrimaryBackupPrimaryArgs.java index 133ee03b26..4c94525ae7 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyPrimaryBackupPrimaryArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyPrimaryBackupPrimaryArgs.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.dns.inputs.RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs; +import java.lang.String; import java.util.List; import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; public final class RecordSetRoutingPolicyPrimaryBackupPrimaryArgs extends com.pulumi.resources.ResourceArgs { public static final RecordSetRoutingPolicyPrimaryBackupPrimaryArgs Empty = new RecordSetRoutingPolicyPrimaryBackupPrimaryArgs(); + /** + * The Internet IP addresses to be health checked. + * + */ + @Import(name="externalEndpoints") + private @Nullable Output> externalEndpoints; + + /** + * @return The Internet IP addresses to be health checked. + * + */ + public Optional>> externalEndpoints() { + return Optional.ofNullable(this.externalEndpoints); + } + /** * The list of internal load balancers to health check. * */ - @Import(name="internalLoadBalancers", required=true) - private Output> internalLoadBalancers; + @Import(name="internalLoadBalancers") + private @Nullable Output> internalLoadBalancers; /** * @return The list of internal load balancers to health check. * */ - public Output> internalLoadBalancers() { - return this.internalLoadBalancers; + public Optional>> internalLoadBalancers() { + return Optional.ofNullable(this.internalLoadBalancers); } private RecordSetRoutingPolicyPrimaryBackupPrimaryArgs() {} private RecordSetRoutingPolicyPrimaryBackupPrimaryArgs(RecordSetRoutingPolicyPrimaryBackupPrimaryArgs $) { + this.externalEndpoints = $.externalEndpoints; this.internalLoadBalancers = $.internalLoadBalancers; } @@ -54,13 +72,44 @@ public Builder(RecordSetRoutingPolicyPrimaryBackupPrimaryArgs defaults) { $ = new RecordSetRoutingPolicyPrimaryBackupPrimaryArgs(Objects.requireNonNull(defaults)); } + /** + * @param externalEndpoints The Internet IP addresses to be health checked. + * + * @return builder + * + */ + public Builder externalEndpoints(@Nullable Output> externalEndpoints) { + $.externalEndpoints = externalEndpoints; + return this; + } + + /** + * @param externalEndpoints The Internet IP addresses to be health checked. + * + * @return builder + * + */ + public Builder externalEndpoints(List externalEndpoints) { + return externalEndpoints(Output.of(externalEndpoints)); + } + + /** + * @param externalEndpoints The Internet IP addresses to be health checked. + * + * @return builder + * + */ + public Builder externalEndpoints(String... externalEndpoints) { + return externalEndpoints(List.of(externalEndpoints)); + } + /** * @param internalLoadBalancers The list of internal load balancers to health check. * * @return builder * */ - public Builder internalLoadBalancers(Output> internalLoadBalancers) { + public Builder internalLoadBalancers(@Nullable Output> internalLoadBalancers) { $.internalLoadBalancers = internalLoadBalancers; return this; } @@ -86,9 +135,6 @@ public Builder internalLoadBalancers(RecordSetRoutingPolicyPrimaryBackupPrimaryI } public RecordSetRoutingPolicyPrimaryBackupPrimaryArgs build() { - if ($.internalLoadBalancers == null) { - throw new MissingRequiredPropertyException("RecordSetRoutingPolicyPrimaryBackupPrimaryArgs", "internalLoadBalancers"); - } return $; } } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsArgs.java index 160a4ab549..1d0b3145b0 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsArgs.java @@ -5,36 +5,54 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; -import com.pulumi.exceptions.MissingRequiredPropertyException; import com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancerArgs; +import java.lang.String; import java.util.List; import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; public final class RecordSetRoutingPolicyWrrHealthCheckedTargetsArgs extends com.pulumi.resources.ResourceArgs { public static final RecordSetRoutingPolicyWrrHealthCheckedTargetsArgs Empty = new RecordSetRoutingPolicyWrrHealthCheckedTargetsArgs(); + /** + * The list of external endpoint addresses to health check. + * + */ + @Import(name="externalEndpoints") + private @Nullable Output> externalEndpoints; + + /** + * @return The list of external endpoint addresses to health check. + * + */ + public Optional>> externalEndpoints() { + return Optional.ofNullable(this.externalEndpoints); + } + /** * The list of internal load balancers to health check. * Structure is documented below. * */ - @Import(name="internalLoadBalancers", required=true) - private Output> internalLoadBalancers; + @Import(name="internalLoadBalancers") + private @Nullable Output> internalLoadBalancers; /** * @return The list of internal load balancers to health check. * Structure is documented below. * */ - public Output> internalLoadBalancers() { - return this.internalLoadBalancers; + public Optional>> internalLoadBalancers() { + return Optional.ofNullable(this.internalLoadBalancers); } private RecordSetRoutingPolicyWrrHealthCheckedTargetsArgs() {} private RecordSetRoutingPolicyWrrHealthCheckedTargetsArgs(RecordSetRoutingPolicyWrrHealthCheckedTargetsArgs $) { + this.externalEndpoints = $.externalEndpoints; this.internalLoadBalancers = $.internalLoadBalancers; } @@ -56,6 +74,37 @@ public Builder(RecordSetRoutingPolicyWrrHealthCheckedTargetsArgs defaults) { $ = new RecordSetRoutingPolicyWrrHealthCheckedTargetsArgs(Objects.requireNonNull(defaults)); } + /** + * @param externalEndpoints The list of external endpoint addresses to health check. + * + * @return builder + * + */ + public Builder externalEndpoints(@Nullable Output> externalEndpoints) { + $.externalEndpoints = externalEndpoints; + return this; + } + + /** + * @param externalEndpoints The list of external endpoint addresses to health check. + * + * @return builder + * + */ + public Builder externalEndpoints(List externalEndpoints) { + return externalEndpoints(Output.of(externalEndpoints)); + } + + /** + * @param externalEndpoints The list of external endpoint addresses to health check. + * + * @return builder + * + */ + public Builder externalEndpoints(String... externalEndpoints) { + return externalEndpoints(List.of(externalEndpoints)); + } + /** * @param internalLoadBalancers The list of internal load balancers to health check. * Structure is documented below. @@ -63,7 +112,7 @@ public Builder(RecordSetRoutingPolicyWrrHealthCheckedTargetsArgs defaults) { * @return builder * */ - public Builder internalLoadBalancers(Output> internalLoadBalancers) { + public Builder internalLoadBalancers(@Nullable Output> internalLoadBalancers) { $.internalLoadBalancers = internalLoadBalancers; return this; } @@ -91,9 +140,6 @@ public Builder internalLoadBalancers(RecordSetRoutingPolicyWrrHealthCheckedTarge } public RecordSetRoutingPolicyWrrHealthCheckedTargetsArgs build() { - if ($.internalLoadBalancers == null) { - throw new MissingRequiredPropertyException("RecordSetRoutingPolicyWrrHealthCheckedTargetsArgs", "internalLoadBalancers"); - } return $; } } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicy.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicy.java index 6c256ba3d3..d942a0bd1c 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicy.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicy.java @@ -8,6 +8,7 @@ import com.pulumi.gcp.dns.outputs.RecordSetRoutingPolicyPrimaryBackup; import com.pulumi.gcp.dns.outputs.RecordSetRoutingPolicyWrr; import java.lang.Boolean; +import java.lang.String; import java.util.List; import java.util.Objects; import java.util.Optional; @@ -26,6 +27,11 @@ public final class RecordSetRoutingPolicy { * */ private @Nullable List geos; + /** + * @return Specifies the health check (used with external endpoints). + * + */ + private @Nullable String healthCheck; /** * @return The configuration for a failover policy with global to regional failover. Queries are responded to with the global primary targets, but if none of the primary targets are healthy, then we fallback to a regional failover policy. * Structure is documented below. @@ -55,6 +61,13 @@ public Optional enableGeoFencing() { public List geos() { return this.geos == null ? List.of() : this.geos; } + /** + * @return Specifies the health check (used with external endpoints). + * + */ + public Optional healthCheck() { + return Optional.ofNullable(this.healthCheck); + } /** * @return The configuration for a failover policy with global to regional failover. Queries are responded to with the global primary targets, but if none of the primary targets are healthy, then we fallback to a regional failover policy. * Structure is documented below. @@ -83,6 +96,7 @@ public static Builder builder(RecordSetRoutingPolicy defaults) { public static final class Builder { private @Nullable Boolean enableGeoFencing; private @Nullable List geos; + private @Nullable String healthCheck; private @Nullable RecordSetRoutingPolicyPrimaryBackup primaryBackup; private @Nullable List wrrs; public Builder() {} @@ -90,6 +104,7 @@ public Builder(RecordSetRoutingPolicy defaults) { Objects.requireNonNull(defaults); this.enableGeoFencing = defaults.enableGeoFencing; this.geos = defaults.geos; + this.healthCheck = defaults.healthCheck; this.primaryBackup = defaults.primaryBackup; this.wrrs = defaults.wrrs; } @@ -110,6 +125,12 @@ public Builder geos(RecordSetRoutingPolicyGeo... geos) { return geos(List.of(geos)); } @CustomType.Setter + public Builder healthCheck(@Nullable String healthCheck) { + + this.healthCheck = healthCheck; + return this; + } + @CustomType.Setter public Builder primaryBackup(@Nullable RecordSetRoutingPolicyPrimaryBackup primaryBackup) { this.primaryBackup = primaryBackup; @@ -128,6 +149,7 @@ public RecordSetRoutingPolicy build() { final var _resultValue = new RecordSetRoutingPolicy(); _resultValue.enableGeoFencing = enableGeoFencing; _resultValue.geos = geos; + _resultValue.healthCheck = healthCheck; _resultValue.primaryBackup = primaryBackup; _resultValue.wrrs = wrrs; return _resultValue; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyGeoHealthCheckedTargets.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyGeoHealthCheckedTargets.java index 70a3b48e9b..f14e59d97b 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyGeoHealthCheckedTargets.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyGeoHealthCheckedTargets.java @@ -4,28 +4,41 @@ package com.pulumi.gcp.dns.outputs; import com.pulumi.core.annotations.CustomType; -import com.pulumi.exceptions.MissingRequiredPropertyException; import com.pulumi.gcp.dns.outputs.RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancer; +import java.lang.String; import java.util.List; import java.util.Objects; +import javax.annotation.Nullable; @CustomType public final class RecordSetRoutingPolicyGeoHealthCheckedTargets { + /** + * @return The list of external endpoint addresses to health check. + * + */ + private @Nullable List externalEndpoints; /** * @return The list of internal load balancers to health check. * Structure is documented below. * */ - private List internalLoadBalancers; + private @Nullable List internalLoadBalancers; private RecordSetRoutingPolicyGeoHealthCheckedTargets() {} + /** + * @return The list of external endpoint addresses to health check. + * + */ + public List externalEndpoints() { + return this.externalEndpoints == null ? List.of() : this.externalEndpoints; + } /** * @return The list of internal load balancers to health check. * Structure is documented below. * */ public List internalLoadBalancers() { - return this.internalLoadBalancers; + return this.internalLoadBalancers == null ? List.of() : this.internalLoadBalancers; } public static Builder builder() { @@ -37,18 +50,27 @@ public static Builder builder(RecordSetRoutingPolicyGeoHealthCheckedTargets defa } @CustomType.Builder public static final class Builder { - private List internalLoadBalancers; + private @Nullable List externalEndpoints; + private @Nullable List internalLoadBalancers; public Builder() {} public Builder(RecordSetRoutingPolicyGeoHealthCheckedTargets defaults) { Objects.requireNonNull(defaults); + this.externalEndpoints = defaults.externalEndpoints; this.internalLoadBalancers = defaults.internalLoadBalancers; } @CustomType.Setter - public Builder internalLoadBalancers(List internalLoadBalancers) { - if (internalLoadBalancers == null) { - throw new MissingRequiredPropertyException("RecordSetRoutingPolicyGeoHealthCheckedTargets", "internalLoadBalancers"); - } + public Builder externalEndpoints(@Nullable List externalEndpoints) { + + this.externalEndpoints = externalEndpoints; + return this; + } + public Builder externalEndpoints(String... externalEndpoints) { + return externalEndpoints(List.of(externalEndpoints)); + } + @CustomType.Setter + public Builder internalLoadBalancers(@Nullable List internalLoadBalancers) { + this.internalLoadBalancers = internalLoadBalancers; return this; } @@ -57,6 +79,7 @@ public Builder internalLoadBalancers(RecordSetRoutingPolicyGeoHealthCheckedTarge } public RecordSetRoutingPolicyGeoHealthCheckedTargets build() { final var _resultValue = new RecordSetRoutingPolicyGeoHealthCheckedTargets(); + _resultValue.externalEndpoints = externalEndpoints; _resultValue.internalLoadBalancers = internalLoadBalancers; return _resultValue; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargets.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargets.java index 293b4121f2..f128912480 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargets.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargets.java @@ -4,28 +4,41 @@ package com.pulumi.gcp.dns.outputs; import com.pulumi.core.annotations.CustomType; -import com.pulumi.exceptions.MissingRequiredPropertyException; import com.pulumi.gcp.dns.outputs.RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancer; +import java.lang.String; import java.util.List; import java.util.Objects; +import javax.annotation.Nullable; @CustomType public final class RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargets { + /** + * @return The list of external endpoint addresses to health check. + * + */ + private @Nullable List externalEndpoints; /** * @return The list of internal load balancers to health check. * Structure is documented below. * */ - private List internalLoadBalancers; + private @Nullable List internalLoadBalancers; private RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargets() {} + /** + * @return The list of external endpoint addresses to health check. + * + */ + public List externalEndpoints() { + return this.externalEndpoints == null ? List.of() : this.externalEndpoints; + } /** * @return The list of internal load balancers to health check. * Structure is documented below. * */ public List internalLoadBalancers() { - return this.internalLoadBalancers; + return this.internalLoadBalancers == null ? List.of() : this.internalLoadBalancers; } public static Builder builder() { @@ -37,18 +50,27 @@ public static Builder builder(RecordSetRoutingPolicyPrimaryBackupBackupGeoHealth } @CustomType.Builder public static final class Builder { - private List internalLoadBalancers; + private @Nullable List externalEndpoints; + private @Nullable List internalLoadBalancers; public Builder() {} public Builder(RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargets defaults) { Objects.requireNonNull(defaults); + this.externalEndpoints = defaults.externalEndpoints; this.internalLoadBalancers = defaults.internalLoadBalancers; } @CustomType.Setter - public Builder internalLoadBalancers(List internalLoadBalancers) { - if (internalLoadBalancers == null) { - throw new MissingRequiredPropertyException("RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargets", "internalLoadBalancers"); - } + public Builder externalEndpoints(@Nullable List externalEndpoints) { + + this.externalEndpoints = externalEndpoints; + return this; + } + public Builder externalEndpoints(String... externalEndpoints) { + return externalEndpoints(List.of(externalEndpoints)); + } + @CustomType.Setter + public Builder internalLoadBalancers(@Nullable List internalLoadBalancers) { + this.internalLoadBalancers = internalLoadBalancers; return this; } @@ -57,6 +79,7 @@ public Builder internalLoadBalancers(RecordSetRoutingPolicyPrimaryBackupBackupGe } public RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargets build() { final var _resultValue = new RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargets(); + _resultValue.externalEndpoints = externalEndpoints; _resultValue.internalLoadBalancers = internalLoadBalancers; return _resultValue; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyPrimaryBackupPrimary.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyPrimaryBackupPrimary.java index d741079751..b0d329536a 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyPrimaryBackupPrimary.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyPrimaryBackupPrimary.java @@ -4,26 +4,39 @@ package com.pulumi.gcp.dns.outputs; import com.pulumi.core.annotations.CustomType; -import com.pulumi.exceptions.MissingRequiredPropertyException; import com.pulumi.gcp.dns.outputs.RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancer; +import java.lang.String; import java.util.List; import java.util.Objects; +import javax.annotation.Nullable; @CustomType public final class RecordSetRoutingPolicyPrimaryBackupPrimary { + /** + * @return The Internet IP addresses to be health checked. + * + */ + private @Nullable List externalEndpoints; /** * @return The list of internal load balancers to health check. * */ - private List internalLoadBalancers; + private @Nullable List internalLoadBalancers; private RecordSetRoutingPolicyPrimaryBackupPrimary() {} + /** + * @return The Internet IP addresses to be health checked. + * + */ + public List externalEndpoints() { + return this.externalEndpoints == null ? List.of() : this.externalEndpoints; + } /** * @return The list of internal load balancers to health check. * */ public List internalLoadBalancers() { - return this.internalLoadBalancers; + return this.internalLoadBalancers == null ? List.of() : this.internalLoadBalancers; } public static Builder builder() { @@ -35,18 +48,27 @@ public static Builder builder(RecordSetRoutingPolicyPrimaryBackupPrimary default } @CustomType.Builder public static final class Builder { - private List internalLoadBalancers; + private @Nullable List externalEndpoints; + private @Nullable List internalLoadBalancers; public Builder() {} public Builder(RecordSetRoutingPolicyPrimaryBackupPrimary defaults) { Objects.requireNonNull(defaults); + this.externalEndpoints = defaults.externalEndpoints; this.internalLoadBalancers = defaults.internalLoadBalancers; } @CustomType.Setter - public Builder internalLoadBalancers(List internalLoadBalancers) { - if (internalLoadBalancers == null) { - throw new MissingRequiredPropertyException("RecordSetRoutingPolicyPrimaryBackupPrimary", "internalLoadBalancers"); - } + public Builder externalEndpoints(@Nullable List externalEndpoints) { + + this.externalEndpoints = externalEndpoints; + return this; + } + public Builder externalEndpoints(String... externalEndpoints) { + return externalEndpoints(List.of(externalEndpoints)); + } + @CustomType.Setter + public Builder internalLoadBalancers(@Nullable List internalLoadBalancers) { + this.internalLoadBalancers = internalLoadBalancers; return this; } @@ -55,6 +77,7 @@ public Builder internalLoadBalancers(RecordSetRoutingPolicyPrimaryBackupPrimaryI } public RecordSetRoutingPolicyPrimaryBackupPrimary build() { final var _resultValue = new RecordSetRoutingPolicyPrimaryBackupPrimary(); + _resultValue.externalEndpoints = externalEndpoints; _resultValue.internalLoadBalancers = internalLoadBalancers; return _resultValue; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyWrrHealthCheckedTargets.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyWrrHealthCheckedTargets.java index b4f48ae745..cc23974f20 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyWrrHealthCheckedTargets.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyWrrHealthCheckedTargets.java @@ -4,28 +4,41 @@ package com.pulumi.gcp.dns.outputs; import com.pulumi.core.annotations.CustomType; -import com.pulumi.exceptions.MissingRequiredPropertyException; import com.pulumi.gcp.dns.outputs.RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancer; +import java.lang.String; import java.util.List; import java.util.Objects; +import javax.annotation.Nullable; @CustomType public final class RecordSetRoutingPolicyWrrHealthCheckedTargets { + /** + * @return The list of external endpoint addresses to health check. + * + */ + private @Nullable List externalEndpoints; /** * @return The list of internal load balancers to health check. * Structure is documented below. * */ - private List internalLoadBalancers; + private @Nullable List internalLoadBalancers; private RecordSetRoutingPolicyWrrHealthCheckedTargets() {} + /** + * @return The list of external endpoint addresses to health check. + * + */ + public List externalEndpoints() { + return this.externalEndpoints == null ? List.of() : this.externalEndpoints; + } /** * @return The list of internal load balancers to health check. * Structure is documented below. * */ public List internalLoadBalancers() { - return this.internalLoadBalancers; + return this.internalLoadBalancers == null ? List.of() : this.internalLoadBalancers; } public static Builder builder() { @@ -37,18 +50,27 @@ public static Builder builder(RecordSetRoutingPolicyWrrHealthCheckedTargets defa } @CustomType.Builder public static final class Builder { - private List internalLoadBalancers; + private @Nullable List externalEndpoints; + private @Nullable List internalLoadBalancers; public Builder() {} public Builder(RecordSetRoutingPolicyWrrHealthCheckedTargets defaults) { Objects.requireNonNull(defaults); + this.externalEndpoints = defaults.externalEndpoints; this.internalLoadBalancers = defaults.internalLoadBalancers; } @CustomType.Setter - public Builder internalLoadBalancers(List internalLoadBalancers) { - if (internalLoadBalancers == null) { - throw new MissingRequiredPropertyException("RecordSetRoutingPolicyWrrHealthCheckedTargets", "internalLoadBalancers"); - } + public Builder externalEndpoints(@Nullable List externalEndpoints) { + + this.externalEndpoints = externalEndpoints; + return this; + } + public Builder externalEndpoints(String... externalEndpoints) { + return externalEndpoints(List.of(externalEndpoints)); + } + @CustomType.Setter + public Builder internalLoadBalancers(@Nullable List internalLoadBalancers) { + this.internalLoadBalancers = internalLoadBalancers; return this; } @@ -57,6 +79,7 @@ public Builder internalLoadBalancers(RecordSetRoutingPolicyWrrHealthCheckedTarge } public RecordSetRoutingPolicyWrrHealthCheckedTargets build() { final var _resultValue = new RecordSetRoutingPolicyWrrHealthCheckedTargets(); + _resultValue.externalEndpoints = externalEndpoints; _resultValue.internalLoadBalancers = internalLoadBalancers; return _resultValue; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/edgecontainer/inputs/ClusterControlPlaneEncryptionArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/edgecontainer/inputs/ClusterControlPlaneEncryptionArgs.java index 3d2dafbf49..c4df2d07a4 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/edgecontainer/inputs/ClusterControlPlaneEncryptionArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/edgecontainer/inputs/ClusterControlPlaneEncryptionArgs.java @@ -87,7 +87,7 @@ public Optional> kmsKeyState() { * If populated, this field contains the error status reported by Cloud KMS. * Structure is documented below. * - * <a name="nested_kms_status"></a>The `kms_status` block contains: + * <a name="nested_control_plane_encryption_kms_status"></a>The `kms_status` block contains: * */ @Import(name="kmsStatuses") @@ -100,7 +100,7 @@ public Optional> kmsKeyState() { * If populated, this field contains the error status reported by Cloud KMS. * Structure is documented below. * - * <a name="nested_kms_status"></a>The `kms_status` block contains: + * <a name="nested_control_plane_encryption_kms_status"></a>The `kms_status` block contains: * */ public Optional>> kmsStatuses() { @@ -222,7 +222,7 @@ public Builder kmsKeyState(String kmsKeyState) { * If populated, this field contains the error status reported by Cloud KMS. * Structure is documented below. * - * <a name="nested_kms_status"></a>The `kms_status` block contains: + * <a name="nested_control_plane_encryption_kms_status"></a>The `kms_status` block contains: * * @return builder * @@ -239,7 +239,7 @@ public Builder kmsStatuses(@Nullable Output kmsS * If populated, this field contains the error status reported by Cloud KMS. * Structure is documented below. * - * <a name="nested_kms_status"></a>The `kms_status` block contains: + * <a name="nested_control_plane_encryption_kms_status"></a>The `kms_status` block contains: * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/edgecontainer/outputs/ClusterControlPlaneEncryption.java b/sdk/java/src/main/java/com/pulumi/gcp/edgecontainer/outputs/ClusterControlPlaneEncryption.java index c13f6eee50..bff20c8d42 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/edgecontainer/outputs/ClusterControlPlaneEncryption.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/edgecontainer/outputs/ClusterControlPlaneEncryption.java @@ -44,7 +44,7 @@ public final class ClusterControlPlaneEncryption { * If populated, this field contains the error status reported by Cloud KMS. * Structure is documented below. * - * <a name="nested_kms_status"></a>The `kms_status` block contains: + * <a name="nested_control_plane_encryption_kms_status"></a>The `kms_status` block contains: * */ private @Nullable List kmsStatuses; @@ -87,7 +87,7 @@ public Optional kmsKeyState() { * If populated, this field contains the error status reported by Cloud KMS. * Structure is documented below. * - * <a name="nested_kms_status"></a>The `kms_status` block contains: + * <a name="nested_control_plane_encryption_kms_status"></a>The `kms_status` block contains: * */ public List kmsStatuses() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/VMwareCluster.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/VMwareCluster.java index c509796a7d..762bc16bb0 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/VMwareCluster.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/VMwareCluster.java @@ -867,14 +867,14 @@ public Output> validationChecks() { * */ @Export(name="vcenter", refs={VMwareClusterVcenter.class}, tree="[0]") - private Output vcenter; + private Output vcenter; /** * @return VmwareVCenterConfig specifies vCenter config for the user cluster. Inherited from the admin cluster. * */ - public Output> vcenter() { - return Codegen.optional(this.vcenter); + public Output vcenter() { + return this.vcenter; } /** * Enable VM tracking. diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VMwareClusterControlPlaneNodeAutoResizeConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VMwareClusterControlPlaneNodeAutoResizeConfigArgs.java index 8e5f33bc7a..6bf65ad82a 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VMwareClusterControlPlaneNodeAutoResizeConfigArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VMwareClusterControlPlaneNodeAutoResizeConfigArgs.java @@ -17,7 +17,7 @@ public final class VMwareClusterControlPlaneNodeAutoResizeConfigArgs extends com /** * Whether to enable control plane node auto resizing. * - * <a name="nested_vsphere_config"></a>The `vsphere_config` block contains: + * <a name="nested_control_plane_node_vsphere_config"></a>The `vsphere_config` block contains: * */ @Import(name="enabled", required=true) @@ -26,7 +26,7 @@ public final class VMwareClusterControlPlaneNodeAutoResizeConfigArgs extends com /** * @return Whether to enable control plane node auto resizing. * - * <a name="nested_vsphere_config"></a>The `vsphere_config` block contains: + * <a name="nested_control_plane_node_vsphere_config"></a>The `vsphere_config` block contains: * */ public Output enabled() { @@ -60,7 +60,7 @@ public Builder(VMwareClusterControlPlaneNodeAutoResizeConfigArgs defaults) { /** * @param enabled Whether to enable control plane node auto resizing. * - * <a name="nested_vsphere_config"></a>The `vsphere_config` block contains: + * <a name="nested_control_plane_node_vsphere_config"></a>The `vsphere_config` block contains: * * @return builder * @@ -73,7 +73,7 @@ public Builder enabled(Output enabled) { /** * @param enabled Whether to enable control plane node auto resizing. * - * <a name="nested_vsphere_config"></a>The `vsphere_config` block contains: + * <a name="nested_control_plane_node_vsphere_config"></a>The `vsphere_config` block contains: * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VMwareClusterLoadBalancerVipConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VMwareClusterLoadBalancerVipConfigArgs.java index d541ec0287..da72181da9 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VMwareClusterLoadBalancerVipConfigArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VMwareClusterLoadBalancerVipConfigArgs.java @@ -33,7 +33,7 @@ public Optional> controlPlaneVip() { /** * The VIP which you previously set aside for ingress traffic into this cluster. * - * <a name="nested_f5_config"></a>The `f5_config` block supports: + * <a name="nested_load_balancer_f5_config"></a>The `f5_config` block supports: * */ @Import(name="ingressVip") @@ -42,7 +42,7 @@ public Optional> controlPlaneVip() { /** * @return The VIP which you previously set aside for ingress traffic into this cluster. * - * <a name="nested_f5_config"></a>The `f5_config` block supports: + * <a name="nested_load_balancer_f5_config"></a>The `f5_config` block supports: * */ public Optional> ingressVip() { @@ -98,7 +98,7 @@ public Builder controlPlaneVip(String controlPlaneVip) { /** * @param ingressVip The VIP which you previously set aside for ingress traffic into this cluster. * - * <a name="nested_f5_config"></a>The `f5_config` block supports: + * <a name="nested_load_balancer_f5_config"></a>The `f5_config` block supports: * * @return builder * @@ -111,7 +111,7 @@ public Builder ingressVip(@Nullable Output ingressVip) { /** * @param ingressVip The VIP which you previously set aside for ingress traffic into this cluster. * - * <a name="nested_f5_config"></a>The `f5_config` block supports: + * <a name="nested_load_balancer_f5_config"></a>The `f5_config` block supports: * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VMwareClusterNetworkConfigHostConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VMwareClusterNetworkConfigHostConfigArgs.java index 2fa512ce92..988bbbeb54 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VMwareClusterNetworkConfigHostConfigArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VMwareClusterNetworkConfigHostConfigArgs.java @@ -19,7 +19,7 @@ public final class VMwareClusterNetworkConfigHostConfigArgs extends com.pulumi.r /** * DNS search domains. * - * <a name="nested_control_plane_v2_config"></a>The `control_plane_v2_config` block supports: + * <a name="nested_network_config_control_plane_v2_config"></a>The `control_plane_v2_config` block supports: * */ @Import(name="dnsSearchDomains") @@ -28,7 +28,7 @@ public final class VMwareClusterNetworkConfigHostConfigArgs extends com.pulumi.r /** * @return DNS search domains. * - * <a name="nested_control_plane_v2_config"></a>The `control_plane_v2_config` block supports: + * <a name="nested_network_config_control_plane_v2_config"></a>The `control_plane_v2_config` block supports: * */ public Optional>> dnsSearchDomains() { @@ -94,7 +94,7 @@ public Builder(VMwareClusterNetworkConfigHostConfigArgs defaults) { /** * @param dnsSearchDomains DNS search domains. * - * <a name="nested_control_plane_v2_config"></a>The `control_plane_v2_config` block supports: + * <a name="nested_network_config_control_plane_v2_config"></a>The `control_plane_v2_config` block supports: * * @return builder * @@ -107,7 +107,7 @@ public Builder dnsSearchDomains(@Nullable Output> dnsSearchDomains) /** * @param dnsSearchDomains DNS search domains. * - * <a name="nested_control_plane_v2_config"></a>The `control_plane_v2_config` block supports: + * <a name="nested_network_config_control_plane_v2_config"></a>The `control_plane_v2_config` block supports: * * @return builder * @@ -119,7 +119,7 @@ public Builder dnsSearchDomains(List dnsSearchDomains) { /** * @param dnsSearchDomains DNS search domains. * - * <a name="nested_control_plane_v2_config"></a>The `control_plane_v2_config` block supports: + * <a name="nested_network_config_control_plane_v2_config"></a>The `control_plane_v2_config` block supports: * * @return builder * 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 index 2eccaa5913..c076eec243 100644 --- 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 @@ -19,7 +19,7 @@ public final class VmwareAdminClusterLoadBalancerVipConfigArgs extends com.pulum /** * The VIP to configure the load balancer for add-ons. * - * <a name="nested_f5_config"></a>The `f5_config` block supports: + * <a name="nested_load_balancer_f5_config"></a>The `f5_config` block supports: * */ @Import(name="addonsVip") @@ -28,7 +28,7 @@ public final class VmwareAdminClusterLoadBalancerVipConfigArgs extends com.pulum /** * @return The VIP to configure the load balancer for add-ons. * - * <a name="nested_f5_config"></a>The `f5_config` block supports: + * <a name="nested_load_balancer_f5_config"></a>The `f5_config` block supports: * */ public Optional> addonsVip() { @@ -80,7 +80,7 @@ public Builder(VmwareAdminClusterLoadBalancerVipConfigArgs defaults) { /** * @param addonsVip The VIP to configure the load balancer for add-ons. * - * <a name="nested_f5_config"></a>The `f5_config` block supports: + * <a name="nested_load_balancer_f5_config"></a>The `f5_config` block supports: * * @return builder * @@ -93,7 +93,7 @@ public Builder addonsVip(@Nullable Output addonsVip) { /** * @param addonsVip The VIP to configure the load balancer for add-ons. * - * <a name="nested_f5_config"></a>The `f5_config` block supports: + * <a name="nested_load_balancer_f5_config"></a>The `f5_config` block supports: * * @return builder * 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 index a643f9c6d4..9424d34fc6 100644 --- 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 @@ -82,7 +82,7 @@ public Optional> requiredPlatformVersion() { * ResourceStatus representing detailed cluster state. * Structure is documented below. * - * <a name="nested_status"></a>The `status` block contains: + * <a name="nested_platform_config_bundles_bundles_status"></a>The `status` block contains: * */ @Import(name="statuses") @@ -93,7 +93,7 @@ public Optional> requiredPlatformVersion() { * ResourceStatus representing detailed cluster state. * Structure is documented below. * - * <a name="nested_status"></a>The `status` block contains: + * <a name="nested_platform_config_bundles_bundles_status"></a>The `status` block contains: * */ public Optional>> statuses() { @@ -221,7 +221,7 @@ public Builder requiredPlatformVersion(String requiredPlatformVersion) { * ResourceStatus representing detailed cluster state. * Structure is documented below. * - * <a name="nested_status"></a>The `status` block contains: + * <a name="nested_platform_config_bundles_bundles_status"></a>The `status` block contains: * * @return builder * @@ -236,7 +236,7 @@ public Builder statuses(@Nullable Output statuse * ResourceStatus representing detailed cluster state. * Structure is documented below. * - * <a name="nested_status"></a>The `status` block contains: + * <a name="nested_platform_config_bundles_bundles_status"></a>The `status` block contains: * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VMwareClusterControlPlaneNodeAutoResizeConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VMwareClusterControlPlaneNodeAutoResizeConfig.java index 289f1c753b..f1c5d7e160 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VMwareClusterControlPlaneNodeAutoResizeConfig.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VMwareClusterControlPlaneNodeAutoResizeConfig.java @@ -13,7 +13,7 @@ public final class VMwareClusterControlPlaneNodeAutoResizeConfig { /** * @return Whether to enable control plane node auto resizing. * - * <a name="nested_vsphere_config"></a>The `vsphere_config` block contains: + * <a name="nested_control_plane_node_vsphere_config"></a>The `vsphere_config` block contains: * */ private Boolean enabled; @@ -22,7 +22,7 @@ private VMwareClusterControlPlaneNodeAutoResizeConfig() {} /** * @return Whether to enable control plane node auto resizing. * - * <a name="nested_vsphere_config"></a>The `vsphere_config` block contains: + * <a name="nested_control_plane_node_vsphere_config"></a>The `vsphere_config` block contains: * */ public Boolean enabled() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VMwareClusterLoadBalancerVipConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VMwareClusterLoadBalancerVipConfig.java index b0fa29233e..4d2729daf6 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VMwareClusterLoadBalancerVipConfig.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VMwareClusterLoadBalancerVipConfig.java @@ -19,7 +19,7 @@ public final class VMwareClusterLoadBalancerVipConfig { /** * @return The VIP which you previously set aside for ingress traffic into this cluster. * - * <a name="nested_f5_config"></a>The `f5_config` block supports: + * <a name="nested_load_balancer_f5_config"></a>The `f5_config` block supports: * */ private @Nullable String ingressVip; @@ -35,7 +35,7 @@ public Optional controlPlaneVip() { /** * @return The VIP which you previously set aside for ingress traffic into this cluster. * - * <a name="nested_f5_config"></a>The `f5_config` block supports: + * <a name="nested_load_balancer_f5_config"></a>The `f5_config` block supports: * */ public Optional ingressVip() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VMwareClusterNetworkConfigHostConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VMwareClusterNetworkConfigHostConfig.java index 5f0635274d..db2ead21c0 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VMwareClusterNetworkConfigHostConfig.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VMwareClusterNetworkConfigHostConfig.java @@ -14,7 +14,7 @@ public final class VMwareClusterNetworkConfigHostConfig { /** * @return DNS search domains. * - * <a name="nested_control_plane_v2_config"></a>The `control_plane_v2_config` block supports: + * <a name="nested_network_config_control_plane_v2_config"></a>The `control_plane_v2_config` block supports: * */ private @Nullable List dnsSearchDomains; @@ -33,7 +33,7 @@ private VMwareClusterNetworkConfigHostConfig() {} /** * @return DNS search domains. * - * <a name="nested_control_plane_v2_config"></a>The `control_plane_v2_config` block supports: + * <a name="nested_network_config_control_plane_v2_config"></a>The `control_plane_v2_config` block supports: * */ public List dnsSearchDomains() { 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 index 48273f8049..6d8177169c 100644 --- 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 @@ -15,7 +15,7 @@ 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: + * <a name="nested_load_balancer_f5_config"></a>The `f5_config` block supports: * */ private @Nullable String addonsVip; @@ -30,7 +30,7 @@ private VmwareAdminClusterLoadBalancerVipConfig() {} /** * @return The VIP to configure the load balancer for add-ons. * - * <a name="nested_f5_config"></a>The `f5_config` block supports: + * <a name="nested_load_balancer_f5_config"></a>The `f5_config` block supports: * */ public Optional addonsVip() { 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 index 31c5cc3501..f136ad3653 100644 --- 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 @@ -41,7 +41,7 @@ public final class VmwareAdminClusterPlatformConfig { * ResourceStatus representing detailed cluster state. * Structure is documented below. * - * <a name="nested_status"></a>The `status` block contains: + * <a name="nested_platform_config_bundles_bundles_status"></a>The `status` block contains: * */ private @Nullable List statuses; @@ -80,7 +80,7 @@ public Optional requiredPlatformVersion() { * ResourceStatus representing detailed cluster state. * Structure is documented below. * - * <a name="nested_status"></a>The `status` block contains: + * <a name="nested_platform_config_bundles_bundles_status"></a>The `status` block contains: * */ public List statuses() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/iap/Settings.java b/sdk/java/src/main/java/com/pulumi/gcp/iap/Settings.java index 329560528e..6fc750bb08 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/iap/Settings.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/iap/Settings.java @@ -201,15 +201,15 @@ public Output> applicationSettings() { * The resource name of the IAP protected resource. Name can have below resources: * * organizations/{organization_id} * * folders/{folder_id} - * * projects/{projects_id} - * * projects/{projects_id}/iap_web - * * projects/{projects_id}/iap_web/compute - * * projects/{projects_id}/iap_web/compute-{region} - * * projects/{projects_id}/iap_web/compute/service/{service_id} - * * projects/{projects_id}/iap_web/compute-{region}/service/{service_id} - * * projects/{projects_id}/iap_web/appengine-{app_id} - * * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id} - * * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id} + * * projects/{project_id} + * * projects/{project_id}/iap_web + * * projects/{project_id}/iap_web/compute + * * projects/{project_id}/iap_web/compute-{region} + * * projects/{project_id}/iap_web/compute/services/{service_id} + * * projects/{project_id}/iap_web/compute-{region}/services/{service_id} + * * projects/{project_id}/iap_web/appengine-{app_id} + * * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id} + * * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id} * * *** * @@ -221,15 +221,15 @@ public Output> applicationSettings() { * @return The resource name of the IAP protected resource. Name can have below resources: * * organizations/{organization_id} * * folders/{folder_id} - * * projects/{projects_id} - * * projects/{projects_id}/iap_web - * * projects/{projects_id}/iap_web/compute - * * projects/{projects_id}/iap_web/compute-{region} - * * projects/{projects_id}/iap_web/compute/service/{service_id} - * * projects/{projects_id}/iap_web/compute-{region}/service/{service_id} - * * projects/{projects_id}/iap_web/appengine-{app_id} - * * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id} - * * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id} + * * projects/{project_id} + * * projects/{project_id}/iap_web + * * projects/{project_id}/iap_web/compute + * * projects/{project_id}/iap_web/compute-{region} + * * projects/{project_id}/iap_web/compute/services/{service_id} + * * projects/{project_id}/iap_web/compute-{region}/services/{service_id} + * * projects/{project_id}/iap_web/appengine-{app_id} + * * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id} + * * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id} * * *** * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/iap/SettingsArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/iap/SettingsArgs.java index c3f7fb77db..810eca8bd2 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/iap/SettingsArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/iap/SettingsArgs.java @@ -55,15 +55,15 @@ public Optional> applicationSettings() { * The resource name of the IAP protected resource. Name can have below resources: * * organizations/{organization_id} * * folders/{folder_id} - * * projects/{projects_id} - * * projects/{projects_id}/iap_web - * * projects/{projects_id}/iap_web/compute - * * projects/{projects_id}/iap_web/compute-{region} - * * projects/{projects_id}/iap_web/compute/service/{service_id} - * * projects/{projects_id}/iap_web/compute-{region}/service/{service_id} - * * projects/{projects_id}/iap_web/appengine-{app_id} - * * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id} - * * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id} + * * projects/{project_id} + * * projects/{project_id}/iap_web + * * projects/{project_id}/iap_web/compute + * * projects/{project_id}/iap_web/compute-{region} + * * projects/{project_id}/iap_web/compute/services/{service_id} + * * projects/{project_id}/iap_web/compute-{region}/services/{service_id} + * * projects/{project_id}/iap_web/appengine-{app_id} + * * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id} + * * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id} * * *** * @@ -75,15 +75,15 @@ public Optional> applicationSettings() { * @return The resource name of the IAP protected resource. Name can have below resources: * * organizations/{organization_id} * * folders/{folder_id} - * * projects/{projects_id} - * * projects/{projects_id}/iap_web - * * projects/{projects_id}/iap_web/compute - * * projects/{projects_id}/iap_web/compute-{region} - * * projects/{projects_id}/iap_web/compute/service/{service_id} - * * projects/{projects_id}/iap_web/compute-{region}/service/{service_id} - * * projects/{projects_id}/iap_web/appengine-{app_id} - * * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id} - * * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id} + * * projects/{project_id} + * * projects/{project_id}/iap_web + * * projects/{project_id}/iap_web/compute + * * projects/{project_id}/iap_web/compute-{region} + * * projects/{project_id}/iap_web/compute/services/{service_id} + * * projects/{project_id}/iap_web/compute-{region}/services/{service_id} + * * projects/{project_id}/iap_web/appengine-{app_id} + * * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id} + * * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id} * * *** * @@ -168,15 +168,15 @@ public Builder applicationSettings(SettingsApplicationSettingsArgs applicationSe * @param name The resource name of the IAP protected resource. Name can have below resources: * * organizations/{organization_id} * * folders/{folder_id} - * * projects/{projects_id} - * * projects/{projects_id}/iap_web - * * projects/{projects_id}/iap_web/compute - * * projects/{projects_id}/iap_web/compute-{region} - * * projects/{projects_id}/iap_web/compute/service/{service_id} - * * projects/{projects_id}/iap_web/compute-{region}/service/{service_id} - * * projects/{projects_id}/iap_web/appengine-{app_id} - * * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id} - * * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id} + * * projects/{project_id} + * * projects/{project_id}/iap_web + * * projects/{project_id}/iap_web/compute + * * projects/{project_id}/iap_web/compute-{region} + * * projects/{project_id}/iap_web/compute/services/{service_id} + * * projects/{project_id}/iap_web/compute-{region}/services/{service_id} + * * projects/{project_id}/iap_web/appengine-{app_id} + * * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id} + * * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id} * * *** * @@ -192,15 +192,15 @@ public Builder name(@Nullable Output name) { * @param name The resource name of the IAP protected resource. Name can have below resources: * * organizations/{organization_id} * * folders/{folder_id} - * * projects/{projects_id} - * * projects/{projects_id}/iap_web - * * projects/{projects_id}/iap_web/compute - * * projects/{projects_id}/iap_web/compute-{region} - * * projects/{projects_id}/iap_web/compute/service/{service_id} - * * projects/{projects_id}/iap_web/compute-{region}/service/{service_id} - * * projects/{projects_id}/iap_web/appengine-{app_id} - * * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id} - * * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id} + * * projects/{project_id} + * * projects/{project_id}/iap_web + * * projects/{project_id}/iap_web/compute + * * projects/{project_id}/iap_web/compute-{region} + * * projects/{project_id}/iap_web/compute/services/{service_id} + * * projects/{project_id}/iap_web/compute-{region}/services/{service_id} + * * projects/{project_id}/iap_web/appengine-{app_id} + * * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id} + * * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id} * * *** * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/iap/inputs/SettingsAccessSettingsArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/iap/inputs/SettingsAccessSettingsArgs.java index f844a9670b..f7ab18bed3 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/iap/inputs/SettingsAccessSettingsArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/iap/inputs/SettingsAccessSettingsArgs.java @@ -58,7 +58,8 @@ public Optional> corsSettings() { /** * GCIP claims and endpoint configurations for 3p identity providers. - * Structure is documented below. + * * Enabling gcipSetting significantly changes the way IAP authenticates users. Identity Platform does not support IAM, so IAP will not enforce any IAM policies for requests to your application. + * Structure is documented below. * */ @Import(name="gcipSettings") @@ -66,7 +67,8 @@ public Optional> corsSettings() { /** * @return GCIP claims and endpoint configurations for 3p identity providers. - * Structure is documented below. + * * Enabling gcipSetting significantly changes the way IAP authenticates users. Identity Platform does not support IAM, so IAP will not enforce any IAM policies for requests to your application. + * Structure is documented below. * */ public Optional> gcipSettings() { @@ -227,7 +229,8 @@ public Builder corsSettings(SettingsAccessSettingsCorsSettingsArgs corsSettings) /** * @param gcipSettings GCIP claims and endpoint configurations for 3p identity providers. - * Structure is documented below. + * * Enabling gcipSetting significantly changes the way IAP authenticates users. Identity Platform does not support IAM, so IAP will not enforce any IAM policies for requests to your application. + * Structure is documented below. * * @return builder * @@ -239,7 +242,8 @@ public Builder gcipSettings(@Nullable Output> loginHint() { @@ -85,6 +87,7 @@ public Builder(SettingsAccessSettingsOauthSettingsArgs defaults) { * (https://developers.google.com/identity/protocols/OpenIDConnect#hd-param) * Note: IAP does not verify that the id token's hd claim matches this value * since access behavior is managed by IAM policies. + * * loginHint setting is not a replacement for access control. Always enforce an appropriate access policy if you want to restrict access to users outside your domain. * * @return builder * @@ -100,6 +103,7 @@ public Builder loginHint(@Nullable Output loginHint) { * (https://developers.google.com/identity/protocols/OpenIDConnect#hd-param) * Note: IAP does not verify that the id token's hd claim matches this value * since access behavior is managed by IAM policies. + * * loginHint setting is not a replacement for access control. Always enforce an appropriate access policy if you want to restrict access to users outside your domain. * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/iap/inputs/SettingsAccessSettingsWorkforceIdentitySettingsArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/iap/inputs/SettingsAccessSettingsWorkforceIdentitySettingsArgs.java index 1b6202c532..55d2fe8968 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/iap/inputs/SettingsAccessSettingsWorkforceIdentitySettingsArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/iap/inputs/SettingsAccessSettingsWorkforceIdentitySettingsArgs.java @@ -21,7 +21,7 @@ public final class SettingsAccessSettingsWorkforceIdentitySettingsArgs extends c * federation services. * Structure is documented below. * - * <a name="nested_oauth2"></a>The `oauth2` block supports: + * <a name="nested_access_settings_workforce_identity_settings_oauth2"></a>The `oauth2` block supports: * */ @Import(name="oauth2") @@ -32,7 +32,7 @@ public final class SettingsAccessSettingsWorkforceIdentitySettingsArgs extends c * federation services. * Structure is documented below. * - * <a name="nested_oauth2"></a>The `oauth2` block supports: + * <a name="nested_access_settings_workforce_identity_settings_oauth2"></a>The `oauth2` block supports: * */ public Optional> oauth2() { @@ -84,7 +84,7 @@ public Builder(SettingsAccessSettingsWorkforceIdentitySettingsArgs defaults) { * federation services. * Structure is documented below. * - * <a name="nested_oauth2"></a>The `oauth2` block supports: + * <a name="nested_access_settings_workforce_identity_settings_oauth2"></a>The `oauth2` block supports: * * @return builder * @@ -99,7 +99,7 @@ public Builder oauth2(@Nullable Output> applicationSettings() { * The resource name of the IAP protected resource. Name can have below resources: * * organizations/{organization_id} * * folders/{folder_id} - * * projects/{projects_id} - * * projects/{projects_id}/iap_web - * * projects/{projects_id}/iap_web/compute - * * projects/{projects_id}/iap_web/compute-{region} - * * projects/{projects_id}/iap_web/compute/service/{service_id} - * * projects/{projects_id}/iap_web/compute-{region}/service/{service_id} - * * projects/{projects_id}/iap_web/appengine-{app_id} - * * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id} - * * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id} + * * projects/{project_id} + * * projects/{project_id}/iap_web + * * projects/{project_id}/iap_web/compute + * * projects/{project_id}/iap_web/compute-{region} + * * projects/{project_id}/iap_web/compute/services/{service_id} + * * projects/{project_id}/iap_web/compute-{region}/services/{service_id} + * * projects/{project_id}/iap_web/appengine-{app_id} + * * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id} + * * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id} * * *** * @@ -75,15 +75,15 @@ public Optional> applicationSettings() { * @return The resource name of the IAP protected resource. Name can have below resources: * * organizations/{organization_id} * * folders/{folder_id} - * * projects/{projects_id} - * * projects/{projects_id}/iap_web - * * projects/{projects_id}/iap_web/compute - * * projects/{projects_id}/iap_web/compute-{region} - * * projects/{projects_id}/iap_web/compute/service/{service_id} - * * projects/{projects_id}/iap_web/compute-{region}/service/{service_id} - * * projects/{projects_id}/iap_web/appengine-{app_id} - * * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id} - * * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id} + * * projects/{project_id} + * * projects/{project_id}/iap_web + * * projects/{project_id}/iap_web/compute + * * projects/{project_id}/iap_web/compute-{region} + * * projects/{project_id}/iap_web/compute/services/{service_id} + * * projects/{project_id}/iap_web/compute-{region}/services/{service_id} + * * projects/{project_id}/iap_web/appengine-{app_id} + * * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id} + * * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id} * * *** * @@ -168,15 +168,15 @@ public Builder applicationSettings(SettingsApplicationSettingsArgs applicationSe * @param name The resource name of the IAP protected resource. Name can have below resources: * * organizations/{organization_id} * * folders/{folder_id} - * * projects/{projects_id} - * * projects/{projects_id}/iap_web - * * projects/{projects_id}/iap_web/compute - * * projects/{projects_id}/iap_web/compute-{region} - * * projects/{projects_id}/iap_web/compute/service/{service_id} - * * projects/{projects_id}/iap_web/compute-{region}/service/{service_id} - * * projects/{projects_id}/iap_web/appengine-{app_id} - * * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id} - * * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id} + * * projects/{project_id} + * * projects/{project_id}/iap_web + * * projects/{project_id}/iap_web/compute + * * projects/{project_id}/iap_web/compute-{region} + * * projects/{project_id}/iap_web/compute/services/{service_id} + * * projects/{project_id}/iap_web/compute-{region}/services/{service_id} + * * projects/{project_id}/iap_web/appengine-{app_id} + * * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id} + * * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id} * * *** * @@ -192,15 +192,15 @@ public Builder name(@Nullable Output name) { * @param name The resource name of the IAP protected resource. Name can have below resources: * * organizations/{organization_id} * * folders/{folder_id} - * * projects/{projects_id} - * * projects/{projects_id}/iap_web - * * projects/{projects_id}/iap_web/compute - * * projects/{projects_id}/iap_web/compute-{region} - * * projects/{projects_id}/iap_web/compute/service/{service_id} - * * projects/{projects_id}/iap_web/compute-{region}/service/{service_id} - * * projects/{projects_id}/iap_web/appengine-{app_id} - * * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id} - * * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id} + * * projects/{project_id} + * * projects/{project_id}/iap_web + * * projects/{project_id}/iap_web/compute + * * projects/{project_id}/iap_web/compute-{region} + * * projects/{project_id}/iap_web/compute/services/{service_id} + * * projects/{project_id}/iap_web/compute-{region}/services/{service_id} + * * projects/{project_id}/iap_web/appengine-{app_id} + * * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id} + * * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id} * * *** * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/iap/outputs/SettingsAccessSettings.java b/sdk/java/src/main/java/com/pulumi/gcp/iap/outputs/SettingsAccessSettings.java index c522a8afa9..2847740628 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/iap/outputs/SettingsAccessSettings.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/iap/outputs/SettingsAccessSettings.java @@ -32,7 +32,8 @@ public final class SettingsAccessSettings { private @Nullable SettingsAccessSettingsCorsSettings corsSettings; /** * @return GCIP claims and endpoint configurations for 3p identity providers. - * Structure is documented below. + * * Enabling gcipSetting significantly changes the way IAP authenticates users. Identity Platform does not support IAM, so IAP will not enforce any IAM policies for requests to your application. + * Structure is documented below. * */ private @Nullable SettingsAccessSettingsGcipSettings gcipSettings; @@ -84,7 +85,8 @@ public Optional corsSettings() { } /** * @return GCIP claims and endpoint configurations for 3p identity providers. - * Structure is documented below. + * * Enabling gcipSetting significantly changes the way IAP authenticates users. Identity Platform does not support IAM, so IAP will not enforce any IAM policies for requests to your application. + * Structure is documented below. * */ public Optional gcipSettings() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/iap/outputs/SettingsAccessSettingsOauthSettings.java b/sdk/java/src/main/java/com/pulumi/gcp/iap/outputs/SettingsAccessSettingsOauthSettings.java index b10c41b633..e73d346f3a 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/iap/outputs/SettingsAccessSettingsOauthSettings.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/iap/outputs/SettingsAccessSettingsOauthSettings.java @@ -18,6 +18,7 @@ public final class SettingsAccessSettingsOauthSettings { * (https://developers.google.com/identity/protocols/OpenIDConnect#hd-param) * Note: IAP does not verify that the id token's hd claim matches this value * since access behavior is managed by IAM policies. + * * loginHint setting is not a replacement for access control. Always enforce an appropriate access policy if you want to restrict access to users outside your domain. * */ private @Nullable String loginHint; @@ -34,6 +35,7 @@ private SettingsAccessSettingsOauthSettings() {} * (https://developers.google.com/identity/protocols/OpenIDConnect#hd-param) * Note: IAP does not verify that the id token's hd claim matches this value * since access behavior is managed by IAM policies. + * * loginHint setting is not a replacement for access control. Always enforce an appropriate access policy if you want to restrict access to users outside your domain. * */ public Optional loginHint() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/iap/outputs/SettingsAccessSettingsWorkforceIdentitySettings.java b/sdk/java/src/main/java/com/pulumi/gcp/iap/outputs/SettingsAccessSettingsWorkforceIdentitySettings.java index c9682d384b..eae5df69a0 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/iap/outputs/SettingsAccessSettingsWorkforceIdentitySettings.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/iap/outputs/SettingsAccessSettingsWorkforceIdentitySettings.java @@ -17,7 +17,7 @@ public final class SettingsAccessSettingsWorkforceIdentitySettings { * federation services. * Structure is documented below. * - * <a name="nested_oauth2"></a>The `oauth2` block supports: + * <a name="nested_access_settings_workforce_identity_settings_oauth2"></a>The `oauth2` block supports: * */ private @Nullable SettingsAccessSettingsWorkforceIdentitySettingsOauth2 oauth2; @@ -33,7 +33,7 @@ private SettingsAccessSettingsWorkforceIdentitySettings() {} * federation services. * Structure is documented below. * - * <a name="nested_oauth2"></a>The `oauth2` block supports: + * <a name="nested_access_settings_workforce_identity_settings_oauth2"></a>The `oauth2` block supports: * */ public Optional oauth2() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/identityplatform/inputs/ConfigSignInAnonymousArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/identityplatform/inputs/ConfigSignInAnonymousArgs.java index c4c3e33faf..12f0e6385e 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/identityplatform/inputs/ConfigSignInAnonymousArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/identityplatform/inputs/ConfigSignInAnonymousArgs.java @@ -17,7 +17,7 @@ public final class ConfigSignInAnonymousArgs extends com.pulumi.resources.Resour /** * Whether anonymous user auth is enabled for the project or not. * - * <a name="nested_hash_config"></a>The `hash_config` block contains: + * <a name="nested_sign_in_hash_config"></a>The `hash_config` block contains: * */ @Import(name="enabled", required=true) @@ -26,7 +26,7 @@ public final class ConfigSignInAnonymousArgs extends com.pulumi.resources.Resour /** * @return Whether anonymous user auth is enabled for the project or not. * - * <a name="nested_hash_config"></a>The `hash_config` block contains: + * <a name="nested_sign_in_hash_config"></a>The `hash_config` block contains: * */ public Output enabled() { @@ -60,7 +60,7 @@ public Builder(ConfigSignInAnonymousArgs defaults) { /** * @param enabled Whether anonymous user auth is enabled for the project or not. * - * <a name="nested_hash_config"></a>The `hash_config` block contains: + * <a name="nested_sign_in_hash_config"></a>The `hash_config` block contains: * * @return builder * @@ -73,7 +73,7 @@ public Builder enabled(Output enabled) { /** * @param enabled Whether anonymous user auth is enabled for the project or not. * - * <a name="nested_hash_config"></a>The `hash_config` block contains: + * <a name="nested_sign_in_hash_config"></a>The `hash_config` block contains: * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/identityplatform/inputs/InboundSamlConfigSpConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/identityplatform/inputs/InboundSamlConfigSpConfigArgs.java index 513ad95f7c..9d2b1782d9 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/identityplatform/inputs/InboundSamlConfigSpConfigArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/identityplatform/inputs/InboundSamlConfigSpConfigArgs.java @@ -37,7 +37,7 @@ public Optional> callbackUri() { * The IDP's certificate data to verify the signature in the SAMLResponse issued by the IDP. * Structure is documented below. * - * <a name="nested_sp_certificates"></a>The `sp_certificates` block contains: + * <a name="nested_sp_config_sp_certificates"></a>The `sp_certificates` block contains: * */ @Import(name="spCertificates") @@ -48,7 +48,7 @@ public Optional> callbackUri() { * The IDP's certificate data to verify the signature in the SAMLResponse issued by the IDP. * Structure is documented below. * - * <a name="nested_sp_certificates"></a>The `sp_certificates` block contains: + * <a name="nested_sp_config_sp_certificates"></a>The `sp_certificates` block contains: * */ public Optional>> spCertificates() { @@ -122,7 +122,7 @@ public Builder callbackUri(String callbackUri) { * The IDP's certificate data to verify the signature in the SAMLResponse issued by the IDP. * Structure is documented below. * - * <a name="nested_sp_certificates"></a>The `sp_certificates` block contains: + * <a name="nested_sp_config_sp_certificates"></a>The `sp_certificates` block contains: * * @return builder * @@ -137,7 +137,7 @@ public Builder spCertificates(@Nullable Output s * The IDP's certificate data to verify the signature in the SAMLResponse issued by the IDP. * Structure is documented below. * - * <a name="nested_sp_certificates"></a>The `sp_certificates` block contains: + * <a name="nested_sp_config_sp_certificates"></a>The `sp_certificates` block contains: * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/identityplatform/inputs/TenantInboundSamlConfigSpConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/identityplatform/inputs/TenantInboundSamlConfigSpConfigArgs.java index 3e0475c4da..00d8ac3cd2 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/identityplatform/inputs/TenantInboundSamlConfigSpConfigArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/identityplatform/inputs/TenantInboundSamlConfigSpConfigArgs.java @@ -38,7 +38,7 @@ public Output callbackUri() { * The IDP's certificate data to verify the signature in the SAMLResponse issued by the IDP. * Structure is documented below. * - * <a name="nested_sp_certificates"></a>The `sp_certificates` block contains: + * <a name="nested_sp_config_sp_certificates"></a>The `sp_certificates` block contains: * */ @Import(name="spCertificates") @@ -49,7 +49,7 @@ public Output callbackUri() { * The IDP's certificate data to verify the signature in the SAMLResponse issued by the IDP. * Structure is documented below. * - * <a name="nested_sp_certificates"></a>The `sp_certificates` block contains: + * <a name="nested_sp_config_sp_certificates"></a>The `sp_certificates` block contains: * */ public Optional>> spCertificates() { @@ -123,7 +123,7 @@ public Builder callbackUri(String callbackUri) { * The IDP's certificate data to verify the signature in the SAMLResponse issued by the IDP. * Structure is documented below. * - * <a name="nested_sp_certificates"></a>The `sp_certificates` block contains: + * <a name="nested_sp_config_sp_certificates"></a>The `sp_certificates` block contains: * * @return builder * @@ -138,7 +138,7 @@ public Builder spCertificates(@Nullable Output spCertificates; @@ -46,7 +46,7 @@ public Optional callbackUri() { * The IDP's certificate data to verify the signature in the SAMLResponse issued by the IDP. * Structure is documented below. * - * <a name="nested_sp_certificates"></a>The `sp_certificates` block contains: + * <a name="nested_sp_config_sp_certificates"></a>The `sp_certificates` block contains: * */ public List spCertificates() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/identityplatform/outputs/TenantInboundSamlConfigSpConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/identityplatform/outputs/TenantInboundSamlConfigSpConfig.java index 31e7b8e598..d45c3063b7 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/identityplatform/outputs/TenantInboundSamlConfigSpConfig.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/identityplatform/outputs/TenantInboundSamlConfigSpConfig.java @@ -23,7 +23,7 @@ public final class TenantInboundSamlConfigSpConfig { * The IDP's certificate data to verify the signature in the SAMLResponse issued by the IDP. * Structure is documented below. * - * <a name="nested_sp_certificates"></a>The `sp_certificates` block contains: + * <a name="nested_sp_config_sp_certificates"></a>The `sp_certificates` block contains: * */ private @Nullable List spCertificates; @@ -46,7 +46,7 @@ public String callbackUri() { * The IDP's certificate data to verify the signature in the SAMLResponse issued by the IDP. * Structure is documented below. * - * <a name="nested_sp_certificates"></a>The `sp_certificates` block contains: + * <a name="nested_sp_config_sp_certificates"></a>The `sp_certificates` block contains: * */ public List spCertificates() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/inputs/ConnectionAuthConfigOauth2JwtBearerJwtClaimsArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/inputs/ConnectionAuthConfigOauth2JwtBearerJwtClaimsArgs.java index c9065129c2..aca5063d6c 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/inputs/ConnectionAuthConfigOauth2JwtBearerJwtClaimsArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/inputs/ConnectionAuthConfigOauth2JwtBearerJwtClaimsArgs.java @@ -18,7 +18,7 @@ public final class ConnectionAuthConfigOauth2JwtBearerJwtClaimsArgs extends com. /** * Value for the "aud" claim. * - * <a name="nested_oauth2_client_credentials"></a>The `oauth2_client_credentials` block supports: + * <a name="nested_auth_config_oauth2_client_credentials"></a>The `oauth2_client_credentials` block supports: * */ @Import(name="audience") @@ -27,7 +27,7 @@ public final class ConnectionAuthConfigOauth2JwtBearerJwtClaimsArgs extends com. /** * @return Value for the "aud" claim. * - * <a name="nested_oauth2_client_credentials"></a>The `oauth2_client_credentials` block supports: + * <a name="nested_auth_config_oauth2_client_credentials"></a>The `oauth2_client_credentials` block supports: * */ public Optional> audience() { @@ -93,7 +93,7 @@ public Builder(ConnectionAuthConfigOauth2JwtBearerJwtClaimsArgs defaults) { /** * @param audience Value for the "aud" claim. * - * <a name="nested_oauth2_client_credentials"></a>The `oauth2_client_credentials` block supports: + * <a name="nested_auth_config_oauth2_client_credentials"></a>The `oauth2_client_credentials` block supports: * * @return builder * @@ -106,7 +106,7 @@ public Builder audience(@Nullable Output audience) { /** * @param audience Value for the "aud" claim. * - * <a name="nested_oauth2_client_credentials"></a>The `oauth2_client_credentials` block supports: + * <a name="nested_auth_config_oauth2_client_credentials"></a>The `oauth2_client_credentials` block supports: * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/inputs/ConnectionAuthConfigSshPublicKeySshClientCertPassArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/inputs/ConnectionAuthConfigSshPublicKeySshClientCertPassArgs.java index 1913c46366..f6ea789009 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/inputs/ConnectionAuthConfigSshPublicKeySshClientCertPassArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/inputs/ConnectionAuthConfigSshPublicKeySshClientCertPassArgs.java @@ -18,7 +18,7 @@ public final class ConnectionAuthConfigSshPublicKeySshClientCertPassArgs extends * The resource name of the secret version in the format, * format as: projects/*/secrets/*/versions/*. * - * <a name="nested_oauth2_auth_code_flow"></a>The `oauth2_auth_code_flow` block supports: + * <a name="nested_auth_config_oauth2_auth_code_flow"></a>The `oauth2_auth_code_flow` block supports: * */ @Import(name="secretVersion", required=true) @@ -28,7 +28,7 @@ public final class ConnectionAuthConfigSshPublicKeySshClientCertPassArgs extends * @return The resource name of the secret version in the format, * format as: projects/*/secrets/*/versions/*. * - * <a name="nested_oauth2_auth_code_flow"></a>The `oauth2_auth_code_flow` block supports: + * <a name="nested_auth_config_oauth2_auth_code_flow"></a>The `oauth2_auth_code_flow` block supports: * */ public Output secretVersion() { @@ -63,7 +63,7 @@ public Builder(ConnectionAuthConfigSshPublicKeySshClientCertPassArgs defaults) { * @param secretVersion The resource name of the secret version in the format, * format as: projects/*/secrets/*/versions/*. * - * <a name="nested_oauth2_auth_code_flow"></a>The `oauth2_auth_code_flow` block supports: + * <a name="nested_auth_config_oauth2_auth_code_flow"></a>The `oauth2_auth_code_flow` block supports: * * @return builder * @@ -77,7 +77,7 @@ public Builder secretVersion(Output secretVersion) { * @param secretVersion The resource name of the secret version in the format, * format as: projects/*/secrets/*/versions/*. * - * <a name="nested_oauth2_auth_code_flow"></a>The `oauth2_auth_code_flow` block supports: + * <a name="nested_auth_config_oauth2_auth_code_flow"></a>The `oauth2_auth_code_flow` block supports: * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/outputs/ConnectionAuthConfigOauth2JwtBearerJwtClaims.java b/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/outputs/ConnectionAuthConfigOauth2JwtBearerJwtClaims.java index 6ec78578b9..45ba37248e 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/outputs/ConnectionAuthConfigOauth2JwtBearerJwtClaims.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/outputs/ConnectionAuthConfigOauth2JwtBearerJwtClaims.java @@ -14,7 +14,7 @@ public final class ConnectionAuthConfigOauth2JwtBearerJwtClaims { /** * @return Value for the "aud" claim. * - * <a name="nested_oauth2_client_credentials"></a>The `oauth2_client_credentials` block supports: + * <a name="nested_auth_config_oauth2_client_credentials"></a>The `oauth2_client_credentials` block supports: * */ private @Nullable String audience; @@ -33,7 +33,7 @@ private ConnectionAuthConfigOauth2JwtBearerJwtClaims() {} /** * @return Value for the "aud" claim. * - * <a name="nested_oauth2_client_credentials"></a>The `oauth2_client_credentials` block supports: + * <a name="nested_auth_config_oauth2_client_credentials"></a>The `oauth2_client_credentials` block supports: * */ public Optional audience() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/outputs/ConnectionAuthConfigSshPublicKeySshClientCertPass.java b/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/outputs/ConnectionAuthConfigSshPublicKeySshClientCertPass.java index 4eca0f5c19..43cb100ea2 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/outputs/ConnectionAuthConfigSshPublicKeySshClientCertPass.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/integrationconnectors/outputs/ConnectionAuthConfigSshPublicKeySshClientCertPass.java @@ -14,7 +14,7 @@ public final class ConnectionAuthConfigSshPublicKeySshClientCertPass { * @return The resource name of the secret version in the format, * format as: projects/*/secrets/*/versions/*. * - * <a name="nested_oauth2_auth_code_flow"></a>The `oauth2_auth_code_flow` block supports: + * <a name="nested_auth_config_oauth2_auth_code_flow"></a>The `oauth2_auth_code_flow` block supports: * */ private String secretVersion; @@ -24,7 +24,7 @@ private ConnectionAuthConfigSshPublicKeySshClientCertPass() {} * @return The resource name of the secret version in the format, * format as: projects/*/secrets/*/versions/*. * - * <a name="nested_oauth2_auth_code_flow"></a>The `oauth2_auth_code_flow` block supports: + * <a name="nested_auth_config_oauth2_auth_code_flow"></a>The `oauth2_auth_code_flow` block supports: * */ public String secretVersion() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/monitoring/inputs/UptimeCheckConfigSyntheticMonitorArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/monitoring/inputs/UptimeCheckConfigSyntheticMonitorArgs.java index 908cca8621..e15cd56c35 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/monitoring/inputs/UptimeCheckConfigSyntheticMonitorArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/monitoring/inputs/UptimeCheckConfigSyntheticMonitorArgs.java @@ -18,7 +18,7 @@ public final class UptimeCheckConfigSyntheticMonitorArgs extends com.pulumi.reso * Target a Synthetic Monitor GCFv2 Instance * Structure is documented below. * - * <a name="nested_cloud_function_v2"></a>The `cloud_function_v2` block supports: + * <a name="nested_synthetic_monitor_cloud_function_v2"></a>The `cloud_function_v2` block supports: * */ @Import(name="cloudFunctionV2", required=true) @@ -28,7 +28,7 @@ public final class UptimeCheckConfigSyntheticMonitorArgs extends com.pulumi.reso * @return Target a Synthetic Monitor GCFv2 Instance * Structure is documented below. * - * <a name="nested_cloud_function_v2"></a>The `cloud_function_v2` block supports: + * <a name="nested_synthetic_monitor_cloud_function_v2"></a>The `cloud_function_v2` block supports: * */ public Output cloudFunctionV2() { @@ -63,7 +63,7 @@ public Builder(UptimeCheckConfigSyntheticMonitorArgs defaults) { * @param cloudFunctionV2 Target a Synthetic Monitor GCFv2 Instance * Structure is documented below. * - * <a name="nested_cloud_function_v2"></a>The `cloud_function_v2` block supports: + * <a name="nested_synthetic_monitor_cloud_function_v2"></a>The `cloud_function_v2` block supports: * * @return builder * @@ -77,7 +77,7 @@ public Builder cloudFunctionV2(Output email() { @@ -63,7 +63,7 @@ public Builder(AutonomousDatabasePropertiesCustomerContactArgs defaults) { * @param email The email address used by Oracle to send notifications regarding databases * and infrastructure. * - * <a name="nested_apex_details"></a>The `apex_details` block contains: + * <a name="nested_properties_apex_details"></a>The `apex_details` block contains: * * @return builder * @@ -77,7 +77,7 @@ public Builder email(Output email) { * @param email The email address used by Oracle to send notifications regarding databases * and infrastructure. * - * <a name="nested_apex_details"></a>The `apex_details` block contains: + * <a name="nested_properties_apex_details"></a>The `apex_details` block contains: * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/oracledatabase/outputs/AutonomousDatabasePropertiesCustomerContact.java b/sdk/java/src/main/java/com/pulumi/gcp/oracledatabase/outputs/AutonomousDatabasePropertiesCustomerContact.java index 2d98c0ce01..7b1616e229 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/oracledatabase/outputs/AutonomousDatabasePropertiesCustomerContact.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/oracledatabase/outputs/AutonomousDatabasePropertiesCustomerContact.java @@ -14,7 +14,7 @@ public final class AutonomousDatabasePropertiesCustomerContact { * @return The email address used by Oracle to send notifications regarding databases * and infrastructure. * - * <a name="nested_apex_details"></a>The `apex_details` block contains: + * <a name="nested_properties_apex_details"></a>The `apex_details` block contains: * */ private String email; @@ -24,7 +24,7 @@ private AutonomousDatabasePropertiesCustomerContact() {} * @return The email address used by Oracle to send notifications regarding databases * and infrastructure. * - * <a name="nested_apex_details"></a>The `apex_details` block contains: + * <a name="nested_properties_apex_details"></a>The `apex_details` block contains: * */ public String email() { 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 28cbdeba25..fa7fe36431 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 @@ -23,7 +23,7 @@ import javax.annotation.Nullable; /** - * Creates a new Google SQL Database Instance. For more information, see the [official documentation](https://cloud.google.com/sql/), + * Creates a new Google SQL Database Instance. For more information, see the [official documentation](https://cloud.google.com/sql/docs/mysql/create-instance), * or the [JSON API](https://cloud.google.com/sql/docs/admin-api/v1beta4/instances). * * > **NOTE on `gcp.sql.DatabaseInstance`:** - Second-generation instances include a diff --git a/sdk/java/src/main/java/com/pulumi/gcp/sql/inputs/DatabaseInstanceSettingsIpConfigurationArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/sql/inputs/DatabaseInstanceSettingsIpConfigurationArgs.java index bc02a9f5e0..ab9ac071bb 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/sql/inputs/DatabaseInstanceSettingsIpConfigurationArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/sql/inputs/DatabaseInstanceSettingsIpConfigurationArgs.java @@ -128,6 +128,21 @@ public Optional> serverCaMode() { return Optional.ofNullable(this.serverCaMode); } + /** + * The resource name of the server CA pool for an instance with `CUSTOMER_MANAGED_CAS_CA` as the `server_ca_mode`. + * + */ + @Import(name="serverCaPool") + private @Nullable Output serverCaPool; + + /** + * @return The resource name of the server CA pool for an instance with `CUSTOMER_MANAGED_CAS_CA` as the `server_ca_mode`. + * + */ + public Optional> serverCaPool() { + return Optional.ofNullable(this.serverCaPool); + } + /** * Specify how SSL connection should be enforced in DB connections. Supported values are `ALLOW_UNENCRYPTED_AND_ENCRYPTED`, `ENCRYPTED_ONLY`, and `TRUSTED_CLIENT_CERTIFICATE_REQUIRED` (not supported for SQL Server). See [API reference doc](https://cloud.google.com/sql/docs/postgres/admin-api/rest/v1/instances#ipconfiguration) for details. * @@ -153,6 +168,7 @@ private DatabaseInstanceSettingsIpConfigurationArgs(DatabaseInstanceSettingsIpCo this.privateNetwork = $.privateNetwork; this.pscConfigs = $.pscConfigs; this.serverCaMode = $.serverCaMode; + this.serverCaPool = $.serverCaPool; this.sslMode = $.sslMode; } @@ -335,6 +351,27 @@ public Builder serverCaMode(String serverCaMode) { return serverCaMode(Output.of(serverCaMode)); } + /** + * @param serverCaPool The resource name of the server CA pool for an instance with `CUSTOMER_MANAGED_CAS_CA` as the `server_ca_mode`. + * + * @return builder + * + */ + public Builder serverCaPool(@Nullable Output serverCaPool) { + $.serverCaPool = serverCaPool; + return this; + } + + /** + * @param serverCaPool The resource name of the server CA pool for an instance with `CUSTOMER_MANAGED_CAS_CA` as the `server_ca_mode`. + * + * @return builder + * + */ + public Builder serverCaPool(String serverCaPool) { + return serverCaPool(Output.of(serverCaPool)); + } + /** * @param sslMode Specify how SSL connection should be enforced in DB connections. Supported values are `ALLOW_UNENCRYPTED_AND_ENCRYPTED`, `ENCRYPTED_ONLY`, and `TRUSTED_CLIENT_CERTIFICATE_REQUIRED` (not supported for SQL Server). See [API reference doc](https://cloud.google.com/sql/docs/postgres/admin-api/rest/v1/instances#ipconfiguration) for details. * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/sql/outputs/DatabaseInstanceSettingsIpConfiguration.java b/sdk/java/src/main/java/com/pulumi/gcp/sql/outputs/DatabaseInstanceSettingsIpConfiguration.java index 8e29564c5d..f0ff05ee03 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/sql/outputs/DatabaseInstanceSettingsIpConfiguration.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/sql/outputs/DatabaseInstanceSettingsIpConfiguration.java @@ -52,6 +52,11 @@ public final class DatabaseInstanceSettingsIpConfiguration { * */ private @Nullable String serverCaMode; + /** + * @return The resource name of the server CA pool for an instance with `CUSTOMER_MANAGED_CAS_CA` as the `server_ca_mode`. + * + */ + private @Nullable String serverCaPool; /** * @return Specify how SSL connection should be enforced in DB connections. Supported values are `ALLOW_UNENCRYPTED_AND_ENCRYPTED`, `ENCRYPTED_ONLY`, and `TRUSTED_CLIENT_CERTIFICATE_REQUIRED` (not supported for SQL Server). See [API reference doc](https://cloud.google.com/sql/docs/postgres/admin-api/rest/v1/instances#ipconfiguration) for details. * @@ -110,6 +115,13 @@ public List pscConfigs() { public Optional serverCaMode() { return Optional.ofNullable(this.serverCaMode); } + /** + * @return The resource name of the server CA pool for an instance with `CUSTOMER_MANAGED_CAS_CA` as the `server_ca_mode`. + * + */ + public Optional serverCaPool() { + return Optional.ofNullable(this.serverCaPool); + } /** * @return Specify how SSL connection should be enforced in DB connections. Supported values are `ALLOW_UNENCRYPTED_AND_ENCRYPTED`, `ENCRYPTED_ONLY`, and `TRUSTED_CLIENT_CERTIFICATE_REQUIRED` (not supported for SQL Server). See [API reference doc](https://cloud.google.com/sql/docs/postgres/admin-api/rest/v1/instances#ipconfiguration) for details. * @@ -134,6 +146,7 @@ public static final class Builder { private @Nullable String privateNetwork; private @Nullable List pscConfigs; private @Nullable String serverCaMode; + private @Nullable String serverCaPool; private @Nullable String sslMode; public Builder() {} public Builder(DatabaseInstanceSettingsIpConfiguration defaults) { @@ -145,6 +158,7 @@ public Builder(DatabaseInstanceSettingsIpConfiguration defaults) { this.privateNetwork = defaults.privateNetwork; this.pscConfigs = defaults.pscConfigs; this.serverCaMode = defaults.serverCaMode; + this.serverCaPool = defaults.serverCaPool; this.sslMode = defaults.sslMode; } @@ -197,6 +211,12 @@ public Builder serverCaMode(@Nullable String serverCaMode) { return this; } @CustomType.Setter + public Builder serverCaPool(@Nullable String serverCaPool) { + + this.serverCaPool = serverCaPool; + return this; + } + @CustomType.Setter public Builder sslMode(@Nullable String sslMode) { this.sslMode = sslMode; @@ -211,6 +231,7 @@ public DatabaseInstanceSettingsIpConfiguration build() { _resultValue.privateNetwork = privateNetwork; _resultValue.pscConfigs = pscConfigs; _resultValue.serverCaMode = serverCaMode; + _resultValue.serverCaPool = serverCaPool; _resultValue.sslMode = sslMode; return _resultValue; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/sql/outputs/GetDatabaseInstanceSettingIpConfiguration.java b/sdk/java/src/main/java/com/pulumi/gcp/sql/outputs/GetDatabaseInstanceSettingIpConfiguration.java index 90f602717c..8e93505af3 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/sql/outputs/GetDatabaseInstanceSettingIpConfiguration.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/sql/outputs/GetDatabaseInstanceSettingIpConfiguration.java @@ -45,6 +45,11 @@ public final class GetDatabaseInstanceSettingIpConfiguration { * */ private String serverCaMode; + /** + * @return The resource name of the server CA pool for an instance with "CUSTOMER_MANAGED_CAS_CA" as the "server_ca_mode". + * + */ + private String serverCaPool; /** * @return Specify how SSL connection should be enforced in DB connections. * @@ -97,6 +102,13 @@ public List pscConfigs() { public String serverCaMode() { return this.serverCaMode; } + /** + * @return The resource name of the server CA pool for an instance with "CUSTOMER_MANAGED_CAS_CA" as the "server_ca_mode". + * + */ + public String serverCaPool() { + return this.serverCaPool; + } /** * @return Specify how SSL connection should be enforced in DB connections. * @@ -121,6 +133,7 @@ public static final class Builder { private String privateNetwork; private List pscConfigs; private String serverCaMode; + private String serverCaPool; private String sslMode; public Builder() {} public Builder(GetDatabaseInstanceSettingIpConfiguration defaults) { @@ -132,6 +145,7 @@ public Builder(GetDatabaseInstanceSettingIpConfiguration defaults) { this.privateNetwork = defaults.privateNetwork; this.pscConfigs = defaults.pscConfigs; this.serverCaMode = defaults.serverCaMode; + this.serverCaPool = defaults.serverCaPool; this.sslMode = defaults.sslMode; } @@ -198,6 +212,14 @@ public Builder serverCaMode(String serverCaMode) { return this; } @CustomType.Setter + public Builder serverCaPool(String serverCaPool) { + if (serverCaPool == null) { + throw new MissingRequiredPropertyException("GetDatabaseInstanceSettingIpConfiguration", "serverCaPool"); + } + this.serverCaPool = serverCaPool; + return this; + } + @CustomType.Setter public Builder sslMode(String sslMode) { if (sslMode == null) { throw new MissingRequiredPropertyException("GetDatabaseInstanceSettingIpConfiguration", "sslMode"); @@ -214,6 +236,7 @@ public GetDatabaseInstanceSettingIpConfiguration build() { _resultValue.privateNetwork = privateNetwork; _resultValue.pscConfigs = pscConfigs; _resultValue.serverCaMode = serverCaMode; + _resultValue.serverCaPool = serverCaPool; _resultValue.sslMode = sslMode; return _resultValue; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/sql/outputs/GetDatabaseInstancesInstanceSettingIpConfiguration.java b/sdk/java/src/main/java/com/pulumi/gcp/sql/outputs/GetDatabaseInstancesInstanceSettingIpConfiguration.java index 0ca931be8b..c81fb857a5 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/sql/outputs/GetDatabaseInstancesInstanceSettingIpConfiguration.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/sql/outputs/GetDatabaseInstancesInstanceSettingIpConfiguration.java @@ -45,6 +45,11 @@ public final class GetDatabaseInstancesInstanceSettingIpConfiguration { * */ private String serverCaMode; + /** + * @return The resource name of the server CA pool for an instance with "CUSTOMER_MANAGED_CAS_CA" as the "server_ca_mode". + * + */ + private String serverCaPool; /** * @return Specify how SSL connection should be enforced in DB connections. * @@ -97,6 +102,13 @@ public List pscConf public String serverCaMode() { return this.serverCaMode; } + /** + * @return The resource name of the server CA pool for an instance with "CUSTOMER_MANAGED_CAS_CA" as the "server_ca_mode". + * + */ + public String serverCaPool() { + return this.serverCaPool; + } /** * @return Specify how SSL connection should be enforced in DB connections. * @@ -121,6 +133,7 @@ public static final class Builder { private String privateNetwork; private List pscConfigs; private String serverCaMode; + private String serverCaPool; private String sslMode; public Builder() {} public Builder(GetDatabaseInstancesInstanceSettingIpConfiguration defaults) { @@ -132,6 +145,7 @@ public Builder(GetDatabaseInstancesInstanceSettingIpConfiguration defaults) { this.privateNetwork = defaults.privateNetwork; this.pscConfigs = defaults.pscConfigs; this.serverCaMode = defaults.serverCaMode; + this.serverCaPool = defaults.serverCaPool; this.sslMode = defaults.sslMode; } @@ -198,6 +212,14 @@ public Builder serverCaMode(String serverCaMode) { return this; } @CustomType.Setter + public Builder serverCaPool(String serverCaPool) { + if (serverCaPool == null) { + throw new MissingRequiredPropertyException("GetDatabaseInstancesInstanceSettingIpConfiguration", "serverCaPool"); + } + this.serverCaPool = serverCaPool; + return this; + } + @CustomType.Setter public Builder sslMode(String sslMode) { if (sslMode == null) { throw new MissingRequiredPropertyException("GetDatabaseInstancesInstanceSettingIpConfiguration", "sslMode"); @@ -214,6 +236,7 @@ public GetDatabaseInstancesInstanceSettingIpConfiguration build() { _resultValue.privateNetwork = privateNetwork; _resultValue.pscConfigs = pscConfigs; _resultValue.serverCaMode = serverCaMode; + _resultValue.serverCaPool = serverCaPool; _resultValue.sslMode = sslMode; return _resultValue; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/transcoder/inputs/JobConfigElementaryStreamVideoStreamArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/transcoder/inputs/JobConfigElementaryStreamVideoStreamArgs.java index 6ace49e79b..979e04d9cf 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/transcoder/inputs/JobConfigElementaryStreamVideoStreamArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/transcoder/inputs/JobConfigElementaryStreamVideoStreamArgs.java @@ -19,7 +19,7 @@ public final class JobConfigElementaryStreamVideoStreamArgs extends com.pulumi.r * H264 codec settings * Structure is documented below. * - * <a name="nested_h264"></a>The `h264` block supports: + * <a name="nested_config_elementary_streams_elementary_streams_video_stream_h264"></a>The `h264` block supports: * */ @Import(name="h264") @@ -29,7 +29,7 @@ public final class JobConfigElementaryStreamVideoStreamArgs extends com.pulumi.r * @return H264 codec settings * Structure is documented below. * - * <a name="nested_h264"></a>The `h264` block supports: + * <a name="nested_config_elementary_streams_elementary_streams_video_stream_h264"></a>The `h264` block supports: * */ public Optional> h264() { @@ -64,7 +64,7 @@ public Builder(JobConfigElementaryStreamVideoStreamArgs defaults) { * @param h264 H264 codec settings * Structure is documented below. * - * <a name="nested_h264"></a>The `h264` block supports: + * <a name="nested_config_elementary_streams_elementary_streams_video_stream_h264"></a>The `h264` block supports: * * @return builder * @@ -78,7 +78,7 @@ public Builder h264(@Nullable Output> h264() { @@ -64,7 +64,7 @@ public Builder(JobTemplateConfigElementaryStreamVideoStreamArgs defaults) { * @param h264 H264 codec settings * Structure is documented below. * - * <a name="nested_h264"></a>The `h264` block supports: + * <a name="nested_config_elementary_streams_elementary_streams_video_stream_h264"></a>The `h264` block supports: * * @return builder * @@ -78,7 +78,7 @@ public Builder h264(@Nullable Output h264() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/transcoder/outputs/JobTemplateConfigElementaryStreamVideoStream.java b/sdk/java/src/main/java/com/pulumi/gcp/transcoder/outputs/JobTemplateConfigElementaryStreamVideoStream.java index 484adc88dc..73731a7558 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/transcoder/outputs/JobTemplateConfigElementaryStreamVideoStream.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/transcoder/outputs/JobTemplateConfigElementaryStreamVideoStream.java @@ -15,7 +15,7 @@ public final class JobTemplateConfigElementaryStreamVideoStream { * @return H264 codec settings * Structure is documented below. * - * <a name="nested_h264"></a>The `h264` block supports: + * <a name="nested_config_elementary_streams_elementary_streams_video_stream_h264"></a>The `h264` block supports: * */ private @Nullable JobTemplateConfigElementaryStreamVideoStreamH264 h264; @@ -25,7 +25,7 @@ private JobTemplateConfigElementaryStreamVideoStream() {} * @return H264 codec settings * Structure is documented below. * - * <a name="nested_h264"></a>The `h264` block supports: + * <a name="nested_config_elementary_streams_elementary_streams_video_stream_h264"></a>The `h264` block supports: * */ public Optional h264() { diff --git a/sdk/nodejs/beyondcorp/index.ts b/sdk/nodejs/beyondcorp/index.ts index 53a21aa6a0..c2643b01a4 100644 --- a/sdk/nodejs/beyondcorp/index.ts +++ b/sdk/nodejs/beyondcorp/index.ts @@ -35,6 +35,11 @@ export const getAppGateway: typeof import("./getAppGateway").getAppGateway = nul export const getAppGatewayOutput: typeof import("./getAppGateway").getAppGatewayOutput = null as any; utilities.lazyLoad(exports, ["getAppGateway","getAppGatewayOutput"], () => require("./getAppGateway")); +export { SecurityGatewayArgs, SecurityGatewayState } from "./securityGateway"; +export type SecurityGateway = import("./securityGateway").SecurityGateway; +export const SecurityGateway: typeof import("./securityGateway").SecurityGateway = null as any; +utilities.lazyLoad(exports, ["SecurityGateway"], () => require("./securityGateway")); + const _module = { version: utilities.getVersion(), @@ -46,6 +51,8 @@ const _module = { return new AppConnector(name, undefined, { urn }) case "gcp:beyondcorp/appGateway:AppGateway": return new AppGateway(name, undefined, { urn }) + case "gcp:beyondcorp/securityGateway:SecurityGateway": + return new SecurityGateway(name, undefined, { urn }) default: throw new Error(`unknown resource type ${type}`); } @@ -54,3 +61,4 @@ const _module = { pulumi.runtime.registerResourceModule("gcp", "beyondcorp/appConnection", _module) pulumi.runtime.registerResourceModule("gcp", "beyondcorp/appConnector", _module) pulumi.runtime.registerResourceModule("gcp", "beyondcorp/appGateway", _module) +pulumi.runtime.registerResourceModule("gcp", "beyondcorp/securityGateway", _module) diff --git a/sdk/nodejs/beyondcorp/securityGateway.ts b/sdk/nodejs/beyondcorp/securityGateway.ts new file mode 100644 index 0000000000..15b7be8e18 --- /dev/null +++ b/sdk/nodejs/beyondcorp/securityGateway.ts @@ -0,0 +1,288 @@ +// *** WARNING: this file 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"; + +/** + * Deployment of Security Gateway. + * + * ## Example Usage + * + * ### Beyondcorp Security Gateway Basic + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const example = new gcp.beyondcorp.SecurityGateway("example", { + * securityGatewayId: "default", + * location: "global", + * displayName: "My Security Gateway resource", + * hubs: [{ + * region: "us-central1", + * }], + * }); + * ``` + * + * ## Import + * + * SecurityGateway can be imported using any of these accepted formats: + * + * * `projects/{{project}}/locations/{{location}}/securityGateways/{{security_gateway_id}}` + * + * * `{{project}}/{{location}}/{{security_gateway_id}}` + * + * * `{{location}}/{{security_gateway_id}}` + * + * When using the `pulumi import` command, SecurityGateway can be imported using one of the formats above. For example: + * + * ```sh + * $ pulumi import gcp:beyondcorp/securityGateway:SecurityGateway default projects/{{project}}/locations/{{location}}/securityGateways/{{security_gateway_id}} + * ``` + * + * ```sh + * $ pulumi import gcp:beyondcorp/securityGateway:SecurityGateway default {{project}}/{{location}}/{{security_gateway_id}} + * ``` + * + * ```sh + * $ pulumi import gcp:beyondcorp/securityGateway:SecurityGateway default {{location}}/{{security_gateway_id}} + * ``` + */ +export class SecurityGateway extends pulumi.CustomResource { + /** + * Get an existing SecurityGateway 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?: SecurityGatewayState, opts?: pulumi.CustomResourceOptions): SecurityGateway { + return new SecurityGateway(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'gcp:beyondcorp/securityGateway:SecurityGateway'; + + /** + * Returns true if the given object is an instance of SecurityGateway. 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 SecurityGateway { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === SecurityGateway.__pulumiType; + } + + /** + * Output only. Timestamp when the resource was created. + */ + public /*out*/ readonly createTime!: pulumi.Output; + /** + * Optional. An arbitrary user-provided name for the SecurityGateway. + * Cannot exceed 64 characters. + */ + public readonly displayName!: pulumi.Output; + /** + * Output only. IP addresses that will be used for establishing + * connection to the endpoints. + */ + public /*out*/ readonly externalIps!: pulumi.Output; + /** + * Optional. Map of Hubs that represents regional data path deployment with GCP region + * as a key. + * Structure is documented below. + */ + public readonly hubs!: pulumi.Output; + /** + * Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + */ + public readonly location!: pulumi.Output; + /** + * Identifier. Name of the resource. + */ + 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; + /** + * Optional. User-settable SecurityGateway resource ID. + * * Must start with a letter. + * * Must contain between 4-63 characters from `/a-z-/`. + * * Must end with a number or letter. + * + * + * - - - + */ + public readonly securityGatewayId!: pulumi.Output; + /** + * Output only. The operational state of the SecurityGateway. + * Possible values: + * STATE_UNSPECIFIED + * CREATING + * UPDATING + * DELETING + * RUNNING + * DOWN + * ERROR + */ + public /*out*/ readonly state!: pulumi.Output; + /** + * Output only. Timestamp when the resource was last modified. + */ + public /*out*/ readonly updateTime!: pulumi.Output; + + /** + * Create a SecurityGateway 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: SecurityGatewayArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: SecurityGatewayArgs | SecurityGatewayState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as SecurityGatewayState | undefined; + resourceInputs["createTime"] = state ? state.createTime : undefined; + resourceInputs["displayName"] = state ? state.displayName : undefined; + resourceInputs["externalIps"] = state ? state.externalIps : undefined; + resourceInputs["hubs"] = state ? state.hubs : undefined; + resourceInputs["location"] = state ? state.location : undefined; + resourceInputs["name"] = state ? state.name : undefined; + resourceInputs["project"] = state ? state.project : undefined; + resourceInputs["securityGatewayId"] = state ? state.securityGatewayId : undefined; + resourceInputs["state"] = state ? state.state : undefined; + resourceInputs["updateTime"] = state ? state.updateTime : undefined; + } else { + const args = argsOrState as SecurityGatewayArgs | undefined; + if ((!args || args.location === undefined) && !opts.urn) { + throw new Error("Missing required property 'location'"); + } + if ((!args || args.securityGatewayId === undefined) && !opts.urn) { + throw new Error("Missing required property 'securityGatewayId'"); + } + resourceInputs["displayName"] = args ? args.displayName : undefined; + resourceInputs["hubs"] = args ? args.hubs : undefined; + resourceInputs["location"] = args ? args.location : undefined; + resourceInputs["project"] = args ? args.project : undefined; + resourceInputs["securityGatewayId"] = args ? args.securityGatewayId : undefined; + resourceInputs["createTime"] = undefined /*out*/; + resourceInputs["externalIps"] = undefined /*out*/; + resourceInputs["name"] = undefined /*out*/; + resourceInputs["state"] = undefined /*out*/; + resourceInputs["updateTime"] = undefined /*out*/; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(SecurityGateway.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering SecurityGateway resources. + */ +export interface SecurityGatewayState { + /** + * Output only. Timestamp when the resource was created. + */ + createTime?: pulumi.Input; + /** + * Optional. An arbitrary user-provided name for the SecurityGateway. + * Cannot exceed 64 characters. + */ + displayName?: pulumi.Input; + /** + * Output only. IP addresses that will be used for establishing + * connection to the endpoints. + */ + externalIps?: pulumi.Input[]>; + /** + * Optional. Map of Hubs that represents regional data path deployment with GCP region + * as a key. + * Structure is documented below. + */ + hubs?: pulumi.Input[]>; + /** + * Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + */ + location?: pulumi.Input; + /** + * Identifier. Name of the resource. + */ + 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; + /** + * Optional. User-settable SecurityGateway resource ID. + * * Must start with a letter. + * * Must contain between 4-63 characters from `/a-z-/`. + * * Must end with a number or letter. + * + * + * - - - + */ + securityGatewayId?: pulumi.Input; + /** + * Output only. The operational state of the SecurityGateway. + * Possible values: + * STATE_UNSPECIFIED + * CREATING + * UPDATING + * DELETING + * RUNNING + * DOWN + * ERROR + */ + state?: pulumi.Input; + /** + * Output only. Timestamp when the resource was last modified. + */ + updateTime?: pulumi.Input; +} + +/** + * The set of arguments for constructing a SecurityGateway resource. + */ +export interface SecurityGatewayArgs { + /** + * Optional. An arbitrary user-provided name for the SecurityGateway. + * Cannot exceed 64 characters. + */ + displayName?: pulumi.Input; + /** + * Optional. Map of Hubs that represents regional data path deployment with GCP region + * as a key. + * Structure is documented below. + */ + hubs?: pulumi.Input[]>; + /** + * Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + */ + 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; + /** + * Optional. User-settable SecurityGateway resource ID. + * * Must start with a letter. + * * Must contain between 4-63 characters from `/a-z-/`. + * * Must end with a number or letter. + * + * + * - - - + */ + securityGatewayId: pulumi.Input; +} diff --git a/sdk/nodejs/chronicle/dataAccessLabel.ts b/sdk/nodejs/chronicle/dataAccessLabel.ts new file mode 100644 index 0000000000..e456db7a1d --- /dev/null +++ b/sdk/nodejs/chronicle/dataAccessLabel.ts @@ -0,0 +1,290 @@ +// *** WARNING: this file 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 + * + * ### Chronicle Dataaccesslabel Basic + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const example = new gcp.chronicle.DataAccessLabel("example", { + * location: "us", + * instance: "00000000-0000-0000-0000-000000000000", + * dataAccessLabelId: "label-id", + * udmQuery: "principal.hostname=\"google.com\"", + * description: "label-description", + * }); + * ``` + * + * ## Import + * + * DataAccessLabel can be imported using any of these accepted formats: + * + * * `projects/{{project}}/locations/{{location}}/instances/{{instance}}/dataAccessLabels/{{data_access_label_id}}` + * + * * `{{project}}/{{location}}/{{instance}}/{{data_access_label_id}}` + * + * * `{{location}}/{{instance}}/{{data_access_label_id}}` + * + * When using the `pulumi import` command, DataAccessLabel can be imported using one of the formats above. For example: + * + * ```sh + * $ pulumi import gcp:chronicle/dataAccessLabel:DataAccessLabel default projects/{{project}}/locations/{{location}}/instances/{{instance}}/dataAccessLabels/{{data_access_label_id}} + * ``` + * + * ```sh + * $ pulumi import gcp:chronicle/dataAccessLabel:DataAccessLabel default {{project}}/{{location}}/{{instance}}/{{data_access_label_id}} + * ``` + * + * ```sh + * $ pulumi import gcp:chronicle/dataAccessLabel:DataAccessLabel default {{location}}/{{instance}}/{{data_access_label_id}} + * ``` + */ +export class DataAccessLabel extends pulumi.CustomResource { + /** + * Get an existing DataAccessLabel 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?: DataAccessLabelState, opts?: pulumi.CustomResourceOptions): DataAccessLabel { + return new DataAccessLabel(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'gcp:chronicle/dataAccessLabel:DataAccessLabel'; + + /** + * Returns true if the given object is an instance of DataAccessLabel. 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 DataAccessLabel { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === DataAccessLabel.__pulumiType; + } + + /** + * Output only. The user who created the data access label. + */ + public /*out*/ readonly author!: pulumi.Output; + /** + * Output only. The time at which the data access label was created. + */ + public /*out*/ readonly createTime!: pulumi.Output; + /** + * Required. The ID to use for the data access label, which will become the label's + * display name and the final component of the label's resource name. It must + * only contain ASCII lowercase letters, numbers, and dashes; it must begin + * with a letter, and it must not exceed 1000 characters. + * + * + * - - - + */ + public readonly dataAccessLabelId!: pulumi.Output; + /** + * Optional. A description of the data access label for a human reader. + */ + public readonly description!: pulumi.Output; + /** + * Output only. The short name displayed for the label as it appears on event data. This is same as data access label id. + */ + public /*out*/ readonly displayName!: pulumi.Output; + /** + * The unique identifier for the Chronicle instance, which is the same as the customer ID. + */ + public readonly instance!: pulumi.Output; + /** + * Output only. The user who last updated the data access label. + */ + public /*out*/ readonly lastEditor!: 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; + /** + * The unique resource name of the data access label. This unique identifier is generated using values provided for the URL parameters. + * Format: + * projects/{project}/locations/{location}/instances/{instance}/dataAccessLabels/{data_access_label_id} + */ + 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; + /** + * A UDM query over event data. + */ + public readonly udmQuery!: pulumi.Output; + /** + * Output only. The time at which the data access label was last updated. + */ + public /*out*/ readonly updateTime!: pulumi.Output; + + /** + * Create a DataAccessLabel 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: DataAccessLabelArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: DataAccessLabelArgs | DataAccessLabelState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as DataAccessLabelState | undefined; + resourceInputs["author"] = state ? state.author : undefined; + resourceInputs["createTime"] = state ? state.createTime : undefined; + resourceInputs["dataAccessLabelId"] = state ? state.dataAccessLabelId : undefined; + resourceInputs["description"] = state ? state.description : undefined; + resourceInputs["displayName"] = state ? state.displayName : undefined; + resourceInputs["instance"] = state ? state.instance : undefined; + resourceInputs["lastEditor"] = state ? state.lastEditor : undefined; + resourceInputs["location"] = state ? state.location : undefined; + resourceInputs["name"] = state ? state.name : undefined; + resourceInputs["project"] = state ? state.project : undefined; + resourceInputs["udmQuery"] = state ? state.udmQuery : undefined; + resourceInputs["updateTime"] = state ? state.updateTime : undefined; + } else { + const args = argsOrState as DataAccessLabelArgs | undefined; + if ((!args || args.dataAccessLabelId === undefined) && !opts.urn) { + throw new Error("Missing required property 'dataAccessLabelId'"); + } + 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.udmQuery === undefined) && !opts.urn) { + throw new Error("Missing required property 'udmQuery'"); + } + resourceInputs["dataAccessLabelId"] = args ? args.dataAccessLabelId : undefined; + resourceInputs["description"] = args ? args.description : undefined; + resourceInputs["instance"] = args ? args.instance : undefined; + resourceInputs["location"] = args ? args.location : undefined; + resourceInputs["project"] = args ? args.project : undefined; + resourceInputs["udmQuery"] = args ? args.udmQuery : undefined; + resourceInputs["author"] = undefined /*out*/; + resourceInputs["createTime"] = undefined /*out*/; + resourceInputs["displayName"] = undefined /*out*/; + resourceInputs["lastEditor"] = undefined /*out*/; + resourceInputs["name"] = undefined /*out*/; + resourceInputs["updateTime"] = undefined /*out*/; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(DataAccessLabel.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering DataAccessLabel resources. + */ +export interface DataAccessLabelState { + /** + * Output only. The user who created the data access label. + */ + author?: pulumi.Input; + /** + * Output only. The time at which the data access label was created. + */ + createTime?: pulumi.Input; + /** + * Required. The ID to use for the data access label, which will become the label's + * display name and the final component of the label's resource name. It must + * only contain ASCII lowercase letters, numbers, and dashes; it must begin + * with a letter, and it must not exceed 1000 characters. + * + * + * - - - + */ + dataAccessLabelId?: pulumi.Input; + /** + * Optional. A description of the data access label for a human reader. + */ + description?: pulumi.Input; + /** + * Output only. The short name displayed for the label as it appears on event data. This is same as data access label id. + */ + displayName?: pulumi.Input; + /** + * The unique identifier for the Chronicle instance, which is the same as the customer ID. + */ + instance?: pulumi.Input; + /** + * Output only. The user who last updated the data access label. + */ + lastEditor?: 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; + /** + * The unique resource name of the data access label. This unique identifier is generated using values provided for the URL parameters. + * Format: + * projects/{project}/locations/{location}/instances/{instance}/dataAccessLabels/{data_access_label_id} + */ + 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; + /** + * A UDM query over event data. + */ + udmQuery?: pulumi.Input; + /** + * Output only. The time at which the data access label was last updated. + */ + updateTime?: pulumi.Input; +} + +/** + * The set of arguments for constructing a DataAccessLabel resource. + */ +export interface DataAccessLabelArgs { + /** + * Required. The ID to use for the data access label, which will become the label's + * display name and the final component of the label's resource name. It must + * only contain ASCII lowercase letters, numbers, and dashes; it must begin + * with a letter, and it must not exceed 1000 characters. + * + * + * - - - + */ + dataAccessLabelId: pulumi.Input; + /** + * Optional. A description of the data access label for a human reader. + */ + description?: 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; + /** + * The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + */ + project?: pulumi.Input; + /** + * A UDM query over event data. + */ + udmQuery: pulumi.Input; +} diff --git a/sdk/nodejs/chronicle/dataAccessScope.ts b/sdk/nodejs/chronicle/dataAccessScope.ts new file mode 100644 index 0000000000..cd9e07a000 --- /dev/null +++ b/sdk/nodejs/chronicle/dataAccessScope.ts @@ -0,0 +1,469 @@ +// *** WARNING: this file 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 Dataaccessscope With Logtype + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const example = new gcp.chronicle.DataAccessScope("example", { + * location: "us", + * instance: "00000000-0000-0000-0000-000000000000", + * dataAccessScopeId: "scope-id", + * description: "scope-description", + * allowedDataAccessLabels: [ + * { + * logType: "GCP_CLOUDAUDIT", + * }, + * { + * logType: "GITHUB", + * }, + * ], + * }); + * ``` + * ### Chronicle Dataaccessscope With Dataaccesslabel + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const customDataAccessLabel = new gcp.chronicle.DataAccessLabel("custom_data_access_label", { + * location: "us", + * instance: "00000000-0000-0000-0000-000000000000", + * dataAccessLabelId: "label-id", + * udmQuery: "principal.hostname=\"google.com\"", + * }); + * const example = new gcp.chronicle.DataAccessScope("example", { + * location: "us", + * instance: "00000000-0000-0000-0000-000000000000", + * dataAccessScopeId: "scope-id", + * description: "scope-description", + * allowedDataAccessLabels: [{ + * dataAccessLabel: googleChronicleDataAccessLabel.customDataAccessLabel.dataAccessLabelId, + * }], + * }); + * ``` + * ### Chronicle Dataaccessscope With Asset Namespace + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const example = new gcp.chronicle.DataAccessScope("example", { + * location: "us", + * instance: "00000000-0000-0000-0000-000000000000", + * dataAccessScopeId: "scope-id", + * description: "scope-description", + * allowedDataAccessLabels: [{ + * assetNamespace: "my-namespace", + * }], + * }); + * ``` + * ### Chronicle Dataaccessscope With Ingestion Label + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const example = new gcp.chronicle.DataAccessScope("example", { + * location: "us", + * instance: "00000000-0000-0000-0000-000000000000", + * dataAccessScopeId: "scope-id", + * description: "scope-description", + * allowedDataAccessLabels: [{ + * ingestionLabel: { + * ingestionLabelKey: "ingestion_key", + * ingestionLabelValue: "ingestion_value", + * }, + * }], + * }); + * ``` + * ### Chronicle Dataaccessscope With Denied Labels + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const customDataAccessLabel = new gcp.chronicle.DataAccessLabel("custom_data_access_label", { + * location: "us", + * instance: "00000000-0000-0000-0000-000000000000", + * dataAccessLabelId: "label-id", + * udmQuery: "principal.hostname=\"google.com\"", + * }); + * const example = new gcp.chronicle.DataAccessScope("example", { + * location: "us", + * instance: "00000000-0000-0000-0000-000000000000", + * dataAccessScopeId: "scope-id", + * description: "scope-description", + * allowAll: true, + * deniedDataAccessLabels: [ + * { + * logType: "GCP_CLOUDAUDIT", + * }, + * { + * dataAccessLabel: googleChronicleDataAccessLabel.customDataAccessLabel.dataAccessLabelId, + * }, + * { + * ingestionLabel: { + * ingestionLabelKey: "ingestion_key", + * ingestionLabelValue: "ingestion_value", + * }, + * }, + * { + * assetNamespace: "my-namespace", + * }, + * ], + * }); + * ``` + * + * ## Import + * + * DataAccessScope can be imported using any of these accepted formats: + * + * * `projects/{{project}}/locations/{{location}}/instances/{{instance}}/dataAccessScopes/{{data_access_scope_id}}` + * + * * `{{project}}/{{location}}/{{instance}}/{{data_access_scope_id}}` + * + * * `{{location}}/{{instance}}/{{data_access_scope_id}}` + * + * When using the `pulumi import` command, DataAccessScope can be imported using one of the formats above. For example: + * + * ```sh + * $ pulumi import gcp:chronicle/dataAccessScope:DataAccessScope default projects/{{project}}/locations/{{location}}/instances/{{instance}}/dataAccessScopes/{{data_access_scope_id}} + * ``` + * + * ```sh + * $ pulumi import gcp:chronicle/dataAccessScope:DataAccessScope default {{project}}/{{location}}/{{instance}}/{{data_access_scope_id}} + * ``` + * + * ```sh + * $ pulumi import gcp:chronicle/dataAccessScope:DataAccessScope default {{location}}/{{instance}}/{{data_access_scope_id}} + * ``` + */ +export class DataAccessScope extends pulumi.CustomResource { + /** + * Get an existing DataAccessScope 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?: DataAccessScopeState, opts?: pulumi.CustomResourceOptions): DataAccessScope { + return new DataAccessScope(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'gcp:chronicle/dataAccessScope:DataAccessScope'; + + /** + * Returns true if the given object is an instance of DataAccessScope. 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 DataAccessScope { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === DataAccessScope.__pulumiType; + } + + /** + * Optional. Whether or not the scope allows all labels, allowAll and + * allowedDataAccessLabels are mutually exclusive and one of them must be + * present. deniedDataAccessLabels can still be used along with allow_all. + * When combined with denied_data_access_labels, access will be granted to all + * data that doesn't have labels mentioned in denied_data_access_labels. E.g.: + * A customer with scope with denied labels A and B and allowAll will be able + * to see all data except data labeled with A and data labeled with B and data + * with labels A and B. + */ + public readonly allowAll!: pulumi.Output; + /** + * The allowed labels for the scope. There has to be at + * least one label allowed for the scope to be valid. + * The logical operator for evaluation of the allowed labels is OR. + * Either allowAll or allowedDataAccessLabels needs to be provided. + * E.g.: A customer with scope with allowed labels A and B will be able + * to see data with labeled with A or B or (A and B). + * Structure is documented below. + */ + public readonly allowedDataAccessLabels!: pulumi.Output; + /** + * Output only. The user who created the data access scope. + */ + public /*out*/ readonly author!: pulumi.Output; + /** + * Output only. The time at which the data access scope was created. + */ + public /*out*/ readonly createTime!: pulumi.Output; + /** + * Required. The user provided scope id which will become the last part of the name + * of the scope resource. + * Needs to be compliant with https://google.aip.dev/122 + * + * + * - - - + */ + public readonly dataAccessScopeId!: pulumi.Output; + /** + * Optional. The denied labels for the scope. + * The logical operator for evaluation of the denied labels is AND. + * E.g.: A customer with scope with denied labels A and B won't be able + * to see data labeled with A and data labeled with B + * and data with labels A and B. + * Structure is documented below. + */ + public readonly deniedDataAccessLabels!: pulumi.Output; + /** + * Optional. A description of the data access scope for a human reader. + */ + public readonly description!: pulumi.Output; + /** + * Output only. The name to be used for display to customers of the data access scope. + */ + public /*out*/ readonly displayName!: pulumi.Output; + /** + * The unique identifier for the Chronicle instance, which is the same as the customer ID. + */ + public readonly instance!: pulumi.Output; + /** + * Output only. The user who last updated the data access scope. + */ + public /*out*/ readonly lastEditor!: 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; + /** + * The unique full name of the data access scope. This unique identifier is generated using values provided for the URL parameters. + * Format: + * projects/{project}/locations/{location}/instances/{instance}/dataAccessScopes/{data_access_scope_id} + */ + 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; + /** + * Output only. The time at which the data access scope was last updated. + */ + public /*out*/ readonly updateTime!: pulumi.Output; + + /** + * Create a DataAccessScope 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: DataAccessScopeArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: DataAccessScopeArgs | DataAccessScopeState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as DataAccessScopeState | undefined; + resourceInputs["allowAll"] = state ? state.allowAll : undefined; + resourceInputs["allowedDataAccessLabels"] = state ? state.allowedDataAccessLabels : undefined; + resourceInputs["author"] = state ? state.author : undefined; + resourceInputs["createTime"] = state ? state.createTime : undefined; + resourceInputs["dataAccessScopeId"] = state ? state.dataAccessScopeId : undefined; + resourceInputs["deniedDataAccessLabels"] = state ? state.deniedDataAccessLabels : undefined; + resourceInputs["description"] = state ? state.description : undefined; + resourceInputs["displayName"] = state ? state.displayName : undefined; + resourceInputs["instance"] = state ? state.instance : undefined; + resourceInputs["lastEditor"] = state ? state.lastEditor : undefined; + resourceInputs["location"] = state ? state.location : undefined; + resourceInputs["name"] = state ? state.name : undefined; + resourceInputs["project"] = state ? state.project : undefined; + resourceInputs["updateTime"] = state ? state.updateTime : undefined; + } else { + const args = argsOrState as DataAccessScopeArgs | undefined; + if ((!args || args.dataAccessScopeId === undefined) && !opts.urn) { + throw new Error("Missing required property 'dataAccessScopeId'"); + } + 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'"); + } + resourceInputs["allowAll"] = args ? args.allowAll : undefined; + resourceInputs["allowedDataAccessLabels"] = args ? args.allowedDataAccessLabels : undefined; + resourceInputs["dataAccessScopeId"] = args ? args.dataAccessScopeId : undefined; + resourceInputs["deniedDataAccessLabels"] = args ? args.deniedDataAccessLabels : undefined; + resourceInputs["description"] = args ? args.description : undefined; + resourceInputs["instance"] = args ? args.instance : undefined; + resourceInputs["location"] = args ? args.location : undefined; + resourceInputs["project"] = args ? args.project : undefined; + resourceInputs["author"] = undefined /*out*/; + resourceInputs["createTime"] = undefined /*out*/; + resourceInputs["displayName"] = undefined /*out*/; + resourceInputs["lastEditor"] = undefined /*out*/; + resourceInputs["name"] = undefined /*out*/; + resourceInputs["updateTime"] = undefined /*out*/; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(DataAccessScope.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering DataAccessScope resources. + */ +export interface DataAccessScopeState { + /** + * Optional. Whether or not the scope allows all labels, allowAll and + * allowedDataAccessLabels are mutually exclusive and one of them must be + * present. deniedDataAccessLabels can still be used along with allow_all. + * When combined with denied_data_access_labels, access will be granted to all + * data that doesn't have labels mentioned in denied_data_access_labels. E.g.: + * A customer with scope with denied labels A and B and allowAll will be able + * to see all data except data labeled with A and data labeled with B and data + * with labels A and B. + */ + allowAll?: pulumi.Input; + /** + * The allowed labels for the scope. There has to be at + * least one label allowed for the scope to be valid. + * The logical operator for evaluation of the allowed labels is OR. + * Either allowAll or allowedDataAccessLabels needs to be provided. + * E.g.: A customer with scope with allowed labels A and B will be able + * to see data with labeled with A or B or (A and B). + * Structure is documented below. + */ + allowedDataAccessLabels?: pulumi.Input[]>; + /** + * Output only. The user who created the data access scope. + */ + author?: pulumi.Input; + /** + * Output only. The time at which the data access scope was created. + */ + createTime?: pulumi.Input; + /** + * Required. The user provided scope id which will become the last part of the name + * of the scope resource. + * Needs to be compliant with https://google.aip.dev/122 + * + * + * - - - + */ + dataAccessScopeId?: pulumi.Input; + /** + * Optional. The denied labels for the scope. + * The logical operator for evaluation of the denied labels is AND. + * E.g.: A customer with scope with denied labels A and B won't be able + * to see data labeled with A and data labeled with B + * and data with labels A and B. + * Structure is documented below. + */ + deniedDataAccessLabels?: pulumi.Input[]>; + /** + * Optional. A description of the data access scope for a human reader. + */ + description?: pulumi.Input; + /** + * Output only. The name to be used for display to customers of the data access scope. + */ + displayName?: pulumi.Input; + /** + * The unique identifier for the Chronicle instance, which is the same as the customer ID. + */ + instance?: pulumi.Input; + /** + * Output only. The user who last updated the data access scope. + */ + lastEditor?: 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; + /** + * The unique full name of the data access scope. This unique identifier is generated using values provided for the URL parameters. + * Format: + * projects/{project}/locations/{location}/instances/{instance}/dataAccessScopes/{data_access_scope_id} + */ + 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; + /** + * Output only. The time at which the data access scope was last updated. + */ + updateTime?: pulumi.Input; +} + +/** + * The set of arguments for constructing a DataAccessScope resource. + */ +export interface DataAccessScopeArgs { + /** + * Optional. Whether or not the scope allows all labels, allowAll and + * allowedDataAccessLabels are mutually exclusive and one of them must be + * present. deniedDataAccessLabels can still be used along with allow_all. + * When combined with denied_data_access_labels, access will be granted to all + * data that doesn't have labels mentioned in denied_data_access_labels. E.g.: + * A customer with scope with denied labels A and B and allowAll will be able + * to see all data except data labeled with A and data labeled with B and data + * with labels A and B. + */ + allowAll?: pulumi.Input; + /** + * The allowed labels for the scope. There has to be at + * least one label allowed for the scope to be valid. + * The logical operator for evaluation of the allowed labels is OR. + * Either allowAll or allowedDataAccessLabels needs to be provided. + * E.g.: A customer with scope with allowed labels A and B will be able + * to see data with labeled with A or B or (A and B). + * Structure is documented below. + */ + allowedDataAccessLabels?: pulumi.Input[]>; + /** + * Required. The user provided scope id which will become the last part of the name + * of the scope resource. + * Needs to be compliant with https://google.aip.dev/122 + * + * + * - - - + */ + dataAccessScopeId: pulumi.Input; + /** + * Optional. The denied labels for the scope. + * The logical operator for evaluation of the denied labels is AND. + * E.g.: A customer with scope with denied labels A and B won't be able + * to see data labeled with A and data labeled with B + * and data with labels A and B. + * Structure is documented below. + */ + deniedDataAccessLabels?: pulumi.Input[]>; + /** + * Optional. A description of the data access scope for a human reader. + */ + description?: 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; + /** + * 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/chronicle/index.ts b/sdk/nodejs/chronicle/index.ts index 42de97ca03..1fd981704c 100644 --- a/sdk/nodejs/chronicle/index.ts +++ b/sdk/nodejs/chronicle/index.ts @@ -5,6 +5,16 @@ import * as pulumi from "@pulumi/pulumi"; import * as utilities from "../utilities"; // Export members: +export { DataAccessLabelArgs, DataAccessLabelState } from "./dataAccessLabel"; +export type DataAccessLabel = import("./dataAccessLabel").DataAccessLabel; +export const DataAccessLabel: typeof import("./dataAccessLabel").DataAccessLabel = null as any; +utilities.lazyLoad(exports, ["DataAccessLabel"], () => require("./dataAccessLabel")); + +export { DataAccessScopeArgs, DataAccessScopeState } from "./dataAccessScope"; +export type DataAccessScope = import("./dataAccessScope").DataAccessScope; +export const DataAccessScope: typeof import("./dataAccessScope").DataAccessScope = null as any; +utilities.lazyLoad(exports, ["DataAccessScope"], () => require("./dataAccessScope")); + export { WatchlistArgs, WatchlistState } from "./watchlist"; export type Watchlist = import("./watchlist").Watchlist; export const Watchlist: typeof import("./watchlist").Watchlist = null as any; @@ -15,6 +25,10 @@ const _module = { version: utilities.getVersion(), construct: (name: string, type: string, urn: string): pulumi.Resource => { switch (type) { + case "gcp:chronicle/dataAccessLabel:DataAccessLabel": + return new DataAccessLabel(name, undefined, { urn }) + case "gcp:chronicle/dataAccessScope:DataAccessScope": + return new DataAccessScope(name, undefined, { urn }) case "gcp:chronicle/watchlist:Watchlist": return new Watchlist(name, undefined, { urn }) default: @@ -22,4 +36,6 @@ const _module = { } }, }; +pulumi.runtime.registerResourceModule("gcp", "chronicle/dataAccessLabel", _module) +pulumi.runtime.registerResourceModule("gcp", "chronicle/dataAccessScope", _module) pulumi.runtime.registerResourceModule("gcp", "chronicle/watchlist", _module) diff --git a/sdk/nodejs/chronicle/watchlist.ts b/sdk/nodejs/chronicle/watchlist.ts index e3a2aebc08..87f5eb41d9 100644 --- a/sdk/nodejs/chronicle/watchlist.ts +++ b/sdk/nodejs/chronicle/watchlist.ts @@ -18,7 +18,27 @@ import * as utilities from "../utilities"; * const example = new gcp.chronicle.Watchlist("example", { * location: "us", * instance: "00000000-0000-0000-0000-000000000000", - * watchlistId: "watchlist-name", + * watchlistId: "watchlist-id", + * description: "watchlist-description", + * displayName: "watchlist_name", + * multiplyingFactor: 1, + * entityPopulationMechanism: { + * manual: {}, + * }, + * watchlistUserPreferences: { + * pinned: true, + * }, + * }); + * ``` + * ### Chronicle Watchlist Without Id + * + * ```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", * description: "watchlist-description", * displayName: "watchlist-name", * multiplyingFactor: 1, @@ -131,10 +151,8 @@ export class Watchlist extends pulumi.CustomResource { */ 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-/. + * 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; /** @@ -182,9 +200,6 @@ export class Watchlist extends pulumi.CustomResource { 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; @@ -256,10 +271,8 @@ export interface WatchlistState { */ 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-/. + * 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; /** @@ -301,12 +314,10 @@ export interface WatchlistArgs { 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-/. + * 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; + watchlistId?: pulumi.Input; /** * A collection of user preferences for watchlist UI configuration. */ diff --git a/sdk/nodejs/cloudquota/index.ts b/sdk/nodejs/cloudquota/index.ts index 6a4d1abaef..835f6ec9c1 100644 --- a/sdk/nodejs/cloudquota/index.ts +++ b/sdk/nodejs/cloudquota/index.ts @@ -15,6 +15,11 @@ export const getSQuotaInfos: typeof import("./getSQuotaInfos").getSQuotaInfos = export const getSQuotaInfosOutput: typeof import("./getSQuotaInfos").getSQuotaInfosOutput = null as any; utilities.lazyLoad(exports, ["getSQuotaInfos","getSQuotaInfosOutput"], () => require("./getSQuotaInfos")); +export { SQuotaAdjusterSettingsArgs, SQuotaAdjusterSettingsState } from "./squotaAdjusterSettings"; +export type SQuotaAdjusterSettings = import("./squotaAdjusterSettings").SQuotaAdjusterSettings; +export const SQuotaAdjusterSettings: typeof import("./squotaAdjusterSettings").SQuotaAdjusterSettings = null as any; +utilities.lazyLoad(exports, ["SQuotaAdjusterSettings"], () => require("./squotaAdjusterSettings")); + export { SQuotaPreferenceArgs, SQuotaPreferenceState } from "./squotaPreference"; export type SQuotaPreference = import("./squotaPreference").SQuotaPreference; export const SQuotaPreference: typeof import("./squotaPreference").SQuotaPreference = null as any; @@ -25,6 +30,8 @@ const _module = { version: utilities.getVersion(), construct: (name: string, type: string, urn: string): pulumi.Resource => { switch (type) { + case "gcp:cloudquota/sQuotaAdjusterSettings:SQuotaAdjusterSettings": + return new SQuotaAdjusterSettings(name, undefined, { urn }) case "gcp:cloudquota/sQuotaPreference:SQuotaPreference": return new SQuotaPreference(name, undefined, { urn }) default: @@ -32,4 +39,5 @@ const _module = { } }, }; +pulumi.runtime.registerResourceModule("gcp", "cloudquota/sQuotaAdjusterSettings", _module) pulumi.runtime.registerResourceModule("gcp", "cloudquota/sQuotaPreference", _module) diff --git a/sdk/nodejs/cloudquota/squotaAdjusterSettings.ts b/sdk/nodejs/cloudquota/squotaAdjusterSettings.ts new file mode 100644 index 0000000000..e7ac9b502f --- /dev/null +++ b/sdk/nodejs/cloudquota/squotaAdjusterSettings.ts @@ -0,0 +1,161 @@ +// *** WARNING: this file 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 + * + * ### Cloudquotas Quota Adjuster Settings Basic + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const adjusterSettings = new gcp.cloudquota.SQuotaAdjusterSettings("adjuster_settings", { + * parent: "projects/104740170505", + * enablement: "ENABLED", + * }); + * ``` + * + * ## Import + * + * QuotaAdjusterSettings can be imported using any of these accepted formats: + * + * * `{{parent}}/locations/global/quotaAdjusterSettings` + * + * When using the `pulumi import` command, QuotaAdjusterSettings can be imported using one of the formats above. For example: + * + * ```sh + * $ pulumi import gcp:cloudquota/sQuotaAdjusterSettings:SQuotaAdjusterSettings default {{parent}}/locations/global/quotaAdjusterSettings + * ``` + */ +export class SQuotaAdjusterSettings extends pulumi.CustomResource { + /** + * Get an existing SQuotaAdjusterSettings 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?: SQuotaAdjusterSettingsState, opts?: pulumi.CustomResourceOptions): SQuotaAdjusterSettings { + return new SQuotaAdjusterSettings(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'gcp:cloudquota/sQuotaAdjusterSettings:SQuotaAdjusterSettings'; + + /** + * Returns true if the given object is an instance of SQuotaAdjusterSettings. 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 SQuotaAdjusterSettings { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === SQuotaAdjusterSettings.__pulumiType; + } + + /** + * Fields to capture the hierarchy enablement. + * The container (org/folder/project) that determines if the quota adjuster is set for this project/folder/org. We use the nearest-ancestor to determine the effective container. + * The nearest ancestor (including this container) with `enabled` set (either true or false) will be returned. + */ + public /*out*/ readonly effectiveContainer!: pulumi.Output; + /** + * Based on the effective container`s setting above, determines Whether this container has the quota adjuster enabled. + */ + public /*out*/ readonly effectiveEnablement!: pulumi.Output; + /** + * Required. The configured value of the enablement at the given resource. + * Possible values are: `ENABLED`, `DISABLED`. + */ + public readonly enablement!: pulumi.Output; + /** + * The parent of the quota preference. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]". + * + * + * - - - + */ + public readonly parent!: pulumi.Output; + + /** + * Create a SQuotaAdjusterSettings 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: SQuotaAdjusterSettingsArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: SQuotaAdjusterSettingsArgs | SQuotaAdjusterSettingsState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as SQuotaAdjusterSettingsState | undefined; + resourceInputs["effectiveContainer"] = state ? state.effectiveContainer : undefined; + resourceInputs["effectiveEnablement"] = state ? state.effectiveEnablement : undefined; + resourceInputs["enablement"] = state ? state.enablement : undefined; + resourceInputs["parent"] = state ? state.parent : undefined; + } else { + const args = argsOrState as SQuotaAdjusterSettingsArgs | undefined; + if ((!args || args.enablement === undefined) && !opts.urn) { + throw new Error("Missing required property 'enablement'"); + } + resourceInputs["enablement"] = args ? args.enablement : undefined; + resourceInputs["parent"] = args ? args.parent : undefined; + resourceInputs["effectiveContainer"] = undefined /*out*/; + resourceInputs["effectiveEnablement"] = undefined /*out*/; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(SQuotaAdjusterSettings.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering SQuotaAdjusterSettings resources. + */ +export interface SQuotaAdjusterSettingsState { + /** + * Fields to capture the hierarchy enablement. + * The container (org/folder/project) that determines if the quota adjuster is set for this project/folder/org. We use the nearest-ancestor to determine the effective container. + * The nearest ancestor (including this container) with `enabled` set (either true or false) will be returned. + */ + effectiveContainer?: pulumi.Input; + /** + * Based on the effective container`s setting above, determines Whether this container has the quota adjuster enabled. + */ + effectiveEnablement?: pulumi.Input; + /** + * Required. The configured value of the enablement at the given resource. + * Possible values are: `ENABLED`, `DISABLED`. + */ + enablement?: pulumi.Input; + /** + * The parent of the quota preference. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]". + * + * + * - - - + */ + parent?: pulumi.Input; +} + +/** + * The set of arguments for constructing a SQuotaAdjusterSettings resource. + */ +export interface SQuotaAdjusterSettingsArgs { + /** + * Required. The configured value of the enablement at the given resource. + * Possible values are: `ENABLED`, `DISABLED`. + */ + enablement: pulumi.Input; + /** + * The parent of the quota preference. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]". + * + * + * - - - + */ + parent?: pulumi.Input; +} diff --git a/sdk/nodejs/compute/instanceGroupManager.ts b/sdk/nodejs/compute/instanceGroupManager.ts index 17e85532df..bfeded836b 100644 --- a/sdk/nodejs/compute/instanceGroupManager.ts +++ b/sdk/nodejs/compute/instanceGroupManager.ts @@ -87,7 +87,7 @@ import * as utilities from "../utilities"; * }); * ``` * - * ### With Standby Policy (`Google-Beta` Provider) + * ### With Standby Policy (`Google` Provider) * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; @@ -251,7 +251,7 @@ export class InstanceGroupManager extends pulumi.CustomResource { */ public /*out*/ readonly selfLink!: pulumi.Output; /** - * The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + * The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). */ public readonly standbyPolicy!: pulumi.Output; /** @@ -494,7 +494,7 @@ export interface InstanceGroupManagerState { */ selfLink?: pulumi.Input; /** - * The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + * The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). */ standbyPolicy?: pulumi.Input; /** @@ -630,7 +630,7 @@ export interface InstanceGroupManagerArgs { */ project?: pulumi.Input; /** - * The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + * The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). */ standbyPolicy?: pulumi.Input; /** diff --git a/sdk/nodejs/compute/regionInstanceGroupManager.ts b/sdk/nodejs/compute/regionInstanceGroupManager.ts index 419b5f4c54..6c4cf7461c 100644 --- a/sdk/nodejs/compute/regionInstanceGroupManager.ts +++ b/sdk/nodejs/compute/regionInstanceGroupManager.ts @@ -94,7 +94,7 @@ import * as utilities from "../utilities"; * }); * ``` * - * ### With Standby Policy (`Google-Beta` Provider) + * ### With Standby Policy (`Google` Provider) * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; @@ -257,7 +257,7 @@ export class RegionInstanceGroupManager extends pulumi.CustomResource { */ public /*out*/ readonly selfLink!: pulumi.Output; /** - * The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + * The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). */ public readonly standbyPolicy!: pulumi.Output; /** @@ -514,7 +514,7 @@ export interface RegionInstanceGroupManagerState { */ selfLink?: pulumi.Input; /** - * The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + * The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). */ standbyPolicy?: pulumi.Input; /** @@ -661,7 +661,7 @@ export interface RegionInstanceGroupManagerArgs { */ region?: pulumi.Input; /** - * The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + * The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). */ standbyPolicy?: pulumi.Input; /** diff --git a/sdk/nodejs/developerconnect/connection.ts b/sdk/nodejs/developerconnect/connection.ts index aaf51f718b..0f0853f5f1 100644 --- a/sdk/nodejs/developerconnect/connection.ts +++ b/sdk/nodejs/developerconnect/connection.ts @@ -7,6 +7,8 @@ import * as outputs from "../types/output"; import * as utilities from "../utilities"; /** + * A connection for GitHub, GitHub Enterprise, GitLab, and GitLab Enterprise. + * * ## Example Usage * * ### Developer Connect Connection New @@ -93,7 +95,183 @@ import * as utilities from "../utilities"; * }, * }); * ``` + * ### Developer Connect Connection Github + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; * + * const my_connection = new gcp.developerconnect.Connection("my-connection", { + * location: "us-central1", + * connectionId: "tf-test-connection", + * githubConfig: { + * githubApp: "DEVELOPER_CONNECT", + * authorizerCredential: { + * oauthTokenSecretVersion: "projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1", + * }, + * }, + * }); + * ``` + * ### Developer Connect Connection Github Doc + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * import * as std from "@pulumi/std"; + * + * const github_token_secret = new gcp.secretmanager.Secret("github-token-secret", { + * secretId: "github-token-secret", + * replication: { + * auto: {}, + * }, + * }); + * const github_token_secret_version = new gcp.secretmanager.SecretVersion("github-token-secret-version", { + * secret: github_token_secret.id, + * secretData: std.file({ + * input: "my-github-token.txt", + * }).then(invoke => invoke.result), + * }); + * const p4sa-secretAccessor = gcp.organizations.getIAMPolicy({ + * bindings: [{ + * role: "roles/secretmanager.secretAccessor", + * members: ["serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com"], + * }], + * }); + * const policy = new gcp.secretmanager.SecretIamPolicy("policy", { + * secretId: github_token_secret.secretId, + * policyData: p4sa_secretAccessor.then(p4sa_secretAccessor => p4sa_secretAccessor.policyData), + * }); + * const my_connection = new gcp.developerconnect.Connection("my-connection", { + * location: "us-central1", + * connectionId: "my-connection", + * githubConfig: { + * githubApp: "DEVELOPER_CONNECT", + * appInstallationId: "123123", + * authorizerCredential: { + * oauthTokenSecretVersion: github_token_secret_version.id, + * }, + * }, + * }); + * ``` + * ### Developer Connect Connection Github Enterprise + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const my_connection = new gcp.developerconnect.Connection("my-connection", { + * location: "us-central1", + * connectionId: "tf-test-connection", + * githubEnterpriseConfig: { + * hostUri: "https://ghe.proctor-staging-test.com", + * appId: "864434", + * privateKeySecretVersion: "projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-private-key-f522d2/versions/latest", + * webhookSecretSecretVersion: "projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-webhook-secret-3c806f/versions/latest", + * appInstallationId: "837537", + * }, + * }); + * ``` + * ### Developer Connect Connection Github Enterprise Doc + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * import * as std from "@pulumi/std"; + * + * const private_key_secret = new gcp.secretmanager.Secret("private-key-secret", { + * secretId: "ghe-pk-secret", + * replication: { + * auto: {}, + * }, + * }); + * const private_key_secret_version = new gcp.secretmanager.SecretVersion("private-key-secret-version", { + * secret: private_key_secret.id, + * secretData: std.file({ + * input: "private-key.pem", + * }).then(invoke => invoke.result), + * }); + * const webhook_secret_secret = new gcp.secretmanager.Secret("webhook-secret-secret", { + * secretId: "ghe-token-secret", + * replication: { + * auto: {}, + * }, + * }); + * const webhook_secret_secret_version = new gcp.secretmanager.SecretVersion("webhook-secret-secret-version", { + * secret: webhook_secret_secret.id, + * secretData: "", + * }); + * const p4sa-secretAccessor = gcp.organizations.getIAMPolicy({ + * bindings: [{ + * role: "roles/secretmanager.secretAccessor", + * members: ["serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com"], + * }], + * }); + * const policy_pk = new gcp.secretmanager.SecretIamPolicy("policy-pk", { + * secretId: private_key_secret.secretId, + * policyData: p4sa_secretAccessor.then(p4sa_secretAccessor => p4sa_secretAccessor.policyData), + * }); + * const policy_whs = new gcp.secretmanager.SecretIamPolicy("policy-whs", { + * secretId: webhook_secret_secret.secretId, + * policyData: p4sa_secretAccessor.then(p4sa_secretAccessor => p4sa_secretAccessor.policyData), + * }); + * const my_connection = new gcp.developerconnect.Connection("my-connection", { + * location: "us-central1", + * connectionId: "my-connection", + * githubEnterpriseConfig: { + * hostUri: "https://ghe.com", + * privateKeySecretVersion: private_key_secret_version.id, + * webhookSecretSecretVersion: webhook_secret_secret_version.id, + * appId: "100", + * appInstallationId: "123123", + * }, + * }, { + * dependsOn: [ + * policy_pk, + * policy_whs, + * ], + * }); + * ``` + * ### Developer Connect Connection Gitlab + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const my_connection = new gcp.developerconnect.Connection("my-connection", { + * location: "us-central1", + * connectionId: "tf-test-connection", + * gitlabConfig: { + * webhookSecretSecretVersion: "projects/devconnect-terraform-creds/secrets/gitlab-webhook/versions/latest", + * readAuthorizerCredential: { + * userTokenSecretVersion: "projects/devconnect-terraform-creds/secrets/gitlab-read-cred/versions/latest", + * }, + * authorizerCredential: { + * userTokenSecretVersion: "projects/devconnect-terraform-creds/secrets/gitlab-auth-cred/versions/latest", + * }, + * }, + * }); + * ``` + * ### Developer Connect Connection Gitlab Enterprise + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const my_connection = new gcp.developerconnect.Connection("my-connection", { + * location: "us-central1", + * connectionId: "tf-test-connection", + * gitlabEnterpriseConfig: { + * hostUri: "https://gle-us-central1.gcb-test.com", + * webhookSecretSecretVersion: "projects/devconnect-terraform-creds/secrets/gitlab-enterprise-webhook/versions/latest", + * readAuthorizerCredential: { + * userTokenSecretVersion: "projects/devconnect-terraform-creds/secrets/gitlab-enterprise-read-cred/versions/latest", + * }, + * authorizerCredential: { + * userTokenSecretVersion: "projects/devconnect-terraform-creds/secrets/gitlab-enterprise-auth-cred/versions/latest", + * }, + * }, + * }); + * ``` * ## Import * * Connection can be imported using any of these accepted formats: @@ -148,14 +326,14 @@ export class Connection extends pulumi.CustomResource { /** * Optional. Allows clients to store small amounts of arbitrary data. - * * **Note**: This field is non-authoritative, and will only manage the annotations present in your configuration. * Please refer to the field `effectiveAnnotations` for all of the annotations present on the resource. */ public readonly annotations!: pulumi.Output<{[key: string]: string} | undefined>; /** - * Required. Id of the requesting object. If auto-generating Id server-side, - * remove this field and connectionId from the methodSignature of Create RPC. + * Required. Id of the requesting object + * If auto-generating Id server-side, remove this field and + * connectionId from the methodSignature of Create RPC * * * - - - @@ -165,12 +343,20 @@ export class Connection extends pulumi.CustomResource { * Output only. [Output only] Create timestamp */ public /*out*/ readonly createTime!: pulumi.Output; + /** + * The crypto key configuration. This field is used by the Customer-managed + * encryption keys (CMEK) feature. + * Structure is documented below. + */ + public readonly cryptoKeyConfig!: pulumi.Output; /** * Output only. [Output only] Delete timestamp */ public /*out*/ readonly deleteTime!: pulumi.Output; /** - * Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled. + * Optional. If disabled is set to true, functionality is disabled for this connection. + * Repository based API methods and webhooks processing for repositories in + * this connection will be disabled. */ public readonly disabled!: pulumi.Output; public /*out*/ readonly effectiveAnnotations!: pulumi.Output<{[key: string]: string}>; @@ -179,8 +365,8 @@ export class Connection extends pulumi.CustomResource { */ public /*out*/ readonly effectiveLabels!: pulumi.Output<{[key: string]: string}>; /** - * Optional. 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 + * Optional. 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. */ public readonly etag!: pulumi.Output; @@ -190,22 +376,35 @@ export class Connection extends pulumi.CustomResource { */ public readonly githubConfig!: pulumi.Output; /** - * Describes stage and necessary actions to be taken by the user to complete the installation. - * Used for GitHub and GitHub Enterprise based connections. + * Configuration for connections to an instance of GitHub Enterprise. + * Structure is documented below. + */ + public readonly githubEnterpriseConfig!: pulumi.Output; + /** + * Configuration for connections to gitlab.com. + * Structure is documented below. + */ + public readonly gitlabConfig!: pulumi.Output; + /** + * Configuration for connections to an instance of GitLab Enterprise. + * Structure is documented below. + */ + public readonly gitlabEnterpriseConfig!: pulumi.Output; + /** + * Describes stage and necessary actions to be taken by the + * user to complete the installation. Used for GitHub and GitHub Enterprise + * based connections. * Structure is documented below. */ public /*out*/ readonly installationStates!: 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>; /** - * Resource ID segment making up resource `name`. It identifies the resource - * within its parent collection as described in https://google.aip.dev/122. See documentation - * for resource type `developerconnect.googleapis.com/GitRepositoryLink`. + * Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. */ public readonly location!: pulumi.Output; /** @@ -224,8 +423,8 @@ export class Connection extends pulumi.CustomResource { */ public /*out*/ readonly pulumiLabels!: pulumi.Output<{[key: string]: string}>; /** - * Output only. Set to true when the connection is being set up or updated - * in the background. + * Output only. Set to true when the connection is being set up or updated in the + * background. */ public /*out*/ readonly reconciling!: pulumi.Output; /** @@ -253,12 +452,16 @@ export class Connection extends pulumi.CustomResource { resourceInputs["annotations"] = state ? state.annotations : undefined; resourceInputs["connectionId"] = state ? state.connectionId : undefined; resourceInputs["createTime"] = state ? state.createTime : undefined; + resourceInputs["cryptoKeyConfig"] = state ? state.cryptoKeyConfig : undefined; resourceInputs["deleteTime"] = state ? state.deleteTime : undefined; resourceInputs["disabled"] = state ? state.disabled : undefined; resourceInputs["effectiveAnnotations"] = state ? state.effectiveAnnotations : undefined; resourceInputs["effectiveLabels"] = state ? state.effectiveLabels : undefined; resourceInputs["etag"] = state ? state.etag : undefined; resourceInputs["githubConfig"] = state ? state.githubConfig : undefined; + resourceInputs["githubEnterpriseConfig"] = state ? state.githubEnterpriseConfig : undefined; + resourceInputs["gitlabConfig"] = state ? state.gitlabConfig : undefined; + resourceInputs["gitlabEnterpriseConfig"] = state ? state.gitlabEnterpriseConfig : undefined; resourceInputs["installationStates"] = state ? state.installationStates : undefined; resourceInputs["labels"] = state ? state.labels : undefined; resourceInputs["location"] = state ? state.location : undefined; @@ -278,9 +481,13 @@ export class Connection extends pulumi.CustomResource { } resourceInputs["annotations"] = args ? args.annotations : undefined; resourceInputs["connectionId"] = args ? args.connectionId : undefined; + resourceInputs["cryptoKeyConfig"] = args ? args.cryptoKeyConfig : undefined; resourceInputs["disabled"] = args ? args.disabled : undefined; resourceInputs["etag"] = args ? args.etag : undefined; resourceInputs["githubConfig"] = args ? args.githubConfig : undefined; + resourceInputs["githubEnterpriseConfig"] = args ? args.githubEnterpriseConfig : undefined; + resourceInputs["gitlabConfig"] = args ? args.gitlabConfig : undefined; + resourceInputs["gitlabEnterpriseConfig"] = args ? args.gitlabEnterpriseConfig : undefined; resourceInputs["labels"] = args ? args.labels : undefined; resourceInputs["location"] = args ? args.location : undefined; resourceInputs["project"] = args ? args.project : undefined; @@ -308,14 +515,14 @@ export class Connection extends pulumi.CustomResource { export interface ConnectionState { /** * Optional. Allows clients to store small amounts of arbitrary data. - * * **Note**: This field is non-authoritative, and will only manage the annotations present in your configuration. * Please refer to the field `effectiveAnnotations` for all of the annotations present on the resource. */ annotations?: pulumi.Input<{[key: string]: pulumi.Input}>; /** - * Required. Id of the requesting object. If auto-generating Id server-side, - * remove this field and connectionId from the methodSignature of Create RPC. + * Required. Id of the requesting object + * If auto-generating Id server-side, remove this field and + * connectionId from the methodSignature of Create RPC * * * - - - @@ -325,12 +532,20 @@ export interface ConnectionState { * Output only. [Output only] Create timestamp */ createTime?: pulumi.Input; + /** + * The crypto key configuration. This field is used by the Customer-managed + * encryption keys (CMEK) feature. + * Structure is documented below. + */ + cryptoKeyConfig?: pulumi.Input; /** * Output only. [Output only] Delete timestamp */ deleteTime?: pulumi.Input; /** - * Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled. + * Optional. If disabled is set to true, functionality is disabled for this connection. + * Repository based API methods and webhooks processing for repositories in + * this connection will be disabled. */ disabled?: pulumi.Input; effectiveAnnotations?: pulumi.Input<{[key: string]: pulumi.Input}>; @@ -339,8 +554,8 @@ export interface ConnectionState { */ effectiveLabels?: pulumi.Input<{[key: string]: pulumi.Input}>; /** - * Optional. 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 + * Optional. 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. */ etag?: pulumi.Input; @@ -350,22 +565,35 @@ export interface ConnectionState { */ githubConfig?: pulumi.Input; /** - * Describes stage and necessary actions to be taken by the user to complete the installation. - * Used for GitHub and GitHub Enterprise based connections. + * Configuration for connections to an instance of GitHub Enterprise. + * Structure is documented below. + */ + githubEnterpriseConfig?: pulumi.Input; + /** + * Configuration for connections to gitlab.com. + * Structure is documented below. + */ + gitlabConfig?: pulumi.Input; + /** + * Configuration for connections to an instance of GitLab Enterprise. + * Structure is documented below. + */ + gitlabEnterpriseConfig?: pulumi.Input; + /** + * Describes stage and necessary actions to be taken by the + * user to complete the installation. Used for GitHub and GitHub Enterprise + * based connections. * Structure is documented below. */ installationStates?: 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}>; /** - * Resource ID segment making up resource `name`. It identifies the resource - * within its parent collection as described in https://google.aip.dev/122. See documentation - * for resource type `developerconnect.googleapis.com/GitRepositoryLink`. + * Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. */ location?: pulumi.Input; /** @@ -384,8 +612,8 @@ export interface ConnectionState { */ pulumiLabels?: pulumi.Input<{[key: string]: pulumi.Input}>; /** - * Output only. Set to true when the connection is being set up or updated - * in the background. + * Output only. Set to true when the connection is being set up or updated in the + * background. */ reconciling?: pulumi.Input; /** @@ -404,26 +632,34 @@ export interface ConnectionState { export interface ConnectionArgs { /** * Optional. Allows clients to store small amounts of arbitrary data. - * * **Note**: This field is non-authoritative, and will only manage the annotations present in your configuration. * Please refer to the field `effectiveAnnotations` for all of the annotations present on the resource. */ annotations?: pulumi.Input<{[key: string]: pulumi.Input}>; /** - * Required. Id of the requesting object. If auto-generating Id server-side, - * remove this field and connectionId from the methodSignature of Create RPC. + * Required. Id of the requesting object + * If auto-generating Id server-side, remove this field and + * connectionId from the methodSignature of Create RPC * * * - - - */ connectionId: pulumi.Input; /** - * Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled. + * The crypto key configuration. This field is used by the Customer-managed + * encryption keys (CMEK) feature. + * Structure is documented below. + */ + cryptoKeyConfig?: pulumi.Input; + /** + * Optional. If disabled is set to true, functionality is disabled for this connection. + * Repository based API methods and webhooks processing for repositories in + * this connection will be disabled. */ disabled?: pulumi.Input; /** - * Optional. 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 + * Optional. 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. */ etag?: pulumi.Input; @@ -432,17 +668,29 @@ export interface ConnectionArgs { * Structure is documented below. */ githubConfig?: pulumi.Input; + /** + * Configuration for connections to an instance of GitHub Enterprise. + * Structure is documented below. + */ + githubEnterpriseConfig?: pulumi.Input; + /** + * Configuration for connections to gitlab.com. + * Structure is documented below. + */ + gitlabConfig?: pulumi.Input; + /** + * Configuration for connections to an instance of GitLab Enterprise. + * Structure is documented below. + */ + gitlabEnterpriseConfig?: 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}>; /** - * Resource ID segment making up resource `name`. It identifies the resource - * within its parent collection as described in https://google.aip.dev/122. See documentation - * for resource type `developerconnect.googleapis.com/GitRepositoryLink`. + * Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. */ location: pulumi.Input; /** diff --git a/sdk/nodejs/developerconnect/gitRepositoryLink.ts b/sdk/nodejs/developerconnect/gitRepositoryLink.ts index bd05f4dc69..d09b6b998a 100644 --- a/sdk/nodejs/developerconnect/gitRepositoryLink.ts +++ b/sdk/nodejs/developerconnect/gitRepositoryLink.ts @@ -5,6 +5,8 @@ import * as pulumi from "@pulumi/pulumi"; import * as utilities from "../utilities"; /** + * A git repository link to a parent connection. + * * ## Example Usage * * ## Import diff --git a/sdk/nodejs/dns/recordSet.ts b/sdk/nodejs/dns/recordSet.ts index 408da6ae1c..60cdedef18 100644 --- a/sdk/nodejs/dns/recordSet.ts +++ b/sdk/nodejs/dns/recordSet.ts @@ -213,6 +213,50 @@ import * as utilities from "../utilities"; * }); * ``` * + * ### Public zone failover + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const http_health_check = new gcp.compute.HealthCheck("http-health-check", { + * name: "http-health-check", + * description: "Health check via http", + * timeoutSec: 5, + * checkIntervalSec: 30, + * healthyThreshold: 4, + * unhealthyThreshold: 5, + * httpHealthCheck: { + * portSpecification: "USE_SERVING_PORT", + * }, + * }); + * const prod = new gcp.dns.ManagedZone("prod", { + * name: "prod-zone", + * dnsName: "prod.mydomain.com.", + * }); + * const a = new gcp.dns.RecordSet("a", { + * name: pulumi.interpolate`backend.${prod.dnsName}`, + * managedZone: prod.name, + * type: "A", + * ttl: 300, + * routingPolicy: { + * healthCheck: http_health_check.id, + * primaryBackup: { + * trickleRatio: 0.1, + * primary: { + * externalEndpoints: ["10.128.1.1"], + * }, + * backupGeos: [{ + * location: "us-west1", + * healthCheckedTargets: { + * externalEndpoints: ["10.130.1.1"], + * }, + * }], + * }, + * }, + * }); + * ``` + * * ## Import * * DNS record sets can be imported using either of these accepted formats: diff --git a/sdk/nodejs/gkeonprem/vmwareCluster.ts b/sdk/nodejs/gkeonprem/vmwareCluster.ts index 090d0772f4..3ca1122316 100644 --- a/sdk/nodejs/gkeonprem/vmwareCluster.ts +++ b/sdk/nodejs/gkeonprem/vmwareCluster.ts @@ -434,7 +434,7 @@ export class VMwareCluster extends pulumi.CustomResource { /** * VmwareVCenterConfig specifies vCenter config for the user cluster. Inherited from the admin cluster. */ - public readonly vcenter!: pulumi.Output; + public readonly vcenter!: pulumi.Output; /** * Enable VM tracking. */ diff --git a/sdk/nodejs/iap/settings.ts b/sdk/nodejs/iap/settings.ts index a05163127c..c61bc04a80 100644 --- a/sdk/nodejs/iap/settings.ts +++ b/sdk/nodejs/iap/settings.ts @@ -148,15 +148,15 @@ export class Settings extends pulumi.CustomResource { * The resource name of the IAP protected resource. Name can have below resources: * * organizations/{organization_id} * * folders/{folder_id} - * * projects/{projects_id} - * * projects/{projects_id}/iap_web - * * projects/{projects_id}/iap_web/compute - * * projects/{projects_id}/iap_web/compute-{region} - * * projects/{projects_id}/iap_web/compute/service/{service_id} - * * projects/{projects_id}/iap_web/compute-{region}/service/{service_id} - * * projects/{projects_id}/iap_web/appengine-{app_id} - * * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id} - * * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id} + * * projects/{project_id} + * * projects/{project_id}/iap_web + * * projects/{project_id}/iap_web/compute + * * projects/{project_id}/iap_web/compute-{region} + * * projects/{project_id}/iap_web/compute/services/{service_id} + * * projects/{project_id}/iap_web/compute-{region}/services/{service_id} + * * projects/{project_id}/iap_web/appengine-{app_id} + * * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id} + * * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id} * * * - - - @@ -208,15 +208,15 @@ export interface SettingsState { * The resource name of the IAP protected resource. Name can have below resources: * * organizations/{organization_id} * * folders/{folder_id} - * * projects/{projects_id} - * * projects/{projects_id}/iap_web - * * projects/{projects_id}/iap_web/compute - * * projects/{projects_id}/iap_web/compute-{region} - * * projects/{projects_id}/iap_web/compute/service/{service_id} - * * projects/{projects_id}/iap_web/compute-{region}/service/{service_id} - * * projects/{projects_id}/iap_web/appengine-{app_id} - * * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id} - * * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id} + * * projects/{project_id} + * * projects/{project_id}/iap_web + * * projects/{project_id}/iap_web/compute + * * projects/{project_id}/iap_web/compute-{region} + * * projects/{project_id}/iap_web/compute/services/{service_id} + * * projects/{project_id}/iap_web/compute-{region}/services/{service_id} + * * projects/{project_id}/iap_web/appengine-{app_id} + * * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id} + * * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id} * * * - - - @@ -242,15 +242,15 @@ export interface SettingsArgs { * The resource name of the IAP protected resource. Name can have below resources: * * organizations/{organization_id} * * folders/{folder_id} - * * projects/{projects_id} - * * projects/{projects_id}/iap_web - * * projects/{projects_id}/iap_web/compute - * * projects/{projects_id}/iap_web/compute-{region} - * * projects/{projects_id}/iap_web/compute/service/{service_id} - * * projects/{projects_id}/iap_web/compute-{region}/service/{service_id} - * * projects/{projects_id}/iap_web/appengine-{app_id} - * * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id} - * * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id} + * * projects/{project_id} + * * projects/{project_id}/iap_web + * * projects/{project_id}/iap_web/compute + * * projects/{project_id}/iap_web/compute-{region} + * * projects/{project_id}/iap_web/compute/services/{service_id} + * * projects/{project_id}/iap_web/compute-{region}/services/{service_id} + * * projects/{project_id}/iap_web/appengine-{app_id} + * * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id} + * * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id} * * * - - - diff --git a/sdk/nodejs/sql/databaseInstance.ts b/sdk/nodejs/sql/databaseInstance.ts index 62d02d3cce..84bd9126fe 100644 --- a/sdk/nodejs/sql/databaseInstance.ts +++ b/sdk/nodejs/sql/databaseInstance.ts @@ -7,7 +7,7 @@ import * as outputs from "../types/output"; import * as utilities from "../utilities"; /** - * Creates a new Google SQL Database Instance. For more information, see the [official documentation](https://cloud.google.com/sql/), + * Creates a new Google SQL Database Instance. For more information, see the [official documentation](https://cloud.google.com/sql/docs/mysql/create-instance), * or the [JSON API](https://cloud.google.com/sql/docs/admin-api/v1beta4/instances). * * > **NOTE on `gcp.sql.DatabaseInstance`:** - Second-generation instances include a diff --git a/sdk/nodejs/tsconfig.json b/sdk/nodejs/tsconfig.json index d1d7a2998f..cc2c626646 100644 --- a/sdk/nodejs/tsconfig.json +++ b/sdk/nodejs/tsconfig.json @@ -146,6 +146,7 @@ "beyondcorp/getAppConnector.ts", "beyondcorp/getAppGateway.ts", "beyondcorp/index.ts", + "beyondcorp/securityGateway.ts", "biglake/catalog.ts", "biglake/database.ts", "biglake/index.ts", @@ -248,6 +249,8 @@ "certificatemanager/getCertificates.ts", "certificatemanager/index.ts", "certificatemanager/trustConfig.ts", + "chronicle/dataAccessLabel.ts", + "chronicle/dataAccessScope.ts", "chronicle/index.ts", "chronicle/watchlist.ts", "cloudasset/folderFeed.ts", @@ -314,6 +317,7 @@ "cloudquota/getSQuotaInfo.ts", "cloudquota/getSQuotaInfos.ts", "cloudquota/index.ts", + "cloudquota/squotaAdjusterSettings.ts", "cloudquota/squotaPreference.ts", "cloudrun/domainMapping.ts", "cloudrun/getLocations.ts", diff --git a/sdk/nodejs/types/input.ts b/sdk/nodejs/types/input.ts index f9389e41e7..38deed5e1e 100644 --- a/sdk/nodejs/types/input.ts +++ b/sdk/nodejs/types/input.ts @@ -4440,7 +4440,7 @@ export namespace applicationintegration { /** * Password to be used. * - * The `oauth2AuthorizationCode` block supports: + * The `oauth2AuthorizationCode` block supports: */ password?: pulumi.Input; /** @@ -5139,6 +5139,25 @@ export namespace beyondcorp { pscUri?: pulumi.Input; } + export interface SecurityGatewayHub { + /** + * Internet Gateway configuration. + * Structure is documented below. + */ + internetGateway?: pulumi.Input; + /** + * The identifier for this object. Format specified above. + */ + region: pulumi.Input; + } + + export interface SecurityGatewayHubInternetGateway { + /** + * (Output) + * Output only. List of IP addresses assigned to the Cloud NAT. + */ + assignedIps?: pulumi.Input[]>; + } } export namespace biglake { @@ -7782,7 +7801,7 @@ export namespace blockchainnodeengine { * Blockchain garbage collection modes. Only applicable when NodeType is FULL or ARCHIVE. * Possible values are: `FULL`, `ARCHIVE`. * - * The `additionalEndpoints` block contains: + * The `additionalEndpoints` block contains: */ garbageCollectionMode?: pulumi.Input; } @@ -7900,7 +7919,7 @@ export namespace certificateauthority { /** * The value of the KeyId in lowercase hexadecimal. * - * The `x509Config` block supports: + * The `x509Config` block supports: */ keyId?: pulumi.Input; } @@ -9034,7 +9053,7 @@ export namespace certificateauthority { * Structure is documented below. * * - * The `x509Config` block supports: + * The `x509Config` block supports: */ publicKey: pulumi.Input; /** @@ -9667,7 +9686,7 @@ export namespace certificatemanager { * Structure is documented below. * * - * The `provisioningIssue` block contains: + * The `provisioningIssue` block contains: */ authorizationAttemptInfos?: pulumi.Input[]>; /** @@ -9866,6 +9885,92 @@ export namespace certificatemanager { } export namespace chronicle { + export interface DataAccessScopeAllowedDataAccessLabel { + /** + * The asset namespace configured in the forwarder + * of the customer's events. + */ + assetNamespace?: pulumi.Input; + /** + * The name of the data access label. + */ + dataAccessLabel?: pulumi.Input; + /** + * (Output) + * Output only. The display name of the label. + * Data access label and log types's name + * will match the display name of the resource. + * The asset namespace will match the namespace itself. + * The ingestion key value pair will match the key of the tuple. + */ + displayName?: pulumi.Input; + /** + * Representation of an ingestion label type. + * Structure is documented below. + */ + ingestionLabel?: pulumi.Input; + /** + * The name of the log type. + */ + logType?: pulumi.Input; + } + + export interface DataAccessScopeAllowedDataAccessLabelIngestionLabel { + /** + * Required. The key of the ingestion label. Always required. + */ + ingestionLabelKey: pulumi.Input; + /** + * Optional. The value of the ingestion label. Optional. An object + * with no provided value and some key provided would match + * against the given key and ANY value. + */ + ingestionLabelValue?: pulumi.Input; + } + + export interface DataAccessScopeDeniedDataAccessLabel { + /** + * The asset namespace configured in the forwarder + * of the customer's events. + */ + assetNamespace?: pulumi.Input; + /** + * The name of the data access label. + */ + dataAccessLabel?: pulumi.Input; + /** + * (Output) + * Output only. The display name of the label. + * Data access label and log types's name + * will match the display name of the resource. + * The asset namespace will match the namespace itself. + * The ingestion key value pair will match the key of the tuple. + */ + displayName?: pulumi.Input; + /** + * Representation of an ingestion label type. + * Structure is documented below. + */ + ingestionLabel?: pulumi.Input; + /** + * The name of the log type. + */ + logType?: pulumi.Input; + } + + export interface DataAccessScopeDeniedDataAccessLabelIngestionLabel { + /** + * Required. The key of the ingestion label. Always required. + */ + ingestionLabelKey: pulumi.Input; + /** + * Optional. The value of the ingestion label. Optional. An object + * with no provided value and some key provided would match + * against the given key and ANY value. + */ + ingestionLabelValue?: pulumi.Input; + } + export interface WatchlistEntityCount { /** * (Output) @@ -10276,7 +10381,7 @@ export namespace cloudbuild { * Structure is documented below. * * - * The `timing` block contains: + * The `timing` block contains: */ timings?: pulumi.Input[]>; } @@ -16855,7 +16960,7 @@ export namespace compute { * Structure is documented below. * * - * The `awsV4Authentication` block supports: + * The `awsV4Authentication` block supports: */ awsV4Authentication?: pulumi.Input; /** @@ -17171,7 +17276,7 @@ export namespace compute { * Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. * * - * The `layer4Configs` block supports: + * The `layer4Configs` block supports: */ srcThreatIntelligences?: pulumi.Input[]>; } @@ -17303,7 +17408,7 @@ export namespace compute { * Structure is documented below. * * - * The `layer4Config` block supports: + * The `layer4Config` block supports: */ layer4Configs?: pulumi.Input[]>; /** @@ -17460,7 +17565,7 @@ export namespace compute { * Structure is documented below. * * - * The `layer4Config` block supports: + * The `layer4Config` block supports: */ layer4Configs: pulumi.Input[]>; /** @@ -20596,7 +20701,7 @@ export namespace compute { * Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. * * - * The `layer4Configs` block supports: + * The `layer4Configs` block supports: */ srcThreatIntelligences?: pulumi.Input[]>; } @@ -20793,7 +20898,7 @@ export namespace compute { * Structure is documented below. * * - * The `layer4Config` block supports: + * The `layer4Config` block supports: */ srcSecureTags?: pulumi.Input[]>; /** @@ -20999,7 +21104,7 @@ export namespace compute { * Structure is documented below. * * - * The `layer4Config` block supports: + * The `layer4Config` block supports: */ srcSecureTags?: pulumi.Input[]>; /** @@ -21209,7 +21314,7 @@ export namespace compute { * Structure is documented below. * * - * The `layer4Config` block supports: + * The `layer4Config` block supports: */ layer4Configs: pulumi.Input[]>; /** @@ -23586,7 +23691,7 @@ export namespace compute { * Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. * * - * The `layer4Configs` block supports: + * The `layer4Configs` block supports: */ srcThreatIntelligences?: pulumi.Input[]>; } @@ -23783,7 +23888,7 @@ export namespace compute { * Structure is documented below. * * - * The `layer4Config` block supports: + * The `layer4Config` block supports: */ srcSecureTags?: pulumi.Input[]>; /** @@ -23989,7 +24094,7 @@ export namespace compute { * Structure is documented below. * * - * The `layer4Config` block supports: + * The `layer4Config` block supports: */ srcSecureTags?: pulumi.Input[]>; /** @@ -35151,7 +35256,7 @@ export namespace datacatalog { * Structure is documented below. * * - * The `sampleGcsFileSpecs` block contains: + * The `sampleGcsFileSpecs` block contains: */ sampleGcsFileSpecs?: pulumi.Input[]>; } @@ -47150,39 +47255,47 @@ export namespace deploymentmanager { } export namespace developerconnect { + export interface ConnectionCryptoKeyConfig { + /** + * Required. The name of the key which is used to encrypt/decrypt customer data. For key + * in Cloud KMS, the key should be in the format of + * `projects/*/locations/*/keyRings/*/cryptoKeys/*`. + */ + keyReference: pulumi.Input; + } + export interface ConnectionGithubConfig { /** * Optional. GitHub App installation id. */ appInstallationId?: pulumi.Input; /** - * Represents an OAuth token of the account that authorized the Connection,and - * associated metadata. + * Represents an OAuth token of the account that authorized the Connection, + * and associated metadata. * Structure is documented below. */ authorizerCredential?: pulumi.Input; /** - * Required. Immutable. The GitHub Application that was installed to - * the GitHub user or organization. + * Required. Immutable. The GitHub Application that was installed to the GitHub user or + * organization. * Possible values: * GIT_HUB_APP_UNSPECIFIED * DEVELOPER_CONNECT - * FIREBASE" + * FIREBASE */ githubApp: pulumi.Input; /** * (Output) - * Output only. The URI to navigate to in order to manage the installation - * associated with this GitHubConfig. + * Output only. The URI to navigate to in order to manage the installation associated + * with this GitHubConfig. */ installationUri?: pulumi.Input; } export interface ConnectionGithubConfigAuthorizerCredential { /** - * Required. A SecretManager resource containing the OAuth token - * that authorizes the connection. - * Format: `projects/*/secrets/*/versions/*`. + * Required. A SecretManager resource containing the OAuth token that authorizes + * the connection. Format: `projects/*/secrets/*/versions/*`. */ oauthTokenSecretVersion: pulumi.Input; /** @@ -47192,15 +47305,202 @@ export namespace developerconnect { username?: pulumi.Input; } + export interface ConnectionGithubEnterpriseConfig { + /** + * Optional. ID of the GitHub App created from the manifest. + */ + appId?: pulumi.Input; + /** + * Optional. ID of the installation of the GitHub App. + */ + appInstallationId?: pulumi.Input; + /** + * (Output) + * Output only. The URL-friendly name of the GitHub App. + */ + appSlug?: pulumi.Input; + /** + * Required. The URI of the GitHub Enterprise host this connection is for. + */ + hostUri: pulumi.Input; + /** + * (Output) + * Output only. The URI to navigate to in order to manage the installation associated + * with this GitHubEnterpriseConfig. + */ + installationUri?: pulumi.Input; + /** + * Optional. SecretManager resource containing the private key of the GitHub App, + * formatted as `projects/*/secrets/*/versions/*`. + */ + privateKeySecretVersion?: pulumi.Input; + /** + * (Output) + * Output only. GitHub Enterprise version installed at the host_uri. + */ + serverVersion?: pulumi.Input; + /** + * ServiceDirectoryConfig represents Service Directory configuration for a + * connection. + * Structure is documented below. + */ + serviceDirectoryConfig?: pulumi.Input; + /** + * Optional. SSL certificate to use for requests to GitHub Enterprise. + */ + sslCaCertificate?: pulumi.Input; + /** + * Optional. SecretManager resource containing the webhook secret of the GitHub App, + * formatted as `projects/*/secrets/*/versions/*`. + */ + webhookSecretSecretVersion?: pulumi.Input; + } + + export interface ConnectionGithubEnterpriseConfigServiceDirectoryConfig { + /** + * Required. The Service Directory service name. + * Format: + * projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + */ + service: pulumi.Input; + } + + export interface ConnectionGitlabConfig { + /** + * Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + */ + authorizerCredential: pulumi.Input; + /** + * Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + */ + readAuthorizerCredential: pulumi.Input; + /** + * Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + * formatted as `projects/*/secrets/*/versions/*`. This is used to validate + * webhooks. + */ + webhookSecretSecretVersion: pulumi.Input; + } + + export interface ConnectionGitlabConfigAuthorizerCredential { + /** + * Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + */ + userTokenSecretVersion: pulumi.Input; + /** + * (Output) + * Output only. The username associated with this token. + */ + username?: pulumi.Input; + } + + export interface ConnectionGitlabConfigReadAuthorizerCredential { + /** + * Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + */ + userTokenSecretVersion: pulumi.Input; + /** + * (Output) + * Output only. The username associated with this token. + */ + username?: pulumi.Input; + } + + export interface ConnectionGitlabEnterpriseConfig { + /** + * Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + */ + authorizerCredential: pulumi.Input; + /** + * Required. The URI of the GitLab Enterprise host this connection is for. + */ + hostUri: pulumi.Input; + /** + * Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + */ + readAuthorizerCredential: pulumi.Input; + /** + * (Output) + * Output only. Version of the GitLab Enterprise server running on the `hostUri`. + */ + serverVersion?: pulumi.Input; + /** + * ServiceDirectoryConfig represents Service Directory configuration for a + * connection. + * Structure is documented below. + */ + serviceDirectoryConfig?: pulumi.Input; + /** + * Optional. SSL Certificate Authority certificate to use for requests to GitLab + * Enterprise instance. + */ + sslCaCertificate?: pulumi.Input; + /** + * Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + * formatted as `projects/*/secrets/*/versions/*`. This is used to validate + * webhooks. + */ + webhookSecretSecretVersion: pulumi.Input; + } + + export interface ConnectionGitlabEnterpriseConfigAuthorizerCredential { + /** + * Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + */ + userTokenSecretVersion: pulumi.Input; + /** + * (Output) + * Output only. The username associated with this token. + */ + username?: pulumi.Input; + } + + export interface ConnectionGitlabEnterpriseConfigReadAuthorizerCredential { + /** + * Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + */ + userTokenSecretVersion: pulumi.Input; + /** + * (Output) + * Output only. The username associated with this token. + */ + username?: pulumi.Input; + } + + export interface ConnectionGitlabEnterpriseConfigServiceDirectoryConfig { + /** + * Required. The Service Directory service name. + * Format: + * projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + */ + service: pulumi.Input; + } + export interface ConnectionInstallationState { /** - * Output only. Link to follow for next action. Empty string if the - * installation is already complete. + * Output only. Link to follow for next action. Empty string if the installation is already + * complete. */ actionUri?: pulumi.Input; /** - * Output only. Message of what the user should do next to continue - * the installation.Empty string if the installation is already complete. + * Output only. Message of what the user should do next to continue the installation. + * Empty string if the installation is already complete. */ message?: pulumi.Input; /** @@ -49877,6 +50177,10 @@ export namespace dns { * Structure is documented below. */ geos?: pulumi.Input[]>; + /** + * Specifies the health check (used with external endpoints). + */ + healthCheck?: pulumi.Input; /** * The configuration for a failover policy with global to regional failover. Queries are responded to with the global primary targets, but if none of the primary targets are healthy, then we fallback to a regional failover policy. * Structure is documented below. @@ -49906,11 +50210,15 @@ export namespace dns { } export interface RecordSetRoutingPolicyGeoHealthCheckedTargets { + /** + * The list of external endpoint addresses to health check. + */ + externalEndpoints?: pulumi.Input[]>; /** * The list of internal load balancers to health check. * Structure is documented below. */ - internalLoadBalancers: pulumi.Input[]>; + internalLoadBalancers?: pulumi.Input[]>; } export interface RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancer { @@ -49978,11 +50286,15 @@ export namespace dns { } export interface RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargets { + /** + * The list of external endpoint addresses to health check. + */ + externalEndpoints?: pulumi.Input[]>; /** * The list of internal load balancers to health check. * Structure is documented below. */ - internalLoadBalancers: pulumi.Input[]>; + internalLoadBalancers?: pulumi.Input[]>; } export interface RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancer { @@ -50017,10 +50329,14 @@ export namespace dns { } export interface RecordSetRoutingPolicyPrimaryBackupPrimary { + /** + * The Internet IP addresses to be health checked. + */ + externalEndpoints?: pulumi.Input[]>; /** * The list of internal load balancers to health check. */ - internalLoadBalancers: pulumi.Input[]>; + internalLoadBalancers?: pulumi.Input[]>; } export interface RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancer { @@ -50071,11 +50387,15 @@ export namespace dns { } export interface RecordSetRoutingPolicyWrrHealthCheckedTargets { + /** + * The list of external endpoint addresses to health check. + */ + externalEndpoints?: pulumi.Input[]>; /** * The list of internal load balancers to health check. * Structure is documented below. */ - internalLoadBalancers: pulumi.Input[]>; + internalLoadBalancers?: pulumi.Input[]>; } export interface RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancer { @@ -50220,7 +50540,7 @@ export namespace edgecontainer { * Structure is documented below. * * - * The `kmsStatus` block contains: + * The `kmsStatus` block contains: */ kmsStatuses?: pulumi.Input[]>; } @@ -54812,7 +55132,7 @@ export namespace gkeonprem { /** * Whether to enable control plane node auto resizing. * - * The `vsphereConfig` block contains: + * The `vsphereConfig` block contains: */ enabled: pulumi.Input; } @@ -54959,7 +55279,7 @@ export namespace gkeonprem { /** * The VIP which you previously set aside for ingress traffic into this cluster. * - * The `f5Config` block supports: + * The `f5Config` block supports: */ ingressVip?: pulumi.Input; } @@ -55048,7 +55368,7 @@ export namespace gkeonprem { /** * DNS search domains. * - * The `controlPlaneV2Config` block supports: + * The `controlPlaneV2Config` block supports: */ dnsSearchDomains?: pulumi.Input[]>; /** @@ -55555,7 +55875,7 @@ export namespace gkeonprem { /** * The VIP to configure the load balancer for add-ons. * - * The `f5Config` block supports: + * The `f5Config` block supports: */ addonsVip?: pulumi.Input; /** @@ -55726,7 +56046,7 @@ export namespace gkeonprem { * Structure is documented below. * * - * The `status` block contains: + * The `status` block contains: */ statuses?: pulumi.Input[]>; } @@ -56941,6 +57261,7 @@ export namespace iap { corsSettings?: pulumi.Input; /** * GCIP claims and endpoint configurations for 3p identity providers. + * * Enabling gcipSetting significantly changes the way IAP authenticates users. Identity Platform does not support IAM, so IAP will not enforce any IAM policies for requests to your application. * Structure is documented below. */ gcipSettings?: pulumi.Input; @@ -57013,6 +57334,7 @@ export namespace iap { * (https://developers.google.com/identity/protocols/OpenIDConnect#hd-param) * Note: IAP does not verify that the id token's hd claim matches this value * since access behavior is managed by IAM policies. + * * loginHint setting is not a replacement for access control. Always enforce an appropriate access policy if you want to restrict access to users outside your domain. */ loginHint?: pulumi.Input; /** @@ -57055,7 +57377,7 @@ export namespace iap { * Structure is documented below. * * - * The `oauth2` block supports: + * The `oauth2` block supports: */ oauth2?: pulumi.Input; /** @@ -57621,7 +57943,7 @@ export namespace identityplatform { /** * Whether anonymous user auth is enabled for the project or not. * - * The `hashConfig` block contains: + * The `hashConfig` block contains: */ enabled: pulumi.Input; } @@ -57738,7 +58060,7 @@ export namespace identityplatform { * Structure is documented below. * * - * The `spCertificates` block contains: + * The `spCertificates` block contains: */ spCertificates?: pulumi.Input[]>; /** @@ -57792,7 +58114,7 @@ export namespace identityplatform { * Structure is documented below. * * - * The `spCertificates` block contains: + * The `spCertificates` block contains: */ spCertificates?: pulumi.Input[]>; /** @@ -57977,7 +58299,7 @@ export namespace integrationconnectors { /** * Value for the "aud" claim. * - * The `oauth2ClientCredentials` block supports: + * The `oauth2ClientCredentials` block supports: */ audience?: pulumi.Input; /** @@ -58024,7 +58346,7 @@ export namespace integrationconnectors { * The resource name of the secret version in the format, * format as: projects/*/secrets/*/versions/*. * - * The `oauth2AuthCodeFlow` block supports: + * The `oauth2AuthCodeFlow` block supports: */ secretVersion: pulumi.Input; } @@ -61442,7 +61764,7 @@ export namespace monitoring { * Structure is documented below. * * - * The `cloudFunctionV2` block supports: + * The `cloudFunctionV2` block supports: */ cloudFunctionV2: pulumi.Input; } @@ -65435,7 +65757,7 @@ export namespace oracledatabase { * The email address used by Oracle to send notifications regarding databases * and infrastructure. * - * The `apexDetails` block contains: + * The `apexDetails` block contains: */ email: pulumi.Input; } @@ -71941,6 +72263,10 @@ export namespace sql { * Specify how the server certificate's Certificate Authority is hosted. Supported values are `GOOGLE_MANAGED_INTERNAL_CA` and `GOOGLE_MANAGED_CAS_CA`. */ serverCaMode?: pulumi.Input; + /** + * The resource name of the server CA pool for an instance with `CUSTOMER_MANAGED_CAS_CA` as the `serverCaMode`. + */ + serverCaPool?: pulumi.Input; /** * Specify how SSL connection should be enforced in DB connections. Supported values are `ALLOW_UNENCRYPTED_AND_ENCRYPTED`, `ENCRYPTED_ONLY`, and `TRUSTED_CLIENT_CERTIFICATE_REQUIRED` (not supported for SQL Server). See [API reference doc](https://cloud.google.com/sql/docs/postgres/admin-api/rest/v1/instances#ipconfiguration) for details. */ @@ -73269,7 +73595,7 @@ export namespace transcoder { * Structure is documented below. * * - * The `h264` block supports: + * The `h264` block supports: */ h264?: pulumi.Input; } @@ -73686,7 +74012,7 @@ export namespace transcoder { * Structure is documented below. * * - * The `h264` block supports: + * The `h264` block supports: */ h264?: pulumi.Input; } diff --git a/sdk/nodejs/types/output.ts b/sdk/nodejs/types/output.ts index 0654fc23da..4badfc180c 100644 --- a/sdk/nodejs/types/output.ts +++ b/sdk/nodejs/types/output.ts @@ -4646,7 +4646,7 @@ export namespace applicationintegration { /** * Password to be used. * - * The `oauth2AuthorizationCode` block supports: + * The `oauth2AuthorizationCode` block supports: */ password?: string; /** @@ -5994,6 +5994,26 @@ export namespace beyondcorp { pscUri: string; } + export interface SecurityGatewayHub { + /** + * Internet Gateway configuration. + * Structure is documented below. + */ + internetGateway?: outputs.beyondcorp.SecurityGatewayHubInternetGateway; + /** + * The identifier for this object. Format specified above. + */ + region: string; + } + + export interface SecurityGatewayHubInternetGateway { + /** + * (Output) + * Output only. List of IP addresses assigned to the Cloud NAT. + */ + assignedIps: string[]; + } + } export namespace biglake { @@ -8831,7 +8851,7 @@ export namespace blockchainnodeengine { * Blockchain garbage collection modes. Only applicable when NodeType is FULL or ARCHIVE. * Possible values are: `FULL`, `ARCHIVE`. * - * The `additionalEndpoints` block contains: + * The `additionalEndpoints` block contains: */ garbageCollectionMode?: string; } @@ -8950,7 +8970,7 @@ export namespace certificateauthority { /** * The value of the KeyId in lowercase hexadecimal. * - * The `x509Config` block supports: + * The `x509Config` block supports: */ keyId?: string; } @@ -10084,7 +10104,7 @@ export namespace certificateauthority { * Structure is documented below. * * - * The `x509Config` block supports: + * The `x509Config` block supports: */ publicKey: outputs.certificateauthority.CertificateConfigPublicKey; /** @@ -11085,7 +11105,7 @@ export namespace certificatemanager { * Structure is documented below. * * - * The `provisioningIssue` block contains: + * The `provisioningIssue` block contains: */ authorizationAttemptInfos: outputs.certificatemanager.CertificateManagedAuthorizationAttemptInfo[]; /** @@ -11438,6 +11458,92 @@ export namespace certificatemanager { } export namespace chronicle { + export interface DataAccessScopeAllowedDataAccessLabel { + /** + * The asset namespace configured in the forwarder + * of the customer's events. + */ + assetNamespace?: string; + /** + * The name of the data access label. + */ + dataAccessLabel?: string; + /** + * (Output) + * Output only. The display name of the label. + * Data access label and log types's name + * will match the display name of the resource. + * The asset namespace will match the namespace itself. + * The ingestion key value pair will match the key of the tuple. + */ + displayName: string; + /** + * Representation of an ingestion label type. + * Structure is documented below. + */ + ingestionLabel?: outputs.chronicle.DataAccessScopeAllowedDataAccessLabelIngestionLabel; + /** + * The name of the log type. + */ + logType?: string; + } + + export interface DataAccessScopeAllowedDataAccessLabelIngestionLabel { + /** + * Required. The key of the ingestion label. Always required. + */ + ingestionLabelKey: string; + /** + * Optional. The value of the ingestion label. Optional. An object + * with no provided value and some key provided would match + * against the given key and ANY value. + */ + ingestionLabelValue?: string; + } + + export interface DataAccessScopeDeniedDataAccessLabel { + /** + * The asset namespace configured in the forwarder + * of the customer's events. + */ + assetNamespace?: string; + /** + * The name of the data access label. + */ + dataAccessLabel?: string; + /** + * (Output) + * Output only. The display name of the label. + * Data access label and log types's name + * will match the display name of the resource. + * The asset namespace will match the namespace itself. + * The ingestion key value pair will match the key of the tuple. + */ + displayName: string; + /** + * Representation of an ingestion label type. + * Structure is documented below. + */ + ingestionLabel?: outputs.chronicle.DataAccessScopeDeniedDataAccessLabelIngestionLabel; + /** + * The name of the log type. + */ + logType?: string; + } + + export interface DataAccessScopeDeniedDataAccessLabelIngestionLabel { + /** + * Required. The key of the ingestion label. Always required. + */ + ingestionLabelKey: string; + /** + * Optional. The value of the ingestion label. Optional. An object + * with no provided value and some key provided would match + * against the given key and ANY value. + */ + ingestionLabelValue?: string; + } + export interface WatchlistEntityCount { /** * (Output) @@ -12802,7 +12908,7 @@ export namespace cloudbuild { * Structure is documented below. * * - * The `timing` block contains: + * The `timing` block contains: */ timings: outputs.cloudbuild.TriggerBuildArtifactsObjectsTiming[]; } @@ -22442,7 +22548,7 @@ export namespace compute { * Structure is documented below. * * - * The `awsV4Authentication` block supports: + * The `awsV4Authentication` block supports: */ awsV4Authentication?: outputs.compute.BackendServiceSecuritySettingsAwsV4Authentication; /** @@ -22758,7 +22864,7 @@ export namespace compute { * Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. * * - * The `layer4Configs` block supports: + * The `layer4Configs` block supports: */ srcThreatIntelligences?: string[]; } @@ -22890,7 +22996,7 @@ export namespace compute { * Structure is documented below. * * - * The `layer4Config` block supports: + * The `layer4Config` block supports: */ layer4Configs: outputs.compute.FirewallPolicyWithRulesPredefinedRuleMatchLayer4Config[]; /** @@ -23047,7 +23153,7 @@ export namespace compute { * Structure is documented below. * * - * The `layer4Config` block supports: + * The `layer4Config` block supports: */ layer4Configs: outputs.compute.FirewallPolicyWithRulesRuleMatchLayer4Config[]; /** @@ -31044,7 +31150,7 @@ export namespace compute { * Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. * * - * The `layer4Configs` block supports: + * The `layer4Configs` block supports: */ srcThreatIntelligences?: string[]; } @@ -31241,7 +31347,7 @@ export namespace compute { * Structure is documented below. * * - * The `layer4Config` block supports: + * The `layer4Config` block supports: */ srcSecureTags: outputs.compute.NetworkFirewallPolicyWithRulesPredefinedRuleMatchSrcSecureTag[]; /** @@ -31447,7 +31553,7 @@ export namespace compute { * Structure is documented below. * * - * The `layer4Config` block supports: + * The `layer4Config` block supports: */ srcSecureTags?: outputs.compute.NetworkFirewallPolicyWithRulesRuleMatchSrcSecureTag[]; /** @@ -31657,7 +31763,7 @@ export namespace compute { * Structure is documented below. * * - * The `layer4Config` block supports: + * The `layer4Config` block supports: */ layer4Configs: outputs.compute.OrganizationSecurityPolicyRuleMatchConfigLayer4Config[]; /** @@ -34034,7 +34140,7 @@ export namespace compute { * Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. * * - * The `layer4Configs` block supports: + * The `layer4Configs` block supports: */ srcThreatIntelligences?: string[]; } @@ -34231,7 +34337,7 @@ export namespace compute { * Structure is documented below. * * - * The `layer4Config` block supports: + * The `layer4Config` block supports: */ srcSecureTags: outputs.compute.RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchSrcSecureTag[]; /** @@ -34437,7 +34543,7 @@ export namespace compute { * Structure is documented below. * * - * The `layer4Config` block supports: + * The `layer4Config` block supports: */ srcSecureTags?: outputs.compute.RegionNetworkFirewallPolicyWithRulesRuleMatchSrcSecureTag[]; /** @@ -47989,7 +48095,7 @@ export namespace datacatalog { * Structure is documented below. * * - * The `sampleGcsFileSpecs` block contains: + * The `sampleGcsFileSpecs` block contains: */ sampleGcsFileSpecs: outputs.datacatalog.EntryGcsFilesetSpecSampleGcsFileSpec[]; } @@ -60183,39 +60289,47 @@ export namespace deploymentmanager { } export namespace developerconnect { + export interface ConnectionCryptoKeyConfig { + /** + * Required. The name of the key which is used to encrypt/decrypt customer data. For key + * in Cloud KMS, the key should be in the format of + * `projects/*/locations/*/keyRings/*/cryptoKeys/*`. + */ + keyReference: string; + } + export interface ConnectionGithubConfig { /** * Optional. GitHub App installation id. */ appInstallationId: string; /** - * Represents an OAuth token of the account that authorized the Connection,and - * associated metadata. + * Represents an OAuth token of the account that authorized the Connection, + * and associated metadata. * Structure is documented below. */ authorizerCredential: outputs.developerconnect.ConnectionGithubConfigAuthorizerCredential; /** - * Required. Immutable. The GitHub Application that was installed to - * the GitHub user or organization. + * Required. Immutable. The GitHub Application that was installed to the GitHub user or + * organization. * Possible values: * GIT_HUB_APP_UNSPECIFIED * DEVELOPER_CONNECT - * FIREBASE" + * FIREBASE */ githubApp: string; /** * (Output) - * Output only. The URI to navigate to in order to manage the installation - * associated with this GitHubConfig. + * Output only. The URI to navigate to in order to manage the installation associated + * with this GitHubConfig. */ installationUri: string; } export interface ConnectionGithubConfigAuthorizerCredential { /** - * Required. A SecretManager resource containing the OAuth token - * that authorizes the connection. - * Format: `projects/*/secrets/*/versions/*`. + * Required. A SecretManager resource containing the OAuth token that authorizes + * the connection. Format: `projects/*/secrets/*/versions/*`. */ oauthTokenSecretVersion: string; /** @@ -60225,15 +60339,202 @@ export namespace developerconnect { username: string; } + export interface ConnectionGithubEnterpriseConfig { + /** + * Optional. ID of the GitHub App created from the manifest. + */ + appId?: string; + /** + * Optional. ID of the installation of the GitHub App. + */ + appInstallationId?: string; + /** + * (Output) + * Output only. The URL-friendly name of the GitHub App. + */ + appSlug: string; + /** + * Required. The URI of the GitHub Enterprise host this connection is for. + */ + hostUri: string; + /** + * (Output) + * Output only. The URI to navigate to in order to manage the installation associated + * with this GitHubEnterpriseConfig. + */ + installationUri: string; + /** + * Optional. SecretManager resource containing the private key of the GitHub App, + * formatted as `projects/*/secrets/*/versions/*`. + */ + privateKeySecretVersion?: string; + /** + * (Output) + * Output only. GitHub Enterprise version installed at the host_uri. + */ + serverVersion: string; + /** + * ServiceDirectoryConfig represents Service Directory configuration for a + * connection. + * Structure is documented below. + */ + serviceDirectoryConfig?: outputs.developerconnect.ConnectionGithubEnterpriseConfigServiceDirectoryConfig; + /** + * Optional. SSL certificate to use for requests to GitHub Enterprise. + */ + sslCaCertificate?: string; + /** + * Optional. SecretManager resource containing the webhook secret of the GitHub App, + * formatted as `projects/*/secrets/*/versions/*`. + */ + webhookSecretSecretVersion?: string; + } + + export interface ConnectionGithubEnterpriseConfigServiceDirectoryConfig { + /** + * Required. The Service Directory service name. + * Format: + * projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + */ + service: string; + } + + export interface ConnectionGitlabConfig { + /** + * Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + */ + authorizerCredential: outputs.developerconnect.ConnectionGitlabConfigAuthorizerCredential; + /** + * Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + */ + readAuthorizerCredential: outputs.developerconnect.ConnectionGitlabConfigReadAuthorizerCredential; + /** + * Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + * formatted as `projects/*/secrets/*/versions/*`. This is used to validate + * webhooks. + */ + webhookSecretSecretVersion: string; + } + + export interface ConnectionGitlabConfigAuthorizerCredential { + /** + * Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + */ + userTokenSecretVersion: string; + /** + * (Output) + * Output only. The username associated with this token. + */ + username: string; + } + + export interface ConnectionGitlabConfigReadAuthorizerCredential { + /** + * Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + */ + userTokenSecretVersion: string; + /** + * (Output) + * Output only. The username associated with this token. + */ + username: string; + } + + export interface ConnectionGitlabEnterpriseConfig { + /** + * Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + */ + authorizerCredential: outputs.developerconnect.ConnectionGitlabEnterpriseConfigAuthorizerCredential; + /** + * Required. The URI of the GitLab Enterprise host this connection is for. + */ + hostUri: string; + /** + * Represents a personal access token that authorized the Connection, + * and associated metadata. + * Structure is documented below. + */ + readAuthorizerCredential: outputs.developerconnect.ConnectionGitlabEnterpriseConfigReadAuthorizerCredential; + /** + * (Output) + * Output only. Version of the GitLab Enterprise server running on the `hostUri`. + */ + serverVersion: string; + /** + * ServiceDirectoryConfig represents Service Directory configuration for a + * connection. + * Structure is documented below. + */ + serviceDirectoryConfig?: outputs.developerconnect.ConnectionGitlabEnterpriseConfigServiceDirectoryConfig; + /** + * Optional. SSL Certificate Authority certificate to use for requests to GitLab + * Enterprise instance. + */ + sslCaCertificate?: string; + /** + * Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + * formatted as `projects/*/secrets/*/versions/*`. This is used to validate + * webhooks. + */ + webhookSecretSecretVersion: string; + } + + export interface ConnectionGitlabEnterpriseConfigAuthorizerCredential { + /** + * Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + */ + userTokenSecretVersion: string; + /** + * (Output) + * Output only. The username associated with this token. + */ + username: string; + } + + export interface ConnectionGitlabEnterpriseConfigReadAuthorizerCredential { + /** + * Required. A SecretManager resource containing the user token that authorizes + * the Developer Connect connection. Format: + * `projects/*/secrets/*/versions/*`. + */ + userTokenSecretVersion: string; + /** + * (Output) + * Output only. The username associated with this token. + */ + username: string; + } + + export interface ConnectionGitlabEnterpriseConfigServiceDirectoryConfig { + /** + * Required. The Service Directory service name. + * Format: + * projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + */ + service: string; + } + export interface ConnectionInstallationState { /** - * Output only. Link to follow for next action. Empty string if the - * installation is already complete. + * Output only. Link to follow for next action. Empty string if the installation is already + * complete. */ actionUri?: string; /** - * Output only. Message of what the user should do next to continue - * the installation.Empty string if the installation is already complete. + * Output only. Message of what the user should do next to continue the installation. + * Empty string if the installation is already complete. */ message?: string; /** @@ -63031,6 +63332,10 @@ export namespace dns { * Structure is documented below. */ geos?: outputs.dns.RecordSetRoutingPolicyGeo[]; + /** + * Specifies the health check (used with external endpoints). + */ + healthCheck?: string; /** * The configuration for a failover policy with global to regional failover. Queries are responded to with the global primary targets, but if none of the primary targets are healthy, then we fallback to a regional failover policy. * Structure is documented below. @@ -63060,11 +63365,15 @@ export namespace dns { } export interface RecordSetRoutingPolicyGeoHealthCheckedTargets { + /** + * The list of external endpoint addresses to health check. + */ + externalEndpoints?: string[]; /** * The list of internal load balancers to health check. * Structure is documented below. */ - internalLoadBalancers: outputs.dns.RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancer[]; + internalLoadBalancers?: outputs.dns.RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancer[]; } export interface RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancer { @@ -63132,11 +63441,15 @@ export namespace dns { } export interface RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargets { + /** + * The list of external endpoint addresses to health check. + */ + externalEndpoints?: string[]; /** * The list of internal load balancers to health check. * Structure is documented below. */ - internalLoadBalancers: outputs.dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancer[]; + internalLoadBalancers?: outputs.dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancer[]; } export interface RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancer { @@ -63171,10 +63484,14 @@ export namespace dns { } export interface RecordSetRoutingPolicyPrimaryBackupPrimary { + /** + * The Internet IP addresses to be health checked. + */ + externalEndpoints?: string[]; /** * The list of internal load balancers to health check. */ - internalLoadBalancers: outputs.dns.RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancer[]; + internalLoadBalancers?: outputs.dns.RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancer[]; } export interface RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancer { @@ -63225,11 +63542,15 @@ export namespace dns { } export interface RecordSetRoutingPolicyWrrHealthCheckedTargets { + /** + * The list of external endpoint addresses to health check. + */ + externalEndpoints?: string[]; /** * The list of internal load balancers to health check. * Structure is documented below. */ - internalLoadBalancers: outputs.dns.RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancer[]; + internalLoadBalancers?: outputs.dns.RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancer[]; } export interface RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancer { @@ -63375,7 +63696,7 @@ export namespace edgecontainer { * Structure is documented below. * * - * The `kmsStatus` block contains: + * The `kmsStatus` block contains: */ kmsStatuses: outputs.edgecontainer.ClusterControlPlaneEncryptionKmsStatus[]; } @@ -68576,7 +68897,7 @@ export namespace gkeonprem { /** * Whether to enable control plane node auto resizing. * - * The `vsphereConfig` block contains: + * The `vsphereConfig` block contains: */ enabled: boolean; } @@ -68723,7 +69044,7 @@ export namespace gkeonprem { /** * The VIP which you previously set aside for ingress traffic into this cluster. * - * The `f5Config` block supports: + * The `f5Config` block supports: */ ingressVip?: string; } @@ -68812,7 +69133,7 @@ export namespace gkeonprem { /** * DNS search domains. * - * The `controlPlaneV2Config` block supports: + * The `controlPlaneV2Config` block supports: */ dnsSearchDomains?: string[]; /** @@ -68987,31 +69308,31 @@ export namespace gkeonprem { /** * Contains the vCenter CA certificate public key for SSL verification. */ - caCertData?: string; + caCertData: string; /** * The name of the vCenter cluster for the user cluster. */ - cluster?: string; + cluster: string; /** * The name of the vCenter datacenter for the user cluster. */ - datacenter?: string; + datacenter: string; /** * The name of the vCenter datastore for the user cluster. */ - datastore?: string; + datastore: string; /** * The name of the vCenter folder for the user cluster. */ - folder?: string; + folder: string; /** * The name of the vCenter resource pool for the user cluster. */ - resourcePool?: string; + resourcePool: string; /** * The name of the vCenter storage policy for the user cluster. */ - storagePolicyName?: string; + storagePolicyName: string; } export interface VMwareNodePoolConfig { @@ -69319,7 +69640,7 @@ export namespace gkeonprem { /** * The VIP to configure the load balancer for add-ons. * - * The `f5Config` block supports: + * The `f5Config` block supports: */ addonsVip?: string; /** @@ -69490,7 +69811,7 @@ export namespace gkeonprem { * Structure is documented below. * * - * The `status` block contains: + * The `status` block contains: */ statuses: outputs.gkeonprem.VmwareAdminClusterPlatformConfigStatus[]; } @@ -70835,6 +71156,7 @@ export namespace iap { corsSettings?: outputs.iap.SettingsAccessSettingsCorsSettings; /** * GCIP claims and endpoint configurations for 3p identity providers. + * * Enabling gcipSetting significantly changes the way IAP authenticates users. Identity Platform does not support IAM, so IAP will not enforce any IAM policies for requests to your application. * Structure is documented below. */ gcipSettings?: outputs.iap.SettingsAccessSettingsGcipSettings; @@ -70907,6 +71229,7 @@ export namespace iap { * (https://developers.google.com/identity/protocols/OpenIDConnect#hd-param) * Note: IAP does not verify that the id token's hd claim matches this value * since access behavior is managed by IAM policies. + * * loginHint setting is not a replacement for access control. Always enforce an appropriate access policy if you want to restrict access to users outside your domain. */ loginHint?: string; /** @@ -70949,7 +71272,7 @@ export namespace iap { * Structure is documented below. * * - * The `oauth2` block supports: + * The `oauth2` block supports: */ oauth2?: outputs.iap.SettingsAccessSettingsWorkforceIdentitySettingsOauth2; /** @@ -71516,7 +71839,7 @@ export namespace identityplatform { /** * Whether anonymous user auth is enabled for the project or not. * - * The `hashConfig` block contains: + * The `hashConfig` block contains: */ enabled: boolean; } @@ -71633,7 +71956,7 @@ export namespace identityplatform { * Structure is documented below. * * - * The `spCertificates` block contains: + * The `spCertificates` block contains: */ spCertificates: outputs.identityplatform.InboundSamlConfigSpConfigSpCertificate[]; /** @@ -71687,7 +72010,7 @@ export namespace identityplatform { * Structure is documented below. * * - * The `spCertificates` block contains: + * The `spCertificates` block contains: */ spCertificates: outputs.identityplatform.TenantInboundSamlConfigSpConfigSpCertificate[]; /** @@ -71873,7 +72196,7 @@ export namespace integrationconnectors { /** * Value for the "aud" claim. * - * The `oauth2ClientCredentials` block supports: + * The `oauth2ClientCredentials` block supports: */ audience?: string; /** @@ -71920,7 +72243,7 @@ export namespace integrationconnectors { * The resource name of the secret version in the format, * format as: projects/*/secrets/*/versions/*. * - * The `oauth2AuthCodeFlow` block supports: + * The `oauth2AuthCodeFlow` block supports: */ secretVersion: string; } @@ -75655,7 +75978,7 @@ export namespace monitoring { * Structure is documented below. * * - * The `cloudFunctionV2` block supports: + * The `cloudFunctionV2` block supports: */ cloudFunctionV2: outputs.monitoring.UptimeCheckConfigSyntheticMonitorCloudFunctionV2; } @@ -79655,7 +79978,7 @@ export namespace oracledatabase { * The email address used by Oracle to send notifications regarding databases * and infrastructure. * - * The `apexDetails` block contains: + * The `apexDetails` block contains: */ email: string; } @@ -89700,6 +90023,10 @@ export namespace sql { * Specify how the server certificate's Certificate Authority is hosted. Supported values are `GOOGLE_MANAGED_INTERNAL_CA` and `GOOGLE_MANAGED_CAS_CA`. */ serverCaMode: string; + /** + * The resource name of the server CA pool for an instance with `CUSTOMER_MANAGED_CAS_CA` as the `serverCaMode`. + */ + serverCaPool?: string; /** * Specify how SSL connection should be enforced in DB connections. Supported values are `ALLOW_UNENCRYPTED_AND_ENCRYPTED`, `ENCRYPTED_ONLY`, and `TRUSTED_CLIENT_CERTIFICATE_REQUIRED` (not supported for SQL Server). See [API reference doc](https://cloud.google.com/sql/docs/postgres/admin-api/rest/v1/instances#ipconfiguration) for details. */ @@ -90197,6 +90524,10 @@ export namespace sql { * Specify how the server certificate's Certificate Authority is hosted. */ serverCaMode: string; + /** + * The resource name of the server CA pool for an instance with "CUSTOMER_MANAGED_CAS_CA" as the "serverCaMode". + */ + serverCaPool: string; /** * Specify how SSL connection should be enforced in DB connections. */ @@ -90740,6 +91071,10 @@ export namespace sql { * Specify how the server certificate's Certificate Authority is hosted. */ serverCaMode: string; + /** + * The resource name of the server CA pool for an instance with "CUSTOMER_MANAGED_CAS_CA" as the "serverCaMode". + */ + serverCaPool: string; /** * Specify how SSL connection should be enforced in DB connections. */ @@ -92471,7 +92806,7 @@ export namespace transcoder { * Structure is documented below. * * - * The `h264` block supports: + * The `h264` block supports: */ h264: outputs.transcoder.JobConfigElementaryStreamVideoStreamH264; } @@ -92888,7 +93223,7 @@ export namespace transcoder { * Structure is documented below. * * - * The `h264` block supports: + * The `h264` block supports: */ h264: outputs.transcoder.JobTemplateConfigElementaryStreamVideoStreamH264; } diff --git a/sdk/python/pulumi_gcp/__init__.py b/sdk/python/pulumi_gcp/__init__.py index 2519c68e2f..d3ae71973a 100644 --- a/sdk/python/pulumi_gcp/__init__.py +++ b/sdk/python/pulumi_gcp/__init__.py @@ -1129,6 +1129,14 @@ "gcp:beyondcorp/appGateway:AppGateway": "AppGateway" } }, + { + "pkg": "gcp", + "mod": "beyondcorp/securityGateway", + "fqn": "pulumi_gcp.beyondcorp", + "classes": { + "gcp:beyondcorp/securityGateway:SecurityGateway": "SecurityGateway" + } + }, { "pkg": "gcp", "mod": "biglake/catalog", @@ -1721,6 +1729,22 @@ "gcp:certificatemanager/trustConfig:TrustConfig": "TrustConfig" } }, + { + "pkg": "gcp", + "mod": "chronicle/dataAccessLabel", + "fqn": "pulumi_gcp.chronicle", + "classes": { + "gcp:chronicle/dataAccessLabel:DataAccessLabel": "DataAccessLabel" + } + }, + { + "pkg": "gcp", + "mod": "chronicle/dataAccessScope", + "fqn": "pulumi_gcp.chronicle", + "classes": { + "gcp:chronicle/dataAccessScope:DataAccessScope": "DataAccessScope" + } + }, { "pkg": "gcp", "mod": "chronicle/watchlist", @@ -2017,6 +2041,14 @@ "gcp:cloudids/endpoint:Endpoint": "Endpoint" } }, + { + "pkg": "gcp", + "mod": "cloudquota/sQuotaAdjusterSettings", + "fqn": "pulumi_gcp.cloudquota", + "classes": { + "gcp:cloudquota/sQuotaAdjusterSettings:SQuotaAdjusterSettings": "SQuotaAdjusterSettings" + } + }, { "pkg": "gcp", "mod": "cloudquota/sQuotaPreference", diff --git a/sdk/python/pulumi_gcp/applicationintegration/_inputs.py b/sdk/python/pulumi_gcp/applicationintegration/_inputs.py index 3551a2145f..10957674f7 100644 --- a/sdk/python/pulumi_gcp/applicationintegration/_inputs.py +++ b/sdk/python/pulumi_gcp/applicationintegration/_inputs.py @@ -1093,7 +1093,7 @@ class AuthConfigDecryptedCredentialUsernameAndPasswordArgsDict(TypedDict): """ Password to be used. - The `oauth2_authorization_code` block supports: + The `oauth2_authorization_code` block supports: """ username: NotRequired[pulumi.Input[str]] """ @@ -1110,7 +1110,7 @@ def __init__(__self__, *, """ :param pulumi.Input[str] password: Password to be used. - The `oauth2_authorization_code` block supports: + The `oauth2_authorization_code` block supports: :param pulumi.Input[str] username: Username to be used. """ if password is not None: @@ -1124,7 +1124,7 @@ def password(self) -> Optional[pulumi.Input[str]]: """ Password to be used. - The `oauth2_authorization_code` block supports: + The `oauth2_authorization_code` block supports: """ return pulumi.get(self, "password") diff --git a/sdk/python/pulumi_gcp/applicationintegration/outputs.py b/sdk/python/pulumi_gcp/applicationintegration/outputs.py index 725d0d4f63..0ae5cf4dd1 100644 --- a/sdk/python/pulumi_gcp/applicationintegration/outputs.py +++ b/sdk/python/pulumi_gcp/applicationintegration/outputs.py @@ -882,7 +882,7 @@ def __init__(__self__, *, """ :param str password: Password to be used. - The `oauth2_authorization_code` block supports: + The `oauth2_authorization_code` block supports: :param str username: Username to be used. """ if password is not None: @@ -896,7 +896,7 @@ def password(self) -> Optional[str]: """ Password to be used. - The `oauth2_authorization_code` block supports: + The `oauth2_authorization_code` block supports: """ return pulumi.get(self, "password") diff --git a/sdk/python/pulumi_gcp/beyondcorp/__init__.py b/sdk/python/pulumi_gcp/beyondcorp/__init__.py index 31a7c309af..5032841536 100644 --- a/sdk/python/pulumi_gcp/beyondcorp/__init__.py +++ b/sdk/python/pulumi_gcp/beyondcorp/__init__.py @@ -11,5 +11,6 @@ from .get_app_connection import * from .get_app_connector import * from .get_app_gateway import * +from .security_gateway import * from ._inputs import * from . import outputs diff --git a/sdk/python/pulumi_gcp/beyondcorp/_inputs.py b/sdk/python/pulumi_gcp/beyondcorp/_inputs.py index 175336cd5a..fb97645884 100644 --- a/sdk/python/pulumi_gcp/beyondcorp/_inputs.py +++ b/sdk/python/pulumi_gcp/beyondcorp/_inputs.py @@ -25,6 +25,10 @@ 'AppConnectorPrincipalInfoServiceAccountArgsDict', 'AppGatewayAllocatedConnectionArgs', 'AppGatewayAllocatedConnectionArgsDict', + 'SecurityGatewayHubArgs', + 'SecurityGatewayHubArgsDict', + 'SecurityGatewayHubInternetGatewayArgs', + 'SecurityGatewayHubInternetGatewayArgsDict', ] MYPY = False @@ -311,3 +315,92 @@ def psc_uri(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "psc_uri", value) +if not MYPY: + class SecurityGatewayHubArgsDict(TypedDict): + region: pulumi.Input[str] + """ + The identifier for this object. Format specified above. + """ + internet_gateway: NotRequired[pulumi.Input['SecurityGatewayHubInternetGatewayArgsDict']] + """ + Internet Gateway configuration. + Structure is documented below. + """ +elif False: + SecurityGatewayHubArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class SecurityGatewayHubArgs: + def __init__(__self__, *, + region: pulumi.Input[str], + internet_gateway: Optional[pulumi.Input['SecurityGatewayHubInternetGatewayArgs']] = None): + """ + :param pulumi.Input[str] region: The identifier for this object. Format specified above. + :param pulumi.Input['SecurityGatewayHubInternetGatewayArgs'] internet_gateway: Internet Gateway configuration. + Structure is documented below. + """ + pulumi.set(__self__, "region", region) + if internet_gateway is not None: + pulumi.set(__self__, "internet_gateway", internet_gateway) + + @property + @pulumi.getter + def region(self) -> pulumi.Input[str]: + """ + The identifier for this object. Format specified above. + """ + return pulumi.get(self, "region") + + @region.setter + def region(self, value: pulumi.Input[str]): + pulumi.set(self, "region", value) + + @property + @pulumi.getter(name="internetGateway") + def internet_gateway(self) -> Optional[pulumi.Input['SecurityGatewayHubInternetGatewayArgs']]: + """ + Internet Gateway configuration. + Structure is documented below. + """ + return pulumi.get(self, "internet_gateway") + + @internet_gateway.setter + def internet_gateway(self, value: Optional[pulumi.Input['SecurityGatewayHubInternetGatewayArgs']]): + pulumi.set(self, "internet_gateway", value) + + +if not MYPY: + class SecurityGatewayHubInternetGatewayArgsDict(TypedDict): + assigned_ips: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]] + """ + (Output) + Output only. List of IP addresses assigned to the Cloud NAT. + """ +elif False: + SecurityGatewayHubInternetGatewayArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class SecurityGatewayHubInternetGatewayArgs: + def __init__(__self__, *, + assigned_ips: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None): + """ + :param pulumi.Input[Sequence[pulumi.Input[str]]] assigned_ips: (Output) + Output only. List of IP addresses assigned to the Cloud NAT. + """ + if assigned_ips is not None: + pulumi.set(__self__, "assigned_ips", assigned_ips) + + @property + @pulumi.getter(name="assignedIps") + def assigned_ips(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + (Output) + Output only. List of IP addresses assigned to the Cloud NAT. + """ + return pulumi.get(self, "assigned_ips") + + @assigned_ips.setter + def assigned_ips(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "assigned_ips", value) + + diff --git a/sdk/python/pulumi_gcp/beyondcorp/outputs.py b/sdk/python/pulumi_gcp/beyondcorp/outputs.py index c2b647e056..a323b1ee83 100644 --- a/sdk/python/pulumi_gcp/beyondcorp/outputs.py +++ b/sdk/python/pulumi_gcp/beyondcorp/outputs.py @@ -21,6 +21,8 @@ 'AppConnectorPrincipalInfo', 'AppConnectorPrincipalInfoServiceAccount', 'AppGatewayAllocatedConnection', + 'SecurityGatewayHub', + 'SecurityGatewayHubInternetGateway', 'GetAppConnectionApplicationEndpointResult', 'GetAppConnectionGatewayResult', 'GetAppConnectorPrincipalInfoResult', @@ -251,6 +253,93 @@ def psc_uri(self) -> Optional[str]: return pulumi.get(self, "psc_uri") +@pulumi.output_type +class SecurityGatewayHub(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "internetGateway": + suggest = "internet_gateway" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in SecurityGatewayHub. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + SecurityGatewayHub.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + SecurityGatewayHub.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + region: str, + internet_gateway: Optional['outputs.SecurityGatewayHubInternetGateway'] = None): + """ + :param str region: The identifier for this object. Format specified above. + :param 'SecurityGatewayHubInternetGatewayArgs' internet_gateway: Internet Gateway configuration. + Structure is documented below. + """ + pulumi.set(__self__, "region", region) + if internet_gateway is not None: + pulumi.set(__self__, "internet_gateway", internet_gateway) + + @property + @pulumi.getter + def region(self) -> str: + """ + The identifier for this object. Format specified above. + """ + return pulumi.get(self, "region") + + @property + @pulumi.getter(name="internetGateway") + def internet_gateway(self) -> Optional['outputs.SecurityGatewayHubInternetGateway']: + """ + Internet Gateway configuration. + Structure is documented below. + """ + return pulumi.get(self, "internet_gateway") + + +@pulumi.output_type +class SecurityGatewayHubInternetGateway(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "assignedIps": + suggest = "assigned_ips" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in SecurityGatewayHubInternetGateway. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + SecurityGatewayHubInternetGateway.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + SecurityGatewayHubInternetGateway.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + assigned_ips: Optional[Sequence[str]] = None): + """ + :param Sequence[str] assigned_ips: (Output) + Output only. List of IP addresses assigned to the Cloud NAT. + """ + if assigned_ips is not None: + pulumi.set(__self__, "assigned_ips", assigned_ips) + + @property + @pulumi.getter(name="assignedIps") + def assigned_ips(self) -> Optional[Sequence[str]]: + """ + (Output) + Output only. List of IP addresses assigned to the Cloud NAT. + """ + return pulumi.get(self, "assigned_ips") + + @pulumi.output_type class GetAppConnectionApplicationEndpointResult(dict): def __init__(__self__, *, diff --git a/sdk/python/pulumi_gcp/beyondcorp/security_gateway.py b/sdk/python/pulumi_gcp/beyondcorp/security_gateway.py new file mode 100644 index 0000000000..06115722df --- /dev/null +++ b/sdk/python/pulumi_gcp/beyondcorp/security_gateway.py @@ -0,0 +1,670 @@ +# 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__ = ['SecurityGatewayArgs', 'SecurityGateway'] + +@pulumi.input_type +class SecurityGatewayArgs: + def __init__(__self__, *, + location: pulumi.Input[str], + security_gateway_id: pulumi.Input[str], + display_name: Optional[pulumi.Input[str]] = None, + hubs: Optional[pulumi.Input[Sequence[pulumi.Input['SecurityGatewayHubArgs']]]] = None, + project: Optional[pulumi.Input[str]] = None): + """ + The set of arguments for constructing a SecurityGateway resource. + :param pulumi.Input[str] location: Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + :param pulumi.Input[str] security_gateway_id: Optional. User-settable SecurityGateway resource ID. + * Must start with a letter. + * Must contain between 4-63 characters from `/a-z-/`. + * Must end with a number or letter. + + + - - - + :param pulumi.Input[str] display_name: Optional. An arbitrary user-provided name for the SecurityGateway. + Cannot exceed 64 characters. + :param pulumi.Input[Sequence[pulumi.Input['SecurityGatewayHubArgs']]] hubs: Optional. Map of Hubs that represents regional data path deployment with GCP region + as a key. + Structure is documented below. + :param pulumi.Input[str] project: The ID of the project in which the resource belongs. + If it is not provided, the provider project is used. + """ + pulumi.set(__self__, "location", location) + pulumi.set(__self__, "security_gateway_id", security_gateway_id) + if display_name is not None: + pulumi.set(__self__, "display_name", display_name) + if hubs is not None: + pulumi.set(__self__, "hubs", hubs) + if project is not None: + pulumi.set(__self__, "project", project) + + @property + @pulumi.getter + def location(self) -> pulumi.Input[str]: + """ + Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + """ + return pulumi.get(self, "location") + + @location.setter + def location(self, value: pulumi.Input[str]): + pulumi.set(self, "location", value) + + @property + @pulumi.getter(name="securityGatewayId") + def security_gateway_id(self) -> pulumi.Input[str]: + """ + Optional. User-settable SecurityGateway resource ID. + * Must start with a letter. + * Must contain between 4-63 characters from `/a-z-/`. + * Must end with a number or letter. + + + - - - + """ + return pulumi.get(self, "security_gateway_id") + + @security_gateway_id.setter + def security_gateway_id(self, value: pulumi.Input[str]): + pulumi.set(self, "security_gateway_id", value) + + @property + @pulumi.getter(name="displayName") + def display_name(self) -> Optional[pulumi.Input[str]]: + """ + Optional. An arbitrary user-provided name for the SecurityGateway. + Cannot exceed 64 characters. + """ + 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 + def hubs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['SecurityGatewayHubArgs']]]]: + """ + Optional. Map of Hubs that represents regional data path deployment with GCP region + as a key. + Structure is documented below. + """ + return pulumi.get(self, "hubs") + + @hubs.setter + def hubs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['SecurityGatewayHubArgs']]]]): + pulumi.set(self, "hubs", 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 _SecurityGatewayState: + def __init__(__self__, *, + create_time: Optional[pulumi.Input[str]] = None, + display_name: Optional[pulumi.Input[str]] = None, + external_ips: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + hubs: Optional[pulumi.Input[Sequence[pulumi.Input['SecurityGatewayHubArgs']]]] = None, + location: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None, + security_gateway_id: Optional[pulumi.Input[str]] = None, + state: Optional[pulumi.Input[str]] = None, + update_time: Optional[pulumi.Input[str]] = None): + """ + Input properties used for looking up and filtering SecurityGateway resources. + :param pulumi.Input[str] create_time: Output only. Timestamp when the resource was created. + :param pulumi.Input[str] display_name: Optional. An arbitrary user-provided name for the SecurityGateway. + Cannot exceed 64 characters. + :param pulumi.Input[Sequence[pulumi.Input[str]]] external_ips: Output only. IP addresses that will be used for establishing + connection to the endpoints. + :param pulumi.Input[Sequence[pulumi.Input['SecurityGatewayHubArgs']]] hubs: Optional. Map of Hubs that represents regional data path deployment with GCP region + as a key. + Structure is documented below. + :param pulumi.Input[str] location: Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + :param pulumi.Input[str] name: Identifier. Name of 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] security_gateway_id: Optional. User-settable SecurityGateway resource ID. + * Must start with a letter. + * Must contain between 4-63 characters from `/a-z-/`. + * Must end with a number or letter. + + + - - - + :param pulumi.Input[str] state: Output only. The operational state of the SecurityGateway. + Possible values: + STATE_UNSPECIFIED + CREATING + UPDATING + DELETING + RUNNING + DOWN + ERROR + :param pulumi.Input[str] update_time: Output only. Timestamp when the resource was last modified. + """ + if create_time is not None: + pulumi.set(__self__, "create_time", create_time) + if display_name is not None: + pulumi.set(__self__, "display_name", display_name) + if external_ips is not None: + pulumi.set(__self__, "external_ips", external_ips) + if hubs is not None: + pulumi.set(__self__, "hubs", hubs) + 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 security_gateway_id is not None: + pulumi.set(__self__, "security_gateway_id", security_gateway_id) + 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]]: + """ + Output only. Timestamp when the resource 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="displayName") + def display_name(self) -> Optional[pulumi.Input[str]]: + """ + Optional. An arbitrary user-provided name for the SecurityGateway. + Cannot exceed 64 characters. + """ + 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="externalIps") + def external_ips(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + Output only. IP addresses that will be used for establishing + connection to the endpoints. + """ + return pulumi.get(self, "external_ips") + + @external_ips.setter + def external_ips(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "external_ips", value) + + @property + @pulumi.getter + def hubs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['SecurityGatewayHubArgs']]]]: + """ + Optional. Map of Hubs that represents regional data path deployment with GCP region + as a key. + Structure is documented below. + """ + return pulumi.get(self, "hubs") + + @hubs.setter + def hubs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['SecurityGatewayHubArgs']]]]): + pulumi.set(self, "hubs", value) + + @property + @pulumi.getter + def location(self) -> Optional[pulumi.Input[str]]: + """ + Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + """ + 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. Name of the resource. + """ + 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="securityGatewayId") + def security_gateway_id(self) -> Optional[pulumi.Input[str]]: + """ + Optional. User-settable SecurityGateway resource ID. + * Must start with a letter. + * Must contain between 4-63 characters from `/a-z-/`. + * Must end with a number or letter. + + + - - - + """ + return pulumi.get(self, "security_gateway_id") + + @security_gateway_id.setter + def security_gateway_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "security_gateway_id", value) + + @property + @pulumi.getter + def state(self) -> Optional[pulumi.Input[str]]: + """ + Output only. The operational state of the SecurityGateway. + Possible values: + STATE_UNSPECIFIED + CREATING + UPDATING + DELETING + RUNNING + DOWN + ERROR + """ + 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]]: + """ + Output only. Timestamp when the resource was last modified. + """ + 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 SecurityGateway(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + display_name: Optional[pulumi.Input[str]] = None, + hubs: Optional[pulumi.Input[Sequence[pulumi.Input[Union['SecurityGatewayHubArgs', 'SecurityGatewayHubArgsDict']]]]] = None, + location: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None, + security_gateway_id: Optional[pulumi.Input[str]] = None, + __props__=None): + """ + Deployment of Security Gateway. + + ## Example Usage + + ### Beyondcorp Security Gateway Basic + + ```python + import pulumi + import pulumi_gcp as gcp + + example = gcp.beyondcorp.SecurityGateway("example", + security_gateway_id="default", + location="global", + display_name="My Security Gateway resource", + hubs=[{ + "region": "us-central1", + }]) + ``` + + ## Import + + SecurityGateway can be imported using any of these accepted formats: + + * `projects/{{project}}/locations/{{location}}/securityGateways/{{security_gateway_id}}` + + * `{{project}}/{{location}}/{{security_gateway_id}}` + + * `{{location}}/{{security_gateway_id}}` + + When using the `pulumi import` command, SecurityGateway can be imported using one of the formats above. For example: + + ```sh + $ pulumi import gcp:beyondcorp/securityGateway:SecurityGateway default projects/{{project}}/locations/{{location}}/securityGateways/{{security_gateway_id}} + ``` + + ```sh + $ pulumi import gcp:beyondcorp/securityGateway:SecurityGateway default {{project}}/{{location}}/{{security_gateway_id}} + ``` + + ```sh + $ pulumi import gcp:beyondcorp/securityGateway:SecurityGateway default {{location}}/{{security_gateway_id}} + ``` + + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] display_name: Optional. An arbitrary user-provided name for the SecurityGateway. + Cannot exceed 64 characters. + :param pulumi.Input[Sequence[pulumi.Input[Union['SecurityGatewayHubArgs', 'SecurityGatewayHubArgsDict']]]] hubs: Optional. Map of Hubs that represents regional data path deployment with GCP region + as a key. + Structure is documented below. + :param pulumi.Input[str] location: Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + :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] security_gateway_id: Optional. User-settable SecurityGateway resource ID. + * Must start with a letter. + * Must contain between 4-63 characters from `/a-z-/`. + * Must end with a number or letter. + + + - - - + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: SecurityGatewayArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + Deployment of Security Gateway. + + ## Example Usage + + ### Beyondcorp Security Gateway Basic + + ```python + import pulumi + import pulumi_gcp as gcp + + example = gcp.beyondcorp.SecurityGateway("example", + security_gateway_id="default", + location="global", + display_name="My Security Gateway resource", + hubs=[{ + "region": "us-central1", + }]) + ``` + + ## Import + + SecurityGateway can be imported using any of these accepted formats: + + * `projects/{{project}}/locations/{{location}}/securityGateways/{{security_gateway_id}}` + + * `{{project}}/{{location}}/{{security_gateway_id}}` + + * `{{location}}/{{security_gateway_id}}` + + When using the `pulumi import` command, SecurityGateway can be imported using one of the formats above. For example: + + ```sh + $ pulumi import gcp:beyondcorp/securityGateway:SecurityGateway default projects/{{project}}/locations/{{location}}/securityGateways/{{security_gateway_id}} + ``` + + ```sh + $ pulumi import gcp:beyondcorp/securityGateway:SecurityGateway default {{project}}/{{location}}/{{security_gateway_id}} + ``` + + ```sh + $ pulumi import gcp:beyondcorp/securityGateway:SecurityGateway default {{location}}/{{security_gateway_id}} + ``` + + :param str resource_name: The name of the resource. + :param SecurityGatewayArgs 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(SecurityGatewayArgs, 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, + display_name: Optional[pulumi.Input[str]] = None, + hubs: Optional[pulumi.Input[Sequence[pulumi.Input[Union['SecurityGatewayHubArgs', 'SecurityGatewayHubArgsDict']]]]] = None, + location: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None, + security_gateway_id: 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__ = SecurityGatewayArgs.__new__(SecurityGatewayArgs) + + __props__.__dict__["display_name"] = display_name + __props__.__dict__["hubs"] = hubs + if location is None and not opts.urn: + raise TypeError("Missing required property 'location'") + __props__.__dict__["location"] = location + __props__.__dict__["project"] = project + if security_gateway_id is None and not opts.urn: + raise TypeError("Missing required property 'security_gateway_id'") + __props__.__dict__["security_gateway_id"] = security_gateway_id + __props__.__dict__["create_time"] = None + __props__.__dict__["external_ips"] = None + __props__.__dict__["name"] = None + __props__.__dict__["state"] = None + __props__.__dict__["update_time"] = None + super(SecurityGateway, __self__).__init__( + 'gcp:beyondcorp/securityGateway:SecurityGateway', + 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, + display_name: Optional[pulumi.Input[str]] = None, + external_ips: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + hubs: Optional[pulumi.Input[Sequence[pulumi.Input[Union['SecurityGatewayHubArgs', 'SecurityGatewayHubArgsDict']]]]] = None, + location: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None, + security_gateway_id: Optional[pulumi.Input[str]] = None, + state: Optional[pulumi.Input[str]] = None, + update_time: Optional[pulumi.Input[str]] = None) -> 'SecurityGateway': + """ + Get an existing SecurityGateway 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. Timestamp when the resource was created. + :param pulumi.Input[str] display_name: Optional. An arbitrary user-provided name for the SecurityGateway. + Cannot exceed 64 characters. + :param pulumi.Input[Sequence[pulumi.Input[str]]] external_ips: Output only. IP addresses that will be used for establishing + connection to the endpoints. + :param pulumi.Input[Sequence[pulumi.Input[Union['SecurityGatewayHubArgs', 'SecurityGatewayHubArgsDict']]]] hubs: Optional. Map of Hubs that represents regional data path deployment with GCP region + as a key. + Structure is documented below. + :param pulumi.Input[str] location: Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + :param pulumi.Input[str] name: Identifier. Name of 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] security_gateway_id: Optional. User-settable SecurityGateway resource ID. + * Must start with a letter. + * Must contain between 4-63 characters from `/a-z-/`. + * Must end with a number or letter. + + + - - - + :param pulumi.Input[str] state: Output only. The operational state of the SecurityGateway. + Possible values: + STATE_UNSPECIFIED + CREATING + UPDATING + DELETING + RUNNING + DOWN + ERROR + :param pulumi.Input[str] update_time: Output only. Timestamp when the resource was last modified. + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _SecurityGatewayState.__new__(_SecurityGatewayState) + + __props__.__dict__["create_time"] = create_time + __props__.__dict__["display_name"] = display_name + __props__.__dict__["external_ips"] = external_ips + __props__.__dict__["hubs"] = hubs + __props__.__dict__["location"] = location + __props__.__dict__["name"] = name + __props__.__dict__["project"] = project + __props__.__dict__["security_gateway_id"] = security_gateway_id + __props__.__dict__["state"] = state + __props__.__dict__["update_time"] = update_time + return SecurityGateway(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter(name="createTime") + def create_time(self) -> pulumi.Output[str]: + """ + Output only. Timestamp when the resource was created. + """ + return pulumi.get(self, "create_time") + + @property + @pulumi.getter(name="displayName") + def display_name(self) -> pulumi.Output[Optional[str]]: + """ + Optional. An arbitrary user-provided name for the SecurityGateway. + Cannot exceed 64 characters. + """ + return pulumi.get(self, "display_name") + + @property + @pulumi.getter(name="externalIps") + def external_ips(self) -> pulumi.Output[Sequence[str]]: + """ + Output only. IP addresses that will be used for establishing + connection to the endpoints. + """ + return pulumi.get(self, "external_ips") + + @property + @pulumi.getter + def hubs(self) -> pulumi.Output[Optional[Sequence['outputs.SecurityGatewayHub']]]: + """ + Optional. Map of Hubs that represents regional data path deployment with GCP region + as a key. + Structure is documented below. + """ + return pulumi.get(self, "hubs") + + @property + @pulumi.getter + def location(self) -> pulumi.Output[str]: + """ + Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + """ + return pulumi.get(self, "location") + + @property + @pulumi.getter + def name(self) -> pulumi.Output[str]: + """ + Identifier. Name of the resource. + """ + 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="securityGatewayId") + def security_gateway_id(self) -> pulumi.Output[str]: + """ + Optional. User-settable SecurityGateway resource ID. + * Must start with a letter. + * Must contain between 4-63 characters from `/a-z-/`. + * Must end with a number or letter. + + + - - - + """ + return pulumi.get(self, "security_gateway_id") + + @property + @pulumi.getter + def state(self) -> pulumi.Output[str]: + """ + Output only. The operational state of the SecurityGateway. + Possible values: + STATE_UNSPECIFIED + CREATING + UPDATING + DELETING + RUNNING + DOWN + ERROR + """ + return pulumi.get(self, "state") + + @property + @pulumi.getter(name="updateTime") + def update_time(self) -> pulumi.Output[str]: + """ + Output only. Timestamp when the resource was last modified. + """ + return pulumi.get(self, "update_time") + diff --git a/sdk/python/pulumi_gcp/blockchainnodeengine/_inputs.py b/sdk/python/pulumi_gcp/blockchainnodeengine/_inputs.py index 928f61f64e..fd651004ac 100644 --- a/sdk/python/pulumi_gcp/blockchainnodeengine/_inputs.py +++ b/sdk/python/pulumi_gcp/blockchainnodeengine/_inputs.py @@ -445,7 +445,7 @@ class BlockchainNodesEthereumDetailsGethDetailsArgsDict(TypedDict): Blockchain garbage collection modes. Only applicable when NodeType is FULL or ARCHIVE. Possible values are: `FULL`, `ARCHIVE`. - The `additional_endpoints` block contains: + The `additional_endpoints` block contains: """ elif False: BlockchainNodesEthereumDetailsGethDetailsArgsDict: TypeAlias = Mapping[str, Any] @@ -458,7 +458,7 @@ def __init__(__self__, *, :param pulumi.Input[str] garbage_collection_mode: Blockchain garbage collection modes. Only applicable when NodeType is FULL or ARCHIVE. Possible values are: `FULL`, `ARCHIVE`. - The `additional_endpoints` block contains: + The `additional_endpoints` block contains: """ if garbage_collection_mode is not None: pulumi.set(__self__, "garbage_collection_mode", garbage_collection_mode) @@ -470,7 +470,7 @@ def garbage_collection_mode(self) -> Optional[pulumi.Input[str]]: Blockchain garbage collection modes. Only applicable when NodeType is FULL or ARCHIVE. Possible values are: `FULL`, `ARCHIVE`. - The `additional_endpoints` block contains: + The `additional_endpoints` block contains: """ return pulumi.get(self, "garbage_collection_mode") diff --git a/sdk/python/pulumi_gcp/blockchainnodeengine/outputs.py b/sdk/python/pulumi_gcp/blockchainnodeengine/outputs.py index f45c2f6141..30e8aed2fc 100644 --- a/sdk/python/pulumi_gcp/blockchainnodeengine/outputs.py +++ b/sdk/python/pulumi_gcp/blockchainnodeengine/outputs.py @@ -385,7 +385,7 @@ def __init__(__self__, *, :param str garbage_collection_mode: Blockchain garbage collection modes. Only applicable when NodeType is FULL or ARCHIVE. Possible values are: `FULL`, `ARCHIVE`. - The `additional_endpoints` block contains: + The `additional_endpoints` block contains: """ if garbage_collection_mode is not None: pulumi.set(__self__, "garbage_collection_mode", garbage_collection_mode) @@ -397,7 +397,7 @@ def garbage_collection_mode(self) -> Optional[str]: Blockchain garbage collection modes. Only applicable when NodeType is FULL or ARCHIVE. Possible values are: `FULL`, `ARCHIVE`. - The `additional_endpoints` block contains: + The `additional_endpoints` block contains: """ return pulumi.get(self, "garbage_collection_mode") diff --git a/sdk/python/pulumi_gcp/certificateauthority/_inputs.py b/sdk/python/pulumi_gcp/certificateauthority/_inputs.py index 7dc1411571..96f48dda04 100644 --- a/sdk/python/pulumi_gcp/certificateauthority/_inputs.py +++ b/sdk/python/pulumi_gcp/certificateauthority/_inputs.py @@ -669,7 +669,7 @@ class AuthorityConfigSubjectKeyIdArgsDict(TypedDict): """ The value of the KeyId in lowercase hexadecimal. - The `x509_config` block supports: + The `x509_config` block supports: """ elif False: AuthorityConfigSubjectKeyIdArgsDict: TypeAlias = Mapping[str, Any] @@ -681,7 +681,7 @@ def __init__(__self__, *, """ :param pulumi.Input[str] key_id: The value of the KeyId in lowercase hexadecimal. - The `x509_config` block supports: + The `x509_config` block supports: """ if key_id is not None: pulumi.set(__self__, "key_id", key_id) @@ -692,7 +692,7 @@ def key_id(self) -> Optional[pulumi.Input[str]]: """ The value of the KeyId in lowercase hexadecimal. - The `x509_config` block supports: + The `x509_config` block supports: """ return pulumi.get(self, "key_id") @@ -5774,7 +5774,7 @@ class CertificateConfigArgsDict(TypedDict): Structure is documented below. - The `x509_config` block supports: + The `x509_config` block supports: """ subject_config: pulumi.Input['CertificateConfigSubjectConfigArgsDict'] """ @@ -5806,7 +5806,7 @@ def __init__(__self__, *, Structure is documented below. - The `x509_config` block supports: + The `x509_config` block supports: :param pulumi.Input['CertificateConfigSubjectConfigArgs'] subject_config: Specifies some of the values in a certificate that are related to the subject. Structure is documented below. :param pulumi.Input['CertificateConfigX509ConfigArgs'] x509_config: Describes how some of the technical X.509 fields in a certificate should be populated. @@ -5828,7 +5828,7 @@ def public_key(self) -> pulumi.Input['CertificateConfigPublicKeyArgs']: Structure is documented below. - The `x509_config` block supports: + The `x509_config` block supports: """ return pulumi.get(self, "public_key") diff --git a/sdk/python/pulumi_gcp/certificateauthority/outputs.py b/sdk/python/pulumi_gcp/certificateauthority/outputs.py index 15d585276a..516cfc1116 100644 --- a/sdk/python/pulumi_gcp/certificateauthority/outputs.py +++ b/sdk/python/pulumi_gcp/certificateauthority/outputs.py @@ -531,7 +531,7 @@ def __init__(__self__, *, """ :param str key_id: The value of the KeyId in lowercase hexadecimal. - The `x509_config` block supports: + The `x509_config` block supports: """ if key_id is not None: pulumi.set(__self__, "key_id", key_id) @@ -542,7 +542,7 @@ def key_id(self) -> Optional[str]: """ The value of the KeyId in lowercase hexadecimal. - The `x509_config` block supports: + The `x509_config` block supports: """ return pulumi.get(self, "key_id") @@ -4699,7 +4699,7 @@ def __init__(__self__, *, Structure is documented below. - The `x509_config` block supports: + The `x509_config` block supports: :param 'CertificateConfigSubjectConfigArgs' subject_config: Specifies some of the values in a certificate that are related to the subject. Structure is documented below. :param 'CertificateConfigX509ConfigArgs' x509_config: Describes how some of the technical X.509 fields in a certificate should be populated. @@ -4721,7 +4721,7 @@ def public_key(self) -> 'outputs.CertificateConfigPublicKey': Structure is documented below. - The `x509_config` block supports: + The `x509_config` block supports: """ return pulumi.get(self, "public_key") diff --git a/sdk/python/pulumi_gcp/certificatemanager/_inputs.py b/sdk/python/pulumi_gcp/certificatemanager/_inputs.py index 360651be30..84905acb84 100644 --- a/sdk/python/pulumi_gcp/certificatemanager/_inputs.py +++ b/sdk/python/pulumi_gcp/certificatemanager/_inputs.py @@ -133,7 +133,7 @@ class CertificateManagedArgsDict(TypedDict): Structure is documented below. - The `provisioning_issue` block contains: + The `provisioning_issue` block contains: """ dns_authorizations: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]] """ @@ -180,7 +180,7 @@ def __init__(__self__, *, Structure is documented below. - The `provisioning_issue` block contains: + The `provisioning_issue` block contains: :param pulumi.Input[Sequence[pulumi.Input[str]]] dns_authorizations: Authorizations that will be used for performing domain authorization. Either issuanceConfig or dnsAuthorizations should be specificed, but not both. :param pulumi.Input[Sequence[pulumi.Input[str]]] domains: The domains for which a managed SSL certificate will be generated. Wildcard domains are only supported with DNS challenge resolution @@ -216,7 +216,7 @@ def authorization_attempt_infos(self) -> Optional[pulumi.Input[Sequence[pulumi.I Structure is documented below. - The `provisioning_issue` block contains: + The `provisioning_issue` block contains: """ return pulumi.get(self, "authorization_attempt_infos") diff --git a/sdk/python/pulumi_gcp/certificatemanager/outputs.py b/sdk/python/pulumi_gcp/certificatemanager/outputs.py index e18265f38a..02eacb94ec 100644 --- a/sdk/python/pulumi_gcp/certificatemanager/outputs.py +++ b/sdk/python/pulumi_gcp/certificatemanager/outputs.py @@ -157,7 +157,7 @@ def __init__(__self__, *, Structure is documented below. - The `provisioning_issue` block contains: + The `provisioning_issue` block contains: :param Sequence[str] dns_authorizations: Authorizations that will be used for performing domain authorization. Either issuanceConfig or dnsAuthorizations should be specificed, but not both. :param Sequence[str] domains: The domains for which a managed SSL certificate will be generated. Wildcard domains are only supported with DNS challenge resolution @@ -193,7 +193,7 @@ def authorization_attempt_infos(self) -> Optional[Sequence['outputs.CertificateM Structure is documented below. - The `provisioning_issue` block contains: + The `provisioning_issue` block contains: """ return pulumi.get(self, "authorization_attempt_infos") diff --git a/sdk/python/pulumi_gcp/chronicle/__init__.py b/sdk/python/pulumi_gcp/chronicle/__init__.py index 4c767b9681..2719447562 100644 --- a/sdk/python/pulumi_gcp/chronicle/__init__.py +++ b/sdk/python/pulumi_gcp/chronicle/__init__.py @@ -5,6 +5,8 @@ from .. import _utilities import typing # Export this package's modules as members: +from .data_access_label import * +from .data_access_scope import * 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 index e7a450ebdc..edc972e22a 100644 --- a/sdk/python/pulumi_gcp/chronicle/_inputs.py +++ b/sdk/python/pulumi_gcp/chronicle/_inputs.py @@ -15,6 +15,14 @@ from .. import _utilities __all__ = [ + 'DataAccessScopeAllowedDataAccessLabelArgs', + 'DataAccessScopeAllowedDataAccessLabelArgsDict', + 'DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs', + 'DataAccessScopeAllowedDataAccessLabelIngestionLabelArgsDict', + 'DataAccessScopeDeniedDataAccessLabelArgs', + 'DataAccessScopeDeniedDataAccessLabelArgsDict', + 'DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs', + 'DataAccessScopeDeniedDataAccessLabelIngestionLabelArgsDict', 'WatchlistEntityCountArgs', 'WatchlistEntityCountArgsDict', 'WatchlistEntityPopulationMechanismArgs', @@ -27,6 +35,386 @@ MYPY = False +if not MYPY: + class DataAccessScopeAllowedDataAccessLabelArgsDict(TypedDict): + asset_namespace: NotRequired[pulumi.Input[str]] + """ + The asset namespace configured in the forwarder + of the customer's events. + """ + data_access_label: NotRequired[pulumi.Input[str]] + """ + The name of the data access label. + """ + display_name: NotRequired[pulumi.Input[str]] + """ + (Output) + Output only. The display name of the label. + Data access label and log types's name + will match the display name of the resource. + The asset namespace will match the namespace itself. + The ingestion key value pair will match the key of the tuple. + """ + ingestion_label: NotRequired[pulumi.Input['DataAccessScopeAllowedDataAccessLabelIngestionLabelArgsDict']] + """ + Representation of an ingestion label type. + Structure is documented below. + """ + log_type: NotRequired[pulumi.Input[str]] + """ + The name of the log type. + """ +elif False: + DataAccessScopeAllowedDataAccessLabelArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class DataAccessScopeAllowedDataAccessLabelArgs: + def __init__(__self__, *, + asset_namespace: Optional[pulumi.Input[str]] = None, + data_access_label: Optional[pulumi.Input[str]] = None, + display_name: Optional[pulumi.Input[str]] = None, + ingestion_label: Optional[pulumi.Input['DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs']] = None, + log_type: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] asset_namespace: The asset namespace configured in the forwarder + of the customer's events. + :param pulumi.Input[str] data_access_label: The name of the data access label. + :param pulumi.Input[str] display_name: (Output) + Output only. The display name of the label. + Data access label and log types's name + will match the display name of the resource. + The asset namespace will match the namespace itself. + The ingestion key value pair will match the key of the tuple. + :param pulumi.Input['DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs'] ingestion_label: Representation of an ingestion label type. + Structure is documented below. + :param pulumi.Input[str] log_type: The name of the log type. + """ + if asset_namespace is not None: + pulumi.set(__self__, "asset_namespace", asset_namespace) + if data_access_label is not None: + pulumi.set(__self__, "data_access_label", data_access_label) + if display_name is not None: + pulumi.set(__self__, "display_name", display_name) + if ingestion_label is not None: + pulumi.set(__self__, "ingestion_label", ingestion_label) + if log_type is not None: + pulumi.set(__self__, "log_type", log_type) + + @property + @pulumi.getter(name="assetNamespace") + def asset_namespace(self) -> Optional[pulumi.Input[str]]: + """ + The asset namespace configured in the forwarder + of the customer's events. + """ + return pulumi.get(self, "asset_namespace") + + @asset_namespace.setter + def asset_namespace(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "asset_namespace", value) + + @property + @pulumi.getter(name="dataAccessLabel") + def data_access_label(self) -> Optional[pulumi.Input[str]]: + """ + The name of the data access label. + """ + return pulumi.get(self, "data_access_label") + + @data_access_label.setter + def data_access_label(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "data_access_label", value) + + @property + @pulumi.getter(name="displayName") + def display_name(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + Output only. The display name of the label. + Data access label and log types's name + will match the display name of the resource. + The asset namespace will match the namespace itself. + The ingestion key value pair will match the key of the tuple. + """ + 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="ingestionLabel") + def ingestion_label(self) -> Optional[pulumi.Input['DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs']]: + """ + Representation of an ingestion label type. + Structure is documented below. + """ + return pulumi.get(self, "ingestion_label") + + @ingestion_label.setter + def ingestion_label(self, value: Optional[pulumi.Input['DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs']]): + pulumi.set(self, "ingestion_label", value) + + @property + @pulumi.getter(name="logType") + def log_type(self) -> Optional[pulumi.Input[str]]: + """ + The name of the log type. + """ + return pulumi.get(self, "log_type") + + @log_type.setter + def log_type(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "log_type", value) + + +if not MYPY: + class DataAccessScopeAllowedDataAccessLabelIngestionLabelArgsDict(TypedDict): + ingestion_label_key: pulumi.Input[str] + """ + Required. The key of the ingestion label. Always required. + """ + ingestion_label_value: NotRequired[pulumi.Input[str]] + """ + Optional. The value of the ingestion label. Optional. An object + with no provided value and some key provided would match + against the given key and ANY value. + """ +elif False: + DataAccessScopeAllowedDataAccessLabelIngestionLabelArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs: + def __init__(__self__, *, + ingestion_label_key: pulumi.Input[str], + ingestion_label_value: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] ingestion_label_key: Required. The key of the ingestion label. Always required. + :param pulumi.Input[str] ingestion_label_value: Optional. The value of the ingestion label. Optional. An object + with no provided value and some key provided would match + against the given key and ANY value. + """ + pulumi.set(__self__, "ingestion_label_key", ingestion_label_key) + if ingestion_label_value is not None: + pulumi.set(__self__, "ingestion_label_value", ingestion_label_value) + + @property + @pulumi.getter(name="ingestionLabelKey") + def ingestion_label_key(self) -> pulumi.Input[str]: + """ + Required. The key of the ingestion label. Always required. + """ + return pulumi.get(self, "ingestion_label_key") + + @ingestion_label_key.setter + def ingestion_label_key(self, value: pulumi.Input[str]): + pulumi.set(self, "ingestion_label_key", value) + + @property + @pulumi.getter(name="ingestionLabelValue") + def ingestion_label_value(self) -> Optional[pulumi.Input[str]]: + """ + Optional. The value of the ingestion label. Optional. An object + with no provided value and some key provided would match + against the given key and ANY value. + """ + return pulumi.get(self, "ingestion_label_value") + + @ingestion_label_value.setter + def ingestion_label_value(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "ingestion_label_value", value) + + +if not MYPY: + class DataAccessScopeDeniedDataAccessLabelArgsDict(TypedDict): + asset_namespace: NotRequired[pulumi.Input[str]] + """ + The asset namespace configured in the forwarder + of the customer's events. + """ + data_access_label: NotRequired[pulumi.Input[str]] + """ + The name of the data access label. + """ + display_name: NotRequired[pulumi.Input[str]] + """ + (Output) + Output only. The display name of the label. + Data access label and log types's name + will match the display name of the resource. + The asset namespace will match the namespace itself. + The ingestion key value pair will match the key of the tuple. + """ + ingestion_label: NotRequired[pulumi.Input['DataAccessScopeDeniedDataAccessLabelIngestionLabelArgsDict']] + """ + Representation of an ingestion label type. + Structure is documented below. + """ + log_type: NotRequired[pulumi.Input[str]] + """ + The name of the log type. + """ +elif False: + DataAccessScopeDeniedDataAccessLabelArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class DataAccessScopeDeniedDataAccessLabelArgs: + def __init__(__self__, *, + asset_namespace: Optional[pulumi.Input[str]] = None, + data_access_label: Optional[pulumi.Input[str]] = None, + display_name: Optional[pulumi.Input[str]] = None, + ingestion_label: Optional[pulumi.Input['DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs']] = None, + log_type: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] asset_namespace: The asset namespace configured in the forwarder + of the customer's events. + :param pulumi.Input[str] data_access_label: The name of the data access label. + :param pulumi.Input[str] display_name: (Output) + Output only. The display name of the label. + Data access label and log types's name + will match the display name of the resource. + The asset namespace will match the namespace itself. + The ingestion key value pair will match the key of the tuple. + :param pulumi.Input['DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs'] ingestion_label: Representation of an ingestion label type. + Structure is documented below. + :param pulumi.Input[str] log_type: The name of the log type. + """ + if asset_namespace is not None: + pulumi.set(__self__, "asset_namespace", asset_namespace) + if data_access_label is not None: + pulumi.set(__self__, "data_access_label", data_access_label) + if display_name is not None: + pulumi.set(__self__, "display_name", display_name) + if ingestion_label is not None: + pulumi.set(__self__, "ingestion_label", ingestion_label) + if log_type is not None: + pulumi.set(__self__, "log_type", log_type) + + @property + @pulumi.getter(name="assetNamespace") + def asset_namespace(self) -> Optional[pulumi.Input[str]]: + """ + The asset namespace configured in the forwarder + of the customer's events. + """ + return pulumi.get(self, "asset_namespace") + + @asset_namespace.setter + def asset_namespace(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "asset_namespace", value) + + @property + @pulumi.getter(name="dataAccessLabel") + def data_access_label(self) -> Optional[pulumi.Input[str]]: + """ + The name of the data access label. + """ + return pulumi.get(self, "data_access_label") + + @data_access_label.setter + def data_access_label(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "data_access_label", value) + + @property + @pulumi.getter(name="displayName") + def display_name(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + Output only. The display name of the label. + Data access label and log types's name + will match the display name of the resource. + The asset namespace will match the namespace itself. + The ingestion key value pair will match the key of the tuple. + """ + 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="ingestionLabel") + def ingestion_label(self) -> Optional[pulumi.Input['DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs']]: + """ + Representation of an ingestion label type. + Structure is documented below. + """ + return pulumi.get(self, "ingestion_label") + + @ingestion_label.setter + def ingestion_label(self, value: Optional[pulumi.Input['DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs']]): + pulumi.set(self, "ingestion_label", value) + + @property + @pulumi.getter(name="logType") + def log_type(self) -> Optional[pulumi.Input[str]]: + """ + The name of the log type. + """ + return pulumi.get(self, "log_type") + + @log_type.setter + def log_type(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "log_type", value) + + +if not MYPY: + class DataAccessScopeDeniedDataAccessLabelIngestionLabelArgsDict(TypedDict): + ingestion_label_key: pulumi.Input[str] + """ + Required. The key of the ingestion label. Always required. + """ + ingestion_label_value: NotRequired[pulumi.Input[str]] + """ + Optional. The value of the ingestion label. Optional. An object + with no provided value and some key provided would match + against the given key and ANY value. + """ +elif False: + DataAccessScopeDeniedDataAccessLabelIngestionLabelArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs: + def __init__(__self__, *, + ingestion_label_key: pulumi.Input[str], + ingestion_label_value: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] ingestion_label_key: Required. The key of the ingestion label. Always required. + :param pulumi.Input[str] ingestion_label_value: Optional. The value of the ingestion label. Optional. An object + with no provided value and some key provided would match + against the given key and ANY value. + """ + pulumi.set(__self__, "ingestion_label_key", ingestion_label_key) + if ingestion_label_value is not None: + pulumi.set(__self__, "ingestion_label_value", ingestion_label_value) + + @property + @pulumi.getter(name="ingestionLabelKey") + def ingestion_label_key(self) -> pulumi.Input[str]: + """ + Required. The key of the ingestion label. Always required. + """ + return pulumi.get(self, "ingestion_label_key") + + @ingestion_label_key.setter + def ingestion_label_key(self, value: pulumi.Input[str]): + pulumi.set(self, "ingestion_label_key", value) + + @property + @pulumi.getter(name="ingestionLabelValue") + def ingestion_label_value(self) -> Optional[pulumi.Input[str]]: + """ + Optional. The value of the ingestion label. Optional. An object + with no provided value and some key provided would match + against the given key and ANY value. + """ + return pulumi.get(self, "ingestion_label_value") + + @ingestion_label_value.setter + def ingestion_label_value(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "ingestion_label_value", value) + + if not MYPY: class WatchlistEntityCountArgsDict(TypedDict): asset: NotRequired[pulumi.Input[int]] diff --git a/sdk/python/pulumi_gcp/chronicle/data_access_label.py b/sdk/python/pulumi_gcp/chronicle/data_access_label.py new file mode 100644 index 0000000000..bfceb6f485 --- /dev/null +++ b/sdk/python/pulumi_gcp/chronicle/data_access_label.py @@ -0,0 +1,690 @@ +# 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__ = ['DataAccessLabelArgs', 'DataAccessLabel'] + +@pulumi.input_type +class DataAccessLabelArgs: + def __init__(__self__, *, + data_access_label_id: pulumi.Input[str], + instance: pulumi.Input[str], + location: pulumi.Input[str], + udm_query: pulumi.Input[str], + description: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None): + """ + The set of arguments for constructing a DataAccessLabel resource. + :param pulumi.Input[str] data_access_label_id: Required. The ID to use for the data access label, which will become the label's + display name and the final component of the label's resource name. It must + only contain ASCII lowercase letters, numbers, and dashes; it must begin + with a letter, and it must not exceed 1000 characters. + + + - - - + :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] udm_query: A UDM query over event data. + :param pulumi.Input[str] description: Optional. A description of the data access label for a human reader. + :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__, "data_access_label_id", data_access_label_id) + pulumi.set(__self__, "instance", instance) + pulumi.set(__self__, "location", location) + pulumi.set(__self__, "udm_query", udm_query) + if description is not None: + pulumi.set(__self__, "description", description) + if project is not None: + pulumi.set(__self__, "project", project) + + @property + @pulumi.getter(name="dataAccessLabelId") + def data_access_label_id(self) -> pulumi.Input[str]: + """ + Required. The ID to use for the data access label, which will become the label's + display name and the final component of the label's resource name. It must + only contain ASCII lowercase letters, numbers, and dashes; it must begin + with a letter, and it must not exceed 1000 characters. + + + - - - + """ + return pulumi.get(self, "data_access_label_id") + + @data_access_label_id.setter + def data_access_label_id(self, value: pulumi.Input[str]): + pulumi.set(self, "data_access_label_id", 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="udmQuery") + def udm_query(self) -> pulumi.Input[str]: + """ + A UDM query over event data. + """ + return pulumi.get(self, "udm_query") + + @udm_query.setter + def udm_query(self, value: pulumi.Input[str]): + pulumi.set(self, "udm_query", value) + + @property + @pulumi.getter + def description(self) -> Optional[pulumi.Input[str]]: + """ + Optional. A description of the data access label for a human reader. + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "description", 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 _DataAccessLabelState: + def __init__(__self__, *, + author: Optional[pulumi.Input[str]] = None, + create_time: Optional[pulumi.Input[str]] = None, + data_access_label_id: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + display_name: Optional[pulumi.Input[str]] = None, + instance: Optional[pulumi.Input[str]] = None, + last_editor: Optional[pulumi.Input[str]] = None, + location: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None, + udm_query: Optional[pulumi.Input[str]] = None, + update_time: Optional[pulumi.Input[str]] = None): + """ + Input properties used for looking up and filtering DataAccessLabel resources. + :param pulumi.Input[str] author: Output only. The user who created the data access label. + :param pulumi.Input[str] create_time: Output only. The time at which the data access label was created. + :param pulumi.Input[str] data_access_label_id: Required. The ID to use for the data access label, which will become the label's + display name and the final component of the label's resource name. It must + only contain ASCII lowercase letters, numbers, and dashes; it must begin + with a letter, and it must not exceed 1000 characters. + + + - - - + :param pulumi.Input[str] description: Optional. A description of the data access label for a human reader. + :param pulumi.Input[str] display_name: Output only. The short name displayed for the label as it appears on event data. This is same as data access label id. + :param pulumi.Input[str] instance: The unique identifier for the Chronicle instance, which is the same as the customer ID. + :param pulumi.Input[str] last_editor: Output only. The user who last updated the data access label. + :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] name: The unique resource name of the data access label. This unique identifier is generated using values provided for the URL parameters. + Format: + projects/{project}/locations/{location}/instances/{instance}/dataAccessLabels/{data_access_label_id} + :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] udm_query: A UDM query over event data. + :param pulumi.Input[str] update_time: Output only. The time at which the data access label was last updated. + """ + if author is not None: + pulumi.set(__self__, "author", author) + if create_time is not None: + pulumi.set(__self__, "create_time", create_time) + if data_access_label_id is not None: + pulumi.set(__self__, "data_access_label_id", data_access_label_id) + if description is not None: + pulumi.set(__self__, "description", description) + if display_name is not None: + pulumi.set(__self__, "display_name", display_name) + if instance is not None: + pulumi.set(__self__, "instance", instance) + if last_editor is not None: + pulumi.set(__self__, "last_editor", last_editor) + 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 udm_query is not None: + pulumi.set(__self__, "udm_query", udm_query) + if update_time is not None: + pulumi.set(__self__, "update_time", update_time) + + @property + @pulumi.getter + def author(self) -> Optional[pulumi.Input[str]]: + """ + Output only. The user who created the data access label. + """ + return pulumi.get(self, "author") + + @author.setter + def author(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "author", value) + + @property + @pulumi.getter(name="createTime") + def create_time(self) -> Optional[pulumi.Input[str]]: + """ + Output only. The time at which the data access label 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="dataAccessLabelId") + def data_access_label_id(self) -> Optional[pulumi.Input[str]]: + """ + Required. The ID to use for the data access label, which will become the label's + display name and the final component of the label's resource name. It must + only contain ASCII lowercase letters, numbers, and dashes; it must begin + with a letter, and it must not exceed 1000 characters. + + + - - - + """ + return pulumi.get(self, "data_access_label_id") + + @data_access_label_id.setter + def data_access_label_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "data_access_label_id", value) + + @property + @pulumi.getter + def description(self) -> Optional[pulumi.Input[str]]: + """ + Optional. A description of the data access label for a human reader. + """ + 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]]: + """ + Output only. The short name displayed for the label as it appears on event data. This is same as data access label id. + """ + 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 + 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(name="lastEditor") + def last_editor(self) -> Optional[pulumi.Input[str]]: + """ + Output only. The user who last updated the data access label. + """ + return pulumi.get(self, "last_editor") + + @last_editor.setter + def last_editor(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "last_editor", 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 + def name(self) -> Optional[pulumi.Input[str]]: + """ + The unique resource name of the data access label. This unique identifier is generated using values provided for the URL parameters. + Format: + projects/{project}/locations/{location}/instances/{instance}/dataAccessLabels/{data_access_label_id} + """ + 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="udmQuery") + def udm_query(self) -> Optional[pulumi.Input[str]]: + """ + A UDM query over event data. + """ + return pulumi.get(self, "udm_query") + + @udm_query.setter + def udm_query(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "udm_query", value) + + @property + @pulumi.getter(name="updateTime") + def update_time(self) -> Optional[pulumi.Input[str]]: + """ + Output only. The time at which the data access label 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) + + +class DataAccessLabel(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + data_access_label_id: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + instance: Optional[pulumi.Input[str]] = None, + location: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None, + udm_query: Optional[pulumi.Input[str]] = None, + __props__=None): + """ + ## Example Usage + + ### Chronicle Dataaccesslabel Basic + + ```python + import pulumi + import pulumi_gcp as gcp + + example = gcp.chronicle.DataAccessLabel("example", + location="us", + instance="00000000-0000-0000-0000-000000000000", + data_access_label_id="label-id", + udm_query="principal.hostname=\\"google.com\\"", + description="label-description") + ``` + + ## Import + + DataAccessLabel can be imported using any of these accepted formats: + + * `projects/{{project}}/locations/{{location}}/instances/{{instance}}/dataAccessLabels/{{data_access_label_id}}` + + * `{{project}}/{{location}}/{{instance}}/{{data_access_label_id}}` + + * `{{location}}/{{instance}}/{{data_access_label_id}}` + + When using the `pulumi import` command, DataAccessLabel can be imported using one of the formats above. For example: + + ```sh + $ pulumi import gcp:chronicle/dataAccessLabel:DataAccessLabel default projects/{{project}}/locations/{{location}}/instances/{{instance}}/dataAccessLabels/{{data_access_label_id}} + ``` + + ```sh + $ pulumi import gcp:chronicle/dataAccessLabel:DataAccessLabel default {{project}}/{{location}}/{{instance}}/{{data_access_label_id}} + ``` + + ```sh + $ pulumi import gcp:chronicle/dataAccessLabel:DataAccessLabel default {{location}}/{{instance}}/{{data_access_label_id}} + ``` + + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] data_access_label_id: Required. The ID to use for the data access label, which will become the label's + display name and the final component of the label's resource name. It must + only contain ASCII lowercase letters, numbers, and dashes; it must begin + with a letter, and it must not exceed 1000 characters. + + + - - - + :param pulumi.Input[str] description: Optional. A description of the data access label for a human reader. + :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] 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] udm_query: A UDM query over event data. + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: DataAccessLabelArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + ## Example Usage + + ### Chronicle Dataaccesslabel Basic + + ```python + import pulumi + import pulumi_gcp as gcp + + example = gcp.chronicle.DataAccessLabel("example", + location="us", + instance="00000000-0000-0000-0000-000000000000", + data_access_label_id="label-id", + udm_query="principal.hostname=\\"google.com\\"", + description="label-description") + ``` + + ## Import + + DataAccessLabel can be imported using any of these accepted formats: + + * `projects/{{project}}/locations/{{location}}/instances/{{instance}}/dataAccessLabels/{{data_access_label_id}}` + + * `{{project}}/{{location}}/{{instance}}/{{data_access_label_id}}` + + * `{{location}}/{{instance}}/{{data_access_label_id}}` + + When using the `pulumi import` command, DataAccessLabel can be imported using one of the formats above. For example: + + ```sh + $ pulumi import gcp:chronicle/dataAccessLabel:DataAccessLabel default projects/{{project}}/locations/{{location}}/instances/{{instance}}/dataAccessLabels/{{data_access_label_id}} + ``` + + ```sh + $ pulumi import gcp:chronicle/dataAccessLabel:DataAccessLabel default {{project}}/{{location}}/{{instance}}/{{data_access_label_id}} + ``` + + ```sh + $ pulumi import gcp:chronicle/dataAccessLabel:DataAccessLabel default {{location}}/{{instance}}/{{data_access_label_id}} + ``` + + :param str resource_name: The name of the resource. + :param DataAccessLabelArgs 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(DataAccessLabelArgs, 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, + data_access_label_id: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + instance: Optional[pulumi.Input[str]] = None, + location: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None, + udm_query: 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__ = DataAccessLabelArgs.__new__(DataAccessLabelArgs) + + if data_access_label_id is None and not opts.urn: + raise TypeError("Missing required property 'data_access_label_id'") + __props__.__dict__["data_access_label_id"] = data_access_label_id + __props__.__dict__["description"] = description + 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__["project"] = project + if udm_query is None and not opts.urn: + raise TypeError("Missing required property 'udm_query'") + __props__.__dict__["udm_query"] = udm_query + __props__.__dict__["author"] = None + __props__.__dict__["create_time"] = None + __props__.__dict__["display_name"] = None + __props__.__dict__["last_editor"] = None + __props__.__dict__["name"] = None + __props__.__dict__["update_time"] = None + super(DataAccessLabel, __self__).__init__( + 'gcp:chronicle/dataAccessLabel:DataAccessLabel', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + author: Optional[pulumi.Input[str]] = None, + create_time: Optional[pulumi.Input[str]] = None, + data_access_label_id: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + display_name: Optional[pulumi.Input[str]] = None, + instance: Optional[pulumi.Input[str]] = None, + last_editor: Optional[pulumi.Input[str]] = None, + location: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None, + udm_query: Optional[pulumi.Input[str]] = None, + update_time: Optional[pulumi.Input[str]] = None) -> 'DataAccessLabel': + """ + Get an existing DataAccessLabel 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] author: Output only. The user who created the data access label. + :param pulumi.Input[str] create_time: Output only. The time at which the data access label was created. + :param pulumi.Input[str] data_access_label_id: Required. The ID to use for the data access label, which will become the label's + display name and the final component of the label's resource name. It must + only contain ASCII lowercase letters, numbers, and dashes; it must begin + with a letter, and it must not exceed 1000 characters. + + + - - - + :param pulumi.Input[str] description: Optional. A description of the data access label for a human reader. + :param pulumi.Input[str] display_name: Output only. The short name displayed for the label as it appears on event data. This is same as data access label id. + :param pulumi.Input[str] instance: The unique identifier for the Chronicle instance, which is the same as the customer ID. + :param pulumi.Input[str] last_editor: Output only. The user who last updated the data access label. + :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] name: The unique resource name of the data access label. This unique identifier is generated using values provided for the URL parameters. + Format: + projects/{project}/locations/{location}/instances/{instance}/dataAccessLabels/{data_access_label_id} + :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] udm_query: A UDM query over event data. + :param pulumi.Input[str] update_time: Output only. The time at which the data access label was last updated. + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _DataAccessLabelState.__new__(_DataAccessLabelState) + + __props__.__dict__["author"] = author + __props__.__dict__["create_time"] = create_time + __props__.__dict__["data_access_label_id"] = data_access_label_id + __props__.__dict__["description"] = description + __props__.__dict__["display_name"] = display_name + __props__.__dict__["instance"] = instance + __props__.__dict__["last_editor"] = last_editor + __props__.__dict__["location"] = location + __props__.__dict__["name"] = name + __props__.__dict__["project"] = project + __props__.__dict__["udm_query"] = udm_query + __props__.__dict__["update_time"] = update_time + return DataAccessLabel(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter + def author(self) -> pulumi.Output[str]: + """ + Output only. The user who created the data access label. + """ + return pulumi.get(self, "author") + + @property + @pulumi.getter(name="createTime") + def create_time(self) -> pulumi.Output[str]: + """ + Output only. The time at which the data access label was created. + """ + return pulumi.get(self, "create_time") + + @property + @pulumi.getter(name="dataAccessLabelId") + def data_access_label_id(self) -> pulumi.Output[str]: + """ + Required. The ID to use for the data access label, which will become the label's + display name and the final component of the label's resource name. It must + only contain ASCII lowercase letters, numbers, and dashes; it must begin + with a letter, and it must not exceed 1000 characters. + + + - - - + """ + return pulumi.get(self, "data_access_label_id") + + @property + @pulumi.getter + def description(self) -> pulumi.Output[Optional[str]]: + """ + Optional. A description of the data access label for a human reader. + """ + return pulumi.get(self, "description") + + @property + @pulumi.getter(name="displayName") + def display_name(self) -> pulumi.Output[str]: + """ + Output only. The short name displayed for the label as it appears on event data. This is same as data access label id. + """ + return pulumi.get(self, "display_name") + + @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(name="lastEditor") + def last_editor(self) -> pulumi.Output[str]: + """ + Output only. The user who last updated the data access label. + """ + return pulumi.get(self, "last_editor") + + @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 + def name(self) -> pulumi.Output[str]: + """ + The unique resource name of the data access label. This unique identifier is generated using values provided for the URL parameters. + Format: + projects/{project}/locations/{location}/instances/{instance}/dataAccessLabels/{data_access_label_id} + """ + 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="udmQuery") + def udm_query(self) -> pulumi.Output[str]: + """ + A UDM query over event data. + """ + return pulumi.get(self, "udm_query") + + @property + @pulumi.getter(name="updateTime") + def update_time(self) -> pulumi.Output[str]: + """ + Output only. The time at which the data access label was last updated. + """ + return pulumi.get(self, "update_time") + diff --git a/sdk/python/pulumi_gcp/chronicle/data_access_scope.py b/sdk/python/pulumi_gcp/chronicle/data_access_scope.py new file mode 100644 index 0000000000..d1e8ed8f40 --- /dev/null +++ b/sdk/python/pulumi_gcp/chronicle/data_access_scope.py @@ -0,0 +1,1094 @@ +# 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__ = ['DataAccessScopeArgs', 'DataAccessScope'] + +@pulumi.input_type +class DataAccessScopeArgs: + def __init__(__self__, *, + data_access_scope_id: pulumi.Input[str], + instance: pulumi.Input[str], + location: pulumi.Input[str], + allow_all: Optional[pulumi.Input[bool]] = None, + allowed_data_access_labels: Optional[pulumi.Input[Sequence[pulumi.Input['DataAccessScopeAllowedDataAccessLabelArgs']]]] = None, + denied_data_access_labels: Optional[pulumi.Input[Sequence[pulumi.Input['DataAccessScopeDeniedDataAccessLabelArgs']]]] = None, + description: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None): + """ + The set of arguments for constructing a DataAccessScope resource. + :param pulumi.Input[str] data_access_scope_id: Required. The user provided scope id which will become the last part of the name + of the scope resource. + Needs to be compliant with https://google.aip.dev/122 + + + - - - + :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[bool] allow_all: Optional. Whether or not the scope allows all labels, allow_all and + allowed_data_access_labels are mutually exclusive and one of them must be + present. denied_data_access_labels can still be used along with allow_all. + When combined with denied_data_access_labels, access will be granted to all + data that doesn't have labels mentioned in denied_data_access_labels. E.g.: + A customer with scope with denied labels A and B and allow_all will be able + to see all data except data labeled with A and data labeled with B and data + with labels A and B. + :param pulumi.Input[Sequence[pulumi.Input['DataAccessScopeAllowedDataAccessLabelArgs']]] allowed_data_access_labels: The allowed labels for the scope. There has to be at + least one label allowed for the scope to be valid. + The logical operator for evaluation of the allowed labels is OR. + Either allow_all or allowed_data_access_labels needs to be provided. + E.g.: A customer with scope with allowed labels A and B will be able + to see data with labeled with A or B or (A and B). + Structure is documented below. + :param pulumi.Input[Sequence[pulumi.Input['DataAccessScopeDeniedDataAccessLabelArgs']]] denied_data_access_labels: Optional. The denied labels for the scope. + The logical operator for evaluation of the denied labels is AND. + E.g.: A customer with scope with denied labels A and B won't be able + to see data labeled with A and data labeled with B + and data with labels A and B. + Structure is documented below. + :param pulumi.Input[str] description: Optional. A description of the data access scope for a human reader. + :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__, "data_access_scope_id", data_access_scope_id) + pulumi.set(__self__, "instance", instance) + pulumi.set(__self__, "location", location) + if allow_all is not None: + pulumi.set(__self__, "allow_all", allow_all) + if allowed_data_access_labels is not None: + pulumi.set(__self__, "allowed_data_access_labels", allowed_data_access_labels) + if denied_data_access_labels is not None: + pulumi.set(__self__, "denied_data_access_labels", denied_data_access_labels) + if description is not None: + pulumi.set(__self__, "description", description) + if project is not None: + pulumi.set(__self__, "project", project) + + @property + @pulumi.getter(name="dataAccessScopeId") + def data_access_scope_id(self) -> pulumi.Input[str]: + """ + Required. The user provided scope id which will become the last part of the name + of the scope resource. + Needs to be compliant with https://google.aip.dev/122 + + + - - - + """ + return pulumi.get(self, "data_access_scope_id") + + @data_access_scope_id.setter + def data_access_scope_id(self, value: pulumi.Input[str]): + pulumi.set(self, "data_access_scope_id", 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="allowAll") + def allow_all(self) -> Optional[pulumi.Input[bool]]: + """ + Optional. Whether or not the scope allows all labels, allow_all and + allowed_data_access_labels are mutually exclusive and one of them must be + present. denied_data_access_labels can still be used along with allow_all. + When combined with denied_data_access_labels, access will be granted to all + data that doesn't have labels mentioned in denied_data_access_labels. E.g.: + A customer with scope with denied labels A and B and allow_all will be able + to see all data except data labeled with A and data labeled with B and data + with labels A and B. + """ + return pulumi.get(self, "allow_all") + + @allow_all.setter + def allow_all(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "allow_all", value) + + @property + @pulumi.getter(name="allowedDataAccessLabels") + def allowed_data_access_labels(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['DataAccessScopeAllowedDataAccessLabelArgs']]]]: + """ + The allowed labels for the scope. There has to be at + least one label allowed for the scope to be valid. + The logical operator for evaluation of the allowed labels is OR. + Either allow_all or allowed_data_access_labels needs to be provided. + E.g.: A customer with scope with allowed labels A and B will be able + to see data with labeled with A or B or (A and B). + Structure is documented below. + """ + return pulumi.get(self, "allowed_data_access_labels") + + @allowed_data_access_labels.setter + def allowed_data_access_labels(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['DataAccessScopeAllowedDataAccessLabelArgs']]]]): + pulumi.set(self, "allowed_data_access_labels", value) + + @property + @pulumi.getter(name="deniedDataAccessLabels") + def denied_data_access_labels(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['DataAccessScopeDeniedDataAccessLabelArgs']]]]: + """ + Optional. The denied labels for the scope. + The logical operator for evaluation of the denied labels is AND. + E.g.: A customer with scope with denied labels A and B won't be able + to see data labeled with A and data labeled with B + and data with labels A and B. + Structure is documented below. + """ + return pulumi.get(self, "denied_data_access_labels") + + @denied_data_access_labels.setter + def denied_data_access_labels(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['DataAccessScopeDeniedDataAccessLabelArgs']]]]): + pulumi.set(self, "denied_data_access_labels", value) + + @property + @pulumi.getter + def description(self) -> Optional[pulumi.Input[str]]: + """ + Optional. A description of the data access scope for a human reader. + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "description", 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 _DataAccessScopeState: + def __init__(__self__, *, + allow_all: Optional[pulumi.Input[bool]] = None, + allowed_data_access_labels: Optional[pulumi.Input[Sequence[pulumi.Input['DataAccessScopeAllowedDataAccessLabelArgs']]]] = None, + author: Optional[pulumi.Input[str]] = None, + create_time: Optional[pulumi.Input[str]] = None, + data_access_scope_id: Optional[pulumi.Input[str]] = None, + denied_data_access_labels: Optional[pulumi.Input[Sequence[pulumi.Input['DataAccessScopeDeniedDataAccessLabelArgs']]]] = None, + description: Optional[pulumi.Input[str]] = None, + display_name: Optional[pulumi.Input[str]] = None, + instance: Optional[pulumi.Input[str]] = None, + last_editor: Optional[pulumi.Input[str]] = None, + location: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None, + update_time: Optional[pulumi.Input[str]] = None): + """ + Input properties used for looking up and filtering DataAccessScope resources. + :param pulumi.Input[bool] allow_all: Optional. Whether or not the scope allows all labels, allow_all and + allowed_data_access_labels are mutually exclusive and one of them must be + present. denied_data_access_labels can still be used along with allow_all. + When combined with denied_data_access_labels, access will be granted to all + data that doesn't have labels mentioned in denied_data_access_labels. E.g.: + A customer with scope with denied labels A and B and allow_all will be able + to see all data except data labeled with A and data labeled with B and data + with labels A and B. + :param pulumi.Input[Sequence[pulumi.Input['DataAccessScopeAllowedDataAccessLabelArgs']]] allowed_data_access_labels: The allowed labels for the scope. There has to be at + least one label allowed for the scope to be valid. + The logical operator for evaluation of the allowed labels is OR. + Either allow_all or allowed_data_access_labels needs to be provided. + E.g.: A customer with scope with allowed labels A and B will be able + to see data with labeled with A or B or (A and B). + Structure is documented below. + :param pulumi.Input[str] author: Output only. The user who created the data access scope. + :param pulumi.Input[str] create_time: Output only. The time at which the data access scope was created. + :param pulumi.Input[str] data_access_scope_id: Required. The user provided scope id which will become the last part of the name + of the scope resource. + Needs to be compliant with https://google.aip.dev/122 + + + - - - + :param pulumi.Input[Sequence[pulumi.Input['DataAccessScopeDeniedDataAccessLabelArgs']]] denied_data_access_labels: Optional. The denied labels for the scope. + The logical operator for evaluation of the denied labels is AND. + E.g.: A customer with scope with denied labels A and B won't be able + to see data labeled with A and data labeled with B + and data with labels A and B. + Structure is documented below. + :param pulumi.Input[str] description: Optional. A description of the data access scope for a human reader. + :param pulumi.Input[str] display_name: Output only. The name to be used for display to customers of the data access scope. + :param pulumi.Input[str] instance: The unique identifier for the Chronicle instance, which is the same as the customer ID. + :param pulumi.Input[str] last_editor: Output only. The user who last updated the data access scope. + :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] name: The unique full name of the data access scope. This unique identifier is generated using values provided for the URL parameters. + Format: + projects/{project}/locations/{location}/instances/{instance}/dataAccessScopes/{data_access_scope_id} + :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] update_time: Output only. The time at which the data access scope was last updated. + """ + if allow_all is not None: + pulumi.set(__self__, "allow_all", allow_all) + if allowed_data_access_labels is not None: + pulumi.set(__self__, "allowed_data_access_labels", allowed_data_access_labels) + if author is not None: + pulumi.set(__self__, "author", author) + if create_time is not None: + pulumi.set(__self__, "create_time", create_time) + if data_access_scope_id is not None: + pulumi.set(__self__, "data_access_scope_id", data_access_scope_id) + if denied_data_access_labels is not None: + pulumi.set(__self__, "denied_data_access_labels", denied_data_access_labels) + if description is not None: + pulumi.set(__self__, "description", description) + if display_name is not None: + pulumi.set(__self__, "display_name", display_name) + if instance is not None: + pulumi.set(__self__, "instance", instance) + if last_editor is not None: + pulumi.set(__self__, "last_editor", last_editor) + 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 update_time is not None: + pulumi.set(__self__, "update_time", update_time) + + @property + @pulumi.getter(name="allowAll") + def allow_all(self) -> Optional[pulumi.Input[bool]]: + """ + Optional. Whether or not the scope allows all labels, allow_all and + allowed_data_access_labels are mutually exclusive and one of them must be + present. denied_data_access_labels can still be used along with allow_all. + When combined with denied_data_access_labels, access will be granted to all + data that doesn't have labels mentioned in denied_data_access_labels. E.g.: + A customer with scope with denied labels A and B and allow_all will be able + to see all data except data labeled with A and data labeled with B and data + with labels A and B. + """ + return pulumi.get(self, "allow_all") + + @allow_all.setter + def allow_all(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "allow_all", value) + + @property + @pulumi.getter(name="allowedDataAccessLabels") + def allowed_data_access_labels(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['DataAccessScopeAllowedDataAccessLabelArgs']]]]: + """ + The allowed labels for the scope. There has to be at + least one label allowed for the scope to be valid. + The logical operator for evaluation of the allowed labels is OR. + Either allow_all or allowed_data_access_labels needs to be provided. + E.g.: A customer with scope with allowed labels A and B will be able + to see data with labeled with A or B or (A and B). + Structure is documented below. + """ + return pulumi.get(self, "allowed_data_access_labels") + + @allowed_data_access_labels.setter + def allowed_data_access_labels(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['DataAccessScopeAllowedDataAccessLabelArgs']]]]): + pulumi.set(self, "allowed_data_access_labels", value) + + @property + @pulumi.getter + def author(self) -> Optional[pulumi.Input[str]]: + """ + Output only. The user who created the data access scope. + """ + return pulumi.get(self, "author") + + @author.setter + def author(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "author", value) + + @property + @pulumi.getter(name="createTime") + def create_time(self) -> Optional[pulumi.Input[str]]: + """ + Output only. The time at which the data access scope 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="dataAccessScopeId") + def data_access_scope_id(self) -> Optional[pulumi.Input[str]]: + """ + Required. The user provided scope id which will become the last part of the name + of the scope resource. + Needs to be compliant with https://google.aip.dev/122 + + + - - - + """ + return pulumi.get(self, "data_access_scope_id") + + @data_access_scope_id.setter + def data_access_scope_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "data_access_scope_id", value) + + @property + @pulumi.getter(name="deniedDataAccessLabels") + def denied_data_access_labels(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['DataAccessScopeDeniedDataAccessLabelArgs']]]]: + """ + Optional. The denied labels for the scope. + The logical operator for evaluation of the denied labels is AND. + E.g.: A customer with scope with denied labels A and B won't be able + to see data labeled with A and data labeled with B + and data with labels A and B. + Structure is documented below. + """ + return pulumi.get(self, "denied_data_access_labels") + + @denied_data_access_labels.setter + def denied_data_access_labels(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['DataAccessScopeDeniedDataAccessLabelArgs']]]]): + pulumi.set(self, "denied_data_access_labels", value) + + @property + @pulumi.getter + def description(self) -> Optional[pulumi.Input[str]]: + """ + Optional. A description of the data access scope for a human reader. + """ + 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]]: + """ + Output only. The name to be used for display to customers of the data access scope. + """ + 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 + 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(name="lastEditor") + def last_editor(self) -> Optional[pulumi.Input[str]]: + """ + Output only. The user who last updated the data access scope. + """ + return pulumi.get(self, "last_editor") + + @last_editor.setter + def last_editor(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "last_editor", 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 + def name(self) -> Optional[pulumi.Input[str]]: + """ + The unique full name of the data access scope. This unique identifier is generated using values provided for the URL parameters. + Format: + projects/{project}/locations/{location}/instances/{instance}/dataAccessScopes/{data_access_scope_id} + """ + 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="updateTime") + def update_time(self) -> Optional[pulumi.Input[str]]: + """ + Output only. The time at which the data access scope 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) + + +class DataAccessScope(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + allow_all: Optional[pulumi.Input[bool]] = None, + allowed_data_access_labels: Optional[pulumi.Input[Sequence[pulumi.Input[Union['DataAccessScopeAllowedDataAccessLabelArgs', 'DataAccessScopeAllowedDataAccessLabelArgsDict']]]]] = None, + data_access_scope_id: Optional[pulumi.Input[str]] = None, + denied_data_access_labels: Optional[pulumi.Input[Sequence[pulumi.Input[Union['DataAccessScopeDeniedDataAccessLabelArgs', 'DataAccessScopeDeniedDataAccessLabelArgsDict']]]]] = None, + description: Optional[pulumi.Input[str]] = None, + instance: Optional[pulumi.Input[str]] = None, + location: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None, + __props__=None): + """ + ## Example Usage + + ### Chronicle Dataaccessscope With Logtype + + ```python + import pulumi + import pulumi_gcp as gcp + + example = gcp.chronicle.DataAccessScope("example", + location="us", + instance="00000000-0000-0000-0000-000000000000", + data_access_scope_id="scope-id", + description="scope-description", + allowed_data_access_labels=[ + { + "log_type": "GCP_CLOUDAUDIT", + }, + { + "log_type": "GITHUB", + }, + ]) + ``` + ### Chronicle Dataaccessscope With Dataaccesslabel + + ```python + import pulumi + import pulumi_gcp as gcp + + custom_data_access_label = gcp.chronicle.DataAccessLabel("custom_data_access_label", + location="us", + instance="00000000-0000-0000-0000-000000000000", + data_access_label_id="label-id", + udm_query="principal.hostname=\\"google.com\\"") + example = gcp.chronicle.DataAccessScope("example", + location="us", + instance="00000000-0000-0000-0000-000000000000", + data_access_scope_id="scope-id", + description="scope-description", + allowed_data_access_labels=[{ + "data_access_label": google_chronicle_data_access_label["customDataAccessLabel"]["dataAccessLabelId"], + }]) + ``` + ### Chronicle Dataaccessscope With Asset Namespace + + ```python + import pulumi + import pulumi_gcp as gcp + + example = gcp.chronicle.DataAccessScope("example", + location="us", + instance="00000000-0000-0000-0000-000000000000", + data_access_scope_id="scope-id", + description="scope-description", + allowed_data_access_labels=[{ + "asset_namespace": "my-namespace", + }]) + ``` + ### Chronicle Dataaccessscope With Ingestion Label + + ```python + import pulumi + import pulumi_gcp as gcp + + example = gcp.chronicle.DataAccessScope("example", + location="us", + instance="00000000-0000-0000-0000-000000000000", + data_access_scope_id="scope-id", + description="scope-description", + allowed_data_access_labels=[{ + "ingestion_label": { + "ingestion_label_key": "ingestion_key", + "ingestion_label_value": "ingestion_value", + }, + }]) + ``` + ### Chronicle Dataaccessscope With Denied Labels + + ```python + import pulumi + import pulumi_gcp as gcp + + custom_data_access_label = gcp.chronicle.DataAccessLabel("custom_data_access_label", + location="us", + instance="00000000-0000-0000-0000-000000000000", + data_access_label_id="label-id", + udm_query="principal.hostname=\\"google.com\\"") + example = gcp.chronicle.DataAccessScope("example", + location="us", + instance="00000000-0000-0000-0000-000000000000", + data_access_scope_id="scope-id", + description="scope-description", + allow_all=True, + denied_data_access_labels=[ + { + "log_type": "GCP_CLOUDAUDIT", + }, + { + "data_access_label": google_chronicle_data_access_label["customDataAccessLabel"]["dataAccessLabelId"], + }, + { + "ingestion_label": { + "ingestion_label_key": "ingestion_key", + "ingestion_label_value": "ingestion_value", + }, + }, + { + "asset_namespace": "my-namespace", + }, + ]) + ``` + + ## Import + + DataAccessScope can be imported using any of these accepted formats: + + * `projects/{{project}}/locations/{{location}}/instances/{{instance}}/dataAccessScopes/{{data_access_scope_id}}` + + * `{{project}}/{{location}}/{{instance}}/{{data_access_scope_id}}` + + * `{{location}}/{{instance}}/{{data_access_scope_id}}` + + When using the `pulumi import` command, DataAccessScope can be imported using one of the formats above. For example: + + ```sh + $ pulumi import gcp:chronicle/dataAccessScope:DataAccessScope default projects/{{project}}/locations/{{location}}/instances/{{instance}}/dataAccessScopes/{{data_access_scope_id}} + ``` + + ```sh + $ pulumi import gcp:chronicle/dataAccessScope:DataAccessScope default {{project}}/{{location}}/{{instance}}/{{data_access_scope_id}} + ``` + + ```sh + $ pulumi import gcp:chronicle/dataAccessScope:DataAccessScope default {{location}}/{{instance}}/{{data_access_scope_id}} + ``` + + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[bool] allow_all: Optional. Whether or not the scope allows all labels, allow_all and + allowed_data_access_labels are mutually exclusive and one of them must be + present. denied_data_access_labels can still be used along with allow_all. + When combined with denied_data_access_labels, access will be granted to all + data that doesn't have labels mentioned in denied_data_access_labels. E.g.: + A customer with scope with denied labels A and B and allow_all will be able + to see all data except data labeled with A and data labeled with B and data + with labels A and B. + :param pulumi.Input[Sequence[pulumi.Input[Union['DataAccessScopeAllowedDataAccessLabelArgs', 'DataAccessScopeAllowedDataAccessLabelArgsDict']]]] allowed_data_access_labels: The allowed labels for the scope. There has to be at + least one label allowed for the scope to be valid. + The logical operator for evaluation of the allowed labels is OR. + Either allow_all or allowed_data_access_labels needs to be provided. + E.g.: A customer with scope with allowed labels A and B will be able + to see data with labeled with A or B or (A and B). + Structure is documented below. + :param pulumi.Input[str] data_access_scope_id: Required. The user provided scope id which will become the last part of the name + of the scope resource. + Needs to be compliant with https://google.aip.dev/122 + + + - - - + :param pulumi.Input[Sequence[pulumi.Input[Union['DataAccessScopeDeniedDataAccessLabelArgs', 'DataAccessScopeDeniedDataAccessLabelArgsDict']]]] denied_data_access_labels: Optional. The denied labels for the scope. + The logical operator for evaluation of the denied labels is AND. + E.g.: A customer with scope with denied labels A and B won't be able + to see data labeled with A and data labeled with B + and data with labels A and B. + Structure is documented below. + :param pulumi.Input[str] description: Optional. A description of the data access scope for a human reader. + :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] 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: DataAccessScopeArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + ## Example Usage + + ### Chronicle Dataaccessscope With Logtype + + ```python + import pulumi + import pulumi_gcp as gcp + + example = gcp.chronicle.DataAccessScope("example", + location="us", + instance="00000000-0000-0000-0000-000000000000", + data_access_scope_id="scope-id", + description="scope-description", + allowed_data_access_labels=[ + { + "log_type": "GCP_CLOUDAUDIT", + }, + { + "log_type": "GITHUB", + }, + ]) + ``` + ### Chronicle Dataaccessscope With Dataaccesslabel + + ```python + import pulumi + import pulumi_gcp as gcp + + custom_data_access_label = gcp.chronicle.DataAccessLabel("custom_data_access_label", + location="us", + instance="00000000-0000-0000-0000-000000000000", + data_access_label_id="label-id", + udm_query="principal.hostname=\\"google.com\\"") + example = gcp.chronicle.DataAccessScope("example", + location="us", + instance="00000000-0000-0000-0000-000000000000", + data_access_scope_id="scope-id", + description="scope-description", + allowed_data_access_labels=[{ + "data_access_label": google_chronicle_data_access_label["customDataAccessLabel"]["dataAccessLabelId"], + }]) + ``` + ### Chronicle Dataaccessscope With Asset Namespace + + ```python + import pulumi + import pulumi_gcp as gcp + + example = gcp.chronicle.DataAccessScope("example", + location="us", + instance="00000000-0000-0000-0000-000000000000", + data_access_scope_id="scope-id", + description="scope-description", + allowed_data_access_labels=[{ + "asset_namespace": "my-namespace", + }]) + ``` + ### Chronicle Dataaccessscope With Ingestion Label + + ```python + import pulumi + import pulumi_gcp as gcp + + example = gcp.chronicle.DataAccessScope("example", + location="us", + instance="00000000-0000-0000-0000-000000000000", + data_access_scope_id="scope-id", + description="scope-description", + allowed_data_access_labels=[{ + "ingestion_label": { + "ingestion_label_key": "ingestion_key", + "ingestion_label_value": "ingestion_value", + }, + }]) + ``` + ### Chronicle Dataaccessscope With Denied Labels + + ```python + import pulumi + import pulumi_gcp as gcp + + custom_data_access_label = gcp.chronicle.DataAccessLabel("custom_data_access_label", + location="us", + instance="00000000-0000-0000-0000-000000000000", + data_access_label_id="label-id", + udm_query="principal.hostname=\\"google.com\\"") + example = gcp.chronicle.DataAccessScope("example", + location="us", + instance="00000000-0000-0000-0000-000000000000", + data_access_scope_id="scope-id", + description="scope-description", + allow_all=True, + denied_data_access_labels=[ + { + "log_type": "GCP_CLOUDAUDIT", + }, + { + "data_access_label": google_chronicle_data_access_label["customDataAccessLabel"]["dataAccessLabelId"], + }, + { + "ingestion_label": { + "ingestion_label_key": "ingestion_key", + "ingestion_label_value": "ingestion_value", + }, + }, + { + "asset_namespace": "my-namespace", + }, + ]) + ``` + + ## Import + + DataAccessScope can be imported using any of these accepted formats: + + * `projects/{{project}}/locations/{{location}}/instances/{{instance}}/dataAccessScopes/{{data_access_scope_id}}` + + * `{{project}}/{{location}}/{{instance}}/{{data_access_scope_id}}` + + * `{{location}}/{{instance}}/{{data_access_scope_id}}` + + When using the `pulumi import` command, DataAccessScope can be imported using one of the formats above. For example: + + ```sh + $ pulumi import gcp:chronicle/dataAccessScope:DataAccessScope default projects/{{project}}/locations/{{location}}/instances/{{instance}}/dataAccessScopes/{{data_access_scope_id}} + ``` + + ```sh + $ pulumi import gcp:chronicle/dataAccessScope:DataAccessScope default {{project}}/{{location}}/{{instance}}/{{data_access_scope_id}} + ``` + + ```sh + $ pulumi import gcp:chronicle/dataAccessScope:DataAccessScope default {{location}}/{{instance}}/{{data_access_scope_id}} + ``` + + :param str resource_name: The name of the resource. + :param DataAccessScopeArgs 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(DataAccessScopeArgs, 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, + allow_all: Optional[pulumi.Input[bool]] = None, + allowed_data_access_labels: Optional[pulumi.Input[Sequence[pulumi.Input[Union['DataAccessScopeAllowedDataAccessLabelArgs', 'DataAccessScopeAllowedDataAccessLabelArgsDict']]]]] = None, + data_access_scope_id: Optional[pulumi.Input[str]] = None, + denied_data_access_labels: Optional[pulumi.Input[Sequence[pulumi.Input[Union['DataAccessScopeDeniedDataAccessLabelArgs', 'DataAccessScopeDeniedDataAccessLabelArgsDict']]]]] = None, + description: Optional[pulumi.Input[str]] = None, + instance: Optional[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__ = DataAccessScopeArgs.__new__(DataAccessScopeArgs) + + __props__.__dict__["allow_all"] = allow_all + __props__.__dict__["allowed_data_access_labels"] = allowed_data_access_labels + if data_access_scope_id is None and not opts.urn: + raise TypeError("Missing required property 'data_access_scope_id'") + __props__.__dict__["data_access_scope_id"] = data_access_scope_id + __props__.__dict__["denied_data_access_labels"] = denied_data_access_labels + __props__.__dict__["description"] = description + 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__["project"] = project + __props__.__dict__["author"] = None + __props__.__dict__["create_time"] = None + __props__.__dict__["display_name"] = None + __props__.__dict__["last_editor"] = None + __props__.__dict__["name"] = None + __props__.__dict__["update_time"] = None + super(DataAccessScope, __self__).__init__( + 'gcp:chronicle/dataAccessScope:DataAccessScope', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + allow_all: Optional[pulumi.Input[bool]] = None, + allowed_data_access_labels: Optional[pulumi.Input[Sequence[pulumi.Input[Union['DataAccessScopeAllowedDataAccessLabelArgs', 'DataAccessScopeAllowedDataAccessLabelArgsDict']]]]] = None, + author: Optional[pulumi.Input[str]] = None, + create_time: Optional[pulumi.Input[str]] = None, + data_access_scope_id: Optional[pulumi.Input[str]] = None, + denied_data_access_labels: Optional[pulumi.Input[Sequence[pulumi.Input[Union['DataAccessScopeDeniedDataAccessLabelArgs', 'DataAccessScopeDeniedDataAccessLabelArgsDict']]]]] = None, + description: Optional[pulumi.Input[str]] = None, + display_name: Optional[pulumi.Input[str]] = None, + instance: Optional[pulumi.Input[str]] = None, + last_editor: Optional[pulumi.Input[str]] = None, + location: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None, + update_time: Optional[pulumi.Input[str]] = None) -> 'DataAccessScope': + """ + Get an existing DataAccessScope 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[bool] allow_all: Optional. Whether or not the scope allows all labels, allow_all and + allowed_data_access_labels are mutually exclusive and one of them must be + present. denied_data_access_labels can still be used along with allow_all. + When combined with denied_data_access_labels, access will be granted to all + data that doesn't have labels mentioned in denied_data_access_labels. E.g.: + A customer with scope with denied labels A and B and allow_all will be able + to see all data except data labeled with A and data labeled with B and data + with labels A and B. + :param pulumi.Input[Sequence[pulumi.Input[Union['DataAccessScopeAllowedDataAccessLabelArgs', 'DataAccessScopeAllowedDataAccessLabelArgsDict']]]] allowed_data_access_labels: The allowed labels for the scope. There has to be at + least one label allowed for the scope to be valid. + The logical operator for evaluation of the allowed labels is OR. + Either allow_all or allowed_data_access_labels needs to be provided. + E.g.: A customer with scope with allowed labels A and B will be able + to see data with labeled with A or B or (A and B). + Structure is documented below. + :param pulumi.Input[str] author: Output only. The user who created the data access scope. + :param pulumi.Input[str] create_time: Output only. The time at which the data access scope was created. + :param pulumi.Input[str] data_access_scope_id: Required. The user provided scope id which will become the last part of the name + of the scope resource. + Needs to be compliant with https://google.aip.dev/122 + + + - - - + :param pulumi.Input[Sequence[pulumi.Input[Union['DataAccessScopeDeniedDataAccessLabelArgs', 'DataAccessScopeDeniedDataAccessLabelArgsDict']]]] denied_data_access_labels: Optional. The denied labels for the scope. + The logical operator for evaluation of the denied labels is AND. + E.g.: A customer with scope with denied labels A and B won't be able + to see data labeled with A and data labeled with B + and data with labels A and B. + Structure is documented below. + :param pulumi.Input[str] description: Optional. A description of the data access scope for a human reader. + :param pulumi.Input[str] display_name: Output only. The name to be used for display to customers of the data access scope. + :param pulumi.Input[str] instance: The unique identifier for the Chronicle instance, which is the same as the customer ID. + :param pulumi.Input[str] last_editor: Output only. The user who last updated the data access scope. + :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] name: The unique full name of the data access scope. This unique identifier is generated using values provided for the URL parameters. + Format: + projects/{project}/locations/{location}/instances/{instance}/dataAccessScopes/{data_access_scope_id} + :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] update_time: Output only. The time at which the data access scope was last updated. + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _DataAccessScopeState.__new__(_DataAccessScopeState) + + __props__.__dict__["allow_all"] = allow_all + __props__.__dict__["allowed_data_access_labels"] = allowed_data_access_labels + __props__.__dict__["author"] = author + __props__.__dict__["create_time"] = create_time + __props__.__dict__["data_access_scope_id"] = data_access_scope_id + __props__.__dict__["denied_data_access_labels"] = denied_data_access_labels + __props__.__dict__["description"] = description + __props__.__dict__["display_name"] = display_name + __props__.__dict__["instance"] = instance + __props__.__dict__["last_editor"] = last_editor + __props__.__dict__["location"] = location + __props__.__dict__["name"] = name + __props__.__dict__["project"] = project + __props__.__dict__["update_time"] = update_time + return DataAccessScope(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter(name="allowAll") + def allow_all(self) -> pulumi.Output[Optional[bool]]: + """ + Optional. Whether or not the scope allows all labels, allow_all and + allowed_data_access_labels are mutually exclusive and one of them must be + present. denied_data_access_labels can still be used along with allow_all. + When combined with denied_data_access_labels, access will be granted to all + data that doesn't have labels mentioned in denied_data_access_labels. E.g.: + A customer with scope with denied labels A and B and allow_all will be able + to see all data except data labeled with A and data labeled with B and data + with labels A and B. + """ + return pulumi.get(self, "allow_all") + + @property + @pulumi.getter(name="allowedDataAccessLabels") + def allowed_data_access_labels(self) -> pulumi.Output[Optional[Sequence['outputs.DataAccessScopeAllowedDataAccessLabel']]]: + """ + The allowed labels for the scope. There has to be at + least one label allowed for the scope to be valid. + The logical operator for evaluation of the allowed labels is OR. + Either allow_all or allowed_data_access_labels needs to be provided. + E.g.: A customer with scope with allowed labels A and B will be able + to see data with labeled with A or B or (A and B). + Structure is documented below. + """ + return pulumi.get(self, "allowed_data_access_labels") + + @property + @pulumi.getter + def author(self) -> pulumi.Output[str]: + """ + Output only. The user who created the data access scope. + """ + return pulumi.get(self, "author") + + @property + @pulumi.getter(name="createTime") + def create_time(self) -> pulumi.Output[str]: + """ + Output only. The time at which the data access scope was created. + """ + return pulumi.get(self, "create_time") + + @property + @pulumi.getter(name="dataAccessScopeId") + def data_access_scope_id(self) -> pulumi.Output[str]: + """ + Required. The user provided scope id which will become the last part of the name + of the scope resource. + Needs to be compliant with https://google.aip.dev/122 + + + - - - + """ + return pulumi.get(self, "data_access_scope_id") + + @property + @pulumi.getter(name="deniedDataAccessLabels") + def denied_data_access_labels(self) -> pulumi.Output[Optional[Sequence['outputs.DataAccessScopeDeniedDataAccessLabel']]]: + """ + Optional. The denied labels for the scope. + The logical operator for evaluation of the denied labels is AND. + E.g.: A customer with scope with denied labels A and B won't be able + to see data labeled with A and data labeled with B + and data with labels A and B. + Structure is documented below. + """ + return pulumi.get(self, "denied_data_access_labels") + + @property + @pulumi.getter + def description(self) -> pulumi.Output[Optional[str]]: + """ + Optional. A description of the data access scope for a human reader. + """ + return pulumi.get(self, "description") + + @property + @pulumi.getter(name="displayName") + def display_name(self) -> pulumi.Output[str]: + """ + Output only. The name to be used for display to customers of the data access scope. + """ + return pulumi.get(self, "display_name") + + @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(name="lastEditor") + def last_editor(self) -> pulumi.Output[str]: + """ + Output only. The user who last updated the data access scope. + """ + return pulumi.get(self, "last_editor") + + @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 + def name(self) -> pulumi.Output[str]: + """ + The unique full name of the data access scope. This unique identifier is generated using values provided for the URL parameters. + Format: + projects/{project}/locations/{location}/instances/{instance}/dataAccessScopes/{data_access_scope_id} + """ + 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="updateTime") + def update_time(self) -> pulumi.Output[str]: + """ + Output only. The time at which the data access scope was last updated. + """ + return pulumi.get(self, "update_time") + diff --git a/sdk/python/pulumi_gcp/chronicle/outputs.py b/sdk/python/pulumi_gcp/chronicle/outputs.py index a20e721f53..4f85a4e4e6 100644 --- a/sdk/python/pulumi_gcp/chronicle/outputs.py +++ b/sdk/python/pulumi_gcp/chronicle/outputs.py @@ -16,12 +16,334 @@ from . import outputs __all__ = [ + 'DataAccessScopeAllowedDataAccessLabel', + 'DataAccessScopeAllowedDataAccessLabelIngestionLabel', + 'DataAccessScopeDeniedDataAccessLabel', + 'DataAccessScopeDeniedDataAccessLabelIngestionLabel', 'WatchlistEntityCount', 'WatchlistEntityPopulationMechanism', 'WatchlistEntityPopulationMechanismManual', 'WatchlistWatchlistUserPreferences', ] +@pulumi.output_type +class DataAccessScopeAllowedDataAccessLabel(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "assetNamespace": + suggest = "asset_namespace" + elif key == "dataAccessLabel": + suggest = "data_access_label" + elif key == "displayName": + suggest = "display_name" + elif key == "ingestionLabel": + suggest = "ingestion_label" + elif key == "logType": + suggest = "log_type" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in DataAccessScopeAllowedDataAccessLabel. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + DataAccessScopeAllowedDataAccessLabel.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + DataAccessScopeAllowedDataAccessLabel.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + asset_namespace: Optional[str] = None, + data_access_label: Optional[str] = None, + display_name: Optional[str] = None, + ingestion_label: Optional['outputs.DataAccessScopeAllowedDataAccessLabelIngestionLabel'] = None, + log_type: Optional[str] = None): + """ + :param str asset_namespace: The asset namespace configured in the forwarder + of the customer's events. + :param str data_access_label: The name of the data access label. + :param str display_name: (Output) + Output only. The display name of the label. + Data access label and log types's name + will match the display name of the resource. + The asset namespace will match the namespace itself. + The ingestion key value pair will match the key of the tuple. + :param 'DataAccessScopeAllowedDataAccessLabelIngestionLabelArgs' ingestion_label: Representation of an ingestion label type. + Structure is documented below. + :param str log_type: The name of the log type. + """ + if asset_namespace is not None: + pulumi.set(__self__, "asset_namespace", asset_namespace) + if data_access_label is not None: + pulumi.set(__self__, "data_access_label", data_access_label) + if display_name is not None: + pulumi.set(__self__, "display_name", display_name) + if ingestion_label is not None: + pulumi.set(__self__, "ingestion_label", ingestion_label) + if log_type is not None: + pulumi.set(__self__, "log_type", log_type) + + @property + @pulumi.getter(name="assetNamespace") + def asset_namespace(self) -> Optional[str]: + """ + The asset namespace configured in the forwarder + of the customer's events. + """ + return pulumi.get(self, "asset_namespace") + + @property + @pulumi.getter(name="dataAccessLabel") + def data_access_label(self) -> Optional[str]: + """ + The name of the data access label. + """ + return pulumi.get(self, "data_access_label") + + @property + @pulumi.getter(name="displayName") + def display_name(self) -> Optional[str]: + """ + (Output) + Output only. The display name of the label. + Data access label and log types's name + will match the display name of the resource. + The asset namespace will match the namespace itself. + The ingestion key value pair will match the key of the tuple. + """ + return pulumi.get(self, "display_name") + + @property + @pulumi.getter(name="ingestionLabel") + def ingestion_label(self) -> Optional['outputs.DataAccessScopeAllowedDataAccessLabelIngestionLabel']: + """ + Representation of an ingestion label type. + Structure is documented below. + """ + return pulumi.get(self, "ingestion_label") + + @property + @pulumi.getter(name="logType") + def log_type(self) -> Optional[str]: + """ + The name of the log type. + """ + return pulumi.get(self, "log_type") + + +@pulumi.output_type +class DataAccessScopeAllowedDataAccessLabelIngestionLabel(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "ingestionLabelKey": + suggest = "ingestion_label_key" + elif key == "ingestionLabelValue": + suggest = "ingestion_label_value" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in DataAccessScopeAllowedDataAccessLabelIngestionLabel. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + DataAccessScopeAllowedDataAccessLabelIngestionLabel.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + DataAccessScopeAllowedDataAccessLabelIngestionLabel.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + ingestion_label_key: str, + ingestion_label_value: Optional[str] = None): + """ + :param str ingestion_label_key: Required. The key of the ingestion label. Always required. + :param str ingestion_label_value: Optional. The value of the ingestion label. Optional. An object + with no provided value and some key provided would match + against the given key and ANY value. + """ + pulumi.set(__self__, "ingestion_label_key", ingestion_label_key) + if ingestion_label_value is not None: + pulumi.set(__self__, "ingestion_label_value", ingestion_label_value) + + @property + @pulumi.getter(name="ingestionLabelKey") + def ingestion_label_key(self) -> str: + """ + Required. The key of the ingestion label. Always required. + """ + return pulumi.get(self, "ingestion_label_key") + + @property + @pulumi.getter(name="ingestionLabelValue") + def ingestion_label_value(self) -> Optional[str]: + """ + Optional. The value of the ingestion label. Optional. An object + with no provided value and some key provided would match + against the given key and ANY value. + """ + return pulumi.get(self, "ingestion_label_value") + + +@pulumi.output_type +class DataAccessScopeDeniedDataAccessLabel(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "assetNamespace": + suggest = "asset_namespace" + elif key == "dataAccessLabel": + suggest = "data_access_label" + elif key == "displayName": + suggest = "display_name" + elif key == "ingestionLabel": + suggest = "ingestion_label" + elif key == "logType": + suggest = "log_type" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in DataAccessScopeDeniedDataAccessLabel. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + DataAccessScopeDeniedDataAccessLabel.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + DataAccessScopeDeniedDataAccessLabel.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + asset_namespace: Optional[str] = None, + data_access_label: Optional[str] = None, + display_name: Optional[str] = None, + ingestion_label: Optional['outputs.DataAccessScopeDeniedDataAccessLabelIngestionLabel'] = None, + log_type: Optional[str] = None): + """ + :param str asset_namespace: The asset namespace configured in the forwarder + of the customer's events. + :param str data_access_label: The name of the data access label. + :param str display_name: (Output) + Output only. The display name of the label. + Data access label and log types's name + will match the display name of the resource. + The asset namespace will match the namespace itself. + The ingestion key value pair will match the key of the tuple. + :param 'DataAccessScopeDeniedDataAccessLabelIngestionLabelArgs' ingestion_label: Representation of an ingestion label type. + Structure is documented below. + :param str log_type: The name of the log type. + """ + if asset_namespace is not None: + pulumi.set(__self__, "asset_namespace", asset_namespace) + if data_access_label is not None: + pulumi.set(__self__, "data_access_label", data_access_label) + if display_name is not None: + pulumi.set(__self__, "display_name", display_name) + if ingestion_label is not None: + pulumi.set(__self__, "ingestion_label", ingestion_label) + if log_type is not None: + pulumi.set(__self__, "log_type", log_type) + + @property + @pulumi.getter(name="assetNamespace") + def asset_namespace(self) -> Optional[str]: + """ + The asset namespace configured in the forwarder + of the customer's events. + """ + return pulumi.get(self, "asset_namespace") + + @property + @pulumi.getter(name="dataAccessLabel") + def data_access_label(self) -> Optional[str]: + """ + The name of the data access label. + """ + return pulumi.get(self, "data_access_label") + + @property + @pulumi.getter(name="displayName") + def display_name(self) -> Optional[str]: + """ + (Output) + Output only. The display name of the label. + Data access label and log types's name + will match the display name of the resource. + The asset namespace will match the namespace itself. + The ingestion key value pair will match the key of the tuple. + """ + return pulumi.get(self, "display_name") + + @property + @pulumi.getter(name="ingestionLabel") + def ingestion_label(self) -> Optional['outputs.DataAccessScopeDeniedDataAccessLabelIngestionLabel']: + """ + Representation of an ingestion label type. + Structure is documented below. + """ + return pulumi.get(self, "ingestion_label") + + @property + @pulumi.getter(name="logType") + def log_type(self) -> Optional[str]: + """ + The name of the log type. + """ + return pulumi.get(self, "log_type") + + +@pulumi.output_type +class DataAccessScopeDeniedDataAccessLabelIngestionLabel(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "ingestionLabelKey": + suggest = "ingestion_label_key" + elif key == "ingestionLabelValue": + suggest = "ingestion_label_value" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in DataAccessScopeDeniedDataAccessLabelIngestionLabel. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + DataAccessScopeDeniedDataAccessLabelIngestionLabel.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + DataAccessScopeDeniedDataAccessLabelIngestionLabel.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + ingestion_label_key: str, + ingestion_label_value: Optional[str] = None): + """ + :param str ingestion_label_key: Required. The key of the ingestion label. Always required. + :param str ingestion_label_value: Optional. The value of the ingestion label. Optional. An object + with no provided value and some key provided would match + against the given key and ANY value. + """ + pulumi.set(__self__, "ingestion_label_key", ingestion_label_key) + if ingestion_label_value is not None: + pulumi.set(__self__, "ingestion_label_value", ingestion_label_value) + + @property + @pulumi.getter(name="ingestionLabelKey") + def ingestion_label_key(self) -> str: + """ + Required. The key of the ingestion label. Always required. + """ + return pulumi.get(self, "ingestion_label_key") + + @property + @pulumi.getter(name="ingestionLabelValue") + def ingestion_label_value(self) -> Optional[str]: + """ + Optional. The value of the ingestion label. Optional. An object + with no provided value and some key provided would match + against the given key and ANY value. + """ + return pulumi.get(self, "ingestion_label_value") + + @pulumi.output_type class WatchlistEntityCount(dict): def __init__(__self__, *, diff --git a/sdk/python/pulumi_gcp/chronicle/watchlist.py b/sdk/python/pulumi_gcp/chronicle/watchlist.py index 42a3e64bbf..064c08abf8 100644 --- a/sdk/python/pulumi_gcp/chronicle/watchlist.py +++ b/sdk/python/pulumi_gcp/chronicle/watchlist.py @@ -25,10 +25,10 @@ def __init__(__self__, *, 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_id: Optional[pulumi.Input[str]] = None, watchlist_user_preferences: Optional[pulumi.Input['WatchlistWatchlistUserPreferencesArgs']] = None): """ The set of arguments for constructing a Watchlist resource. @@ -39,25 +39,24 @@ def __init__(__self__, *, 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[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. """ 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_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) @@ -112,21 +111,6 @@ def location(self) -> pulumi.Input[str]: 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]]: @@ -160,6 +144,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="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']]: @@ -207,10 +204,8 @@ def __init__(__self__, *, 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[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: @@ -379,10 +374,8 @@ def update_time(self, value: Optional[pulumi.Input[str]]): @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-/. + 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") @@ -430,7 +423,26 @@ def __init__(__self__, example = gcp.chronicle.Watchlist("example", location="us", instance="00000000-0000-0000-0000-000000000000", - watchlist_id="watchlist-name", + watchlist_id="watchlist-id", + description="watchlist-description", + display_name="watchlist_name", + multiplying_factor=1, + entity_population_mechanism={ + "manual": {}, + }, + watchlist_user_preferences={ + "pinned": True, + }) + ``` + ### Chronicle Watchlist Without Id + + ```python + import pulumi + import pulumi_gcp as gcp + + example = gcp.chronicle.Watchlist("example", + location="us", + instance="00000000-0000-0000-0000-000000000000", description="watchlist-description", display_name="watchlist-name", multiplying_factor=1, @@ -477,10 +489,8 @@ def __init__(__self__, :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[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. """ ... @@ -501,7 +511,26 @@ def __init__(__self__, example = gcp.chronicle.Watchlist("example", location="us", instance="00000000-0000-0000-0000-000000000000", - watchlist_id="watchlist-name", + watchlist_id="watchlist-id", + description="watchlist-description", + display_name="watchlist_name", + multiplying_factor=1, + entity_population_mechanism={ + "manual": {}, + }, + watchlist_user_preferences={ + "pinned": True, + }) + ``` + ### Chronicle Watchlist Without Id + + ```python + import pulumi + import pulumi_gcp as gcp + + example = gcp.chronicle.Watchlist("example", + location="us", + instance="00000000-0000-0000-0000-000000000000", description="watchlist-description", display_name="watchlist-name", multiplying_factor=1, @@ -585,8 +614,6 @@ def _internal_init(__self__, __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 @@ -639,10 +666,8 @@ def get(resource_name: str, 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[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)) @@ -759,10 +784,8 @@ def update_time(self) -> pulumi.Output[str]: @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-/. + 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") diff --git a/sdk/python/pulumi_gcp/cloudbuild/_inputs.py b/sdk/python/pulumi_gcp/cloudbuild/_inputs.py index d031c2c97f..f7a7f3453e 100644 --- a/sdk/python/pulumi_gcp/cloudbuild/_inputs.py +++ b/sdk/python/pulumi_gcp/cloudbuild/_inputs.py @@ -1180,7 +1180,7 @@ class TriggerBuildArtifactsObjectsArgsDict(TypedDict): Structure is documented below. - The `timing` block contains: + The `timing` block contains: """ elif False: TriggerBuildArtifactsObjectsArgsDict: TypeAlias = Mapping[str, Any] @@ -1201,7 +1201,7 @@ def __init__(__self__, *, Structure is documented below. - The `timing` block contains: + The `timing` block contains: """ if location is not None: pulumi.set(__self__, "location", location) @@ -1245,7 +1245,7 @@ def timings(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['TriggerBuildAr Structure is documented below. - The `timing` block contains: + The `timing` block contains: """ return pulumi.get(self, "timings") diff --git a/sdk/python/pulumi_gcp/cloudbuild/outputs.py b/sdk/python/pulumi_gcp/cloudbuild/outputs.py index 6d62bc280d..d32dbb8d3f 100644 --- a/sdk/python/pulumi_gcp/cloudbuild/outputs.py +++ b/sdk/python/pulumi_gcp/cloudbuild/outputs.py @@ -941,7 +941,7 @@ def __init__(__self__, *, Structure is documented below. - The `timing` block contains: + The `timing` block contains: """ if location is not None: pulumi.set(__self__, "location", location) @@ -977,7 +977,7 @@ def timings(self) -> Optional[Sequence['outputs.TriggerBuildArtifactsObjectsTimi Structure is documented below. - The `timing` block contains: + The `timing` block contains: """ return pulumi.get(self, "timings") diff --git a/sdk/python/pulumi_gcp/cloudquota/__init__.py b/sdk/python/pulumi_gcp/cloudquota/__init__.py index 6a675bf48d..b98f36b2d2 100644 --- a/sdk/python/pulumi_gcp/cloudquota/__init__.py +++ b/sdk/python/pulumi_gcp/cloudquota/__init__.py @@ -7,6 +7,7 @@ # Export this package's modules as members: from .get_s_quota_info import * from .get_s_quota_infos import * +from .s_quota_adjuster_settings import * from .s_quota_preference import * from ._inputs import * from . import outputs diff --git a/sdk/python/pulumi_gcp/cloudquota/s_quota_adjuster_settings.py b/sdk/python/pulumi_gcp/cloudquota/s_quota_adjuster_settings.py new file mode 100644 index 0000000000..34d1aa4ed3 --- /dev/null +++ b/sdk/python/pulumi_gcp/cloudquota/s_quota_adjuster_settings.py @@ -0,0 +1,336 @@ +# 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__ = ['SQuotaAdjusterSettingsArgs', 'SQuotaAdjusterSettings'] + +@pulumi.input_type +class SQuotaAdjusterSettingsArgs: + def __init__(__self__, *, + enablement: pulumi.Input[str], + parent: Optional[pulumi.Input[str]] = None): + """ + The set of arguments for constructing a SQuotaAdjusterSettings resource. + :param pulumi.Input[str] enablement: Required. The configured value of the enablement at the given resource. + Possible values are: `ENABLED`, `DISABLED`. + :param pulumi.Input[str] parent: The parent of the quota preference. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]". + + + - - - + """ + pulumi.set(__self__, "enablement", enablement) + if parent is not None: + pulumi.set(__self__, "parent", parent) + + @property + @pulumi.getter + def enablement(self) -> pulumi.Input[str]: + """ + Required. The configured value of the enablement at the given resource. + Possible values are: `ENABLED`, `DISABLED`. + """ + return pulumi.get(self, "enablement") + + @enablement.setter + def enablement(self, value: pulumi.Input[str]): + pulumi.set(self, "enablement", value) + + @property + @pulumi.getter + def parent(self) -> Optional[pulumi.Input[str]]: + """ + The parent of the quota preference. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]". + + + - - - + """ + return pulumi.get(self, "parent") + + @parent.setter + def parent(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "parent", value) + + +@pulumi.input_type +class _SQuotaAdjusterSettingsState: + def __init__(__self__, *, + effective_container: Optional[pulumi.Input[str]] = None, + effective_enablement: Optional[pulumi.Input[str]] = None, + enablement: Optional[pulumi.Input[str]] = None, + parent: Optional[pulumi.Input[str]] = None): + """ + Input properties used for looking up and filtering SQuotaAdjusterSettings resources. + :param pulumi.Input[str] effective_container: Fields to capture the hierarchy enablement. + The container (org/folder/project) that determines if the quota adjuster is set for this project/folder/org. We use the nearest-ancestor to determine the effective container. + The nearest ancestor (including this container) with `enabled` set (either true or false) will be returned. + :param pulumi.Input[str] effective_enablement: Based on the effective container`s setting above, determines Whether this container has the quota adjuster enabled. + :param pulumi.Input[str] enablement: Required. The configured value of the enablement at the given resource. + Possible values are: `ENABLED`, `DISABLED`. + :param pulumi.Input[str] parent: The parent of the quota preference. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]". + + + - - - + """ + if effective_container is not None: + pulumi.set(__self__, "effective_container", effective_container) + if effective_enablement is not None: + pulumi.set(__self__, "effective_enablement", effective_enablement) + if enablement is not None: + pulumi.set(__self__, "enablement", enablement) + if parent is not None: + pulumi.set(__self__, "parent", parent) + + @property + @pulumi.getter(name="effectiveContainer") + def effective_container(self) -> Optional[pulumi.Input[str]]: + """ + Fields to capture the hierarchy enablement. + The container (org/folder/project) that determines if the quota adjuster is set for this project/folder/org. We use the nearest-ancestor to determine the effective container. + The nearest ancestor (including this container) with `enabled` set (either true or false) will be returned. + """ + return pulumi.get(self, "effective_container") + + @effective_container.setter + def effective_container(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "effective_container", value) + + @property + @pulumi.getter(name="effectiveEnablement") + def effective_enablement(self) -> Optional[pulumi.Input[str]]: + """ + Based on the effective container`s setting above, determines Whether this container has the quota adjuster enabled. + """ + return pulumi.get(self, "effective_enablement") + + @effective_enablement.setter + def effective_enablement(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "effective_enablement", value) + + @property + @pulumi.getter + def enablement(self) -> Optional[pulumi.Input[str]]: + """ + Required. The configured value of the enablement at the given resource. + Possible values are: `ENABLED`, `DISABLED`. + """ + return pulumi.get(self, "enablement") + + @enablement.setter + def enablement(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "enablement", value) + + @property + @pulumi.getter + def parent(self) -> Optional[pulumi.Input[str]]: + """ + The parent of the quota preference. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]". + + + - - - + """ + return pulumi.get(self, "parent") + + @parent.setter + def parent(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "parent", value) + + +class SQuotaAdjusterSettings(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + enablement: Optional[pulumi.Input[str]] = None, + parent: Optional[pulumi.Input[str]] = None, + __props__=None): + """ + ## Example Usage + + ### Cloudquotas Quota Adjuster Settings Basic + + ```python + import pulumi + import pulumi_gcp as gcp + + adjuster_settings = gcp.cloudquota.SQuotaAdjusterSettings("adjuster_settings", + parent="projects/104740170505", + enablement="ENABLED") + ``` + + ## Import + + QuotaAdjusterSettings can be imported using any of these accepted formats: + + * `{{parent}}/locations/global/quotaAdjusterSettings` + + When using the `pulumi import` command, QuotaAdjusterSettings can be imported using one of the formats above. For example: + + ```sh + $ pulumi import gcp:cloudquota/sQuotaAdjusterSettings:SQuotaAdjusterSettings default {{parent}}/locations/global/quotaAdjusterSettings + ``` + + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] enablement: Required. The configured value of the enablement at the given resource. + Possible values are: `ENABLED`, `DISABLED`. + :param pulumi.Input[str] parent: The parent of the quota preference. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]". + + + - - - + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: SQuotaAdjusterSettingsArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + ## Example Usage + + ### Cloudquotas Quota Adjuster Settings Basic + + ```python + import pulumi + import pulumi_gcp as gcp + + adjuster_settings = gcp.cloudquota.SQuotaAdjusterSettings("adjuster_settings", + parent="projects/104740170505", + enablement="ENABLED") + ``` + + ## Import + + QuotaAdjusterSettings can be imported using any of these accepted formats: + + * `{{parent}}/locations/global/quotaAdjusterSettings` + + When using the `pulumi import` command, QuotaAdjusterSettings can be imported using one of the formats above. For example: + + ```sh + $ pulumi import gcp:cloudquota/sQuotaAdjusterSettings:SQuotaAdjusterSettings default {{parent}}/locations/global/quotaAdjusterSettings + ``` + + :param str resource_name: The name of the resource. + :param SQuotaAdjusterSettingsArgs 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(SQuotaAdjusterSettingsArgs, 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, + enablement: Optional[pulumi.Input[str]] = None, + parent: 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__ = SQuotaAdjusterSettingsArgs.__new__(SQuotaAdjusterSettingsArgs) + + if enablement is None and not opts.urn: + raise TypeError("Missing required property 'enablement'") + __props__.__dict__["enablement"] = enablement + __props__.__dict__["parent"] = parent + __props__.__dict__["effective_container"] = None + __props__.__dict__["effective_enablement"] = None + super(SQuotaAdjusterSettings, __self__).__init__( + 'gcp:cloudquota/sQuotaAdjusterSettings:SQuotaAdjusterSettings', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + effective_container: Optional[pulumi.Input[str]] = None, + effective_enablement: Optional[pulumi.Input[str]] = None, + enablement: Optional[pulumi.Input[str]] = None, + parent: Optional[pulumi.Input[str]] = None) -> 'SQuotaAdjusterSettings': + """ + Get an existing SQuotaAdjusterSettings 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] effective_container: Fields to capture the hierarchy enablement. + The container (org/folder/project) that determines if the quota adjuster is set for this project/folder/org. We use the nearest-ancestor to determine the effective container. + The nearest ancestor (including this container) with `enabled` set (either true or false) will be returned. + :param pulumi.Input[str] effective_enablement: Based on the effective container`s setting above, determines Whether this container has the quota adjuster enabled. + :param pulumi.Input[str] enablement: Required. The configured value of the enablement at the given resource. + Possible values are: `ENABLED`, `DISABLED`. + :param pulumi.Input[str] parent: The parent of the quota preference. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]". + + + - - - + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _SQuotaAdjusterSettingsState.__new__(_SQuotaAdjusterSettingsState) + + __props__.__dict__["effective_container"] = effective_container + __props__.__dict__["effective_enablement"] = effective_enablement + __props__.__dict__["enablement"] = enablement + __props__.__dict__["parent"] = parent + return SQuotaAdjusterSettings(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter(name="effectiveContainer") + def effective_container(self) -> pulumi.Output[str]: + """ + Fields to capture the hierarchy enablement. + The container (org/folder/project) that determines if the quota adjuster is set for this project/folder/org. We use the nearest-ancestor to determine the effective container. + The nearest ancestor (including this container) with `enabled` set (either true or false) will be returned. + """ + return pulumi.get(self, "effective_container") + + @property + @pulumi.getter(name="effectiveEnablement") + def effective_enablement(self) -> pulumi.Output[str]: + """ + Based on the effective container`s setting above, determines Whether this container has the quota adjuster enabled. + """ + return pulumi.get(self, "effective_enablement") + + @property + @pulumi.getter + def enablement(self) -> pulumi.Output[str]: + """ + Required. The configured value of the enablement at the given resource. + Possible values are: `ENABLED`, `DISABLED`. + """ + return pulumi.get(self, "enablement") + + @property + @pulumi.getter + def parent(self) -> pulumi.Output[str]: + """ + The parent of the quota preference. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]". + + + - - - + """ + return pulumi.get(self, "parent") + diff --git a/sdk/python/pulumi_gcp/compute/_inputs.py b/sdk/python/pulumi_gcp/compute/_inputs.py index 078448b765..ce1f9e6093 100644 --- a/sdk/python/pulumi_gcp/compute/_inputs.py +++ b/sdk/python/pulumi_gcp/compute/_inputs.py @@ -5197,7 +5197,7 @@ class BackendServiceSecuritySettingsArgsDict(TypedDict): Structure is documented below. - The `aws_v4_authentication` block supports: + The `aws_v4_authentication` block supports: """ client_tls_policy: NotRequired[pulumi.Input[str]] """ @@ -5226,7 +5226,7 @@ def __init__(__self__, *, Structure is documented below. - The `aws_v4_authentication` block supports: + The `aws_v4_authentication` block supports: :param pulumi.Input[str] client_tls_policy: ClientTlsPolicy is a resource that specifies how a client should authenticate connections to backends of a service. This resource itself does not affect configuration unless it is attached to a backend service resource. @@ -5250,7 +5250,7 @@ def aws_v4_authentication(self) -> Optional[pulumi.Input['BackendServiceSecurity Structure is documented below. - The `aws_v4_authentication` block supports: + The `aws_v4_authentication` block supports: """ return pulumi.get(self, "aws_v4_authentication") @@ -6456,7 +6456,7 @@ class FirewallPolicyRuleMatchArgsDict(TypedDict): Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. - The `layer4_configs` block supports: + The `layer4_configs` block supports: """ elif False: FirewallPolicyRuleMatchArgsDict: TypeAlias = Mapping[str, Any] @@ -6490,7 +6490,7 @@ def __init__(__self__, *, :param pulumi.Input[Sequence[pulumi.Input[str]]] src_threat_intelligences: Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. - The `layer4_configs` block supports: + The `layer4_configs` block supports: """ pulumi.set(__self__, "layer4_configs", layer4_configs) if dest_address_groups is not None: @@ -6642,7 +6642,7 @@ def src_threat_intelligences(self) -> Optional[pulumi.Input[Sequence[pulumi.Inpu Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. - The `layer4_configs` block supports: + The `layer4_configs` block supports: """ return pulumi.get(self, "src_threat_intelligences") @@ -7085,7 +7085,7 @@ class FirewallPolicyWithRulesPredefinedRuleMatchArgsDict(TypedDict): Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: """ src_address_groups: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]] """ @@ -7148,7 +7148,7 @@ def __init__(__self__, *, Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: :param pulumi.Input[Sequence[pulumi.Input[str]]] src_address_groups: Address groups which should be matched against the traffic source. Maximum number of source address groups is 10. :param pulumi.Input[Sequence[pulumi.Input[str]]] src_fqdns: Fully Qualified Domain Name (FQDN) which should be matched against @@ -7260,7 +7260,7 @@ def layer4_configs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['Firewal Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: """ return pulumi.get(self, "layer4_configs") @@ -7735,7 +7735,7 @@ class FirewallPolicyWithRulesRuleMatchArgsDict(TypedDict): Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: """ dest_address_groups: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]] """ @@ -7813,7 +7813,7 @@ def __init__(__self__, *, Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: :param pulumi.Input[Sequence[pulumi.Input[str]]] dest_address_groups: Address groups which should be matched against the traffic destination. Maximum number of destination address groups is 10. :param pulumi.Input[Sequence[pulumi.Input[str]]] dest_fqdns: Fully Qualified Domain Name (FQDN) which should be matched against @@ -7869,7 +7869,7 @@ def layer4_configs(self) -> pulumi.Input[Sequence[pulumi.Input['FirewallPolicyWi Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: """ return pulumi.get(self, "layer4_configs") @@ -21829,7 +21829,7 @@ class NetworkFirewallPolicyRuleMatchArgsDict(TypedDict): Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. - The `layer4_configs` block supports: + The `layer4_configs` block supports: """ elif False: NetworkFirewallPolicyRuleMatchArgsDict: TypeAlias = Mapping[str, Any] @@ -21866,7 +21866,7 @@ def __init__(__self__, *, :param pulumi.Input[Sequence[pulumi.Input[str]]] src_threat_intelligences: Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. - The `layer4_configs` block supports: + The `layer4_configs` block supports: """ pulumi.set(__self__, "layer4_configs", layer4_configs) if dest_address_groups is not None: @@ -22033,7 +22033,7 @@ def src_threat_intelligences(self) -> Optional[pulumi.Input[Sequence[pulumi.Inpu Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. - The `layer4_configs` block supports: + The `layer4_configs` block supports: """ return pulumi.get(self, "src_threat_intelligences") @@ -22647,7 +22647,7 @@ class NetworkFirewallPolicyWithRulesPredefinedRuleMatchArgsDict(TypedDict): Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: """ src_threat_intelligences: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]] """ @@ -22705,7 +22705,7 @@ def __init__(__self__, *, Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: :param pulumi.Input[Sequence[pulumi.Input[str]]] src_threat_intelligences: Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. """ @@ -22880,7 +22880,7 @@ def src_secure_tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['Networ Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: """ return pulumi.get(self, "src_secure_tags") @@ -23517,7 +23517,7 @@ class NetworkFirewallPolicyWithRulesRuleMatchArgsDict(TypedDict): Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: """ src_threat_intelligences: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]] """ @@ -23575,7 +23575,7 @@ def __init__(__self__, *, Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: :param pulumi.Input[Sequence[pulumi.Input[str]]] src_threat_intelligences: Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. """ @@ -23749,7 +23749,7 @@ def src_secure_tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['Networ Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: """ return pulumi.get(self, "src_secure_tags") @@ -24583,7 +24583,7 @@ class OrganizationSecurityPolicyRuleMatchConfigArgsDict(TypedDict): Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: """ dest_ip_ranges: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]] """ @@ -24609,7 +24609,7 @@ def __init__(__self__, *, Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: :param pulumi.Input[Sequence[pulumi.Input[str]]] dest_ip_ranges: Destination IP address range in CIDR format. Required for EGRESS rules. :param pulumi.Input[Sequence[pulumi.Input[str]]] src_ip_ranges: Source IP address range in CIDR format. Required for @@ -24629,7 +24629,7 @@ def layer4_configs(self) -> pulumi.Input[Sequence[pulumi.Input['OrganizationSecu Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: """ return pulumi.get(self, "layer4_configs") @@ -34747,7 +34747,7 @@ class RegionNetworkFirewallPolicyRuleMatchArgsDict(TypedDict): Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. - The `layer4_configs` block supports: + The `layer4_configs` block supports: """ elif False: RegionNetworkFirewallPolicyRuleMatchArgsDict: TypeAlias = Mapping[str, Any] @@ -34784,7 +34784,7 @@ def __init__(__self__, *, :param pulumi.Input[Sequence[pulumi.Input[str]]] src_threat_intelligences: Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. - The `layer4_configs` block supports: + The `layer4_configs` block supports: """ pulumi.set(__self__, "layer4_configs", layer4_configs) if dest_address_groups is not None: @@ -34951,7 +34951,7 @@ def src_threat_intelligences(self) -> Optional[pulumi.Input[Sequence[pulumi.Inpu Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. - The `layer4_configs` block supports: + The `layer4_configs` block supports: """ return pulumi.get(self, "src_threat_intelligences") @@ -35565,7 +35565,7 @@ class RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchArgsDict(TypedDict) Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: """ src_threat_intelligences: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]] """ @@ -35623,7 +35623,7 @@ def __init__(__self__, *, Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: :param pulumi.Input[Sequence[pulumi.Input[str]]] src_threat_intelligences: Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. """ @@ -35798,7 +35798,7 @@ def src_secure_tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['Region Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: """ return pulumi.get(self, "src_secure_tags") @@ -36435,7 +36435,7 @@ class RegionNetworkFirewallPolicyWithRulesRuleMatchArgsDict(TypedDict): Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: """ src_threat_intelligences: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]] """ @@ -36493,7 +36493,7 @@ def __init__(__self__, *, Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: :param pulumi.Input[Sequence[pulumi.Input[str]]] src_threat_intelligences: Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. """ @@ -36667,7 +36667,7 @@ def src_secure_tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['Region Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: """ return pulumi.get(self, "src_secure_tags") diff --git a/sdk/python/pulumi_gcp/compute/instance_group_manager.py b/sdk/python/pulumi_gcp/compute/instance_group_manager.py index a897febae5..c432f9b38c 100644 --- a/sdk/python/pulumi_gcp/compute/instance_group_manager.py +++ b/sdk/python/pulumi_gcp/compute/instance_group_manager.py @@ -80,7 +80,7 @@ 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['InstanceGroupManagerStandbyPolicyArgs'] standby_policy: The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + :param pulumi.Input['InstanceGroupManagerStandbyPolicyArgs'] standby_policy: The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). :param pulumi.Input[Sequence[pulumi.Input['InstanceGroupManagerStatefulDiskArgs']]] stateful_disks: Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). :param pulumi.Input[Sequence[pulumi.Input['InstanceGroupManagerStatefulExternalIpArgs']]] stateful_external_ips: External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. :param pulumi.Input[Sequence[pulumi.Input['InstanceGroupManagerStatefulInternalIpArgs']]] stateful_internal_ips: Internal network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. @@ -308,7 +308,7 @@ def project(self, value: Optional[pulumi.Input[str]]): @pulumi.getter(name="standbyPolicy") def standby_policy(self) -> Optional[pulumi.Input['InstanceGroupManagerStandbyPolicyArgs']]: """ - The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). """ return pulumi.get(self, "standby_policy") @@ -531,7 +531,7 @@ 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] self_link: The URL of the created resource. - :param pulumi.Input['InstanceGroupManagerStandbyPolicyArgs'] standby_policy: The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + :param pulumi.Input['InstanceGroupManagerStandbyPolicyArgs'] standby_policy: The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). :param pulumi.Input[Sequence[pulumi.Input['InstanceGroupManagerStatefulDiskArgs']]] stateful_disks: Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). :param pulumi.Input[Sequence[pulumi.Input['InstanceGroupManagerStatefulExternalIpArgs']]] stateful_external_ips: External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. :param pulumi.Input[Sequence[pulumi.Input['InstanceGroupManagerStatefulInternalIpArgs']]] stateful_internal_ips: Internal network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. @@ -834,7 +834,7 @@ def self_link(self, value: Optional[pulumi.Input[str]]): @pulumi.getter(name="standbyPolicy") def standby_policy(self) -> Optional[pulumi.Input['InstanceGroupManagerStandbyPolicyArgs']]: """ - The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). """ return pulumi.get(self, "standby_policy") @@ -1119,7 +1119,7 @@ def __init__(__self__, ]) ``` - ### With Standby Policy (`Google-Beta` Provider) + ### With Standby Policy (`Google` Provider) ```python import pulumi import pulumi_gcp as gcp @@ -1204,7 +1204,7 @@ 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[Union['InstanceGroupManagerStandbyPolicyArgs', 'InstanceGroupManagerStandbyPolicyArgsDict']] standby_policy: The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + :param pulumi.Input[Union['InstanceGroupManagerStandbyPolicyArgs', 'InstanceGroupManagerStandbyPolicyArgsDict']] standby_policy: The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). :param pulumi.Input[Sequence[pulumi.Input[Union['InstanceGroupManagerStatefulDiskArgs', 'InstanceGroupManagerStatefulDiskArgsDict']]]] stateful_disks: Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). :param pulumi.Input[Sequence[pulumi.Input[Union['InstanceGroupManagerStatefulExternalIpArgs', 'InstanceGroupManagerStatefulExternalIpArgsDict']]]] stateful_external_ips: External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. :param pulumi.Input[Sequence[pulumi.Input[Union['InstanceGroupManagerStatefulInternalIpArgs', 'InstanceGroupManagerStatefulInternalIpArgsDict']]]] stateful_internal_ips: Internal network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. @@ -1315,7 +1315,7 @@ def __init__(__self__, ]) ``` - ### With Standby Policy (`Google-Beta` Provider) + ### With Standby Policy (`Google` Provider) ```python import pulumi import pulumi_gcp as gcp @@ -1531,7 +1531,7 @@ def get(resource_name: str, :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] self_link: The URL of the created resource. - :param pulumi.Input[Union['InstanceGroupManagerStandbyPolicyArgs', 'InstanceGroupManagerStandbyPolicyArgsDict']] standby_policy: The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + :param pulumi.Input[Union['InstanceGroupManagerStandbyPolicyArgs', 'InstanceGroupManagerStandbyPolicyArgsDict']] standby_policy: The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). :param pulumi.Input[Sequence[pulumi.Input[Union['InstanceGroupManagerStatefulDiskArgs', 'InstanceGroupManagerStatefulDiskArgsDict']]]] stateful_disks: Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). :param pulumi.Input[Sequence[pulumi.Input[Union['InstanceGroupManagerStatefulExternalIpArgs', 'InstanceGroupManagerStatefulExternalIpArgsDict']]]] stateful_external_ips: External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. :param pulumi.Input[Sequence[pulumi.Input[Union['InstanceGroupManagerStatefulInternalIpArgs', 'InstanceGroupManagerStatefulInternalIpArgsDict']]]] stateful_internal_ips: Internal network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. @@ -1745,7 +1745,7 @@ def self_link(self) -> pulumi.Output[str]: @pulumi.getter(name="standbyPolicy") def standby_policy(self) -> pulumi.Output['outputs.InstanceGroupManagerStandbyPolicy']: """ - The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). """ return pulumi.get(self, "standby_policy") diff --git a/sdk/python/pulumi_gcp/compute/outputs.py b/sdk/python/pulumi_gcp/compute/outputs.py index 8085cb73c0..a3c30fdeea 100644 --- a/sdk/python/pulumi_gcp/compute/outputs.py +++ b/sdk/python/pulumi_gcp/compute/outputs.py @@ -3743,7 +3743,7 @@ def __init__(__self__, *, Structure is documented below. - The `aws_v4_authentication` block supports: + The `aws_v4_authentication` block supports: :param str client_tls_policy: ClientTlsPolicy is a resource that specifies how a client should authenticate connections to backends of a service. This resource itself does not affect configuration unless it is attached to a backend service resource. @@ -3767,7 +3767,7 @@ def aws_v4_authentication(self) -> Optional['outputs.BackendServiceSecuritySetti Structure is documented below. - The `aws_v4_authentication` block supports: + The `aws_v4_authentication` block supports: """ return pulumi.get(self, "aws_v4_authentication") @@ -4643,7 +4643,7 @@ def __init__(__self__, *, :param Sequence[str] src_threat_intelligences: Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. - The `layer4_configs` block supports: + The `layer4_configs` block supports: """ pulumi.set(__self__, "layer4_configs", layer4_configs) if dest_address_groups is not None: @@ -4755,7 +4755,7 @@ def src_threat_intelligences(self) -> Optional[Sequence[str]]: Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. - The `layer4_configs` block supports: + The `layer4_configs` block supports: """ return pulumi.get(self, "src_threat_intelligences") @@ -5117,7 +5117,7 @@ def __init__(__self__, *, Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: :param Sequence[str] src_address_groups: Address groups which should be matched against the traffic source. Maximum number of source address groups is 10. :param Sequence[str] src_fqdns: Fully Qualified Domain Name (FQDN) which should be matched against @@ -5209,7 +5209,7 @@ def layer4_configs(self) -> Optional[Sequence['outputs.FirewallPolicyWithRulesPr Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: """ return pulumi.get(self, "layer4_configs") @@ -5600,7 +5600,7 @@ def __init__(__self__, *, Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: :param Sequence[str] dest_address_groups: Address groups which should be matched against the traffic destination. Maximum number of destination address groups is 10. :param Sequence[str] dest_fqdns: Fully Qualified Domain Name (FQDN) which should be matched against @@ -5656,7 +5656,7 @@ def layer4_configs(self) -> Sequence['outputs.FirewallPolicyWithRulesRuleMatchLa Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: """ return pulumi.get(self, "layer4_configs") @@ -16256,7 +16256,7 @@ def __init__(__self__, *, :param Sequence[str] src_threat_intelligences: Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. - The `layer4_configs` block supports: + The `layer4_configs` block supports: """ pulumi.set(__self__, "layer4_configs", layer4_configs) if dest_address_groups is not None: @@ -16379,7 +16379,7 @@ def src_threat_intelligences(self) -> Optional[Sequence[str]]: Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. - The `layer4_configs` block supports: + The `layer4_configs` block supports: """ return pulumi.get(self, "src_threat_intelligences") @@ -16846,7 +16846,7 @@ def __init__(__self__, *, Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: :param Sequence[str] src_threat_intelligences: Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. """ @@ -16981,7 +16981,7 @@ def src_secure_tags(self) -> Optional[Sequence['outputs.NetworkFirewallPolicyWit Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: """ return pulumi.get(self, "src_secure_tags") @@ -17463,7 +17463,7 @@ def __init__(__self__, *, Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: :param Sequence[str] src_threat_intelligences: Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. """ @@ -17597,7 +17597,7 @@ def src_secure_tags(self) -> Optional[Sequence['outputs.NetworkFirewallPolicyWit Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: """ return pulumi.get(self, "src_secure_tags") @@ -18293,7 +18293,7 @@ def __init__(__self__, *, Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: :param Sequence[str] dest_ip_ranges: Destination IP address range in CIDR format. Required for EGRESS rules. :param Sequence[str] src_ip_ranges: Source IP address range in CIDR format. Required for @@ -18313,7 +18313,7 @@ def layer4_configs(self) -> Sequence['outputs.OrganizationSecurityPolicyRuleMatc Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: """ return pulumi.get(self, "layer4_configs") @@ -25951,7 +25951,7 @@ def __init__(__self__, *, :param Sequence[str] src_threat_intelligences: Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. - The `layer4_configs` block supports: + The `layer4_configs` block supports: """ pulumi.set(__self__, "layer4_configs", layer4_configs) if dest_address_groups is not None: @@ -26074,7 +26074,7 @@ def src_threat_intelligences(self) -> Optional[Sequence[str]]: Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. - The `layer4_configs` block supports: + The `layer4_configs` block supports: """ return pulumi.get(self, "src_threat_intelligences") @@ -26541,7 +26541,7 @@ def __init__(__self__, *, Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: :param Sequence[str] src_threat_intelligences: Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. """ @@ -26676,7 +26676,7 @@ def src_secure_tags(self) -> Optional[Sequence['outputs.RegionNetworkFirewallPol Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: """ return pulumi.get(self, "src_secure_tags") @@ -27158,7 +27158,7 @@ def __init__(__self__, *, Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: :param Sequence[str] src_threat_intelligences: Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source. """ @@ -27292,7 +27292,7 @@ def src_secure_tags(self) -> Optional[Sequence['outputs.RegionNetworkFirewallPol Structure is documented below. - The `layer4_config` block supports: + The `layer4_config` block supports: """ return pulumi.get(self, "src_secure_tags") diff --git a/sdk/python/pulumi_gcp/compute/region_instance_group_manager.py b/sdk/python/pulumi_gcp/compute/region_instance_group_manager.py index da2b80184d..efb5449b52 100644 --- a/sdk/python/pulumi_gcp/compute/region_instance_group_manager.py +++ b/sdk/python/pulumi_gcp/compute/region_instance_group_manager.py @@ -89,7 +89,7 @@ def __init__(__self__, *, :param pulumi.Input[str] region: The region where the managed instance group resides. If not provided, the provider region is used. - - - - :param pulumi.Input['RegionInstanceGroupManagerStandbyPolicyArgs'] standby_policy: The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + :param pulumi.Input['RegionInstanceGroupManagerStandbyPolicyArgs'] standby_policy: The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). :param pulumi.Input[Sequence[pulumi.Input['RegionInstanceGroupManagerStatefulDiskArgs']]] stateful_disks: Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). Proactive cross zone instance redistribution must be disabled before you can update stateful disks on existing instance group managers. This can be controlled via the `update_policy`. :param pulumi.Input[Sequence[pulumi.Input['RegionInstanceGroupManagerStatefulExternalIpArgs']]] stateful_external_ips: External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. :param pulumi.Input[Sequence[pulumi.Input['RegionInstanceGroupManagerStatefulInternalIpArgs']]] stateful_internal_ips: Internal network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. @@ -369,7 +369,7 @@ def region(self, value: Optional[pulumi.Input[str]]): @pulumi.getter(name="standbyPolicy") def standby_policy(self) -> Optional[pulumi.Input['RegionInstanceGroupManagerStandbyPolicyArgs']]: """ - The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). """ return pulumi.get(self, "standby_policy") @@ -585,7 +585,7 @@ def __init__(__self__, *, - - - :param pulumi.Input[str] self_link: The URL of the created resource. - :param pulumi.Input['RegionInstanceGroupManagerStandbyPolicyArgs'] standby_policy: The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + :param pulumi.Input['RegionInstanceGroupManagerStandbyPolicyArgs'] standby_policy: The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). :param pulumi.Input[Sequence[pulumi.Input['RegionInstanceGroupManagerStatefulDiskArgs']]] stateful_disks: Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). Proactive cross zone instance redistribution must be disabled before you can update stateful disks on existing instance group managers. This can be controlled via the `update_policy`. :param pulumi.Input[Sequence[pulumi.Input['RegionInstanceGroupManagerStatefulExternalIpArgs']]] stateful_external_ips: External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. :param pulumi.Input[Sequence[pulumi.Input['RegionInstanceGroupManagerStatefulInternalIpArgs']]] stateful_internal_ips: Internal network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. @@ -929,7 +929,7 @@ def self_link(self, value: Optional[pulumi.Input[str]]): @pulumi.getter(name="standbyPolicy") def standby_policy(self) -> Optional[pulumi.Input['RegionInstanceGroupManagerStandbyPolicyArgs']]: """ - The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). """ return pulumi.get(self, "standby_policy") @@ -1209,7 +1209,7 @@ def __init__(__self__, ]) ``` - ### With Standby Policy (`Google-Beta` Provider) + ### With Standby Policy (`Google` Provider) ```python import pulumi import pulumi_gcp as gcp @@ -1282,7 +1282,7 @@ def __init__(__self__, :param pulumi.Input[str] region: The region where the managed instance group resides. If not provided, the provider region is used. - - - - :param pulumi.Input[Union['RegionInstanceGroupManagerStandbyPolicyArgs', 'RegionInstanceGroupManagerStandbyPolicyArgsDict']] standby_policy: The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + :param pulumi.Input[Union['RegionInstanceGroupManagerStandbyPolicyArgs', 'RegionInstanceGroupManagerStandbyPolicyArgsDict']] standby_policy: The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). :param pulumi.Input[Sequence[pulumi.Input[Union['RegionInstanceGroupManagerStatefulDiskArgs', 'RegionInstanceGroupManagerStatefulDiskArgsDict']]]] stateful_disks: Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). Proactive cross zone instance redistribution must be disabled before you can update stateful disks on existing instance group managers. This can be controlled via the `update_policy`. :param pulumi.Input[Sequence[pulumi.Input[Union['RegionInstanceGroupManagerStatefulExternalIpArgs', 'RegionInstanceGroupManagerStatefulExternalIpArgsDict']]]] stateful_external_ips: External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. :param pulumi.Input[Sequence[pulumi.Input[Union['RegionInstanceGroupManagerStatefulInternalIpArgs', 'RegionInstanceGroupManagerStatefulInternalIpArgsDict']]]] stateful_internal_ips: Internal network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. @@ -1396,7 +1396,7 @@ def __init__(__self__, ]) ``` - ### With Standby Policy (`Google-Beta` Provider) + ### With Standby Policy (`Google` Provider) ```python import pulumi import pulumi_gcp as gcp @@ -1607,7 +1607,7 @@ def get(resource_name: str, - - - :param pulumi.Input[str] self_link: The URL of the created resource. - :param pulumi.Input[Union['RegionInstanceGroupManagerStandbyPolicyArgs', 'RegionInstanceGroupManagerStandbyPolicyArgsDict']] standby_policy: The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + :param pulumi.Input[Union['RegionInstanceGroupManagerStandbyPolicyArgs', 'RegionInstanceGroupManagerStandbyPolicyArgsDict']] standby_policy: The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). :param pulumi.Input[Sequence[pulumi.Input[Union['RegionInstanceGroupManagerStatefulDiskArgs', 'RegionInstanceGroupManagerStatefulDiskArgsDict']]]] stateful_disks: Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). Proactive cross zone instance redistribution must be disabled before you can update stateful disks on existing instance group managers. This can be controlled via the `update_policy`. :param pulumi.Input[Sequence[pulumi.Input[Union['RegionInstanceGroupManagerStatefulExternalIpArgs', 'RegionInstanceGroupManagerStatefulExternalIpArgsDict']]]] stateful_external_ips: External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. :param pulumi.Input[Sequence[pulumi.Input[Union['RegionInstanceGroupManagerStatefulInternalIpArgs', 'RegionInstanceGroupManagerStatefulInternalIpArgsDict']]]] stateful_internal_ips: Internal network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below. @@ -1848,7 +1848,7 @@ def self_link(self) -> pulumi.Output[str]: @pulumi.getter(name="standbyPolicy") def standby_policy(self) -> pulumi.Output['outputs.RegionInstanceGroupManagerStandbyPolicy']: """ - The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch) + The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig). """ return pulumi.get(self, "standby_policy") diff --git a/sdk/python/pulumi_gcp/datacatalog/_inputs.py b/sdk/python/pulumi_gcp/datacatalog/_inputs.py index 8405f95a73..377e22514f 100644 --- a/sdk/python/pulumi_gcp/datacatalog/_inputs.py +++ b/sdk/python/pulumi_gcp/datacatalog/_inputs.py @@ -333,7 +333,7 @@ class EntryGcsFilesetSpecArgsDict(TypedDict): Structure is documented below. - The `sample_gcs_file_specs` block contains: + The `sample_gcs_file_specs` block contains: """ elif False: EntryGcsFilesetSpecArgsDict: TypeAlias = Mapping[str, Any] @@ -360,7 +360,7 @@ def __init__(__self__, *, Structure is documented below. - The `sample_gcs_file_specs` block contains: + The `sample_gcs_file_specs` block contains: """ pulumi.set(__self__, "file_patterns", file_patterns) if sample_gcs_file_specs is not None: @@ -397,7 +397,7 @@ def sample_gcs_file_specs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[' Structure is documented below. - The `sample_gcs_file_specs` block contains: + The `sample_gcs_file_specs` block contains: """ return pulumi.get(self, "sample_gcs_file_specs") diff --git a/sdk/python/pulumi_gcp/datacatalog/outputs.py b/sdk/python/pulumi_gcp/datacatalog/outputs.py index b9eb15c427..de8b7c5a06 100644 --- a/sdk/python/pulumi_gcp/datacatalog/outputs.py +++ b/sdk/python/pulumi_gcp/datacatalog/outputs.py @@ -306,7 +306,7 @@ def __init__(__self__, *, Structure is documented below. - The `sample_gcs_file_specs` block contains: + The `sample_gcs_file_specs` block contains: """ pulumi.set(__self__, "file_patterns", file_patterns) if sample_gcs_file_specs is not None: @@ -339,7 +339,7 @@ def sample_gcs_file_specs(self) -> Optional[Sequence['outputs.EntryGcsFilesetSpe Structure is documented below. - The `sample_gcs_file_specs` block contains: + The `sample_gcs_file_specs` block contains: """ return pulumi.get(self, "sample_gcs_file_specs") diff --git a/sdk/python/pulumi_gcp/developerconnect/_inputs.py b/sdk/python/pulumi_gcp/developerconnect/_inputs.py index dfa44dc777..c7280b369b 100644 --- a/sdk/python/pulumi_gcp/developerconnect/_inputs.py +++ b/sdk/python/pulumi_gcp/developerconnect/_inputs.py @@ -15,26 +15,83 @@ from .. import _utilities __all__ = [ + 'ConnectionCryptoKeyConfigArgs', + 'ConnectionCryptoKeyConfigArgsDict', 'ConnectionGithubConfigArgs', 'ConnectionGithubConfigArgsDict', 'ConnectionGithubConfigAuthorizerCredentialArgs', 'ConnectionGithubConfigAuthorizerCredentialArgsDict', + 'ConnectionGithubEnterpriseConfigArgs', + 'ConnectionGithubEnterpriseConfigArgsDict', + 'ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs', + 'ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgsDict', + 'ConnectionGitlabConfigArgs', + 'ConnectionGitlabConfigArgsDict', + 'ConnectionGitlabConfigAuthorizerCredentialArgs', + 'ConnectionGitlabConfigAuthorizerCredentialArgsDict', + 'ConnectionGitlabConfigReadAuthorizerCredentialArgs', + 'ConnectionGitlabConfigReadAuthorizerCredentialArgsDict', + 'ConnectionGitlabEnterpriseConfigArgs', + 'ConnectionGitlabEnterpriseConfigArgsDict', + 'ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs', + 'ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgsDict', + 'ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs', + 'ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgsDict', + 'ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs', + 'ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgsDict', 'ConnectionInstallationStateArgs', 'ConnectionInstallationStateArgsDict', ] MYPY = False +if not MYPY: + class ConnectionCryptoKeyConfigArgsDict(TypedDict): + key_reference: pulumi.Input[str] + """ + Required. The name of the key which is used to encrypt/decrypt customer data. For key + in Cloud KMS, the key should be in the format of + `projects/*/locations/*/keyRings/*/cryptoKeys/*`. + """ +elif False: + ConnectionCryptoKeyConfigArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class ConnectionCryptoKeyConfigArgs: + def __init__(__self__, *, + key_reference: pulumi.Input[str]): + """ + :param pulumi.Input[str] key_reference: Required. The name of the key which is used to encrypt/decrypt customer data. For key + in Cloud KMS, the key should be in the format of + `projects/*/locations/*/keyRings/*/cryptoKeys/*`. + """ + pulumi.set(__self__, "key_reference", key_reference) + + @property + @pulumi.getter(name="keyReference") + def key_reference(self) -> pulumi.Input[str]: + """ + Required. The name of the key which is used to encrypt/decrypt customer data. For key + in Cloud KMS, the key should be in the format of + `projects/*/locations/*/keyRings/*/cryptoKeys/*`. + """ + return pulumi.get(self, "key_reference") + + @key_reference.setter + def key_reference(self, value: pulumi.Input[str]): + pulumi.set(self, "key_reference", value) + + if not MYPY: class ConnectionGithubConfigArgsDict(TypedDict): github_app: pulumi.Input[str] """ - Required. Immutable. The GitHub Application that was installed to - the GitHub user or organization. + Required. Immutable. The GitHub Application that was installed to the GitHub user or + organization. Possible values: GIT_HUB_APP_UNSPECIFIED DEVELOPER_CONNECT - FIREBASE" + FIREBASE """ app_installation_id: NotRequired[pulumi.Input[str]] """ @@ -42,15 +99,15 @@ class ConnectionGithubConfigArgsDict(TypedDict): """ authorizer_credential: NotRequired[pulumi.Input['ConnectionGithubConfigAuthorizerCredentialArgsDict']] """ - Represents an OAuth token of the account that authorized the Connection,and - associated metadata. + Represents an OAuth token of the account that authorized the Connection, + and associated metadata. Structure is documented below. """ installation_uri: NotRequired[pulumi.Input[str]] """ (Output) - Output only. The URI to navigate to in order to manage the installation - associated with this GitHubConfig. + Output only. The URI to navigate to in order to manage the installation associated + with this GitHubConfig. """ elif False: ConnectionGithubConfigArgsDict: TypeAlias = Mapping[str, Any] @@ -63,19 +120,19 @@ def __init__(__self__, *, authorizer_credential: Optional[pulumi.Input['ConnectionGithubConfigAuthorizerCredentialArgs']] = None, installation_uri: Optional[pulumi.Input[str]] = None): """ - :param pulumi.Input[str] github_app: Required. Immutable. The GitHub Application that was installed to - the GitHub user or organization. + :param pulumi.Input[str] github_app: Required. Immutable. The GitHub Application that was installed to the GitHub user or + organization. Possible values: GIT_HUB_APP_UNSPECIFIED DEVELOPER_CONNECT - FIREBASE" + FIREBASE :param pulumi.Input[str] app_installation_id: Optional. GitHub App installation id. - :param pulumi.Input['ConnectionGithubConfigAuthorizerCredentialArgs'] authorizer_credential: Represents an OAuth token of the account that authorized the Connection,and - associated metadata. + :param pulumi.Input['ConnectionGithubConfigAuthorizerCredentialArgs'] authorizer_credential: Represents an OAuth token of the account that authorized the Connection, + and associated metadata. Structure is documented below. :param pulumi.Input[str] installation_uri: (Output) - Output only. The URI to navigate to in order to manage the installation - associated with this GitHubConfig. + Output only. The URI to navigate to in order to manage the installation associated + with this GitHubConfig. """ pulumi.set(__self__, "github_app", github_app) if app_installation_id is not None: @@ -89,12 +146,12 @@ def __init__(__self__, *, @pulumi.getter(name="githubApp") def github_app(self) -> pulumi.Input[str]: """ - Required. Immutable. The GitHub Application that was installed to - the GitHub user or organization. + Required. Immutable. The GitHub Application that was installed to the GitHub user or + organization. Possible values: GIT_HUB_APP_UNSPECIFIED DEVELOPER_CONNECT - FIREBASE" + FIREBASE """ return pulumi.get(self, "github_app") @@ -118,8 +175,8 @@ def app_installation_id(self, value: Optional[pulumi.Input[str]]): @pulumi.getter(name="authorizerCredential") def authorizer_credential(self) -> Optional[pulumi.Input['ConnectionGithubConfigAuthorizerCredentialArgs']]: """ - Represents an OAuth token of the account that authorized the Connection,and - associated metadata. + Represents an OAuth token of the account that authorized the Connection, + and associated metadata. Structure is documented below. """ return pulumi.get(self, "authorizer_credential") @@ -133,8 +190,8 @@ def authorizer_credential(self, value: Optional[pulumi.Input['ConnectionGithubCo def installation_uri(self) -> Optional[pulumi.Input[str]]: """ (Output) - Output only. The URI to navigate to in order to manage the installation - associated with this GitHubConfig. + Output only. The URI to navigate to in order to manage the installation associated + with this GitHubConfig. """ return pulumi.get(self, "installation_uri") @@ -147,9 +204,8 @@ def installation_uri(self, value: Optional[pulumi.Input[str]]): class ConnectionGithubConfigAuthorizerCredentialArgsDict(TypedDict): oauth_token_secret_version: pulumi.Input[str] """ - Required. A SecretManager resource containing the OAuth token - that authorizes the connection. - Format: `projects/*/secrets/*/versions/*`. + Required. A SecretManager resource containing the OAuth token that authorizes + the connection. Format: `projects/*/secrets/*/versions/*`. """ username: NotRequired[pulumi.Input[str]] """ @@ -165,9 +221,8 @@ def __init__(__self__, *, oauth_token_secret_version: pulumi.Input[str], username: Optional[pulumi.Input[str]] = None): """ - :param pulumi.Input[str] oauth_token_secret_version: Required. A SecretManager resource containing the OAuth token - that authorizes the connection. - Format: `projects/*/secrets/*/versions/*`. + :param pulumi.Input[str] oauth_token_secret_version: Required. A SecretManager resource containing the OAuth token that authorizes + the connection. Format: `projects/*/secrets/*/versions/*`. :param pulumi.Input[str] username: (Output) Output only. The username associated with this token. """ @@ -179,9 +234,8 @@ def __init__(__self__, *, @pulumi.getter(name="oauthTokenSecretVersion") def oauth_token_secret_version(self) -> pulumi.Input[str]: """ - Required. A SecretManager resource containing the OAuth token - that authorizes the connection. - Format: `projects/*/secrets/*/versions/*`. + Required. A SecretManager resource containing the OAuth token that authorizes + the connection. Format: `projects/*/secrets/*/versions/*`. """ return pulumi.get(self, "oauth_token_secret_version") @@ -203,17 +257,831 @@ def username(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "username", value) +if not MYPY: + class ConnectionGithubEnterpriseConfigArgsDict(TypedDict): + host_uri: pulumi.Input[str] + """ + Required. The URI of the GitHub Enterprise host this connection is for. + """ + app_id: NotRequired[pulumi.Input[str]] + """ + Optional. ID of the GitHub App created from the manifest. + """ + app_installation_id: NotRequired[pulumi.Input[str]] + """ + Optional. ID of the installation of the GitHub App. + """ + app_slug: NotRequired[pulumi.Input[str]] + """ + (Output) + Output only. The URL-friendly name of the GitHub App. + """ + installation_uri: NotRequired[pulumi.Input[str]] + """ + (Output) + Output only. The URI to navigate to in order to manage the installation associated + with this GitHubEnterpriseConfig. + """ + private_key_secret_version: NotRequired[pulumi.Input[str]] + """ + Optional. SecretManager resource containing the private key of the GitHub App, + formatted as `projects/*/secrets/*/versions/*`. + """ + server_version: NotRequired[pulumi.Input[str]] + """ + (Output) + Output only. GitHub Enterprise version installed at the host_uri. + """ + service_directory_config: NotRequired[pulumi.Input['ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgsDict']] + """ + ServiceDirectoryConfig represents Service Directory configuration for a + connection. + Structure is documented below. + """ + ssl_ca_certificate: NotRequired[pulumi.Input[str]] + """ + Optional. SSL certificate to use for requests to GitHub Enterprise. + """ + webhook_secret_secret_version: NotRequired[pulumi.Input[str]] + """ + Optional. SecretManager resource containing the webhook secret of the GitHub App, + formatted as `projects/*/secrets/*/versions/*`. + """ +elif False: + ConnectionGithubEnterpriseConfigArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class ConnectionGithubEnterpriseConfigArgs: + def __init__(__self__, *, + host_uri: pulumi.Input[str], + app_id: Optional[pulumi.Input[str]] = None, + app_installation_id: Optional[pulumi.Input[str]] = None, + app_slug: Optional[pulumi.Input[str]] = None, + installation_uri: Optional[pulumi.Input[str]] = None, + private_key_secret_version: Optional[pulumi.Input[str]] = None, + server_version: Optional[pulumi.Input[str]] = None, + service_directory_config: Optional[pulumi.Input['ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs']] = None, + ssl_ca_certificate: Optional[pulumi.Input[str]] = None, + webhook_secret_secret_version: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] host_uri: Required. The URI of the GitHub Enterprise host this connection is for. + :param pulumi.Input[str] app_id: Optional. ID of the GitHub App created from the manifest. + :param pulumi.Input[str] app_installation_id: Optional. ID of the installation of the GitHub App. + :param pulumi.Input[str] app_slug: (Output) + Output only. The URL-friendly name of the GitHub App. + :param pulumi.Input[str] installation_uri: (Output) + Output only. The URI to navigate to in order to manage the installation associated + with this GitHubEnterpriseConfig. + :param pulumi.Input[str] private_key_secret_version: Optional. SecretManager resource containing the private key of the GitHub App, + formatted as `projects/*/secrets/*/versions/*`. + :param pulumi.Input[str] server_version: (Output) + Output only. GitHub Enterprise version installed at the host_uri. + :param pulumi.Input['ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs'] service_directory_config: ServiceDirectoryConfig represents Service Directory configuration for a + connection. + Structure is documented below. + :param pulumi.Input[str] ssl_ca_certificate: Optional. SSL certificate to use for requests to GitHub Enterprise. + :param pulumi.Input[str] webhook_secret_secret_version: Optional. SecretManager resource containing the webhook secret of the GitHub App, + formatted as `projects/*/secrets/*/versions/*`. + """ + pulumi.set(__self__, "host_uri", host_uri) + if app_id is not None: + pulumi.set(__self__, "app_id", app_id) + if app_installation_id is not None: + pulumi.set(__self__, "app_installation_id", app_installation_id) + if app_slug is not None: + pulumi.set(__self__, "app_slug", app_slug) + if installation_uri is not None: + pulumi.set(__self__, "installation_uri", installation_uri) + if private_key_secret_version is not None: + pulumi.set(__self__, "private_key_secret_version", private_key_secret_version) + if server_version is not None: + pulumi.set(__self__, "server_version", server_version) + if service_directory_config is not None: + pulumi.set(__self__, "service_directory_config", service_directory_config) + if ssl_ca_certificate is not None: + pulumi.set(__self__, "ssl_ca_certificate", ssl_ca_certificate) + if webhook_secret_secret_version is not None: + pulumi.set(__self__, "webhook_secret_secret_version", webhook_secret_secret_version) + + @property + @pulumi.getter(name="hostUri") + def host_uri(self) -> pulumi.Input[str]: + """ + Required. The URI of the GitHub Enterprise host this connection is for. + """ + return pulumi.get(self, "host_uri") + + @host_uri.setter + def host_uri(self, value: pulumi.Input[str]): + pulumi.set(self, "host_uri", value) + + @property + @pulumi.getter(name="appId") + def app_id(self) -> Optional[pulumi.Input[str]]: + """ + Optional. ID of the GitHub App created from the manifest. + """ + return pulumi.get(self, "app_id") + + @app_id.setter + def app_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "app_id", value) + + @property + @pulumi.getter(name="appInstallationId") + def app_installation_id(self) -> Optional[pulumi.Input[str]]: + """ + Optional. ID of the installation of the GitHub App. + """ + return pulumi.get(self, "app_installation_id") + + @app_installation_id.setter + def app_installation_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "app_installation_id", value) + + @property + @pulumi.getter(name="appSlug") + def app_slug(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + Output only. The URL-friendly name of the GitHub App. + """ + return pulumi.get(self, "app_slug") + + @app_slug.setter + def app_slug(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "app_slug", value) + + @property + @pulumi.getter(name="installationUri") + def installation_uri(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + Output only. The URI to navigate to in order to manage the installation associated + with this GitHubEnterpriseConfig. + """ + return pulumi.get(self, "installation_uri") + + @installation_uri.setter + def installation_uri(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "installation_uri", value) + + @property + @pulumi.getter(name="privateKeySecretVersion") + def private_key_secret_version(self) -> Optional[pulumi.Input[str]]: + """ + Optional. SecretManager resource containing the private key of the GitHub App, + formatted as `projects/*/secrets/*/versions/*`. + """ + return pulumi.get(self, "private_key_secret_version") + + @private_key_secret_version.setter + def private_key_secret_version(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "private_key_secret_version", value) + + @property + @pulumi.getter(name="serverVersion") + def server_version(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + Output only. GitHub Enterprise version installed at the host_uri. + """ + return pulumi.get(self, "server_version") + + @server_version.setter + def server_version(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "server_version", value) + + @property + @pulumi.getter(name="serviceDirectoryConfig") + def service_directory_config(self) -> Optional[pulumi.Input['ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs']]: + """ + ServiceDirectoryConfig represents Service Directory configuration for a + connection. + Structure is documented below. + """ + return pulumi.get(self, "service_directory_config") + + @service_directory_config.setter + def service_directory_config(self, value: Optional[pulumi.Input['ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs']]): + pulumi.set(self, "service_directory_config", value) + + @property + @pulumi.getter(name="sslCaCertificate") + def ssl_ca_certificate(self) -> Optional[pulumi.Input[str]]: + """ + Optional. SSL certificate to use for requests to GitHub Enterprise. + """ + return pulumi.get(self, "ssl_ca_certificate") + + @ssl_ca_certificate.setter + def ssl_ca_certificate(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "ssl_ca_certificate", value) + + @property + @pulumi.getter(name="webhookSecretSecretVersion") + def webhook_secret_secret_version(self) -> Optional[pulumi.Input[str]]: + """ + Optional. SecretManager resource containing the webhook secret of the GitHub App, + formatted as `projects/*/secrets/*/versions/*`. + """ + return pulumi.get(self, "webhook_secret_secret_version") + + @webhook_secret_secret_version.setter + def webhook_secret_secret_version(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "webhook_secret_secret_version", value) + + +if not MYPY: + class ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgsDict(TypedDict): + service: pulumi.Input[str] + """ + Required. The Service Directory service name. + Format: + projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + """ +elif False: + ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs: + def __init__(__self__, *, + service: pulumi.Input[str]): + """ + :param pulumi.Input[str] service: Required. The Service Directory service name. + Format: + projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + """ + pulumi.set(__self__, "service", service) + + @property + @pulumi.getter + def service(self) -> pulumi.Input[str]: + """ + Required. The Service Directory service name. + Format: + projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + """ + return pulumi.get(self, "service") + + @service.setter + def service(self, value: pulumi.Input[str]): + pulumi.set(self, "service", value) + + +if not MYPY: + class ConnectionGitlabConfigArgsDict(TypedDict): + authorizer_credential: pulumi.Input['ConnectionGitlabConfigAuthorizerCredentialArgsDict'] + """ + Represents a personal access token that authorized the Connection, + and associated metadata. + Structure is documented below. + """ + read_authorizer_credential: pulumi.Input['ConnectionGitlabConfigReadAuthorizerCredentialArgsDict'] + """ + Represents a personal access token that authorized the Connection, + and associated metadata. + Structure is documented below. + """ + webhook_secret_secret_version: pulumi.Input[str] + """ + Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + formatted as `projects/*/secrets/*/versions/*`. This is used to validate + webhooks. + """ +elif False: + ConnectionGitlabConfigArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class ConnectionGitlabConfigArgs: + def __init__(__self__, *, + authorizer_credential: pulumi.Input['ConnectionGitlabConfigAuthorizerCredentialArgs'], + read_authorizer_credential: pulumi.Input['ConnectionGitlabConfigReadAuthorizerCredentialArgs'], + webhook_secret_secret_version: pulumi.Input[str]): + """ + :param pulumi.Input['ConnectionGitlabConfigAuthorizerCredentialArgs'] authorizer_credential: Represents a personal access token that authorized the Connection, + and associated metadata. + Structure is documented below. + :param pulumi.Input['ConnectionGitlabConfigReadAuthorizerCredentialArgs'] read_authorizer_credential: Represents a personal access token that authorized the Connection, + and associated metadata. + Structure is documented below. + :param pulumi.Input[str] webhook_secret_secret_version: Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + formatted as `projects/*/secrets/*/versions/*`. This is used to validate + webhooks. + """ + pulumi.set(__self__, "authorizer_credential", authorizer_credential) + pulumi.set(__self__, "read_authorizer_credential", read_authorizer_credential) + pulumi.set(__self__, "webhook_secret_secret_version", webhook_secret_secret_version) + + @property + @pulumi.getter(name="authorizerCredential") + def authorizer_credential(self) -> pulumi.Input['ConnectionGitlabConfigAuthorizerCredentialArgs']: + """ + Represents a personal access token that authorized the Connection, + and associated metadata. + Structure is documented below. + """ + return pulumi.get(self, "authorizer_credential") + + @authorizer_credential.setter + def authorizer_credential(self, value: pulumi.Input['ConnectionGitlabConfigAuthorizerCredentialArgs']): + pulumi.set(self, "authorizer_credential", value) + + @property + @pulumi.getter(name="readAuthorizerCredential") + def read_authorizer_credential(self) -> pulumi.Input['ConnectionGitlabConfigReadAuthorizerCredentialArgs']: + """ + Represents a personal access token that authorized the Connection, + and associated metadata. + Structure is documented below. + """ + return pulumi.get(self, "read_authorizer_credential") + + @read_authorizer_credential.setter + def read_authorizer_credential(self, value: pulumi.Input['ConnectionGitlabConfigReadAuthorizerCredentialArgs']): + pulumi.set(self, "read_authorizer_credential", value) + + @property + @pulumi.getter(name="webhookSecretSecretVersion") + def webhook_secret_secret_version(self) -> pulumi.Input[str]: + """ + Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + formatted as `projects/*/secrets/*/versions/*`. This is used to validate + webhooks. + """ + return pulumi.get(self, "webhook_secret_secret_version") + + @webhook_secret_secret_version.setter + def webhook_secret_secret_version(self, value: pulumi.Input[str]): + pulumi.set(self, "webhook_secret_secret_version", value) + + +if not MYPY: + class ConnectionGitlabConfigAuthorizerCredentialArgsDict(TypedDict): + user_token_secret_version: pulumi.Input[str] + """ + Required. A SecretManager resource containing the user token that authorizes + the Developer Connect connection. Format: + `projects/*/secrets/*/versions/*`. + """ + username: NotRequired[pulumi.Input[str]] + """ + (Output) + Output only. The username associated with this token. + """ +elif False: + ConnectionGitlabConfigAuthorizerCredentialArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class ConnectionGitlabConfigAuthorizerCredentialArgs: + def __init__(__self__, *, + user_token_secret_version: pulumi.Input[str], + username: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] user_token_secret_version: Required. A SecretManager resource containing the user token that authorizes + the Developer Connect connection. Format: + `projects/*/secrets/*/versions/*`. + :param pulumi.Input[str] username: (Output) + Output only. The username associated with this token. + """ + pulumi.set(__self__, "user_token_secret_version", user_token_secret_version) + if username is not None: + pulumi.set(__self__, "username", username) + + @property + @pulumi.getter(name="userTokenSecretVersion") + def user_token_secret_version(self) -> pulumi.Input[str]: + """ + Required. A SecretManager resource containing the user token that authorizes + the Developer Connect connection. Format: + `projects/*/secrets/*/versions/*`. + """ + return pulumi.get(self, "user_token_secret_version") + + @user_token_secret_version.setter + def user_token_secret_version(self, value: pulumi.Input[str]): + pulumi.set(self, "user_token_secret_version", value) + + @property + @pulumi.getter + def username(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + Output only. The username associated with this token. + """ + return pulumi.get(self, "username") + + @username.setter + def username(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "username", value) + + +if not MYPY: + class ConnectionGitlabConfigReadAuthorizerCredentialArgsDict(TypedDict): + user_token_secret_version: pulumi.Input[str] + """ + Required. A SecretManager resource containing the user token that authorizes + the Developer Connect connection. Format: + `projects/*/secrets/*/versions/*`. + """ + username: NotRequired[pulumi.Input[str]] + """ + (Output) + Output only. The username associated with this token. + """ +elif False: + ConnectionGitlabConfigReadAuthorizerCredentialArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class ConnectionGitlabConfigReadAuthorizerCredentialArgs: + def __init__(__self__, *, + user_token_secret_version: pulumi.Input[str], + username: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] user_token_secret_version: Required. A SecretManager resource containing the user token that authorizes + the Developer Connect connection. Format: + `projects/*/secrets/*/versions/*`. + :param pulumi.Input[str] username: (Output) + Output only. The username associated with this token. + """ + pulumi.set(__self__, "user_token_secret_version", user_token_secret_version) + if username is not None: + pulumi.set(__self__, "username", username) + + @property + @pulumi.getter(name="userTokenSecretVersion") + def user_token_secret_version(self) -> pulumi.Input[str]: + """ + Required. A SecretManager resource containing the user token that authorizes + the Developer Connect connection. Format: + `projects/*/secrets/*/versions/*`. + """ + return pulumi.get(self, "user_token_secret_version") + + @user_token_secret_version.setter + def user_token_secret_version(self, value: pulumi.Input[str]): + pulumi.set(self, "user_token_secret_version", value) + + @property + @pulumi.getter + def username(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + Output only. The username associated with this token. + """ + return pulumi.get(self, "username") + + @username.setter + def username(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "username", value) + + +if not MYPY: + class ConnectionGitlabEnterpriseConfigArgsDict(TypedDict): + authorizer_credential: pulumi.Input['ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgsDict'] + """ + Represents a personal access token that authorized the Connection, + and associated metadata. + Structure is documented below. + """ + host_uri: pulumi.Input[str] + """ + Required. The URI of the GitLab Enterprise host this connection is for. + """ + read_authorizer_credential: pulumi.Input['ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgsDict'] + """ + Represents a personal access token that authorized the Connection, + and associated metadata. + Structure is documented below. + """ + webhook_secret_secret_version: pulumi.Input[str] + """ + Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + formatted as `projects/*/secrets/*/versions/*`. This is used to validate + webhooks. + """ + server_version: NotRequired[pulumi.Input[str]] + """ + (Output) + Output only. Version of the GitLab Enterprise server running on the `host_uri`. + """ + service_directory_config: NotRequired[pulumi.Input['ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgsDict']] + """ + ServiceDirectoryConfig represents Service Directory configuration for a + connection. + Structure is documented below. + """ + ssl_ca_certificate: NotRequired[pulumi.Input[str]] + """ + Optional. SSL Certificate Authority certificate to use for requests to GitLab + Enterprise instance. + """ +elif False: + ConnectionGitlabEnterpriseConfigArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class ConnectionGitlabEnterpriseConfigArgs: + def __init__(__self__, *, + authorizer_credential: pulumi.Input['ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs'], + host_uri: pulumi.Input[str], + read_authorizer_credential: pulumi.Input['ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs'], + webhook_secret_secret_version: pulumi.Input[str], + server_version: Optional[pulumi.Input[str]] = None, + service_directory_config: Optional[pulumi.Input['ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs']] = None, + ssl_ca_certificate: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input['ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs'] authorizer_credential: Represents a personal access token that authorized the Connection, + and associated metadata. + Structure is documented below. + :param pulumi.Input[str] host_uri: Required. The URI of the GitLab Enterprise host this connection is for. + :param pulumi.Input['ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs'] read_authorizer_credential: Represents a personal access token that authorized the Connection, + and associated metadata. + Structure is documented below. + :param pulumi.Input[str] webhook_secret_secret_version: Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + formatted as `projects/*/secrets/*/versions/*`. This is used to validate + webhooks. + :param pulumi.Input[str] server_version: (Output) + Output only. Version of the GitLab Enterprise server running on the `host_uri`. + :param pulumi.Input['ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs'] service_directory_config: ServiceDirectoryConfig represents Service Directory configuration for a + connection. + Structure is documented below. + :param pulumi.Input[str] ssl_ca_certificate: Optional. SSL Certificate Authority certificate to use for requests to GitLab + Enterprise instance. + """ + pulumi.set(__self__, "authorizer_credential", authorizer_credential) + pulumi.set(__self__, "host_uri", host_uri) + pulumi.set(__self__, "read_authorizer_credential", read_authorizer_credential) + pulumi.set(__self__, "webhook_secret_secret_version", webhook_secret_secret_version) + if server_version is not None: + pulumi.set(__self__, "server_version", server_version) + if service_directory_config is not None: + pulumi.set(__self__, "service_directory_config", service_directory_config) + if ssl_ca_certificate is not None: + pulumi.set(__self__, "ssl_ca_certificate", ssl_ca_certificate) + + @property + @pulumi.getter(name="authorizerCredential") + def authorizer_credential(self) -> pulumi.Input['ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs']: + """ + Represents a personal access token that authorized the Connection, + and associated metadata. + Structure is documented below. + """ + return pulumi.get(self, "authorizer_credential") + + @authorizer_credential.setter + def authorizer_credential(self, value: pulumi.Input['ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs']): + pulumi.set(self, "authorizer_credential", value) + + @property + @pulumi.getter(name="hostUri") + def host_uri(self) -> pulumi.Input[str]: + """ + Required. The URI of the GitLab Enterprise host this connection is for. + """ + return pulumi.get(self, "host_uri") + + @host_uri.setter + def host_uri(self, value: pulumi.Input[str]): + pulumi.set(self, "host_uri", value) + + @property + @pulumi.getter(name="readAuthorizerCredential") + def read_authorizer_credential(self) -> pulumi.Input['ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs']: + """ + Represents a personal access token that authorized the Connection, + and associated metadata. + Structure is documented below. + """ + return pulumi.get(self, "read_authorizer_credential") + + @read_authorizer_credential.setter + def read_authorizer_credential(self, value: pulumi.Input['ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs']): + pulumi.set(self, "read_authorizer_credential", value) + + @property + @pulumi.getter(name="webhookSecretSecretVersion") + def webhook_secret_secret_version(self) -> pulumi.Input[str]: + """ + Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + formatted as `projects/*/secrets/*/versions/*`. This is used to validate + webhooks. + """ + return pulumi.get(self, "webhook_secret_secret_version") + + @webhook_secret_secret_version.setter + def webhook_secret_secret_version(self, value: pulumi.Input[str]): + pulumi.set(self, "webhook_secret_secret_version", value) + + @property + @pulumi.getter(name="serverVersion") + def server_version(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + Output only. Version of the GitLab Enterprise server running on the `host_uri`. + """ + return pulumi.get(self, "server_version") + + @server_version.setter + def server_version(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "server_version", value) + + @property + @pulumi.getter(name="serviceDirectoryConfig") + def service_directory_config(self) -> Optional[pulumi.Input['ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs']]: + """ + ServiceDirectoryConfig represents Service Directory configuration for a + connection. + Structure is documented below. + """ + return pulumi.get(self, "service_directory_config") + + @service_directory_config.setter + def service_directory_config(self, value: Optional[pulumi.Input['ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs']]): + pulumi.set(self, "service_directory_config", value) + + @property + @pulumi.getter(name="sslCaCertificate") + def ssl_ca_certificate(self) -> Optional[pulumi.Input[str]]: + """ + Optional. SSL Certificate Authority certificate to use for requests to GitLab + Enterprise instance. + """ + return pulumi.get(self, "ssl_ca_certificate") + + @ssl_ca_certificate.setter + def ssl_ca_certificate(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "ssl_ca_certificate", value) + + +if not MYPY: + class ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgsDict(TypedDict): + user_token_secret_version: pulumi.Input[str] + """ + Required. A SecretManager resource containing the user token that authorizes + the Developer Connect connection. Format: + `projects/*/secrets/*/versions/*`. + """ + username: NotRequired[pulumi.Input[str]] + """ + (Output) + Output only. The username associated with this token. + """ +elif False: + ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs: + def __init__(__self__, *, + user_token_secret_version: pulumi.Input[str], + username: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] user_token_secret_version: Required. A SecretManager resource containing the user token that authorizes + the Developer Connect connection. Format: + `projects/*/secrets/*/versions/*`. + :param pulumi.Input[str] username: (Output) + Output only. The username associated with this token. + """ + pulumi.set(__self__, "user_token_secret_version", user_token_secret_version) + if username is not None: + pulumi.set(__self__, "username", username) + + @property + @pulumi.getter(name="userTokenSecretVersion") + def user_token_secret_version(self) -> pulumi.Input[str]: + """ + Required. A SecretManager resource containing the user token that authorizes + the Developer Connect connection. Format: + `projects/*/secrets/*/versions/*`. + """ + return pulumi.get(self, "user_token_secret_version") + + @user_token_secret_version.setter + def user_token_secret_version(self, value: pulumi.Input[str]): + pulumi.set(self, "user_token_secret_version", value) + + @property + @pulumi.getter + def username(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + Output only. The username associated with this token. + """ + return pulumi.get(self, "username") + + @username.setter + def username(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "username", value) + + +if not MYPY: + class ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgsDict(TypedDict): + user_token_secret_version: pulumi.Input[str] + """ + Required. A SecretManager resource containing the user token that authorizes + the Developer Connect connection. Format: + `projects/*/secrets/*/versions/*`. + """ + username: NotRequired[pulumi.Input[str]] + """ + (Output) + Output only. The username associated with this token. + """ +elif False: + ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs: + def __init__(__self__, *, + user_token_secret_version: pulumi.Input[str], + username: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] user_token_secret_version: Required. A SecretManager resource containing the user token that authorizes + the Developer Connect connection. Format: + `projects/*/secrets/*/versions/*`. + :param pulumi.Input[str] username: (Output) + Output only. The username associated with this token. + """ + pulumi.set(__self__, "user_token_secret_version", user_token_secret_version) + if username is not None: + pulumi.set(__self__, "username", username) + + @property + @pulumi.getter(name="userTokenSecretVersion") + def user_token_secret_version(self) -> pulumi.Input[str]: + """ + Required. A SecretManager resource containing the user token that authorizes + the Developer Connect connection. Format: + `projects/*/secrets/*/versions/*`. + """ + return pulumi.get(self, "user_token_secret_version") + + @user_token_secret_version.setter + def user_token_secret_version(self, value: pulumi.Input[str]): + pulumi.set(self, "user_token_secret_version", value) + + @property + @pulumi.getter + def username(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + Output only. The username associated with this token. + """ + return pulumi.get(self, "username") + + @username.setter + def username(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "username", value) + + +if not MYPY: + class ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgsDict(TypedDict): + service: pulumi.Input[str] + """ + Required. The Service Directory service name. + Format: + projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + """ +elif False: + ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgsDict: TypeAlias = Mapping[str, Any] + +@pulumi.input_type +class ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs: + def __init__(__self__, *, + service: pulumi.Input[str]): + """ + :param pulumi.Input[str] service: Required. The Service Directory service name. + Format: + projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + """ + pulumi.set(__self__, "service", service) + + @property + @pulumi.getter + def service(self) -> pulumi.Input[str]: + """ + Required. The Service Directory service name. + Format: + projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + """ + return pulumi.get(self, "service") + + @service.setter + def service(self, value: pulumi.Input[str]): + pulumi.set(self, "service", value) + + if not MYPY: class ConnectionInstallationStateArgsDict(TypedDict): action_uri: NotRequired[pulumi.Input[str]] """ - Output only. Link to follow for next action. Empty string if the - installation is already complete. + Output only. Link to follow for next action. Empty string if the installation is already + complete. """ message: NotRequired[pulumi.Input[str]] """ - Output only. Message of what the user should do next to continue - the installation.Empty string if the installation is already complete. + Output only. Message of what the user should do next to continue the installation. + Empty string if the installation is already complete. """ stage: NotRequired[pulumi.Input[str]] """ @@ -236,10 +1104,10 @@ def __init__(__self__, *, message: Optional[pulumi.Input[str]] = None, stage: Optional[pulumi.Input[str]] = None): """ - :param pulumi.Input[str] action_uri: Output only. Link to follow for next action. Empty string if the - installation is already complete. - :param pulumi.Input[str] message: Output only. Message of what the user should do next to continue - the installation.Empty string if the installation is already complete. + :param pulumi.Input[str] action_uri: Output only. Link to follow for next action. Empty string if the installation is already + complete. + :param pulumi.Input[str] message: Output only. Message of what the user should do next to continue the installation. + Empty string if the installation is already complete. :param pulumi.Input[str] stage: (Output) Output only. Current step of the installation process. Possible values: @@ -260,8 +1128,8 @@ def __init__(__self__, *, @pulumi.getter(name="actionUri") def action_uri(self) -> Optional[pulumi.Input[str]]: """ - Output only. Link to follow for next action. Empty string if the - installation is already complete. + Output only. Link to follow for next action. Empty string if the installation is already + complete. """ return pulumi.get(self, "action_uri") @@ -273,8 +1141,8 @@ def action_uri(self, value: Optional[pulumi.Input[str]]): @pulumi.getter def message(self) -> Optional[pulumi.Input[str]]: """ - Output only. Message of what the user should do next to continue - the installation.Empty string if the installation is already complete. + Output only. Message of what the user should do next to continue the installation. + Empty string if the installation is already complete. """ return pulumi.get(self, "message") diff --git a/sdk/python/pulumi_gcp/developerconnect/connection.py b/sdk/python/pulumi_gcp/developerconnect/connection.py index 7260a73518..5dd371769f 100644 --- a/sdk/python/pulumi_gcp/developerconnect/connection.py +++ b/sdk/python/pulumi_gcp/developerconnect/connection.py @@ -24,33 +24,45 @@ def __init__(__self__, *, connection_id: pulumi.Input[str], location: pulumi.Input[str], annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + crypto_key_config: Optional[pulumi.Input['ConnectionCryptoKeyConfigArgs']] = None, disabled: Optional[pulumi.Input[bool]] = None, etag: Optional[pulumi.Input[str]] = None, github_config: Optional[pulumi.Input['ConnectionGithubConfigArgs']] = None, + github_enterprise_config: Optional[pulumi.Input['ConnectionGithubEnterpriseConfigArgs']] = None, + gitlab_config: Optional[pulumi.Input['ConnectionGitlabConfigArgs']] = None, + gitlab_enterprise_config: Optional[pulumi.Input['ConnectionGitlabEnterpriseConfigArgs']] = None, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, project: Optional[pulumi.Input[str]] = None): """ The set of arguments for constructing a Connection resource. - :param pulumi.Input[str] connection_id: Required. Id of the requesting object. If auto-generating Id server-side, - remove this field and connection_id from the method_signature of Create RPC. + :param pulumi.Input[str] connection_id: Required. Id of the requesting object + If auto-generating Id server-side, remove this field and + connection_id from the method_signature of Create RPC - - - - :param pulumi.Input[str] location: Resource ID segment making up resource `name`. It identifies the resource - within its parent collection as described in https://google.aip.dev/122. See documentation - for resource type `developerconnect.googleapis.com/GitRepositoryLink`. + :param pulumi.Input[str] location: Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] annotations: Optional. Allows clients to store small amounts of arbitrary data. - **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[bool] disabled: Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled. - :param pulumi.Input[str] etag: Optional. 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 + :param pulumi.Input['ConnectionCryptoKeyConfigArgs'] crypto_key_config: The crypto key configuration. This field is used by the Customer-managed + encryption keys (CMEK) feature. + Structure is documented below. + :param pulumi.Input[bool] disabled: Optional. If disabled is set to true, functionality is disabled for this connection. + Repository based API methods and webhooks processing for repositories in + this connection will be disabled. + :param pulumi.Input[str] etag: Optional. 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. :param pulumi.Input['ConnectionGithubConfigArgs'] github_config: Configuration for connections to github.com. Structure is documented below. + :param pulumi.Input['ConnectionGithubEnterpriseConfigArgs'] github_enterprise_config: Configuration for connections to an instance of GitHub Enterprise. + Structure is documented below. + :param pulumi.Input['ConnectionGitlabConfigArgs'] gitlab_config: Configuration for connections to gitlab.com. + Structure is documented below. + :param pulumi.Input['ConnectionGitlabEnterpriseConfigArgs'] gitlab_enterprise_config: Configuration for connections to an instance of GitLab Enterprise. + Structure is documented below. :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. @@ -60,12 +72,20 @@ def __init__(__self__, *, pulumi.set(__self__, "location", location) if annotations is not None: pulumi.set(__self__, "annotations", annotations) + if crypto_key_config is not None: + pulumi.set(__self__, "crypto_key_config", crypto_key_config) if disabled is not None: pulumi.set(__self__, "disabled", disabled) if etag is not None: pulumi.set(__self__, "etag", etag) if github_config is not None: pulumi.set(__self__, "github_config", github_config) + if github_enterprise_config is not None: + pulumi.set(__self__, "github_enterprise_config", github_enterprise_config) + if gitlab_config is not None: + pulumi.set(__self__, "gitlab_config", gitlab_config) + if gitlab_enterprise_config is not None: + pulumi.set(__self__, "gitlab_enterprise_config", gitlab_enterprise_config) if labels is not None: pulumi.set(__self__, "labels", labels) if project is not None: @@ -75,8 +95,9 @@ def __init__(__self__, *, @pulumi.getter(name="connectionId") def connection_id(self) -> pulumi.Input[str]: """ - Required. Id of the requesting object. If auto-generating Id server-side, - remove this field and connection_id from the method_signature of Create RPC. + Required. Id of the requesting object + If auto-generating Id server-side, remove this field and + connection_id from the method_signature of Create RPC - - - @@ -91,9 +112,7 @@ def connection_id(self, value: pulumi.Input[str]): @pulumi.getter def location(self) -> pulumi.Input[str]: """ - Resource ID segment making up resource `name`. It identifies the resource - within its parent collection as described in https://google.aip.dev/122. See documentation - for resource type `developerconnect.googleapis.com/GitRepositoryLink`. + Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. """ return pulumi.get(self, "location") @@ -106,7 +125,6 @@ def location(self, value: pulumi.Input[str]): def annotations(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: """ Optional. Allows clients to store small amounts of arbitrary data. - **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. """ @@ -116,11 +134,27 @@ def annotations(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] def annotations(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): pulumi.set(self, "annotations", value) + @property + @pulumi.getter(name="cryptoKeyConfig") + def crypto_key_config(self) -> Optional[pulumi.Input['ConnectionCryptoKeyConfigArgs']]: + """ + The crypto key configuration. This field is used by the Customer-managed + encryption keys (CMEK) feature. + Structure is documented below. + """ + return pulumi.get(self, "crypto_key_config") + + @crypto_key_config.setter + def crypto_key_config(self, value: Optional[pulumi.Input['ConnectionCryptoKeyConfigArgs']]): + pulumi.set(self, "crypto_key_config", value) + @property @pulumi.getter def disabled(self) -> Optional[pulumi.Input[bool]]: """ - Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled. + Optional. If disabled is set to true, functionality is disabled for this connection. + Repository based API methods and webhooks processing for repositories in + this connection will be disabled. """ return pulumi.get(self, "disabled") @@ -132,8 +166,8 @@ def disabled(self, value: Optional[pulumi.Input[bool]]): @pulumi.getter def etag(self) -> Optional[pulumi.Input[str]]: """ - Optional. 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 + Optional. 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. """ return pulumi.get(self, "etag") @@ -155,12 +189,50 @@ def github_config(self) -> Optional[pulumi.Input['ConnectionGithubConfigArgs']]: def github_config(self, value: Optional[pulumi.Input['ConnectionGithubConfigArgs']]): pulumi.set(self, "github_config", value) + @property + @pulumi.getter(name="githubEnterpriseConfig") + def github_enterprise_config(self) -> Optional[pulumi.Input['ConnectionGithubEnterpriseConfigArgs']]: + """ + Configuration for connections to an instance of GitHub Enterprise. + Structure is documented below. + """ + return pulumi.get(self, "github_enterprise_config") + + @github_enterprise_config.setter + def github_enterprise_config(self, value: Optional[pulumi.Input['ConnectionGithubEnterpriseConfigArgs']]): + pulumi.set(self, "github_enterprise_config", value) + + @property + @pulumi.getter(name="gitlabConfig") + def gitlab_config(self) -> Optional[pulumi.Input['ConnectionGitlabConfigArgs']]: + """ + Configuration for connections to gitlab.com. + Structure is documented below. + """ + return pulumi.get(self, "gitlab_config") + + @gitlab_config.setter + def gitlab_config(self, value: Optional[pulumi.Input['ConnectionGitlabConfigArgs']]): + pulumi.set(self, "gitlab_config", value) + + @property + @pulumi.getter(name="gitlabEnterpriseConfig") + def gitlab_enterprise_config(self) -> Optional[pulumi.Input['ConnectionGitlabEnterpriseConfigArgs']]: + """ + Configuration for connections to an instance of GitLab Enterprise. + Structure is documented below. + """ + return pulumi.get(self, "gitlab_enterprise_config") + + @gitlab_enterprise_config.setter + def gitlab_enterprise_config(self, value: Optional[pulumi.Input['ConnectionGitlabEnterpriseConfigArgs']]): + pulumi.set(self, "gitlab_enterprise_config", 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. """ @@ -190,12 +262,16 @@ def __init__(__self__, *, annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, connection_id: Optional[pulumi.Input[str]] = None, create_time: Optional[pulumi.Input[str]] = None, + crypto_key_config: Optional[pulumi.Input['ConnectionCryptoKeyConfigArgs']] = None, delete_time: Optional[pulumi.Input[str]] = None, disabled: Optional[pulumi.Input[bool]] = None, effective_annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, etag: Optional[pulumi.Input[str]] = None, github_config: Optional[pulumi.Input['ConnectionGithubConfigArgs']] = None, + github_enterprise_config: Optional[pulumi.Input['ConnectionGithubEnterpriseConfigArgs']] = None, + gitlab_config: Optional[pulumi.Input['ConnectionGitlabConfigArgs']] = None, + gitlab_enterprise_config: Optional[pulumi.Input['ConnectionGitlabEnterpriseConfigArgs']] = None, installation_states: Optional[pulumi.Input[Sequence[pulumi.Input['ConnectionInstallationStateArgs']]]] = None, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, location: Optional[pulumi.Input[str]] = None, @@ -208,41 +284,50 @@ def __init__(__self__, *, """ Input properties used for looking up and filtering Connection resources. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] annotations: Optional. Allows clients to store small amounts of arbitrary data. - **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[str] connection_id: Required. Id of the requesting object. If auto-generating Id server-side, - remove this field and connection_id from the method_signature of Create RPC. + :param pulumi.Input[str] connection_id: Required. Id of the requesting object + If auto-generating Id server-side, remove this field and + connection_id from the method_signature of Create RPC - - - :param pulumi.Input[str] create_time: Output only. [Output only] Create timestamp + :param pulumi.Input['ConnectionCryptoKeyConfigArgs'] crypto_key_config: The crypto key configuration. This field is used by the Customer-managed + encryption keys (CMEK) feature. + Structure is documented below. :param pulumi.Input[str] delete_time: Output only. [Output only] Delete timestamp - :param pulumi.Input[bool] disabled: Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled. + :param pulumi.Input[bool] disabled: Optional. If disabled is set to true, functionality is disabled for this connection. + Repository based API methods and webhooks processing for repositories in + this connection will be disabled. :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] etag: Optional. 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 + :param pulumi.Input[str] etag: Optional. 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. :param pulumi.Input['ConnectionGithubConfigArgs'] github_config: Configuration for connections to github.com. Structure is documented below. - :param pulumi.Input[Sequence[pulumi.Input['ConnectionInstallationStateArgs']]] installation_states: Describes stage and necessary actions to be taken by the user to complete the installation. - Used for GitHub and GitHub Enterprise based connections. + :param pulumi.Input['ConnectionGithubEnterpriseConfigArgs'] github_enterprise_config: Configuration for connections to an instance of GitHub Enterprise. + Structure is documented below. + :param pulumi.Input['ConnectionGitlabConfigArgs'] gitlab_config: Configuration for connections to gitlab.com. + Structure is documented below. + :param pulumi.Input['ConnectionGitlabEnterpriseConfigArgs'] gitlab_enterprise_config: Configuration for connections to an instance of GitLab Enterprise. + Structure is documented below. + :param pulumi.Input[Sequence[pulumi.Input['ConnectionInstallationStateArgs']]] installation_states: Describes stage and necessary actions to be taken by the + user to complete the installation. Used for GitHub and GitHub Enterprise + based connections. Structure is documented below. :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: Resource ID segment making up resource `name`. It identifies the resource - within its parent collection as described in https://google.aip.dev/122. See documentation - for resource type `developerconnect.googleapis.com/GitRepositoryLink`. + :param pulumi.Input[str] location: Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. :param pulumi.Input[str] name: Identifier. The resource name of the connection, in the format `projects/{project}/locations/{location}/connections/{connection_id}`. :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: Output only. Set to true when the connection is being set up or updated - in the background. + :param pulumi.Input[bool] reconciling: Output only. Set to true when the connection is being set up or updated in the + background. :param pulumi.Input[str] uid: Output only. A system-assigned unique identifier for a the GitRepositoryLink. :param pulumi.Input[str] update_time: Output only. [Output only] Update timestamp """ @@ -252,6 +337,8 @@ def __init__(__self__, *, pulumi.set(__self__, "connection_id", connection_id) if create_time is not None: pulumi.set(__self__, "create_time", create_time) + if crypto_key_config is not None: + pulumi.set(__self__, "crypto_key_config", crypto_key_config) if delete_time is not None: pulumi.set(__self__, "delete_time", delete_time) if disabled is not None: @@ -264,6 +351,12 @@ def __init__(__self__, *, pulumi.set(__self__, "etag", etag) if github_config is not None: pulumi.set(__self__, "github_config", github_config) + if github_enterprise_config is not None: + pulumi.set(__self__, "github_enterprise_config", github_enterprise_config) + if gitlab_config is not None: + pulumi.set(__self__, "gitlab_config", gitlab_config) + if gitlab_enterprise_config is not None: + pulumi.set(__self__, "gitlab_enterprise_config", gitlab_enterprise_config) if installation_states is not None: pulumi.set(__self__, "installation_states", installation_states) if labels is not None: @@ -288,7 +381,6 @@ def __init__(__self__, *, def annotations(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: """ Optional. Allows clients to store small amounts of arbitrary data. - **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. """ @@ -302,8 +394,9 @@ def annotations(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str @pulumi.getter(name="connectionId") def connection_id(self) -> Optional[pulumi.Input[str]]: """ - Required. Id of the requesting object. If auto-generating Id server-side, - remove this field and connection_id from the method_signature of Create RPC. + Required. Id of the requesting object + If auto-generating Id server-side, remove this field and + connection_id from the method_signature of Create RPC - - - @@ -326,6 +419,20 @@ def create_time(self) -> Optional[pulumi.Input[str]]: def create_time(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "create_time", value) + @property + @pulumi.getter(name="cryptoKeyConfig") + def crypto_key_config(self) -> Optional[pulumi.Input['ConnectionCryptoKeyConfigArgs']]: + """ + The crypto key configuration. This field is used by the Customer-managed + encryption keys (CMEK) feature. + Structure is documented below. + """ + return pulumi.get(self, "crypto_key_config") + + @crypto_key_config.setter + def crypto_key_config(self, value: Optional[pulumi.Input['ConnectionCryptoKeyConfigArgs']]): + pulumi.set(self, "crypto_key_config", value) + @property @pulumi.getter(name="deleteTime") def delete_time(self) -> Optional[pulumi.Input[str]]: @@ -342,7 +449,9 @@ def delete_time(self, value: Optional[pulumi.Input[str]]): @pulumi.getter def disabled(self) -> Optional[pulumi.Input[bool]]: """ - Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled. + Optional. If disabled is set to true, functionality is disabled for this connection. + Repository based API methods and webhooks processing for repositories in + this connection will be disabled. """ return pulumi.get(self, "disabled") @@ -375,8 +484,8 @@ def effective_labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Inpu @pulumi.getter def etag(self) -> Optional[pulumi.Input[str]]: """ - Optional. 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 + Optional. 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. """ return pulumi.get(self, "etag") @@ -398,12 +507,52 @@ def github_config(self) -> Optional[pulumi.Input['ConnectionGithubConfigArgs']]: def github_config(self, value: Optional[pulumi.Input['ConnectionGithubConfigArgs']]): pulumi.set(self, "github_config", value) + @property + @pulumi.getter(name="githubEnterpriseConfig") + def github_enterprise_config(self) -> Optional[pulumi.Input['ConnectionGithubEnterpriseConfigArgs']]: + """ + Configuration for connections to an instance of GitHub Enterprise. + Structure is documented below. + """ + return pulumi.get(self, "github_enterprise_config") + + @github_enterprise_config.setter + def github_enterprise_config(self, value: Optional[pulumi.Input['ConnectionGithubEnterpriseConfigArgs']]): + pulumi.set(self, "github_enterprise_config", value) + + @property + @pulumi.getter(name="gitlabConfig") + def gitlab_config(self) -> Optional[pulumi.Input['ConnectionGitlabConfigArgs']]: + """ + Configuration for connections to gitlab.com. + Structure is documented below. + """ + return pulumi.get(self, "gitlab_config") + + @gitlab_config.setter + def gitlab_config(self, value: Optional[pulumi.Input['ConnectionGitlabConfigArgs']]): + pulumi.set(self, "gitlab_config", value) + + @property + @pulumi.getter(name="gitlabEnterpriseConfig") + def gitlab_enterprise_config(self) -> Optional[pulumi.Input['ConnectionGitlabEnterpriseConfigArgs']]: + """ + Configuration for connections to an instance of GitLab Enterprise. + Structure is documented below. + """ + return pulumi.get(self, "gitlab_enterprise_config") + + @gitlab_enterprise_config.setter + def gitlab_enterprise_config(self, value: Optional[pulumi.Input['ConnectionGitlabEnterpriseConfigArgs']]): + pulumi.set(self, "gitlab_enterprise_config", value) + @property @pulumi.getter(name="installationStates") def installation_states(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ConnectionInstallationStateArgs']]]]: """ - Describes stage and necessary actions to be taken by the user to complete the installation. - Used for GitHub and GitHub Enterprise based connections. + Describes stage and necessary actions to be taken by the + user to complete the installation. Used for GitHub and GitHub Enterprise + based connections. Structure is documented below. """ return pulumi.get(self, "installation_states") @@ -417,7 +566,6 @@ def installation_states(self, value: Optional[pulumi.Input[Sequence[pulumi.Input 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. """ @@ -431,9 +579,7 @@ def labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]) @pulumi.getter def location(self) -> Optional[pulumi.Input[str]]: """ - Resource ID segment making up resource `name`. It identifies the resource - within its parent collection as described in https://google.aip.dev/122. See documentation - for resource type `developerconnect.googleapis.com/GitRepositoryLink`. + Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. """ return pulumi.get(self, "location") @@ -484,8 +630,8 @@ def pulumi_labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[s @pulumi.getter def reconciling(self) -> Optional[pulumi.Input[bool]]: """ - Output only. Set to true when the connection is being set up or updated - in the background. + Output only. Set to true when the connection is being set up or updated in the + background. """ return pulumi.get(self, "reconciling") @@ -525,14 +671,20 @@ def __init__(__self__, opts: Optional[pulumi.ResourceOptions] = None, annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, connection_id: Optional[pulumi.Input[str]] = None, + crypto_key_config: Optional[pulumi.Input[Union['ConnectionCryptoKeyConfigArgs', 'ConnectionCryptoKeyConfigArgsDict']]] = None, disabled: Optional[pulumi.Input[bool]] = None, etag: Optional[pulumi.Input[str]] = None, github_config: Optional[pulumi.Input[Union['ConnectionGithubConfigArgs', 'ConnectionGithubConfigArgsDict']]] = None, + github_enterprise_config: Optional[pulumi.Input[Union['ConnectionGithubEnterpriseConfigArgs', 'ConnectionGithubEnterpriseConfigArgsDict']]] = None, + gitlab_config: Optional[pulumi.Input[Union['ConnectionGitlabConfigArgs', 'ConnectionGitlabConfigArgsDict']]] = None, + gitlab_enterprise_config: Optional[pulumi.Input[Union['ConnectionGitlabEnterpriseConfigArgs', 'ConnectionGitlabEnterpriseConfigArgsDict']]] = 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): """ + A connection for GitHub, GitHub Enterprise, GitLab, and GitLab Enterprise. + ## Example Usage ### Developer Connect Connection New @@ -607,7 +759,159 @@ def __init__(__self__, }, }) ``` + ### Developer Connect Connection Github + + ```python + import pulumi + import pulumi_gcp as gcp + + my_connection = gcp.developerconnect.Connection("my-connection", + location="us-central1", + connection_id="tf-test-connection", + 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", + }, + }) + ``` + ### Developer Connect Connection Github Doc + + ```python + import pulumi + import pulumi_gcp as gcp + import pulumi_std as std + + github_token_secret = gcp.secretmanager.Secret("github-token-secret", + secret_id="github-token-secret", + replication={ + "auto": {}, + }) + 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=[{ + "role": "roles/secretmanager.secretAccessor", + "members": ["serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com"], + }]) + policy = gcp.secretmanager.SecretIamPolicy("policy", + secret_id=github_token_secret.secret_id, + policy_data=p4sa_secret_accessor.policy_data) + my_connection = gcp.developerconnect.Connection("my-connection", + location="us-central1", + connection_id="my-connection", + github_config={ + "github_app": "DEVELOPER_CONNECT", + "app_installation_id": "123123", + "authorizer_credential": { + "oauth_token_secret_version": github_token_secret_version.id, + }, + }) + ``` + ### Developer Connect Connection Github Enterprise + + ```python + import pulumi + import pulumi_gcp as gcp + + my_connection = gcp.developerconnect.Connection("my-connection", + location="us-central1", + connection_id="tf-test-connection", + github_enterprise_config={ + "host_uri": "https://ghe.proctor-staging-test.com", + "app_id": "864434", + "private_key_secret_version": "projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-private-key-f522d2/versions/latest", + "webhook_secret_secret_version": "projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-webhook-secret-3c806f/versions/latest", + "app_installation_id": "837537", + }) + ``` + ### Developer Connect Connection Github Enterprise Doc + + ```python + import pulumi + import pulumi_gcp as gcp + import pulumi_std as std + + private_key_secret = gcp.secretmanager.Secret("private-key-secret", + secret_id="ghe-pk-secret", + replication={ + "auto": {}, + }) + private_key_secret_version = gcp.secretmanager.SecretVersion("private-key-secret-version", + secret=private_key_secret.id, + secret_data=std.file(input="private-key.pem").result) + webhook_secret_secret = gcp.secretmanager.Secret("webhook-secret-secret", + secret_id="ghe-token-secret", + replication={ + "auto": {}, + }) + webhook_secret_secret_version = gcp.secretmanager.SecretVersion("webhook-secret-secret-version", + secret=webhook_secret_secret.id, + secret_data="") + p4sa_secret_accessor = gcp.organizations.get_iam_policy(bindings=[{ + "role": "roles/secretmanager.secretAccessor", + "members": ["serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com"], + }]) + policy_pk = gcp.secretmanager.SecretIamPolicy("policy-pk", + secret_id=private_key_secret.secret_id, + policy_data=p4sa_secret_accessor.policy_data) + policy_whs = gcp.secretmanager.SecretIamPolicy("policy-whs", + secret_id=webhook_secret_secret.secret_id, + policy_data=p4sa_secret_accessor.policy_data) + my_connection = gcp.developerconnect.Connection("my-connection", + location="us-central1", + connection_id="my-connection", + github_enterprise_config={ + "host_uri": "https://ghe.com", + "private_key_secret_version": private_key_secret_version.id, + "webhook_secret_secret_version": webhook_secret_secret_version.id, + "app_id": "100", + "app_installation_id": "123123", + }, + opts = pulumi.ResourceOptions(depends_on=[ + policy_pk, + policy_whs, + ])) + ``` + ### Developer Connect Connection Gitlab + + ```python + import pulumi + import pulumi_gcp as gcp + + my_connection = gcp.developerconnect.Connection("my-connection", + location="us-central1", + connection_id="tf-test-connection", + gitlab_config={ + "webhook_secret_secret_version": "projects/devconnect-terraform-creds/secrets/gitlab-webhook/versions/latest", + "read_authorizer_credential": { + "user_token_secret_version": "projects/devconnect-terraform-creds/secrets/gitlab-read-cred/versions/latest", + }, + "authorizer_credential": { + "user_token_secret_version": "projects/devconnect-terraform-creds/secrets/gitlab-auth-cred/versions/latest", + }, + }) + ``` + ### Developer Connect Connection Gitlab Enterprise + + ```python + import pulumi + import pulumi_gcp as gcp + my_connection = gcp.developerconnect.Connection("my-connection", + location="us-central1", + connection_id="tf-test-connection", + gitlab_enterprise_config={ + "host_uri": "https://gle-us-central1.gcb-test.com", + "webhook_secret_secret_version": "projects/devconnect-terraform-creds/secrets/gitlab-enterprise-webhook/versions/latest", + "read_authorizer_credential": { + "user_token_secret_version": "projects/devconnect-terraform-creds/secrets/gitlab-enterprise-read-cred/versions/latest", + }, + "authorizer_credential": { + "user_token_secret_version": "projects/devconnect-terraform-creds/secrets/gitlab-enterprise-auth-cred/versions/latest", + }, + }) + ``` ## Import Connection can be imported using any of these accepted formats: @@ -635,27 +939,35 @@ def __init__(__self__, :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] annotations: Optional. Allows clients to store small amounts of arbitrary data. - **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[str] connection_id: Required. Id of the requesting object. If auto-generating Id server-side, - remove this field and connection_id from the method_signature of Create RPC. + :param pulumi.Input[str] connection_id: Required. Id of the requesting object + If auto-generating Id server-side, remove this field and + connection_id from the method_signature of Create RPC - - - - :param pulumi.Input[bool] disabled: Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled. - :param pulumi.Input[str] etag: Optional. 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 + :param pulumi.Input[Union['ConnectionCryptoKeyConfigArgs', 'ConnectionCryptoKeyConfigArgsDict']] crypto_key_config: The crypto key configuration. This field is used by the Customer-managed + encryption keys (CMEK) feature. + Structure is documented below. + :param pulumi.Input[bool] disabled: Optional. If disabled is set to true, functionality is disabled for this connection. + Repository based API methods and webhooks processing for repositories in + this connection will be disabled. + :param pulumi.Input[str] etag: Optional. 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. :param pulumi.Input[Union['ConnectionGithubConfigArgs', 'ConnectionGithubConfigArgsDict']] github_config: Configuration for connections to github.com. Structure is documented below. + :param pulumi.Input[Union['ConnectionGithubEnterpriseConfigArgs', 'ConnectionGithubEnterpriseConfigArgsDict']] github_enterprise_config: Configuration for connections to an instance of GitHub Enterprise. + Structure is documented below. + :param pulumi.Input[Union['ConnectionGitlabConfigArgs', 'ConnectionGitlabConfigArgsDict']] gitlab_config: Configuration for connections to gitlab.com. + Structure is documented below. + :param pulumi.Input[Union['ConnectionGitlabEnterpriseConfigArgs', 'ConnectionGitlabEnterpriseConfigArgsDict']] gitlab_enterprise_config: Configuration for connections to an instance of GitLab Enterprise. + Structure is documented below. :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: Resource ID segment making up resource `name`. It identifies the resource - within its parent collection as described in https://google.aip.dev/122. See documentation - for resource type `developerconnect.googleapis.com/GitRepositoryLink`. + :param pulumi.Input[str] location: Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. :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. """ @@ -666,6 +978,8 @@ def __init__(__self__, args: ConnectionArgs, opts: Optional[pulumi.ResourceOptions] = None): """ + A connection for GitHub, GitHub Enterprise, GitLab, and GitLab Enterprise. + ## Example Usage ### Developer Connect Connection New @@ -740,7 +1054,159 @@ def __init__(__self__, }, }) ``` + ### Developer Connect Connection Github + + ```python + import pulumi + import pulumi_gcp as gcp + + my_connection = gcp.developerconnect.Connection("my-connection", + location="us-central1", + connection_id="tf-test-connection", + 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", + }, + }) + ``` + ### Developer Connect Connection Github Doc + + ```python + import pulumi + import pulumi_gcp as gcp + import pulumi_std as std + + github_token_secret = gcp.secretmanager.Secret("github-token-secret", + secret_id="github-token-secret", + replication={ + "auto": {}, + }) + 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=[{ + "role": "roles/secretmanager.secretAccessor", + "members": ["serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com"], + }]) + policy = gcp.secretmanager.SecretIamPolicy("policy", + secret_id=github_token_secret.secret_id, + policy_data=p4sa_secret_accessor.policy_data) + my_connection = gcp.developerconnect.Connection("my-connection", + location="us-central1", + connection_id="my-connection", + github_config={ + "github_app": "DEVELOPER_CONNECT", + "app_installation_id": "123123", + "authorizer_credential": { + "oauth_token_secret_version": github_token_secret_version.id, + }, + }) + ``` + ### Developer Connect Connection Github Enterprise + + ```python + import pulumi + import pulumi_gcp as gcp + + my_connection = gcp.developerconnect.Connection("my-connection", + location="us-central1", + connection_id="tf-test-connection", + github_enterprise_config={ + "host_uri": "https://ghe.proctor-staging-test.com", + "app_id": "864434", + "private_key_secret_version": "projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-private-key-f522d2/versions/latest", + "webhook_secret_secret_version": "projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-webhook-secret-3c806f/versions/latest", + "app_installation_id": "837537", + }) + ``` + ### Developer Connect Connection Github Enterprise Doc + ```python + import pulumi + import pulumi_gcp as gcp + import pulumi_std as std + + private_key_secret = gcp.secretmanager.Secret("private-key-secret", + secret_id="ghe-pk-secret", + replication={ + "auto": {}, + }) + private_key_secret_version = gcp.secretmanager.SecretVersion("private-key-secret-version", + secret=private_key_secret.id, + secret_data=std.file(input="private-key.pem").result) + webhook_secret_secret = gcp.secretmanager.Secret("webhook-secret-secret", + secret_id="ghe-token-secret", + replication={ + "auto": {}, + }) + webhook_secret_secret_version = gcp.secretmanager.SecretVersion("webhook-secret-secret-version", + secret=webhook_secret_secret.id, + secret_data="") + p4sa_secret_accessor = gcp.organizations.get_iam_policy(bindings=[{ + "role": "roles/secretmanager.secretAccessor", + "members": ["serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com"], + }]) + policy_pk = gcp.secretmanager.SecretIamPolicy("policy-pk", + secret_id=private_key_secret.secret_id, + policy_data=p4sa_secret_accessor.policy_data) + policy_whs = gcp.secretmanager.SecretIamPolicy("policy-whs", + secret_id=webhook_secret_secret.secret_id, + policy_data=p4sa_secret_accessor.policy_data) + my_connection = gcp.developerconnect.Connection("my-connection", + location="us-central1", + connection_id="my-connection", + github_enterprise_config={ + "host_uri": "https://ghe.com", + "private_key_secret_version": private_key_secret_version.id, + "webhook_secret_secret_version": webhook_secret_secret_version.id, + "app_id": "100", + "app_installation_id": "123123", + }, + opts = pulumi.ResourceOptions(depends_on=[ + policy_pk, + policy_whs, + ])) + ``` + ### Developer Connect Connection Gitlab + + ```python + import pulumi + import pulumi_gcp as gcp + + my_connection = gcp.developerconnect.Connection("my-connection", + location="us-central1", + connection_id="tf-test-connection", + gitlab_config={ + "webhook_secret_secret_version": "projects/devconnect-terraform-creds/secrets/gitlab-webhook/versions/latest", + "read_authorizer_credential": { + "user_token_secret_version": "projects/devconnect-terraform-creds/secrets/gitlab-read-cred/versions/latest", + }, + "authorizer_credential": { + "user_token_secret_version": "projects/devconnect-terraform-creds/secrets/gitlab-auth-cred/versions/latest", + }, + }) + ``` + ### Developer Connect Connection Gitlab Enterprise + + ```python + import pulumi + import pulumi_gcp as gcp + + my_connection = gcp.developerconnect.Connection("my-connection", + location="us-central1", + connection_id="tf-test-connection", + gitlab_enterprise_config={ + "host_uri": "https://gle-us-central1.gcb-test.com", + "webhook_secret_secret_version": "projects/devconnect-terraform-creds/secrets/gitlab-enterprise-webhook/versions/latest", + "read_authorizer_credential": { + "user_token_secret_version": "projects/devconnect-terraform-creds/secrets/gitlab-enterprise-read-cred/versions/latest", + }, + "authorizer_credential": { + "user_token_secret_version": "projects/devconnect-terraform-creds/secrets/gitlab-enterprise-auth-cred/versions/latest", + }, + }) + ``` ## Import Connection can be imported using any of these accepted formats: @@ -782,9 +1248,13 @@ def _internal_init(__self__, opts: Optional[pulumi.ResourceOptions] = None, annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, connection_id: Optional[pulumi.Input[str]] = None, + crypto_key_config: Optional[pulumi.Input[Union['ConnectionCryptoKeyConfigArgs', 'ConnectionCryptoKeyConfigArgsDict']]] = None, disabled: Optional[pulumi.Input[bool]] = None, etag: Optional[pulumi.Input[str]] = None, github_config: Optional[pulumi.Input[Union['ConnectionGithubConfigArgs', 'ConnectionGithubConfigArgsDict']]] = None, + github_enterprise_config: Optional[pulumi.Input[Union['ConnectionGithubEnterpriseConfigArgs', 'ConnectionGithubEnterpriseConfigArgsDict']]] = None, + gitlab_config: Optional[pulumi.Input[Union['ConnectionGitlabConfigArgs', 'ConnectionGitlabConfigArgsDict']]] = None, + gitlab_enterprise_config: Optional[pulumi.Input[Union['ConnectionGitlabEnterpriseConfigArgs', 'ConnectionGitlabEnterpriseConfigArgsDict']]] = None, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, location: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, @@ -801,9 +1271,13 @@ def _internal_init(__self__, if connection_id is None and not opts.urn: raise TypeError("Missing required property 'connection_id'") __props__.__dict__["connection_id"] = connection_id + __props__.__dict__["crypto_key_config"] = crypto_key_config __props__.__dict__["disabled"] = disabled __props__.__dict__["etag"] = etag __props__.__dict__["github_config"] = github_config + __props__.__dict__["github_enterprise_config"] = github_enterprise_config + __props__.__dict__["gitlab_config"] = gitlab_config + __props__.__dict__["gitlab_enterprise_config"] = gitlab_enterprise_config __props__.__dict__["labels"] = labels if location is None and not opts.urn: raise TypeError("Missing required property 'location'") @@ -834,12 +1308,16 @@ def get(resource_name: str, annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, connection_id: Optional[pulumi.Input[str]] = None, create_time: Optional[pulumi.Input[str]] = None, + crypto_key_config: Optional[pulumi.Input[Union['ConnectionCryptoKeyConfigArgs', 'ConnectionCryptoKeyConfigArgsDict']]] = None, delete_time: Optional[pulumi.Input[str]] = None, disabled: Optional[pulumi.Input[bool]] = None, effective_annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, etag: Optional[pulumi.Input[str]] = None, github_config: Optional[pulumi.Input[Union['ConnectionGithubConfigArgs', 'ConnectionGithubConfigArgsDict']]] = None, + github_enterprise_config: Optional[pulumi.Input[Union['ConnectionGithubEnterpriseConfigArgs', 'ConnectionGithubEnterpriseConfigArgsDict']]] = None, + gitlab_config: Optional[pulumi.Input[Union['ConnectionGitlabConfigArgs', 'ConnectionGitlabConfigArgsDict']]] = None, + gitlab_enterprise_config: Optional[pulumi.Input[Union['ConnectionGitlabEnterpriseConfigArgs', 'ConnectionGitlabEnterpriseConfigArgsDict']]] = None, installation_states: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ConnectionInstallationStateArgs', 'ConnectionInstallationStateArgsDict']]]]] = None, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, location: Optional[pulumi.Input[str]] = None, @@ -857,41 +1335,50 @@ 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[Mapping[str, pulumi.Input[str]]] annotations: Optional. Allows clients to store small amounts of arbitrary data. - **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[str] connection_id: Required. Id of the requesting object. If auto-generating Id server-side, - remove this field and connection_id from the method_signature of Create RPC. + :param pulumi.Input[str] connection_id: Required. Id of the requesting object + If auto-generating Id server-side, remove this field and + connection_id from the method_signature of Create RPC - - - :param pulumi.Input[str] create_time: Output only. [Output only] Create timestamp + :param pulumi.Input[Union['ConnectionCryptoKeyConfigArgs', 'ConnectionCryptoKeyConfigArgsDict']] crypto_key_config: The crypto key configuration. This field is used by the Customer-managed + encryption keys (CMEK) feature. + Structure is documented below. :param pulumi.Input[str] delete_time: Output only. [Output only] Delete timestamp - :param pulumi.Input[bool] disabled: Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled. + :param pulumi.Input[bool] disabled: Optional. If disabled is set to true, functionality is disabled for this connection. + Repository based API methods and webhooks processing for repositories in + this connection will be disabled. :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] etag: Optional. 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 + :param pulumi.Input[str] etag: Optional. 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. :param pulumi.Input[Union['ConnectionGithubConfigArgs', 'ConnectionGithubConfigArgsDict']] github_config: Configuration for connections to github.com. Structure is documented below. - :param pulumi.Input[Sequence[pulumi.Input[Union['ConnectionInstallationStateArgs', 'ConnectionInstallationStateArgsDict']]]] installation_states: Describes stage and necessary actions to be taken by the user to complete the installation. - Used for GitHub and GitHub Enterprise based connections. + :param pulumi.Input[Union['ConnectionGithubEnterpriseConfigArgs', 'ConnectionGithubEnterpriseConfigArgsDict']] github_enterprise_config: Configuration for connections to an instance of GitHub Enterprise. + Structure is documented below. + :param pulumi.Input[Union['ConnectionGitlabConfigArgs', 'ConnectionGitlabConfigArgsDict']] gitlab_config: Configuration for connections to gitlab.com. + Structure is documented below. + :param pulumi.Input[Union['ConnectionGitlabEnterpriseConfigArgs', 'ConnectionGitlabEnterpriseConfigArgsDict']] gitlab_enterprise_config: Configuration for connections to an instance of GitLab Enterprise. + Structure is documented below. + :param pulumi.Input[Sequence[pulumi.Input[Union['ConnectionInstallationStateArgs', 'ConnectionInstallationStateArgsDict']]]] installation_states: Describes stage and necessary actions to be taken by the + user to complete the installation. Used for GitHub and GitHub Enterprise + based connections. Structure is documented below. :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: Resource ID segment making up resource `name`. It identifies the resource - within its parent collection as described in https://google.aip.dev/122. See documentation - for resource type `developerconnect.googleapis.com/GitRepositoryLink`. + :param pulumi.Input[str] location: Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. :param pulumi.Input[str] name: Identifier. The resource name of the connection, in the format `projects/{project}/locations/{location}/connections/{connection_id}`. :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: Output only. Set to true when the connection is being set up or updated - in the background. + :param pulumi.Input[bool] reconciling: Output only. Set to true when the connection is being set up or updated in the + background. :param pulumi.Input[str] uid: Output only. A system-assigned unique identifier for a the GitRepositoryLink. :param pulumi.Input[str] update_time: Output only. [Output only] Update timestamp """ @@ -902,12 +1389,16 @@ def get(resource_name: str, __props__.__dict__["annotations"] = annotations __props__.__dict__["connection_id"] = connection_id __props__.__dict__["create_time"] = create_time + __props__.__dict__["crypto_key_config"] = crypto_key_config __props__.__dict__["delete_time"] = delete_time __props__.__dict__["disabled"] = disabled __props__.__dict__["effective_annotations"] = effective_annotations __props__.__dict__["effective_labels"] = effective_labels __props__.__dict__["etag"] = etag __props__.__dict__["github_config"] = github_config + __props__.__dict__["github_enterprise_config"] = github_enterprise_config + __props__.__dict__["gitlab_config"] = gitlab_config + __props__.__dict__["gitlab_enterprise_config"] = gitlab_enterprise_config __props__.__dict__["installation_states"] = installation_states __props__.__dict__["labels"] = labels __props__.__dict__["location"] = location @@ -924,7 +1415,6 @@ def get(resource_name: str, def annotations(self) -> pulumi.Output[Optional[Mapping[str, str]]]: """ Optional. Allows clients to store small amounts of arbitrary data. - **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. """ @@ -934,8 +1424,9 @@ def annotations(self) -> pulumi.Output[Optional[Mapping[str, str]]]: @pulumi.getter(name="connectionId") def connection_id(self) -> pulumi.Output[str]: """ - Required. Id of the requesting object. If auto-generating Id server-side, - remove this field and connection_id from the method_signature of Create RPC. + Required. Id of the requesting object + If auto-generating Id server-side, remove this field and + connection_id from the method_signature of Create RPC - - - @@ -950,6 +1441,16 @@ def create_time(self) -> pulumi.Output[str]: """ return pulumi.get(self, "create_time") + @property + @pulumi.getter(name="cryptoKeyConfig") + def crypto_key_config(self) -> pulumi.Output[Optional['outputs.ConnectionCryptoKeyConfig']]: + """ + The crypto key configuration. This field is used by the Customer-managed + encryption keys (CMEK) feature. + Structure is documented below. + """ + return pulumi.get(self, "crypto_key_config") + @property @pulumi.getter(name="deleteTime") def delete_time(self) -> pulumi.Output[str]: @@ -962,7 +1463,9 @@ def delete_time(self) -> pulumi.Output[str]: @pulumi.getter def disabled(self) -> pulumi.Output[Optional[bool]]: """ - Optional. If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled. + Optional. If disabled is set to true, functionality is disabled for this connection. + Repository based API methods and webhooks processing for repositories in + this connection will be disabled. """ return pulumi.get(self, "disabled") @@ -983,8 +1486,8 @@ def effective_labels(self) -> pulumi.Output[Mapping[str, str]]: @pulumi.getter def etag(self) -> pulumi.Output[Optional[str]]: """ - Optional. 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 + Optional. 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. """ return pulumi.get(self, "etag") @@ -998,12 +1501,40 @@ def github_config(self) -> pulumi.Output[Optional['outputs.ConnectionGithubConfi """ return pulumi.get(self, "github_config") + @property + @pulumi.getter(name="githubEnterpriseConfig") + def github_enterprise_config(self) -> pulumi.Output[Optional['outputs.ConnectionGithubEnterpriseConfig']]: + """ + Configuration for connections to an instance of GitHub Enterprise. + Structure is documented below. + """ + return pulumi.get(self, "github_enterprise_config") + + @property + @pulumi.getter(name="gitlabConfig") + def gitlab_config(self) -> pulumi.Output[Optional['outputs.ConnectionGitlabConfig']]: + """ + Configuration for connections to gitlab.com. + Structure is documented below. + """ + return pulumi.get(self, "gitlab_config") + + @property + @pulumi.getter(name="gitlabEnterpriseConfig") + def gitlab_enterprise_config(self) -> pulumi.Output[Optional['outputs.ConnectionGitlabEnterpriseConfig']]: + """ + Configuration for connections to an instance of GitLab Enterprise. + Structure is documented below. + """ + return pulumi.get(self, "gitlab_enterprise_config") + @property @pulumi.getter(name="installationStates") def installation_states(self) -> pulumi.Output[Sequence['outputs.ConnectionInstallationState']]: """ - Describes stage and necessary actions to be taken by the user to complete the installation. - Used for GitHub and GitHub Enterprise based connections. + Describes stage and necessary actions to be taken by the + user to complete the installation. Used for GitHub and GitHub Enterprise + based connections. Structure is documented below. """ return pulumi.get(self, "installation_states") @@ -1013,7 +1544,6 @@ def installation_states(self) -> pulumi.Output[Sequence['outputs.ConnectionInsta 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. """ @@ -1023,9 +1553,7 @@ def labels(self) -> pulumi.Output[Optional[Mapping[str, str]]]: @pulumi.getter def location(self) -> pulumi.Output[str]: """ - Resource ID segment making up resource `name`. It identifies the resource - within its parent collection as described in https://google.aip.dev/122. See documentation - for resource type `developerconnect.googleapis.com/GitRepositoryLink`. + Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. """ return pulumi.get(self, "location") @@ -1060,8 +1588,8 @@ def pulumi_labels(self) -> pulumi.Output[Mapping[str, str]]: @pulumi.getter def reconciling(self) -> pulumi.Output[bool]: """ - Output only. Set to true when the connection is being set up or updated - in the background. + Output only. Set to true when the connection is being set up or updated in the + background. """ return pulumi.get(self, "reconciling") diff --git a/sdk/python/pulumi_gcp/developerconnect/git_repository_link.py b/sdk/python/pulumi_gcp/developerconnect/git_repository_link.py index 013ddb55e5..2a94749dff 100644 --- a/sdk/python/pulumi_gcp/developerconnect/git_repository_link.py +++ b/sdk/python/pulumi_gcp/developerconnect/git_repository_link.py @@ -493,6 +493,8 @@ def __init__(__self__, project: Optional[pulumi.Input[str]] = None, __props__=None): """ + A git repository link to a parent connection. + ## Example Usage ## Import @@ -549,6 +551,8 @@ def __init__(__self__, args: GitRepositoryLinkArgs, opts: Optional[pulumi.ResourceOptions] = None): """ + A git repository link to a parent connection. + ## Example Usage ## Import diff --git a/sdk/python/pulumi_gcp/developerconnect/outputs.py b/sdk/python/pulumi_gcp/developerconnect/outputs.py index 42a871cf30..aaa3cf52f4 100644 --- a/sdk/python/pulumi_gcp/developerconnect/outputs.py +++ b/sdk/python/pulumi_gcp/developerconnect/outputs.py @@ -16,11 +16,60 @@ from . import outputs __all__ = [ + 'ConnectionCryptoKeyConfig', 'ConnectionGithubConfig', 'ConnectionGithubConfigAuthorizerCredential', + 'ConnectionGithubEnterpriseConfig', + 'ConnectionGithubEnterpriseConfigServiceDirectoryConfig', + 'ConnectionGitlabConfig', + 'ConnectionGitlabConfigAuthorizerCredential', + 'ConnectionGitlabConfigReadAuthorizerCredential', + 'ConnectionGitlabEnterpriseConfig', + 'ConnectionGitlabEnterpriseConfigAuthorizerCredential', + 'ConnectionGitlabEnterpriseConfigReadAuthorizerCredential', + 'ConnectionGitlabEnterpriseConfigServiceDirectoryConfig', 'ConnectionInstallationState', ] +@pulumi.output_type +class ConnectionCryptoKeyConfig(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "keyReference": + suggest = "key_reference" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in ConnectionCryptoKeyConfig. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + ConnectionCryptoKeyConfig.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + ConnectionCryptoKeyConfig.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + key_reference: str): + """ + :param str key_reference: Required. The name of the key which is used to encrypt/decrypt customer data. For key + in Cloud KMS, the key should be in the format of + `projects/*/locations/*/keyRings/*/cryptoKeys/*`. + """ + pulumi.set(__self__, "key_reference", key_reference) + + @property + @pulumi.getter(name="keyReference") + def key_reference(self) -> str: + """ + Required. The name of the key which is used to encrypt/decrypt customer data. For key + in Cloud KMS, the key should be in the format of + `projects/*/locations/*/keyRings/*/cryptoKeys/*`. + """ + return pulumi.get(self, "key_reference") + + @pulumi.output_type class ConnectionGithubConfig(dict): @staticmethod @@ -52,19 +101,19 @@ def __init__(__self__, *, authorizer_credential: Optional['outputs.ConnectionGithubConfigAuthorizerCredential'] = None, installation_uri: Optional[str] = None): """ - :param str github_app: Required. Immutable. The GitHub Application that was installed to - the GitHub user or organization. + :param str github_app: Required. Immutable. The GitHub Application that was installed to the GitHub user or + organization. Possible values: GIT_HUB_APP_UNSPECIFIED DEVELOPER_CONNECT - FIREBASE" + FIREBASE :param str app_installation_id: Optional. GitHub App installation id. - :param 'ConnectionGithubConfigAuthorizerCredentialArgs' authorizer_credential: Represents an OAuth token of the account that authorized the Connection,and - associated metadata. + :param 'ConnectionGithubConfigAuthorizerCredentialArgs' authorizer_credential: Represents an OAuth token of the account that authorized the Connection, + and associated metadata. Structure is documented below. :param str installation_uri: (Output) - Output only. The URI to navigate to in order to manage the installation - associated with this GitHubConfig. + Output only. The URI to navigate to in order to manage the installation associated + with this GitHubConfig. """ pulumi.set(__self__, "github_app", github_app) if app_installation_id is not None: @@ -78,12 +127,12 @@ def __init__(__self__, *, @pulumi.getter(name="githubApp") def github_app(self) -> str: """ - Required. Immutable. The GitHub Application that was installed to - the GitHub user or organization. + Required. Immutable. The GitHub Application that was installed to the GitHub user or + organization. Possible values: GIT_HUB_APP_UNSPECIFIED DEVELOPER_CONNECT - FIREBASE" + FIREBASE """ return pulumi.get(self, "github_app") @@ -99,8 +148,8 @@ def app_installation_id(self) -> Optional[str]: @pulumi.getter(name="authorizerCredential") def authorizer_credential(self) -> Optional['outputs.ConnectionGithubConfigAuthorizerCredential']: """ - Represents an OAuth token of the account that authorized the Connection,and - associated metadata. + Represents an OAuth token of the account that authorized the Connection, + and associated metadata. Structure is documented below. """ return pulumi.get(self, "authorizer_credential") @@ -110,8 +159,8 @@ def authorizer_credential(self) -> Optional['outputs.ConnectionGithubConfigAutho def installation_uri(self) -> Optional[str]: """ (Output) - Output only. The URI to navigate to in order to manage the installation - associated with this GitHubConfig. + Output only. The URI to navigate to in order to manage the installation associated + with this GitHubConfig. """ return pulumi.get(self, "installation_uri") @@ -139,9 +188,8 @@ def __init__(__self__, *, oauth_token_secret_version: str, username: Optional[str] = None): """ - :param str oauth_token_secret_version: Required. A SecretManager resource containing the OAuth token - that authorizes the connection. - Format: `projects/*/secrets/*/versions/*`. + :param str oauth_token_secret_version: Required. A SecretManager resource containing the OAuth token that authorizes + the connection. Format: `projects/*/secrets/*/versions/*`. :param str username: (Output) Output only. The username associated with this token. """ @@ -153,9 +201,8 @@ def __init__(__self__, *, @pulumi.getter(name="oauthTokenSecretVersion") def oauth_token_secret_version(self) -> str: """ - Required. A SecretManager resource containing the OAuth token - that authorizes the connection. - Format: `projects/*/secrets/*/versions/*`. + Required. A SecretManager resource containing the OAuth token that authorizes + the connection. Format: `projects/*/secrets/*/versions/*`. """ return pulumi.get(self, "oauth_token_secret_version") @@ -169,6 +216,648 @@ def username(self) -> Optional[str]: return pulumi.get(self, "username") +@pulumi.output_type +class ConnectionGithubEnterpriseConfig(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "hostUri": + suggest = "host_uri" + elif key == "appId": + suggest = "app_id" + elif key == "appInstallationId": + suggest = "app_installation_id" + elif key == "appSlug": + suggest = "app_slug" + elif key == "installationUri": + suggest = "installation_uri" + elif key == "privateKeySecretVersion": + suggest = "private_key_secret_version" + elif key == "serverVersion": + suggest = "server_version" + elif key == "serviceDirectoryConfig": + suggest = "service_directory_config" + elif key == "sslCaCertificate": + suggest = "ssl_ca_certificate" + elif key == "webhookSecretSecretVersion": + suggest = "webhook_secret_secret_version" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in ConnectionGithubEnterpriseConfig. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + ConnectionGithubEnterpriseConfig.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + ConnectionGithubEnterpriseConfig.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + host_uri: str, + app_id: Optional[str] = None, + app_installation_id: Optional[str] = None, + app_slug: Optional[str] = None, + installation_uri: Optional[str] = None, + private_key_secret_version: Optional[str] = None, + server_version: Optional[str] = None, + service_directory_config: Optional['outputs.ConnectionGithubEnterpriseConfigServiceDirectoryConfig'] = None, + ssl_ca_certificate: Optional[str] = None, + webhook_secret_secret_version: Optional[str] = None): + """ + :param str host_uri: Required. The URI of the GitHub Enterprise host this connection is for. + :param str app_id: Optional. ID of the GitHub App created from the manifest. + :param str app_installation_id: Optional. ID of the installation of the GitHub App. + :param str app_slug: (Output) + Output only. The URL-friendly name of the GitHub App. + :param str installation_uri: (Output) + Output only. The URI to navigate to in order to manage the installation associated + with this GitHubEnterpriseConfig. + :param str private_key_secret_version: Optional. SecretManager resource containing the private key of the GitHub App, + formatted as `projects/*/secrets/*/versions/*`. + :param str server_version: (Output) + Output only. GitHub Enterprise version installed at the host_uri. + :param 'ConnectionGithubEnterpriseConfigServiceDirectoryConfigArgs' service_directory_config: ServiceDirectoryConfig represents Service Directory configuration for a + connection. + Structure is documented below. + :param str ssl_ca_certificate: Optional. SSL certificate to use for requests to GitHub Enterprise. + :param str webhook_secret_secret_version: Optional. SecretManager resource containing the webhook secret of the GitHub App, + formatted as `projects/*/secrets/*/versions/*`. + """ + pulumi.set(__self__, "host_uri", host_uri) + if app_id is not None: + pulumi.set(__self__, "app_id", app_id) + if app_installation_id is not None: + pulumi.set(__self__, "app_installation_id", app_installation_id) + if app_slug is not None: + pulumi.set(__self__, "app_slug", app_slug) + if installation_uri is not None: + pulumi.set(__self__, "installation_uri", installation_uri) + if private_key_secret_version is not None: + pulumi.set(__self__, "private_key_secret_version", private_key_secret_version) + if server_version is not None: + pulumi.set(__self__, "server_version", server_version) + if service_directory_config is not None: + pulumi.set(__self__, "service_directory_config", service_directory_config) + if ssl_ca_certificate is not None: + pulumi.set(__self__, "ssl_ca_certificate", ssl_ca_certificate) + if webhook_secret_secret_version is not None: + pulumi.set(__self__, "webhook_secret_secret_version", webhook_secret_secret_version) + + @property + @pulumi.getter(name="hostUri") + def host_uri(self) -> str: + """ + Required. The URI of the GitHub Enterprise host this connection is for. + """ + return pulumi.get(self, "host_uri") + + @property + @pulumi.getter(name="appId") + def app_id(self) -> Optional[str]: + """ + Optional. ID of the GitHub App created from the manifest. + """ + return pulumi.get(self, "app_id") + + @property + @pulumi.getter(name="appInstallationId") + def app_installation_id(self) -> Optional[str]: + """ + Optional. ID of the installation of the GitHub App. + """ + return pulumi.get(self, "app_installation_id") + + @property + @pulumi.getter(name="appSlug") + def app_slug(self) -> Optional[str]: + """ + (Output) + Output only. The URL-friendly name of the GitHub App. + """ + return pulumi.get(self, "app_slug") + + @property + @pulumi.getter(name="installationUri") + def installation_uri(self) -> Optional[str]: + """ + (Output) + Output only. The URI to navigate to in order to manage the installation associated + with this GitHubEnterpriseConfig. + """ + return pulumi.get(self, "installation_uri") + + @property + @pulumi.getter(name="privateKeySecretVersion") + def private_key_secret_version(self) -> Optional[str]: + """ + Optional. SecretManager resource containing the private key of the GitHub App, + formatted as `projects/*/secrets/*/versions/*`. + """ + return pulumi.get(self, "private_key_secret_version") + + @property + @pulumi.getter(name="serverVersion") + def server_version(self) -> Optional[str]: + """ + (Output) + Output only. GitHub Enterprise version installed at the host_uri. + """ + return pulumi.get(self, "server_version") + + @property + @pulumi.getter(name="serviceDirectoryConfig") + def service_directory_config(self) -> Optional['outputs.ConnectionGithubEnterpriseConfigServiceDirectoryConfig']: + """ + ServiceDirectoryConfig represents Service Directory configuration for a + connection. + Structure is documented below. + """ + return pulumi.get(self, "service_directory_config") + + @property + @pulumi.getter(name="sslCaCertificate") + def ssl_ca_certificate(self) -> Optional[str]: + """ + Optional. SSL certificate to use for requests to GitHub Enterprise. + """ + return pulumi.get(self, "ssl_ca_certificate") + + @property + @pulumi.getter(name="webhookSecretSecretVersion") + def webhook_secret_secret_version(self) -> Optional[str]: + """ + Optional. SecretManager resource containing the webhook secret of the GitHub App, + formatted as `projects/*/secrets/*/versions/*`. + """ + return pulumi.get(self, "webhook_secret_secret_version") + + +@pulumi.output_type +class ConnectionGithubEnterpriseConfigServiceDirectoryConfig(dict): + def __init__(__self__, *, + service: str): + """ + :param str service: Required. The Service Directory service name. + Format: + projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + """ + pulumi.set(__self__, "service", service) + + @property + @pulumi.getter + def service(self) -> str: + """ + Required. The Service Directory service name. + Format: + projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + """ + return pulumi.get(self, "service") + + +@pulumi.output_type +class ConnectionGitlabConfig(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "authorizerCredential": + suggest = "authorizer_credential" + elif key == "readAuthorizerCredential": + suggest = "read_authorizer_credential" + elif key == "webhookSecretSecretVersion": + suggest = "webhook_secret_secret_version" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in ConnectionGitlabConfig. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + ConnectionGitlabConfig.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + ConnectionGitlabConfig.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + authorizer_credential: 'outputs.ConnectionGitlabConfigAuthorizerCredential', + read_authorizer_credential: 'outputs.ConnectionGitlabConfigReadAuthorizerCredential', + webhook_secret_secret_version: str): + """ + :param 'ConnectionGitlabConfigAuthorizerCredentialArgs' authorizer_credential: Represents a personal access token that authorized the Connection, + and associated metadata. + Structure is documented below. + :param 'ConnectionGitlabConfigReadAuthorizerCredentialArgs' read_authorizer_credential: Represents a personal access token that authorized the Connection, + and associated metadata. + Structure is documented below. + :param str webhook_secret_secret_version: Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + formatted as `projects/*/secrets/*/versions/*`. This is used to validate + webhooks. + """ + pulumi.set(__self__, "authorizer_credential", authorizer_credential) + pulumi.set(__self__, "read_authorizer_credential", read_authorizer_credential) + pulumi.set(__self__, "webhook_secret_secret_version", webhook_secret_secret_version) + + @property + @pulumi.getter(name="authorizerCredential") + def authorizer_credential(self) -> 'outputs.ConnectionGitlabConfigAuthorizerCredential': + """ + Represents a personal access token that authorized the Connection, + and associated metadata. + Structure is documented below. + """ + return pulumi.get(self, "authorizer_credential") + + @property + @pulumi.getter(name="readAuthorizerCredential") + def read_authorizer_credential(self) -> 'outputs.ConnectionGitlabConfigReadAuthorizerCredential': + """ + Represents a personal access token that authorized the Connection, + and associated metadata. + Structure is documented below. + """ + return pulumi.get(self, "read_authorizer_credential") + + @property + @pulumi.getter(name="webhookSecretSecretVersion") + def webhook_secret_secret_version(self) -> str: + """ + Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + formatted as `projects/*/secrets/*/versions/*`. This is used to validate + webhooks. + """ + return pulumi.get(self, "webhook_secret_secret_version") + + +@pulumi.output_type +class ConnectionGitlabConfigAuthorizerCredential(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "userTokenSecretVersion": + suggest = "user_token_secret_version" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in ConnectionGitlabConfigAuthorizerCredential. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + ConnectionGitlabConfigAuthorizerCredential.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + ConnectionGitlabConfigAuthorizerCredential.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + user_token_secret_version: str, + username: Optional[str] = None): + """ + :param str user_token_secret_version: Required. A SecretManager resource containing the user token that authorizes + the Developer Connect connection. Format: + `projects/*/secrets/*/versions/*`. + :param str username: (Output) + Output only. The username associated with this token. + """ + pulumi.set(__self__, "user_token_secret_version", user_token_secret_version) + if username is not None: + pulumi.set(__self__, "username", username) + + @property + @pulumi.getter(name="userTokenSecretVersion") + def user_token_secret_version(self) -> str: + """ + Required. A SecretManager resource containing the user token that authorizes + the Developer Connect connection. Format: + `projects/*/secrets/*/versions/*`. + """ + return pulumi.get(self, "user_token_secret_version") + + @property + @pulumi.getter + def username(self) -> Optional[str]: + """ + (Output) + Output only. The username associated with this token. + """ + return pulumi.get(self, "username") + + +@pulumi.output_type +class ConnectionGitlabConfigReadAuthorizerCredential(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "userTokenSecretVersion": + suggest = "user_token_secret_version" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in ConnectionGitlabConfigReadAuthorizerCredential. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + ConnectionGitlabConfigReadAuthorizerCredential.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + ConnectionGitlabConfigReadAuthorizerCredential.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + user_token_secret_version: str, + username: Optional[str] = None): + """ + :param str user_token_secret_version: Required. A SecretManager resource containing the user token that authorizes + the Developer Connect connection. Format: + `projects/*/secrets/*/versions/*`. + :param str username: (Output) + Output only. The username associated with this token. + """ + pulumi.set(__self__, "user_token_secret_version", user_token_secret_version) + if username is not None: + pulumi.set(__self__, "username", username) + + @property + @pulumi.getter(name="userTokenSecretVersion") + def user_token_secret_version(self) -> str: + """ + Required. A SecretManager resource containing the user token that authorizes + the Developer Connect connection. Format: + `projects/*/secrets/*/versions/*`. + """ + return pulumi.get(self, "user_token_secret_version") + + @property + @pulumi.getter + def username(self) -> Optional[str]: + """ + (Output) + Output only. The username associated with this token. + """ + return pulumi.get(self, "username") + + +@pulumi.output_type +class ConnectionGitlabEnterpriseConfig(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "authorizerCredential": + suggest = "authorizer_credential" + elif key == "hostUri": + suggest = "host_uri" + elif key == "readAuthorizerCredential": + suggest = "read_authorizer_credential" + elif key == "webhookSecretSecretVersion": + suggest = "webhook_secret_secret_version" + elif key == "serverVersion": + suggest = "server_version" + elif key == "serviceDirectoryConfig": + suggest = "service_directory_config" + elif key == "sslCaCertificate": + suggest = "ssl_ca_certificate" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in ConnectionGitlabEnterpriseConfig. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + ConnectionGitlabEnterpriseConfig.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + ConnectionGitlabEnterpriseConfig.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + authorizer_credential: 'outputs.ConnectionGitlabEnterpriseConfigAuthorizerCredential', + host_uri: str, + read_authorizer_credential: 'outputs.ConnectionGitlabEnterpriseConfigReadAuthorizerCredential', + webhook_secret_secret_version: str, + server_version: Optional[str] = None, + service_directory_config: Optional['outputs.ConnectionGitlabEnterpriseConfigServiceDirectoryConfig'] = None, + ssl_ca_certificate: Optional[str] = None): + """ + :param 'ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs' authorizer_credential: Represents a personal access token that authorized the Connection, + and associated metadata. + Structure is documented below. + :param str host_uri: Required. The URI of the GitLab Enterprise host this connection is for. + :param 'ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs' read_authorizer_credential: Represents a personal access token that authorized the Connection, + and associated metadata. + Structure is documented below. + :param str webhook_secret_secret_version: Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + formatted as `projects/*/secrets/*/versions/*`. This is used to validate + webhooks. + :param str server_version: (Output) + Output only. Version of the GitLab Enterprise server running on the `host_uri`. + :param 'ConnectionGitlabEnterpriseConfigServiceDirectoryConfigArgs' service_directory_config: ServiceDirectoryConfig represents Service Directory configuration for a + connection. + Structure is documented below. + :param str ssl_ca_certificate: Optional. SSL Certificate Authority certificate to use for requests to GitLab + Enterprise instance. + """ + pulumi.set(__self__, "authorizer_credential", authorizer_credential) + pulumi.set(__self__, "host_uri", host_uri) + pulumi.set(__self__, "read_authorizer_credential", read_authorizer_credential) + pulumi.set(__self__, "webhook_secret_secret_version", webhook_secret_secret_version) + if server_version is not None: + pulumi.set(__self__, "server_version", server_version) + if service_directory_config is not None: + pulumi.set(__self__, "service_directory_config", service_directory_config) + if ssl_ca_certificate is not None: + pulumi.set(__self__, "ssl_ca_certificate", ssl_ca_certificate) + + @property + @pulumi.getter(name="authorizerCredential") + def authorizer_credential(self) -> 'outputs.ConnectionGitlabEnterpriseConfigAuthorizerCredential': + """ + Represents a personal access token that authorized the Connection, + and associated metadata. + Structure is documented below. + """ + return pulumi.get(self, "authorizer_credential") + + @property + @pulumi.getter(name="hostUri") + def host_uri(self) -> str: + """ + Required. The URI of the GitLab Enterprise host this connection is for. + """ + return pulumi.get(self, "host_uri") + + @property + @pulumi.getter(name="readAuthorizerCredential") + def read_authorizer_credential(self) -> 'outputs.ConnectionGitlabEnterpriseConfigReadAuthorizerCredential': + """ + Represents a personal access token that authorized the Connection, + and associated metadata. + Structure is documented below. + """ + return pulumi.get(self, "read_authorizer_credential") + + @property + @pulumi.getter(name="webhookSecretSecretVersion") + def webhook_secret_secret_version(self) -> str: + """ + Required. Immutable. SecretManager resource containing the webhook secret of a GitLab project, + formatted as `projects/*/secrets/*/versions/*`. This is used to validate + webhooks. + """ + return pulumi.get(self, "webhook_secret_secret_version") + + @property + @pulumi.getter(name="serverVersion") + def server_version(self) -> Optional[str]: + """ + (Output) + Output only. Version of the GitLab Enterprise server running on the `host_uri`. + """ + return pulumi.get(self, "server_version") + + @property + @pulumi.getter(name="serviceDirectoryConfig") + def service_directory_config(self) -> Optional['outputs.ConnectionGitlabEnterpriseConfigServiceDirectoryConfig']: + """ + ServiceDirectoryConfig represents Service Directory configuration for a + connection. + Structure is documented below. + """ + return pulumi.get(self, "service_directory_config") + + @property + @pulumi.getter(name="sslCaCertificate") + def ssl_ca_certificate(self) -> Optional[str]: + """ + Optional. SSL Certificate Authority certificate to use for requests to GitLab + Enterprise instance. + """ + return pulumi.get(self, "ssl_ca_certificate") + + +@pulumi.output_type +class ConnectionGitlabEnterpriseConfigAuthorizerCredential(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "userTokenSecretVersion": + suggest = "user_token_secret_version" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in ConnectionGitlabEnterpriseConfigAuthorizerCredential. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + ConnectionGitlabEnterpriseConfigAuthorizerCredential.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + ConnectionGitlabEnterpriseConfigAuthorizerCredential.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + user_token_secret_version: str, + username: Optional[str] = None): + """ + :param str user_token_secret_version: Required. A SecretManager resource containing the user token that authorizes + the Developer Connect connection. Format: + `projects/*/secrets/*/versions/*`. + :param str username: (Output) + Output only. The username associated with this token. + """ + pulumi.set(__self__, "user_token_secret_version", user_token_secret_version) + if username is not None: + pulumi.set(__self__, "username", username) + + @property + @pulumi.getter(name="userTokenSecretVersion") + def user_token_secret_version(self) -> str: + """ + Required. A SecretManager resource containing the user token that authorizes + the Developer Connect connection. Format: + `projects/*/secrets/*/versions/*`. + """ + return pulumi.get(self, "user_token_secret_version") + + @property + @pulumi.getter + def username(self) -> Optional[str]: + """ + (Output) + Output only. The username associated with this token. + """ + return pulumi.get(self, "username") + + +@pulumi.output_type +class ConnectionGitlabEnterpriseConfigReadAuthorizerCredential(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "userTokenSecretVersion": + suggest = "user_token_secret_version" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in ConnectionGitlabEnterpriseConfigReadAuthorizerCredential. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + ConnectionGitlabEnterpriseConfigReadAuthorizerCredential.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + ConnectionGitlabEnterpriseConfigReadAuthorizerCredential.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + user_token_secret_version: str, + username: Optional[str] = None): + """ + :param str user_token_secret_version: Required. A SecretManager resource containing the user token that authorizes + the Developer Connect connection. Format: + `projects/*/secrets/*/versions/*`. + :param str username: (Output) + Output only. The username associated with this token. + """ + pulumi.set(__self__, "user_token_secret_version", user_token_secret_version) + if username is not None: + pulumi.set(__self__, "username", username) + + @property + @pulumi.getter(name="userTokenSecretVersion") + def user_token_secret_version(self) -> str: + """ + Required. A SecretManager resource containing the user token that authorizes + the Developer Connect connection. Format: + `projects/*/secrets/*/versions/*`. + """ + return pulumi.get(self, "user_token_secret_version") + + @property + @pulumi.getter + def username(self) -> Optional[str]: + """ + (Output) + Output only. The username associated with this token. + """ + return pulumi.get(self, "username") + + +@pulumi.output_type +class ConnectionGitlabEnterpriseConfigServiceDirectoryConfig(dict): + def __init__(__self__, *, + service: str): + """ + :param str service: Required. The Service Directory service name. + Format: + projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + """ + pulumi.set(__self__, "service", service) + + @property + @pulumi.getter + def service(self) -> str: + """ + Required. The Service Directory service name. + Format: + projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + """ + return pulumi.get(self, "service") + + @pulumi.output_type class ConnectionInstallationState(dict): @staticmethod @@ -193,10 +882,10 @@ def __init__(__self__, *, message: Optional[str] = None, stage: Optional[str] = None): """ - :param str action_uri: Output only. Link to follow for next action. Empty string if the - installation is already complete. - :param str message: Output only. Message of what the user should do next to continue - the installation.Empty string if the installation is already complete. + :param str action_uri: Output only. Link to follow for next action. Empty string if the installation is already + complete. + :param str message: Output only. Message of what the user should do next to continue the installation. + Empty string if the installation is already complete. :param str stage: (Output) Output only. Current step of the installation process. Possible values: @@ -217,8 +906,8 @@ def __init__(__self__, *, @pulumi.getter(name="actionUri") def action_uri(self) -> Optional[str]: """ - Output only. Link to follow for next action. Empty string if the - installation is already complete. + Output only. Link to follow for next action. Empty string if the installation is already + complete. """ return pulumi.get(self, "action_uri") @@ -226,8 +915,8 @@ def action_uri(self) -> Optional[str]: @pulumi.getter def message(self) -> Optional[str]: """ - Output only. Message of what the user should do next to continue - the installation.Empty string if the installation is already complete. + Output only. Message of what the user should do next to continue the installation. + Empty string if the installation is already complete. """ return pulumi.get(self, "message") diff --git a/sdk/python/pulumi_gcp/dns/_inputs.py b/sdk/python/pulumi_gcp/dns/_inputs.py index 7db6be51f6..1c272b125d 100644 --- a/sdk/python/pulumi_gcp/dns/_inputs.py +++ b/sdk/python/pulumi_gcp/dns/_inputs.py @@ -956,6 +956,10 @@ class RecordSetRoutingPolicyArgsDict(TypedDict): The configuration for Geolocation based routing policy. Structure is documented below. """ + health_check: NotRequired[pulumi.Input[str]] + """ + Specifies the health check (used with external endpoints). + """ primary_backup: NotRequired[pulumi.Input['RecordSetRoutingPolicyPrimaryBackupArgsDict']] """ The configuration for a failover policy with global to regional failover. Queries are responded to with the global primary targets, but if none of the primary targets are healthy, then we fallback to a regional failover policy. @@ -974,12 +978,14 @@ class RecordSetRoutingPolicyArgs: def __init__(__self__, *, enable_geo_fencing: Optional[pulumi.Input[bool]] = None, geos: Optional[pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyGeoArgs']]]] = None, + health_check: Optional[pulumi.Input[str]] = None, primary_backup: Optional[pulumi.Input['RecordSetRoutingPolicyPrimaryBackupArgs']] = None, wrrs: Optional[pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyWrrArgs']]]] = None): """ :param pulumi.Input[bool] enable_geo_fencing: Specifies whether to enable fencing for geo queries. :param pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyGeoArgs']]] geos: The configuration for Geolocation based routing policy. Structure is documented below. + :param pulumi.Input[str] health_check: Specifies the health check (used with external endpoints). :param pulumi.Input['RecordSetRoutingPolicyPrimaryBackupArgs'] primary_backup: The configuration for a failover policy with global to regional failover. Queries are responded to with the global primary targets, but if none of the primary targets are healthy, then we fallback to a regional failover policy. Structure is documented below. :param pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyWrrArgs']]] wrrs: The configuration for Weighted Round Robin based routing policy. @@ -989,6 +995,8 @@ def __init__(__self__, *, pulumi.set(__self__, "enable_geo_fencing", enable_geo_fencing) if geos is not None: pulumi.set(__self__, "geos", geos) + if health_check is not None: + pulumi.set(__self__, "health_check", health_check) if primary_backup is not None: pulumi.set(__self__, "primary_backup", primary_backup) if wrrs is not None: @@ -1019,6 +1027,18 @@ def geos(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingP def geos(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyGeoArgs']]]]): pulumi.set(self, "geos", value) + @property + @pulumi.getter(name="healthCheck") + def health_check(self) -> Optional[pulumi.Input[str]]: + """ + Specifies the health check (used with external endpoints). + """ + return pulumi.get(self, "health_check") + + @health_check.setter + def health_check(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "health_check", value) + @property @pulumi.getter(name="primaryBackup") def primary_backup(self) -> Optional[pulumi.Input['RecordSetRoutingPolicyPrimaryBackupArgs']]: @@ -1122,7 +1142,11 @@ def rrdatas(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): if not MYPY: class RecordSetRoutingPolicyGeoHealthCheckedTargetsArgsDict(TypedDict): - internal_load_balancers: pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancerArgsDict']]] + external_endpoints: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]] + """ + The list of external endpoint addresses to health check. + """ + internal_load_balancers: NotRequired[pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancerArgsDict']]]] """ The list of internal load balancers to health check. Structure is documented below. @@ -1133,16 +1157,33 @@ class RecordSetRoutingPolicyGeoHealthCheckedTargetsArgsDict(TypedDict): @pulumi.input_type class RecordSetRoutingPolicyGeoHealthCheckedTargetsArgs: def __init__(__self__, *, - internal_load_balancers: pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancerArgs']]]): + external_endpoints: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + internal_load_balancers: Optional[pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancerArgs']]]] = None): """ + :param pulumi.Input[Sequence[pulumi.Input[str]]] external_endpoints: The list of external endpoint addresses to health check. :param pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancerArgs']]] internal_load_balancers: The list of internal load balancers to health check. Structure is documented below. """ - pulumi.set(__self__, "internal_load_balancers", internal_load_balancers) + if external_endpoints is not None: + pulumi.set(__self__, "external_endpoints", external_endpoints) + if internal_load_balancers is not None: + pulumi.set(__self__, "internal_load_balancers", internal_load_balancers) + + @property + @pulumi.getter(name="externalEndpoints") + def external_endpoints(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + The list of external endpoint addresses to health check. + """ + return pulumi.get(self, "external_endpoints") + + @external_endpoints.setter + def external_endpoints(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "external_endpoints", value) @property @pulumi.getter(name="internalLoadBalancers") - def internal_load_balancers(self) -> pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancerArgs']]]: + def internal_load_balancers(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancerArgs']]]]: """ The list of internal load balancers to health check. Structure is documented below. @@ -1150,7 +1191,7 @@ def internal_load_balancers(self) -> pulumi.Input[Sequence[pulumi.Input['RecordS return pulumi.get(self, "internal_load_balancers") @internal_load_balancers.setter - def internal_load_balancers(self, value: pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancerArgs']]]): + def internal_load_balancers(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancerArgs']]]]): pulumi.set(self, "internal_load_balancers", value) @@ -1463,7 +1504,11 @@ def rrdatas(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): if not MYPY: class RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgsDict(TypedDict): - internal_load_balancers: pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancerArgsDict']]] + external_endpoints: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]] + """ + The list of external endpoint addresses to health check. + """ + internal_load_balancers: NotRequired[pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancerArgsDict']]]] """ The list of internal load balancers to health check. Structure is documented below. @@ -1474,16 +1519,33 @@ class RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgsDict(T @pulumi.input_type class RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs: def __init__(__self__, *, - internal_load_balancers: pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancerArgs']]]): + external_endpoints: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + internal_load_balancers: Optional[pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancerArgs']]]] = None): """ + :param pulumi.Input[Sequence[pulumi.Input[str]]] external_endpoints: The list of external endpoint addresses to health check. :param pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancerArgs']]] internal_load_balancers: The list of internal load balancers to health check. Structure is documented below. """ - pulumi.set(__self__, "internal_load_balancers", internal_load_balancers) + if external_endpoints is not None: + pulumi.set(__self__, "external_endpoints", external_endpoints) + if internal_load_balancers is not None: + pulumi.set(__self__, "internal_load_balancers", internal_load_balancers) + + @property + @pulumi.getter(name="externalEndpoints") + def external_endpoints(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + The list of external endpoint addresses to health check. + """ + return pulumi.get(self, "external_endpoints") + + @external_endpoints.setter + def external_endpoints(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "external_endpoints", value) @property @pulumi.getter(name="internalLoadBalancers") - def internal_load_balancers(self) -> pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancerArgs']]]: + def internal_load_balancers(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancerArgs']]]]: """ The list of internal load balancers to health check. Structure is documented below. @@ -1491,7 +1553,7 @@ def internal_load_balancers(self) -> pulumi.Input[Sequence[pulumi.Input['RecordS return pulumi.get(self, "internal_load_balancers") @internal_load_balancers.setter - def internal_load_balancers(self, value: pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancerArgs']]]): + def internal_load_balancers(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancerArgs']]]]): pulumi.set(self, "internal_load_balancers", value) @@ -1644,7 +1706,11 @@ def region(self, value: Optional[pulumi.Input[str]]): if not MYPY: class RecordSetRoutingPolicyPrimaryBackupPrimaryArgsDict(TypedDict): - internal_load_balancers: pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgsDict']]] + external_endpoints: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]] + """ + The Internet IP addresses to be health checked. + """ + internal_load_balancers: NotRequired[pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgsDict']]]] """ The list of internal load balancers to health check. """ @@ -1654,22 +1720,39 @@ class RecordSetRoutingPolicyPrimaryBackupPrimaryArgsDict(TypedDict): @pulumi.input_type class RecordSetRoutingPolicyPrimaryBackupPrimaryArgs: def __init__(__self__, *, - internal_load_balancers: pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs']]]): + external_endpoints: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + internal_load_balancers: Optional[pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs']]]] = None): """ + :param pulumi.Input[Sequence[pulumi.Input[str]]] external_endpoints: The Internet IP addresses to be health checked. :param pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs']]] internal_load_balancers: The list of internal load balancers to health check. """ - pulumi.set(__self__, "internal_load_balancers", internal_load_balancers) + if external_endpoints is not None: + pulumi.set(__self__, "external_endpoints", external_endpoints) + if internal_load_balancers is not None: + pulumi.set(__self__, "internal_load_balancers", internal_load_balancers) + + @property + @pulumi.getter(name="externalEndpoints") + def external_endpoints(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + The Internet IP addresses to be health checked. + """ + return pulumi.get(self, "external_endpoints") + + @external_endpoints.setter + def external_endpoints(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "external_endpoints", value) @property @pulumi.getter(name="internalLoadBalancers") - def internal_load_balancers(self) -> pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs']]]: + def internal_load_balancers(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs']]]]: """ The list of internal load balancers to health check. """ return pulumi.get(self, "internal_load_balancers") @internal_load_balancers.setter - def internal_load_balancers(self, value: pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs']]]): + def internal_load_balancers(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs']]]]): pulumi.set(self, "internal_load_balancers", value) @@ -1896,7 +1979,11 @@ def rrdatas(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): if not MYPY: class RecordSetRoutingPolicyWrrHealthCheckedTargetsArgsDict(TypedDict): - internal_load_balancers: pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancerArgsDict']]] + external_endpoints: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]] + """ + The list of external endpoint addresses to health check. + """ + internal_load_balancers: NotRequired[pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancerArgsDict']]]] """ The list of internal load balancers to health check. Structure is documented below. @@ -1907,16 +1994,33 @@ class RecordSetRoutingPolicyWrrHealthCheckedTargetsArgsDict(TypedDict): @pulumi.input_type class RecordSetRoutingPolicyWrrHealthCheckedTargetsArgs: def __init__(__self__, *, - internal_load_balancers: pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancerArgs']]]): + external_endpoints: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + internal_load_balancers: Optional[pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancerArgs']]]] = None): """ + :param pulumi.Input[Sequence[pulumi.Input[str]]] external_endpoints: The list of external endpoint addresses to health check. :param pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancerArgs']]] internal_load_balancers: The list of internal load balancers to health check. Structure is documented below. """ - pulumi.set(__self__, "internal_load_balancers", internal_load_balancers) + if external_endpoints is not None: + pulumi.set(__self__, "external_endpoints", external_endpoints) + if internal_load_balancers is not None: + pulumi.set(__self__, "internal_load_balancers", internal_load_balancers) + + @property + @pulumi.getter(name="externalEndpoints") + def external_endpoints(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + The list of external endpoint addresses to health check. + """ + return pulumi.get(self, "external_endpoints") + + @external_endpoints.setter + def external_endpoints(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "external_endpoints", value) @property @pulumi.getter(name="internalLoadBalancers") - def internal_load_balancers(self) -> pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancerArgs']]]: + def internal_load_balancers(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancerArgs']]]]: """ The list of internal load balancers to health check. Structure is documented below. @@ -1924,7 +2028,7 @@ def internal_load_balancers(self) -> pulumi.Input[Sequence[pulumi.Input['RecordS return pulumi.get(self, "internal_load_balancers") @internal_load_balancers.setter - def internal_load_balancers(self, value: pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancerArgs']]]): + def internal_load_balancers(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancerArgs']]]]): pulumi.set(self, "internal_load_balancers", value) diff --git a/sdk/python/pulumi_gcp/dns/outputs.py b/sdk/python/pulumi_gcp/dns/outputs.py index 03743e23d6..fd1c643fdd 100644 --- a/sdk/python/pulumi_gcp/dns/outputs.py +++ b/sdk/python/pulumi_gcp/dns/outputs.py @@ -823,6 +823,8 @@ def __key_warning(key: str): suggest = None if key == "enableGeoFencing": suggest = "enable_geo_fencing" + elif key == "healthCheck": + suggest = "health_check" elif key == "primaryBackup": suggest = "primary_backup" @@ -840,12 +842,14 @@ def get(self, key: str, default = None) -> Any: def __init__(__self__, *, enable_geo_fencing: Optional[bool] = None, geos: Optional[Sequence['outputs.RecordSetRoutingPolicyGeo']] = None, + health_check: Optional[str] = None, primary_backup: Optional['outputs.RecordSetRoutingPolicyPrimaryBackup'] = None, wrrs: Optional[Sequence['outputs.RecordSetRoutingPolicyWrr']] = None): """ :param bool enable_geo_fencing: Specifies whether to enable fencing for geo queries. :param Sequence['RecordSetRoutingPolicyGeoArgs'] geos: The configuration for Geolocation based routing policy. Structure is documented below. + :param str health_check: Specifies the health check (used with external endpoints). :param 'RecordSetRoutingPolicyPrimaryBackupArgs' primary_backup: The configuration for a failover policy with global to regional failover. Queries are responded to with the global primary targets, but if none of the primary targets are healthy, then we fallback to a regional failover policy. Structure is documented below. :param Sequence['RecordSetRoutingPolicyWrrArgs'] wrrs: The configuration for Weighted Round Robin based routing policy. @@ -855,6 +859,8 @@ def __init__(__self__, *, pulumi.set(__self__, "enable_geo_fencing", enable_geo_fencing) if geos is not None: pulumi.set(__self__, "geos", geos) + if health_check is not None: + pulumi.set(__self__, "health_check", health_check) if primary_backup is not None: pulumi.set(__self__, "primary_backup", primary_backup) if wrrs is not None: @@ -877,6 +883,14 @@ def geos(self) -> Optional[Sequence['outputs.RecordSetRoutingPolicyGeo']]: """ return pulumi.get(self, "geos") + @property + @pulumi.getter(name="healthCheck") + def health_check(self) -> Optional[str]: + """ + Specifies the health check (used with external endpoints). + """ + return pulumi.get(self, "health_check") + @property @pulumi.getter(name="primaryBackup") def primary_backup(self) -> Optional['outputs.RecordSetRoutingPolicyPrimaryBackup']: @@ -962,7 +976,9 @@ class RecordSetRoutingPolicyGeoHealthCheckedTargets(dict): @staticmethod def __key_warning(key: str): suggest = None - if key == "internalLoadBalancers": + if key == "externalEndpoints": + suggest = "external_endpoints" + elif key == "internalLoadBalancers": suggest = "internal_load_balancers" if suggest: @@ -977,16 +993,29 @@ def get(self, key: str, default = None) -> Any: return super().get(key, default) def __init__(__self__, *, - internal_load_balancers: Sequence['outputs.RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancer']): + external_endpoints: Optional[Sequence[str]] = None, + internal_load_balancers: Optional[Sequence['outputs.RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancer']] = None): """ + :param Sequence[str] external_endpoints: The list of external endpoint addresses to health check. :param Sequence['RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancerArgs'] internal_load_balancers: The list of internal load balancers to health check. Structure is documented below. """ - pulumi.set(__self__, "internal_load_balancers", internal_load_balancers) + if external_endpoints is not None: + pulumi.set(__self__, "external_endpoints", external_endpoints) + if internal_load_balancers is not None: + pulumi.set(__self__, "internal_load_balancers", internal_load_balancers) + + @property + @pulumi.getter(name="externalEndpoints") + def external_endpoints(self) -> Optional[Sequence[str]]: + """ + The list of external endpoint addresses to health check. + """ + return pulumi.get(self, "external_endpoints") @property @pulumi.getter(name="internalLoadBalancers") - def internal_load_balancers(self) -> Sequence['outputs.RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancer']: + def internal_load_balancers(self) -> Optional[Sequence['outputs.RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancer']]: """ The list of internal load balancers to health check. Structure is documented below. @@ -1241,7 +1270,9 @@ class RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargets(dict): @staticmethod def __key_warning(key: str): suggest = None - if key == "internalLoadBalancers": + if key == "externalEndpoints": + suggest = "external_endpoints" + elif key == "internalLoadBalancers": suggest = "internal_load_balancers" if suggest: @@ -1256,16 +1287,29 @@ def get(self, key: str, default = None) -> Any: return super().get(key, default) def __init__(__self__, *, - internal_load_balancers: Sequence['outputs.RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancer']): + external_endpoints: Optional[Sequence[str]] = None, + internal_load_balancers: Optional[Sequence['outputs.RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancer']] = None): """ + :param Sequence[str] external_endpoints: The list of external endpoint addresses to health check. :param Sequence['RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancerArgs'] internal_load_balancers: The list of internal load balancers to health check. Structure is documented below. """ - pulumi.set(__self__, "internal_load_balancers", internal_load_balancers) + if external_endpoints is not None: + pulumi.set(__self__, "external_endpoints", external_endpoints) + if internal_load_balancers is not None: + pulumi.set(__self__, "internal_load_balancers", internal_load_balancers) + + @property + @pulumi.getter(name="externalEndpoints") + def external_endpoints(self) -> Optional[Sequence[str]]: + """ + The list of external endpoint addresses to health check. + """ + return pulumi.get(self, "external_endpoints") @property @pulumi.getter(name="internalLoadBalancers") - def internal_load_balancers(self) -> Sequence['outputs.RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancer']: + def internal_load_balancers(self) -> Optional[Sequence['outputs.RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancer']]: """ The list of internal load balancers to health check. Structure is documented below. @@ -1387,7 +1431,9 @@ class RecordSetRoutingPolicyPrimaryBackupPrimary(dict): @staticmethod def __key_warning(key: str): suggest = None - if key == "internalLoadBalancers": + if key == "externalEndpoints": + suggest = "external_endpoints" + elif key == "internalLoadBalancers": suggest = "internal_load_balancers" if suggest: @@ -1402,15 +1448,28 @@ def get(self, key: str, default = None) -> Any: return super().get(key, default) def __init__(__self__, *, - internal_load_balancers: Sequence['outputs.RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancer']): + external_endpoints: Optional[Sequence[str]] = None, + internal_load_balancers: Optional[Sequence['outputs.RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancer']] = None): """ + :param Sequence[str] external_endpoints: The Internet IP addresses to be health checked. :param Sequence['RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs'] internal_load_balancers: The list of internal load balancers to health check. """ - pulumi.set(__self__, "internal_load_balancers", internal_load_balancers) + if external_endpoints is not None: + pulumi.set(__self__, "external_endpoints", external_endpoints) + if internal_load_balancers is not None: + pulumi.set(__self__, "internal_load_balancers", internal_load_balancers) + + @property + @pulumi.getter(name="externalEndpoints") + def external_endpoints(self) -> Optional[Sequence[str]]: + """ + The Internet IP addresses to be health checked. + """ + return pulumi.get(self, "external_endpoints") @property @pulumi.getter(name="internalLoadBalancers") - def internal_load_balancers(self) -> Sequence['outputs.RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancer']: + def internal_load_balancers(self) -> Optional[Sequence['outputs.RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancer']]: """ The list of internal load balancers to health check. """ @@ -1592,7 +1651,9 @@ class RecordSetRoutingPolicyWrrHealthCheckedTargets(dict): @staticmethod def __key_warning(key: str): suggest = None - if key == "internalLoadBalancers": + if key == "externalEndpoints": + suggest = "external_endpoints" + elif key == "internalLoadBalancers": suggest = "internal_load_balancers" if suggest: @@ -1607,16 +1668,29 @@ def get(self, key: str, default = None) -> Any: return super().get(key, default) def __init__(__self__, *, - internal_load_balancers: Sequence['outputs.RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancer']): + external_endpoints: Optional[Sequence[str]] = None, + internal_load_balancers: Optional[Sequence['outputs.RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancer']] = None): """ + :param Sequence[str] external_endpoints: The list of external endpoint addresses to health check. :param Sequence['RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancerArgs'] internal_load_balancers: The list of internal load balancers to health check. Structure is documented below. """ - pulumi.set(__self__, "internal_load_balancers", internal_load_balancers) + if external_endpoints is not None: + pulumi.set(__self__, "external_endpoints", external_endpoints) + if internal_load_balancers is not None: + pulumi.set(__self__, "internal_load_balancers", internal_load_balancers) + + @property + @pulumi.getter(name="externalEndpoints") + def external_endpoints(self) -> Optional[Sequence[str]]: + """ + The list of external endpoint addresses to health check. + """ + return pulumi.get(self, "external_endpoints") @property @pulumi.getter(name="internalLoadBalancers") - def internal_load_balancers(self) -> Sequence['outputs.RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancer']: + def internal_load_balancers(self) -> Optional[Sequence['outputs.RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancer']]: """ The list of internal load balancers to health check. Structure is documented below. diff --git a/sdk/python/pulumi_gcp/dns/record_set.py b/sdk/python/pulumi_gcp/dns/record_set.py index 69b49b0915..1119c53fe3 100644 --- a/sdk/python/pulumi_gcp/dns/record_set.py +++ b/sdk/python/pulumi_gcp/dns/record_set.py @@ -475,6 +475,47 @@ def __init__(__self__, }) ``` + ### Public zone failover + + ```python + import pulumi + import pulumi_gcp as gcp + + http_health_check = gcp.compute.HealthCheck("http-health-check", + name="http-health-check", + description="Health check via http", + timeout_sec=5, + check_interval_sec=30, + healthy_threshold=4, + unhealthy_threshold=5, + http_health_check={ + "port_specification": "USE_SERVING_PORT", + }) + prod = gcp.dns.ManagedZone("prod", + name="prod-zone", + dns_name="prod.mydomain.com.") + a = gcp.dns.RecordSet("a", + name=prod.dns_name.apply(lambda dns_name: f"backend.{dns_name}"), + managed_zone=prod.name, + type="A", + ttl=300, + routing_policy={ + "health_check": http_health_check.id, + "primary_backup": { + "trickle_ratio": 0.1, + "primary": { + "external_endpoints": ["10.128.1.1"], + }, + "backup_geos": [{ + "location": "us-west1", + "health_checked_targets": { + "external_endpoints": ["10.130.1.1"], + }, + }], + }, + }) + ``` + ## Import DNS record sets can be imported using either of these accepted formats: @@ -713,6 +754,47 @@ def __init__(__self__, }) ``` + ### Public zone failover + + ```python + import pulumi + import pulumi_gcp as gcp + + http_health_check = gcp.compute.HealthCheck("http-health-check", + name="http-health-check", + description="Health check via http", + timeout_sec=5, + check_interval_sec=30, + healthy_threshold=4, + unhealthy_threshold=5, + http_health_check={ + "port_specification": "USE_SERVING_PORT", + }) + prod = gcp.dns.ManagedZone("prod", + name="prod-zone", + dns_name="prod.mydomain.com.") + a = gcp.dns.RecordSet("a", + name=prod.dns_name.apply(lambda dns_name: f"backend.{dns_name}"), + managed_zone=prod.name, + type="A", + ttl=300, + routing_policy={ + "health_check": http_health_check.id, + "primary_backup": { + "trickle_ratio": 0.1, + "primary": { + "external_endpoints": ["10.128.1.1"], + }, + "backup_geos": [{ + "location": "us-west1", + "health_checked_targets": { + "external_endpoints": ["10.130.1.1"], + }, + }], + }, + }) + ``` + ## Import DNS record sets can be imported using either of these accepted formats: diff --git a/sdk/python/pulumi_gcp/edgecontainer/_inputs.py b/sdk/python/pulumi_gcp/edgecontainer/_inputs.py index d832a4eb54..2fb6ba4078 100644 --- a/sdk/python/pulumi_gcp/edgecontainer/_inputs.py +++ b/sdk/python/pulumi_gcp/edgecontainer/_inputs.py @@ -234,7 +234,7 @@ class ClusterControlPlaneEncryptionArgsDict(TypedDict): Structure is documented below. - The `kms_status` block contains: + The `kms_status` block contains: """ elif False: ClusterControlPlaneEncryptionArgsDict: TypeAlias = Mapping[str, Any] @@ -266,7 +266,7 @@ def __init__(__self__, *, Structure is documented below. - The `kms_status` block contains: + The `kms_status` block contains: """ if kms_key is not None: pulumi.set(__self__, "kms_key", kms_key) @@ -333,7 +333,7 @@ def kms_statuses(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ClusterCo Structure is documented below. - The `kms_status` block contains: + The `kms_status` block contains: """ return pulumi.get(self, "kms_statuses") diff --git a/sdk/python/pulumi_gcp/edgecontainer/outputs.py b/sdk/python/pulumi_gcp/edgecontainer/outputs.py index 4402311d25..0165a55227 100644 --- a/sdk/python/pulumi_gcp/edgecontainer/outputs.py +++ b/sdk/python/pulumi_gcp/edgecontainer/outputs.py @@ -190,7 +190,7 @@ def __init__(__self__, *, Structure is documented below. - The `kms_status` block contains: + The `kms_status` block contains: """ if kms_key is not None: pulumi.set(__self__, "kms_key", kms_key) @@ -245,7 +245,7 @@ def kms_statuses(self) -> Optional[Sequence['outputs.ClusterControlPlaneEncrypti Structure is documented below. - The `kms_status` block contains: + The `kms_status` block contains: """ return pulumi.get(self, "kms_statuses") diff --git a/sdk/python/pulumi_gcp/gkeonprem/_inputs.py b/sdk/python/pulumi_gcp/gkeonprem/_inputs.py index cda33271e9..53d878f089 100644 --- a/sdk/python/pulumi_gcp/gkeonprem/_inputs.py +++ b/sdk/python/pulumi_gcp/gkeonprem/_inputs.py @@ -6057,7 +6057,7 @@ class VMwareClusterControlPlaneNodeAutoResizeConfigArgsDict(TypedDict): """ Whether to enable control plane node auto resizing. - The `vsphere_config` block contains: + The `vsphere_config` block contains: """ elif False: VMwareClusterControlPlaneNodeAutoResizeConfigArgsDict: TypeAlias = Mapping[str, Any] @@ -6069,7 +6069,7 @@ def __init__(__self__, *, """ :param pulumi.Input[bool] enabled: Whether to enable control plane node auto resizing. - The `vsphere_config` block contains: + The `vsphere_config` block contains: """ pulumi.set(__self__, "enabled", enabled) @@ -6079,7 +6079,7 @@ def enabled(self) -> pulumi.Input[bool]: """ Whether to enable control plane node auto resizing. - The `vsphere_config` block contains: + The `vsphere_config` block contains: """ return pulumi.get(self, "enabled") @@ -6697,7 +6697,7 @@ class VMwareClusterLoadBalancerVipConfigArgsDict(TypedDict): """ The VIP which you previously set aside for ingress traffic into this cluster. - The `f5_config` block supports: + The `f5_config` block supports: """ elif False: VMwareClusterLoadBalancerVipConfigArgsDict: TypeAlias = Mapping[str, Any] @@ -6711,7 +6711,7 @@ def __init__(__self__, *, :param pulumi.Input[str] control_plane_vip: The VIP which you previously set aside for the Kubernetes API of this cluster. :param pulumi.Input[str] ingress_vip: The VIP which you previously set aside for ingress traffic into this cluster. - The `f5_config` block supports: + The `f5_config` block supports: """ if control_plane_vip is not None: pulumi.set(__self__, "control_plane_vip", control_plane_vip) @@ -6736,7 +6736,7 @@ def ingress_vip(self) -> Optional[pulumi.Input[str]]: """ The VIP which you previously set aside for ingress traffic into this cluster. - The `f5_config` block supports: + The `f5_config` block supports: """ return pulumi.get(self, "ingress_vip") @@ -7115,7 +7115,7 @@ class VMwareClusterNetworkConfigHostConfigArgsDict(TypedDict): """ DNS search domains. - The `control_plane_v2_config` block supports: + The `control_plane_v2_config` block supports: """ dns_servers: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]] """ @@ -7137,7 +7137,7 @@ def __init__(__self__, *, """ :param pulumi.Input[Sequence[pulumi.Input[str]]] dns_search_domains: DNS search domains. - The `control_plane_v2_config` block supports: + The `control_plane_v2_config` block supports: :param pulumi.Input[Sequence[pulumi.Input[str]]] dns_servers: DNS servers. :param pulumi.Input[Sequence[pulumi.Input[str]]] ntp_servers: NTP servers. """ @@ -7154,7 +7154,7 @@ def dns_search_domains(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str] """ DNS search domains. - The `control_plane_v2_config` block supports: + The `control_plane_v2_config` block supports: """ return pulumi.get(self, "dns_search_domains") @@ -9398,7 +9398,7 @@ class VmwareAdminClusterLoadBalancerVipConfigArgsDict(TypedDict): """ The VIP to configure the load balancer for add-ons. - The `f5_config` block supports: + The `f5_config` block supports: """ elif False: VmwareAdminClusterLoadBalancerVipConfigArgsDict: TypeAlias = Mapping[str, Any] @@ -9413,7 +9413,7 @@ def __init__(__self__, *, 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: + The `f5_config` block supports: """ pulumi.set(__self__, "control_plane_vip", control_plane_vip) if addons_vip is not None: @@ -9438,7 +9438,7 @@ def addons_vip(self) -> Optional[pulumi.Input[str]]: """ The VIP to configure the load balancer for add-ons. - The `f5_config` block supports: + The `f5_config` block supports: """ return pulumi.get(self, "addons_vip") @@ -10080,7 +10080,7 @@ class VmwareAdminClusterPlatformConfigArgsDict(TypedDict): Structure is documented below. - The `status` block contains: + The `status` block contains: """ elif False: VmwareAdminClusterPlatformConfigArgsDict: TypeAlias = Mapping[str, Any] @@ -10108,7 +10108,7 @@ def __init__(__self__, *, Structure is documented below. - The `status` block contains: + The `status` block contains: """ if bundles is not None: pulumi.set(__self__, "bundles", bundles) @@ -10171,7 +10171,7 @@ def statuses(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['VmwareAdminCl Structure is documented below. - The `status` block contains: + The `status` block contains: """ return pulumi.get(self, "statuses") diff --git a/sdk/python/pulumi_gcp/gkeonprem/outputs.py b/sdk/python/pulumi_gcp/gkeonprem/outputs.py index 3c2444a804..7f67209a0f 100644 --- a/sdk/python/pulumi_gcp/gkeonprem/outputs.py +++ b/sdk/python/pulumi_gcp/gkeonprem/outputs.py @@ -4769,7 +4769,7 @@ def __init__(__self__, *, """ :param bool enabled: Whether to enable control plane node auto resizing. - The `vsphere_config` block contains: + The `vsphere_config` block contains: """ pulumi.set(__self__, "enabled", enabled) @@ -4779,7 +4779,7 @@ def enabled(self) -> bool: """ Whether to enable control plane node auto resizing. - The `vsphere_config` block contains: + The `vsphere_config` block contains: """ return pulumi.get(self, "enabled") @@ -5310,7 +5310,7 @@ def __init__(__self__, *, :param str control_plane_vip: The VIP which you previously set aside for the Kubernetes API of this cluster. :param str ingress_vip: The VIP which you previously set aside for ingress traffic into this cluster. - The `f5_config` block supports: + The `f5_config` block supports: """ if control_plane_vip is not None: pulumi.set(__self__, "control_plane_vip", control_plane_vip) @@ -5331,7 +5331,7 @@ def ingress_vip(self) -> Optional[str]: """ The VIP which you previously set aside for ingress traffic into this cluster. - The `f5_config` block supports: + The `f5_config` block supports: """ return pulumi.get(self, "ingress_vip") @@ -5630,7 +5630,7 @@ def __init__(__self__, *, """ :param Sequence[str] dns_search_domains: DNS search domains. - The `control_plane_v2_config` block supports: + The `control_plane_v2_config` block supports: :param Sequence[str] dns_servers: DNS servers. :param Sequence[str] ntp_servers: NTP servers. """ @@ -5647,7 +5647,7 @@ def dns_search_domains(self) -> Optional[Sequence[str]]: """ DNS search domains. - The `control_plane_v2_config` block supports: + The `control_plane_v2_config` block supports: """ return pulumi.get(self, "dns_search_domains") @@ -7336,7 +7336,7 @@ def __init__(__self__, *, 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: + The `f5_config` block supports: """ pulumi.set(__self__, "control_plane_vip", control_plane_vip) if addons_vip is not None: @@ -7357,7 +7357,7 @@ def addons_vip(self) -> Optional[str]: """ The VIP to configure the load balancer for add-ons. - The `f5_config` block supports: + The `f5_config` block supports: """ return pulumi.get(self, "addons_vip") @@ -7848,7 +7848,7 @@ def __init__(__self__, *, Structure is documented below. - The `status` block contains: + The `status` block contains: """ if bundles is not None: pulumi.set(__self__, "bundles", bundles) @@ -7899,7 +7899,7 @@ def statuses(self) -> Optional[Sequence['outputs.VmwareAdminClusterPlatformConfi Structure is documented below. - The `status` block contains: + The `status` block contains: """ return pulumi.get(self, "statuses") diff --git a/sdk/python/pulumi_gcp/gkeonprem/v_mware_cluster.py b/sdk/python/pulumi_gcp/gkeonprem/v_mware_cluster.py index ba3e517a08..664d3e95cd 100644 --- a/sdk/python/pulumi_gcp/gkeonprem/v_mware_cluster.py +++ b/sdk/python/pulumi_gcp/gkeonprem/v_mware_cluster.py @@ -2008,7 +2008,7 @@ def validation_checks(self) -> pulumi.Output[Sequence['outputs.VMwareClusterVali @property @pulumi.getter - def vcenter(self) -> pulumi.Output[Optional['outputs.VMwareClusterVcenter']]: + def vcenter(self) -> pulumi.Output['outputs.VMwareClusterVcenter']: """ VmwareVCenterConfig specifies vCenter config for the user cluster. Inherited from the admin cluster. """ diff --git a/sdk/python/pulumi_gcp/iap/_inputs.py b/sdk/python/pulumi_gcp/iap/_inputs.py index 592b2bd90e..c951dd0f7e 100644 --- a/sdk/python/pulumi_gcp/iap/_inputs.py +++ b/sdk/python/pulumi_gcp/iap/_inputs.py @@ -426,6 +426,7 @@ class SettingsAccessSettingsArgsDict(TypedDict): gcip_settings: NotRequired[pulumi.Input['SettingsAccessSettingsGcipSettingsArgsDict']] """ GCIP claims and endpoint configurations for 3p identity providers. + * Enabling gcipSetting significantly changes the way IAP authenticates users. Identity Platform does not support IAM, so IAP will not enforce any IAM policies for requests to your application. Structure is documented below. """ identity_sources: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]] @@ -471,6 +472,7 @@ def __init__(__self__, *, :param pulumi.Input['SettingsAccessSettingsCorsSettingsArgs'] cors_settings: Configuration to allow cross-origin requests via IAP. Structure is documented below. :param pulumi.Input['SettingsAccessSettingsGcipSettingsArgs'] gcip_settings: GCIP claims and endpoint configurations for 3p identity providers. + * Enabling gcipSetting significantly changes the way IAP authenticates users. Identity Platform does not support IAM, so IAP will not enforce any IAM policies for requests to your application. Structure is documented below. :param pulumi.Input[Sequence[pulumi.Input[str]]] identity_sources: Identity sources that IAP can use to authenticate the end user. Only one identity source can be configured. The possible values are: @@ -531,6 +533,7 @@ def cors_settings(self, value: Optional[pulumi.Input['SettingsAccessSettingsCors def gcip_settings(self) -> Optional[pulumi.Input['SettingsAccessSettingsGcipSettingsArgs']]: """ GCIP claims and endpoint configurations for 3p identity providers. + * Enabling gcipSetting significantly changes the way IAP authenticates users. Identity Platform does not support IAM, so IAP will not enforce any IAM policies for requests to your application. Structure is documented below. """ return pulumi.get(self, "gcip_settings") @@ -762,6 +765,7 @@ class SettingsAccessSettingsOauthSettingsArgsDict(TypedDict): (https://developers.google.com/identity/protocols/OpenIDConnect#hd-param) Note: IAP does not verify that the id token's hd claim matches this value since access behavior is managed by IAM policies. + * loginHint setting is not a replacement for access control. Always enforce an appropriate access policy if you want to restrict access to users outside your domain. """ programmatic_clients: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]] """ @@ -781,6 +785,7 @@ def __init__(__self__, *, (https://developers.google.com/identity/protocols/OpenIDConnect#hd-param) Note: IAP does not verify that the id token's hd claim matches this value since access behavior is managed by IAM policies. + * loginHint setting is not a replacement for access control. Always enforce an appropriate access policy if you want to restrict access to users outside your domain. :param pulumi.Input[Sequence[pulumi.Input[str]]] programmatic_clients: List of client ids allowed to use IAP programmatically. """ if login_hint is not None: @@ -797,6 +802,7 @@ def login_hint(self) -> Optional[pulumi.Input[str]]: (https://developers.google.com/identity/protocols/OpenIDConnect#hd-param) Note: IAP does not verify that the id token's hd claim matches this value since access behavior is managed by IAM policies. + * loginHint setting is not a replacement for access control. Always enforce an appropriate access policy if you want to restrict access to users outside your domain. """ return pulumi.get(self, "login_hint") @@ -931,7 +937,7 @@ class SettingsAccessSettingsWorkforceIdentitySettingsArgsDict(TypedDict): Structure is documented below. - The `oauth2` block supports: + The `oauth2` block supports: """ workforce_pools: NotRequired[pulumi.Input[str]] """ @@ -951,7 +957,7 @@ def __init__(__self__, *, Structure is documented below. - The `oauth2` block supports: + The `oauth2` block supports: :param pulumi.Input[str] workforce_pools: The workforce pool resources. Only one workforce pool is accepted. """ if oauth2 is not None: @@ -968,7 +974,7 @@ def oauth2(self) -> Optional[pulumi.Input['SettingsAccessSettingsWorkforceIdenti Structure is documented below. - The `oauth2` block supports: + The `oauth2` block supports: """ return pulumi.get(self, "oauth2") diff --git a/sdk/python/pulumi_gcp/iap/outputs.py b/sdk/python/pulumi_gcp/iap/outputs.py index 2e1be47cb7..5e60d2028a 100644 --- a/sdk/python/pulumi_gcp/iap/outputs.py +++ b/sdk/python/pulumi_gcp/iap/outputs.py @@ -291,6 +291,7 @@ def __init__(__self__, *, :param 'SettingsAccessSettingsCorsSettingsArgs' cors_settings: Configuration to allow cross-origin requests via IAP. Structure is documented below. :param 'SettingsAccessSettingsGcipSettingsArgs' gcip_settings: GCIP claims and endpoint configurations for 3p identity providers. + * Enabling gcipSetting significantly changes the way IAP authenticates users. Identity Platform does not support IAM, so IAP will not enforce any IAM policies for requests to your application. Structure is documented below. :param Sequence[str] identity_sources: Identity sources that IAP can use to authenticate the end user. Only one identity source can be configured. The possible values are: @@ -343,6 +344,7 @@ def cors_settings(self) -> Optional['outputs.SettingsAccessSettingsCorsSettings' def gcip_settings(self) -> Optional['outputs.SettingsAccessSettingsGcipSettings']: """ GCIP claims and endpoint configurations for 3p identity providers. + * Enabling gcipSetting significantly changes the way IAP authenticates users. Identity Platform does not support IAM, so IAP will not enforce any IAM policies for requests to your application. Structure is documented below. """ return pulumi.get(self, "gcip_settings") @@ -549,6 +551,7 @@ def __init__(__self__, *, (https://developers.google.com/identity/protocols/OpenIDConnect#hd-param) Note: IAP does not verify that the id token's hd claim matches this value since access behavior is managed by IAM policies. + * loginHint setting is not a replacement for access control. Always enforce an appropriate access policy if you want to restrict access to users outside your domain. :param Sequence[str] programmatic_clients: List of client ids allowed to use IAP programmatically. """ if login_hint is not None: @@ -565,6 +568,7 @@ def login_hint(self) -> Optional[str]: (https://developers.google.com/identity/protocols/OpenIDConnect#hd-param) Note: IAP does not verify that the id token's hd claim matches this value since access behavior is managed by IAM policies. + * loginHint setting is not a replacement for access control. Always enforce an appropriate access policy if you want to restrict access to users outside your domain. """ return pulumi.get(self, "login_hint") @@ -688,7 +692,7 @@ def __init__(__self__, *, Structure is documented below. - The `oauth2` block supports: + The `oauth2` block supports: :param str workforce_pools: The workforce pool resources. Only one workforce pool is accepted. """ if oauth2 is not None: @@ -705,7 +709,7 @@ def oauth2(self) -> Optional['outputs.SettingsAccessSettingsWorkforceIdentitySet Structure is documented below. - The `oauth2` block supports: + The `oauth2` block supports: """ return pulumi.get(self, "oauth2") diff --git a/sdk/python/pulumi_gcp/iap/settings.py b/sdk/python/pulumi_gcp/iap/settings.py index 0844d989a7..b71de32de0 100644 --- a/sdk/python/pulumi_gcp/iap/settings.py +++ b/sdk/python/pulumi_gcp/iap/settings.py @@ -33,15 +33,15 @@ def __init__(__self__, *, :param pulumi.Input[str] name: The resource name of the IAP protected resource. Name can have below resources: * organizations/{organization_id} * folders/{folder_id} - * projects/{projects_id} - * projects/{projects_id}/iap_web - * projects/{projects_id}/iap_web/compute - * projects/{projects_id}/iap_web/compute-{region} - * projects/{projects_id}/iap_web/compute/service/{service_id} - * projects/{projects_id}/iap_web/compute-{region}/service/{service_id} - * projects/{projects_id}/iap_web/appengine-{app_id} - * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id} - * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id} + * projects/{project_id} + * projects/{project_id}/iap_web + * projects/{project_id}/iap_web/compute + * projects/{project_id}/iap_web/compute-{region} + * projects/{project_id}/iap_web/compute/services/{service_id} + * projects/{project_id}/iap_web/compute-{region}/services/{service_id} + * projects/{project_id}/iap_web/appengine-{app_id} + * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id} + * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id} - - - @@ -86,15 +86,15 @@ def name(self) -> Optional[pulumi.Input[str]]: The resource name of the IAP protected resource. Name can have below resources: * organizations/{organization_id} * folders/{folder_id} - * projects/{projects_id} - * projects/{projects_id}/iap_web - * projects/{projects_id}/iap_web/compute - * projects/{projects_id}/iap_web/compute-{region} - * projects/{projects_id}/iap_web/compute/service/{service_id} - * projects/{projects_id}/iap_web/compute-{region}/service/{service_id} - * projects/{projects_id}/iap_web/appengine-{app_id} - * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id} - * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id} + * projects/{project_id} + * projects/{project_id}/iap_web + * projects/{project_id}/iap_web/compute + * projects/{project_id}/iap_web/compute-{region} + * projects/{project_id}/iap_web/compute/services/{service_id} + * projects/{project_id}/iap_web/compute-{region}/services/{service_id} + * projects/{project_id}/iap_web/appengine-{app_id} + * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id} + * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id} - - - @@ -121,15 +121,15 @@ def __init__(__self__, *, :param pulumi.Input[str] name: The resource name of the IAP protected resource. Name can have below resources: * organizations/{organization_id} * folders/{folder_id} - * projects/{projects_id} - * projects/{projects_id}/iap_web - * projects/{projects_id}/iap_web/compute - * projects/{projects_id}/iap_web/compute-{region} - * projects/{projects_id}/iap_web/compute/service/{service_id} - * projects/{projects_id}/iap_web/compute-{region}/service/{service_id} - * projects/{projects_id}/iap_web/appengine-{app_id} - * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id} - * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id} + * projects/{project_id} + * projects/{project_id}/iap_web + * projects/{project_id}/iap_web/compute + * projects/{project_id}/iap_web/compute-{region} + * projects/{project_id}/iap_web/compute/services/{service_id} + * projects/{project_id}/iap_web/compute-{region}/services/{service_id} + * projects/{project_id}/iap_web/appengine-{app_id} + * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id} + * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id} - - - @@ -174,15 +174,15 @@ def name(self) -> Optional[pulumi.Input[str]]: The resource name of the IAP protected resource. Name can have below resources: * organizations/{organization_id} * folders/{folder_id} - * projects/{projects_id} - * projects/{projects_id}/iap_web - * projects/{projects_id}/iap_web/compute - * projects/{projects_id}/iap_web/compute-{region} - * projects/{projects_id}/iap_web/compute/service/{service_id} - * projects/{projects_id}/iap_web/compute-{region}/service/{service_id} - * projects/{projects_id}/iap_web/appengine-{app_id} - * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id} - * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id} + * projects/{project_id} + * projects/{project_id}/iap_web + * projects/{project_id}/iap_web/compute + * projects/{project_id}/iap_web/compute-{region} + * projects/{project_id}/iap_web/compute/services/{service_id} + * projects/{project_id}/iap_web/compute-{region}/services/{service_id} + * projects/{project_id}/iap_web/appengine-{app_id} + * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id} + * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id} - - - @@ -309,15 +309,15 @@ def __init__(__self__, :param pulumi.Input[str] name: The resource name of the IAP protected resource. Name can have below resources: * organizations/{organization_id} * folders/{folder_id} - * projects/{projects_id} - * projects/{projects_id}/iap_web - * projects/{projects_id}/iap_web/compute - * projects/{projects_id}/iap_web/compute-{region} - * projects/{projects_id}/iap_web/compute/service/{service_id} - * projects/{projects_id}/iap_web/compute-{region}/service/{service_id} - * projects/{projects_id}/iap_web/appengine-{app_id} - * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id} - * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id} + * projects/{project_id} + * projects/{project_id}/iap_web + * projects/{project_id}/iap_web/compute + * projects/{project_id}/iap_web/compute-{region} + * projects/{project_id}/iap_web/compute/services/{service_id} + * projects/{project_id}/iap_web/compute-{region}/services/{service_id} + * projects/{project_id}/iap_web/appengine-{app_id} + * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id} + * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id} - - - @@ -482,15 +482,15 @@ def get(resource_name: str, :param pulumi.Input[str] name: The resource name of the IAP protected resource. Name can have below resources: * organizations/{organization_id} * folders/{folder_id} - * projects/{projects_id} - * projects/{projects_id}/iap_web - * projects/{projects_id}/iap_web/compute - * projects/{projects_id}/iap_web/compute-{region} - * projects/{projects_id}/iap_web/compute/service/{service_id} - * projects/{projects_id}/iap_web/compute-{region}/service/{service_id} - * projects/{projects_id}/iap_web/appengine-{app_id} - * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id} - * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id} + * projects/{project_id} + * projects/{project_id}/iap_web + * projects/{project_id}/iap_web/compute + * projects/{project_id}/iap_web/compute-{region} + * projects/{project_id}/iap_web/compute/services/{service_id} + * projects/{project_id}/iap_web/compute-{region}/services/{service_id} + * projects/{project_id}/iap_web/appengine-{app_id} + * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id} + * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id} - - - @@ -529,15 +529,15 @@ def name(self) -> pulumi.Output[str]: The resource name of the IAP protected resource. Name can have below resources: * organizations/{organization_id} * folders/{folder_id} - * projects/{projects_id} - * projects/{projects_id}/iap_web - * projects/{projects_id}/iap_web/compute - * projects/{projects_id}/iap_web/compute-{region} - * projects/{projects_id}/iap_web/compute/service/{service_id} - * projects/{projects_id}/iap_web/compute-{region}/service/{service_id} - * projects/{projects_id}/iap_web/appengine-{app_id} - * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id} - * projects/{projects_id}/iap_web/appengine-{app_id}/service/{service_id}/version/{version_id} + * projects/{project_id} + * projects/{project_id}/iap_web + * projects/{project_id}/iap_web/compute + * projects/{project_id}/iap_web/compute-{region} + * projects/{project_id}/iap_web/compute/services/{service_id} + * projects/{project_id}/iap_web/compute-{region}/services/{service_id} + * projects/{project_id}/iap_web/appengine-{app_id} + * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id} + * projects/{project_id}/iap_web/appengine-{app_id}/services/{service_id}/version/{version_id} - - - diff --git a/sdk/python/pulumi_gcp/identityplatform/_inputs.py b/sdk/python/pulumi_gcp/identityplatform/_inputs.py index 4b6db10a91..290f6198b5 100644 --- a/sdk/python/pulumi_gcp/identityplatform/_inputs.py +++ b/sdk/python/pulumi_gcp/identityplatform/_inputs.py @@ -954,7 +954,7 @@ class ConfigSignInAnonymousArgsDict(TypedDict): """ Whether anonymous user auth is enabled for the project or not. - The `hash_config` block contains: + The `hash_config` block contains: """ elif False: ConfigSignInAnonymousArgsDict: TypeAlias = Mapping[str, Any] @@ -966,7 +966,7 @@ def __init__(__self__, *, """ :param pulumi.Input[bool] enabled: Whether anonymous user auth is enabled for the project or not. - The `hash_config` block contains: + The `hash_config` block contains: """ pulumi.set(__self__, "enabled", enabled) @@ -976,7 +976,7 @@ def enabled(self) -> pulumi.Input[bool]: """ Whether anonymous user auth is enabled for the project or not. - The `hash_config` block contains: + The `hash_config` block contains: """ return pulumi.get(self, "enabled") @@ -1464,7 +1464,7 @@ class InboundSamlConfigSpConfigArgsDict(TypedDict): Structure is documented below. - The `sp_certificates` block contains: + The `sp_certificates` block contains: """ sp_entity_id: NotRequired[pulumi.Input[str]] """ @@ -1486,7 +1486,7 @@ def __init__(__self__, *, Structure is documented below. - The `sp_certificates` block contains: + The `sp_certificates` block contains: :param pulumi.Input[str] sp_entity_id: Unique identifier for all SAML entities. """ if callback_uri is not None: @@ -1517,7 +1517,7 @@ def sp_certificates(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['Inboun Structure is documented below. - The `sp_certificates` block contains: + The `sp_certificates` block contains: """ return pulumi.get(self, "sp_certificates") @@ -1711,7 +1711,7 @@ class TenantInboundSamlConfigSpConfigArgsDict(TypedDict): Structure is documented below. - The `sp_certificates` block contains: + The `sp_certificates` block contains: """ elif False: TenantInboundSamlConfigSpConfigArgsDict: TypeAlias = Mapping[str, Any] @@ -1730,7 +1730,7 @@ def __init__(__self__, *, Structure is documented below. - The `sp_certificates` block contains: + The `sp_certificates` block contains: """ pulumi.set(__self__, "callback_uri", callback_uri) pulumi.set(__self__, "sp_entity_id", sp_entity_id) @@ -1770,7 +1770,7 @@ def sp_certificates(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['Tenant Structure is documented below. - The `sp_certificates` block contains: + The `sp_certificates` block contains: """ return pulumi.get(self, "sp_certificates") diff --git a/sdk/python/pulumi_gcp/identityplatform/outputs.py b/sdk/python/pulumi_gcp/identityplatform/outputs.py index 94c704fa4a..df55ecb3a1 100644 --- a/sdk/python/pulumi_gcp/identityplatform/outputs.py +++ b/sdk/python/pulumi_gcp/identityplatform/outputs.py @@ -820,7 +820,7 @@ def __init__(__self__, *, """ :param bool enabled: Whether anonymous user auth is enabled for the project or not. - The `hash_config` block contains: + The `hash_config` block contains: """ pulumi.set(__self__, "enabled", enabled) @@ -830,7 +830,7 @@ def enabled(self) -> bool: """ Whether anonymous user auth is enabled for the project or not. - The `hash_config` block contains: + The `hash_config` block contains: """ return pulumi.get(self, "enabled") @@ -1294,7 +1294,7 @@ def __init__(__self__, *, Structure is documented below. - The `sp_certificates` block contains: + The `sp_certificates` block contains: :param str sp_entity_id: Unique identifier for all SAML entities. """ if callback_uri is not None: @@ -1321,7 +1321,7 @@ def sp_certificates(self) -> Optional[Sequence['outputs.InboundSamlConfigSpConfi Structure is documented below. - The `sp_certificates` block contains: + The `sp_certificates` block contains: """ return pulumi.get(self, "sp_certificates") @@ -1518,7 +1518,7 @@ def __init__(__self__, *, Structure is documented below. - The `sp_certificates` block contains: + The `sp_certificates` block contains: """ pulumi.set(__self__, "callback_uri", callback_uri) pulumi.set(__self__, "sp_entity_id", sp_entity_id) @@ -1550,7 +1550,7 @@ def sp_certificates(self) -> Optional[Sequence['outputs.TenantInboundSamlConfigS Structure is documented below. - The `sp_certificates` block contains: + The `sp_certificates` block contains: """ return pulumi.get(self, "sp_certificates") diff --git a/sdk/python/pulumi_gcp/integrationconnectors/_inputs.py b/sdk/python/pulumi_gcp/integrationconnectors/_inputs.py index e72e58c068..d2f63a1b9a 100644 --- a/sdk/python/pulumi_gcp/integrationconnectors/_inputs.py +++ b/sdk/python/pulumi_gcp/integrationconnectors/_inputs.py @@ -864,7 +864,7 @@ class ConnectionAuthConfigOauth2JwtBearerJwtClaimsArgsDict(TypedDict): """ Value for the "aud" claim. - The `oauth2_client_credentials` block supports: + The `oauth2_client_credentials` block supports: """ issuer: NotRequired[pulumi.Input[str]] """ @@ -886,7 +886,7 @@ def __init__(__self__, *, """ :param pulumi.Input[str] audience: Value for the "aud" claim. - The `oauth2_client_credentials` block supports: + The `oauth2_client_credentials` block supports: :param pulumi.Input[str] issuer: Value for the "iss" claim. :param pulumi.Input[str] subject: Value for the "sub" claim. """ @@ -903,7 +903,7 @@ def audience(self) -> Optional[pulumi.Input[str]]: """ Value for the "aud" claim. - The `oauth2_client_credentials` block supports: + The `oauth2_client_credentials` block supports: """ return pulumi.get(self, "audience") @@ -1074,7 +1074,7 @@ class ConnectionAuthConfigSshPublicKeySshClientCertPassArgsDict(TypedDict): The resource name of the secret version in the format, format as: projects/*/secrets/*/versions/*. - The `oauth2_auth_code_flow` block supports: + The `oauth2_auth_code_flow` block supports: """ elif False: ConnectionAuthConfigSshPublicKeySshClientCertPassArgsDict: TypeAlias = Mapping[str, Any] @@ -1087,7 +1087,7 @@ def __init__(__self__, *, :param pulumi.Input[str] secret_version: The resource name of the secret version in the format, format as: projects/*/secrets/*/versions/*. - The `oauth2_auth_code_flow` block supports: + The `oauth2_auth_code_flow` block supports: """ pulumi.set(__self__, "secret_version", secret_version) @@ -1098,7 +1098,7 @@ def secret_version(self) -> pulumi.Input[str]: The resource name of the secret version in the format, format as: projects/*/secrets/*/versions/*. - The `oauth2_auth_code_flow` block supports: + The `oauth2_auth_code_flow` block supports: """ return pulumi.get(self, "secret_version") diff --git a/sdk/python/pulumi_gcp/integrationconnectors/outputs.py b/sdk/python/pulumi_gcp/integrationconnectors/outputs.py index 707547b58b..33a82d87c0 100644 --- a/sdk/python/pulumi_gcp/integrationconnectors/outputs.py +++ b/sdk/python/pulumi_gcp/integrationconnectors/outputs.py @@ -721,7 +721,7 @@ def __init__(__self__, *, """ :param str audience: Value for the "aud" claim. - The `oauth2_client_credentials` block supports: + The `oauth2_client_credentials` block supports: :param str issuer: Value for the "iss" claim. :param str subject: Value for the "sub" claim. """ @@ -738,7 +738,7 @@ def audience(self) -> Optional[str]: """ Value for the "aud" claim. - The `oauth2_client_credentials` block supports: + The `oauth2_client_credentials` block supports: """ return pulumi.get(self, "audience") @@ -900,7 +900,7 @@ def __init__(__self__, *, :param str secret_version: The resource name of the secret version in the format, format as: projects/*/secrets/*/versions/*. - The `oauth2_auth_code_flow` block supports: + The `oauth2_auth_code_flow` block supports: """ pulumi.set(__self__, "secret_version", secret_version) @@ -911,7 +911,7 @@ def secret_version(self) -> str: The resource name of the secret version in the format, format as: projects/*/secrets/*/versions/*. - The `oauth2_auth_code_flow` block supports: + The `oauth2_auth_code_flow` block supports: """ return pulumi.get(self, "secret_version") diff --git a/sdk/python/pulumi_gcp/monitoring/_inputs.py b/sdk/python/pulumi_gcp/monitoring/_inputs.py index 9702e4c836..0a0624cdf7 100644 --- a/sdk/python/pulumi_gcp/monitoring/_inputs.py +++ b/sdk/python/pulumi_gcp/monitoring/_inputs.py @@ -5868,7 +5868,7 @@ class UptimeCheckConfigSyntheticMonitorArgsDict(TypedDict): Structure is documented below. - The `cloud_function_v2` block supports: + The `cloud_function_v2` block supports: """ elif False: UptimeCheckConfigSyntheticMonitorArgsDict: TypeAlias = Mapping[str, Any] @@ -5882,7 +5882,7 @@ def __init__(__self__, *, Structure is documented below. - The `cloud_function_v2` block supports: + The `cloud_function_v2` block supports: """ pulumi.set(__self__, "cloud_function_v2", cloud_function_v2) @@ -5894,7 +5894,7 @@ def cloud_function_v2(self) -> pulumi.Input['UptimeCheckConfigSyntheticMonitorCl Structure is documented below. - The `cloud_function_v2` block supports: + The `cloud_function_v2` block supports: """ return pulumi.get(self, "cloud_function_v2") diff --git a/sdk/python/pulumi_gcp/monitoring/outputs.py b/sdk/python/pulumi_gcp/monitoring/outputs.py index 0ebd7b2f8f..33ce65ed48 100644 --- a/sdk/python/pulumi_gcp/monitoring/outputs.py +++ b/sdk/python/pulumi_gcp/monitoring/outputs.py @@ -4367,7 +4367,7 @@ def __init__(__self__, *, Structure is documented below. - The `cloud_function_v2` block supports: + The `cloud_function_v2` block supports: """ pulumi.set(__self__, "cloud_function_v2", cloud_function_v2) @@ -4379,7 +4379,7 @@ def cloud_function_v2(self) -> 'outputs.UptimeCheckConfigSyntheticMonitorCloudFu Structure is documented below. - The `cloud_function_v2` block supports: + The `cloud_function_v2` block supports: """ return pulumi.get(self, "cloud_function_v2") diff --git a/sdk/python/pulumi_gcp/oracledatabase/_inputs.py b/sdk/python/pulumi_gcp/oracledatabase/_inputs.py index ac2f270597..eef4ece2e1 100644 --- a/sdk/python/pulumi_gcp/oracledatabase/_inputs.py +++ b/sdk/python/pulumi_gcp/oracledatabase/_inputs.py @@ -2370,7 +2370,7 @@ class AutonomousDatabasePropertiesCustomerContactArgsDict(TypedDict): The email address used by Oracle to send notifications regarding databases and infrastructure. - The `apex_details` block contains: + The `apex_details` block contains: """ elif False: AutonomousDatabasePropertiesCustomerContactArgsDict: TypeAlias = Mapping[str, Any] @@ -2383,7 +2383,7 @@ def __init__(__self__, *, :param pulumi.Input[str] email: The email address used by Oracle to send notifications regarding databases and infrastructure. - The `apex_details` block contains: + The `apex_details` block contains: """ pulumi.set(__self__, "email", email) @@ -2394,7 +2394,7 @@ def email(self) -> pulumi.Input[str]: The email address used by Oracle to send notifications regarding databases and infrastructure. - The `apex_details` block contains: + The `apex_details` block contains: """ return pulumi.get(self, "email") diff --git a/sdk/python/pulumi_gcp/oracledatabase/outputs.py b/sdk/python/pulumi_gcp/oracledatabase/outputs.py index 519b93f75f..527656c826 100644 --- a/sdk/python/pulumi_gcp/oracledatabase/outputs.py +++ b/sdk/python/pulumi_gcp/oracledatabase/outputs.py @@ -1721,7 +1721,7 @@ def __init__(__self__, *, :param str email: The email address used by Oracle to send notifications regarding databases and infrastructure. - The `apex_details` block contains: + The `apex_details` block contains: """ pulumi.set(__self__, "email", email) @@ -1732,7 +1732,7 @@ def email(self) -> str: The email address used by Oracle to send notifications regarding databases and infrastructure. - The `apex_details` block contains: + The `apex_details` block contains: """ return pulumi.get(self, "email") diff --git a/sdk/python/pulumi_gcp/sql/_inputs.py b/sdk/python/pulumi_gcp/sql/_inputs.py index 652ed4930c..6c7057e267 100644 --- a/sdk/python/pulumi_gcp/sql/_inputs.py +++ b/sdk/python/pulumi_gcp/sql/_inputs.py @@ -1870,6 +1870,10 @@ class DatabaseInstanceSettingsIpConfigurationArgsDict(TypedDict): """ Specify how the server certificate's Certificate Authority is hosted. Supported values are `GOOGLE_MANAGED_INTERNAL_CA` and `GOOGLE_MANAGED_CAS_CA`. """ + server_ca_pool: NotRequired[pulumi.Input[str]] + """ + The resource name of the server CA pool for an instance with `CUSTOMER_MANAGED_CAS_CA` as the `server_ca_mode`. + """ ssl_mode: NotRequired[pulumi.Input[str]] """ Specify how SSL connection should be enforced in DB connections. Supported values are `ALLOW_UNENCRYPTED_AND_ENCRYPTED`, `ENCRYPTED_ONLY`, and `TRUSTED_CLIENT_CERTIFICATE_REQUIRED` (not supported for SQL Server). See [API reference doc](https://cloud.google.com/sql/docs/postgres/admin-api/rest/v1/instances#ipconfiguration) for details. @@ -1887,6 +1891,7 @@ def __init__(__self__, *, private_network: Optional[pulumi.Input[str]] = None, psc_configs: Optional[pulumi.Input[Sequence[pulumi.Input['DatabaseInstanceSettingsIpConfigurationPscConfigArgs']]]] = None, server_ca_mode: Optional[pulumi.Input[str]] = None, + server_ca_pool: Optional[pulumi.Input[str]] = None, ssl_mode: Optional[pulumi.Input[str]] = None): """ :param pulumi.Input[str] allocated_ip_range: The name of the allocated ip range for the private ip CloudSQL instance. For example: "google-managed-services-default". If set, the instance ip will be created in the allocated range. The range name must comply with [RFC 1035](https://datatracker.ietf.org/doc/html/rfc1035). Specifically, the name must be 1-63 characters long and match the regular expression a-z?. @@ -1901,6 +1906,7 @@ def __init__(__self__, *, This setting can be updated, but it cannot be removed after it is set. :param pulumi.Input[Sequence[pulumi.Input['DatabaseInstanceSettingsIpConfigurationPscConfigArgs']]] psc_configs: PSC settings for a Cloud SQL instance. :param pulumi.Input[str] server_ca_mode: Specify how the server certificate's Certificate Authority is hosted. Supported values are `GOOGLE_MANAGED_INTERNAL_CA` and `GOOGLE_MANAGED_CAS_CA`. + :param pulumi.Input[str] server_ca_pool: The resource name of the server CA pool for an instance with `CUSTOMER_MANAGED_CAS_CA` as the `server_ca_mode`. :param pulumi.Input[str] ssl_mode: Specify how SSL connection should be enforced in DB connections. Supported values are `ALLOW_UNENCRYPTED_AND_ENCRYPTED`, `ENCRYPTED_ONLY`, and `TRUSTED_CLIENT_CERTIFICATE_REQUIRED` (not supported for SQL Server). See [API reference doc](https://cloud.google.com/sql/docs/postgres/admin-api/rest/v1/instances#ipconfiguration) for details. """ if allocated_ip_range is not None: @@ -1917,6 +1923,8 @@ def __init__(__self__, *, pulumi.set(__self__, "psc_configs", psc_configs) if server_ca_mode is not None: pulumi.set(__self__, "server_ca_mode", server_ca_mode) + if server_ca_pool is not None: + pulumi.set(__self__, "server_ca_pool", server_ca_pool) if ssl_mode is not None: pulumi.set(__self__, "ssl_mode", ssl_mode) @@ -2007,6 +2015,18 @@ def server_ca_mode(self) -> Optional[pulumi.Input[str]]: def server_ca_mode(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "server_ca_mode", value) + @property + @pulumi.getter(name="serverCaPool") + def server_ca_pool(self) -> Optional[pulumi.Input[str]]: + """ + The resource name of the server CA pool for an instance with `CUSTOMER_MANAGED_CAS_CA` as the `server_ca_mode`. + """ + return pulumi.get(self, "server_ca_pool") + + @server_ca_pool.setter + def server_ca_pool(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "server_ca_pool", value) + @property @pulumi.getter(name="sslMode") def ssl_mode(self) -> Optional[pulumi.Input[str]]: diff --git a/sdk/python/pulumi_gcp/sql/database_instance.py b/sdk/python/pulumi_gcp/sql/database_instance.py index 07ef68c2cd..48a2bdea04 100644 --- a/sdk/python/pulumi_gcp/sql/database_instance.py +++ b/sdk/python/pulumi_gcp/sql/database_instance.py @@ -835,7 +835,7 @@ def __init__(__self__, settings: Optional[pulumi.Input[Union['DatabaseInstanceSettingsArgs', 'DatabaseInstanceSettingsArgsDict']]] = None, __props__=None): """ - Creates a new Google SQL Database Instance. For more information, see the [official documentation](https://cloud.google.com/sql/), + Creates a new Google SQL Database Instance. For more information, see the [official documentation](https://cloud.google.com/sql/docs/mysql/create-instance), or the [JSON API](https://cloud.google.com/sql/docs/admin-api/v1beta4/instances). > **NOTE on `sql.DatabaseInstance`:** - Second-generation instances include a @@ -1093,7 +1093,7 @@ def __init__(__self__, args: DatabaseInstanceArgs, opts: Optional[pulumi.ResourceOptions] = None): """ - Creates a new Google SQL Database Instance. For more information, see the [official documentation](https://cloud.google.com/sql/), + Creates a new Google SQL Database Instance. For more information, see the [official documentation](https://cloud.google.com/sql/docs/mysql/create-instance), or the [JSON API](https://cloud.google.com/sql/docs/admin-api/v1beta4/instances). > **NOTE on `sql.DatabaseInstance`:** - Second-generation instances include a diff --git a/sdk/python/pulumi_gcp/sql/outputs.py b/sdk/python/pulumi_gcp/sql/outputs.py index 54963bff52..f9e028822b 100644 --- a/sdk/python/pulumi_gcp/sql/outputs.py +++ b/sdk/python/pulumi_gcp/sql/outputs.py @@ -1480,6 +1480,8 @@ def __key_warning(key: str): suggest = "psc_configs" elif key == "serverCaMode": suggest = "server_ca_mode" + elif key == "serverCaPool": + suggest = "server_ca_pool" elif key == "sslMode": suggest = "ssl_mode" @@ -1502,6 +1504,7 @@ def __init__(__self__, *, private_network: Optional[str] = None, psc_configs: Optional[Sequence['outputs.DatabaseInstanceSettingsIpConfigurationPscConfig']] = None, server_ca_mode: Optional[str] = None, + server_ca_pool: Optional[str] = None, ssl_mode: Optional[str] = None): """ :param str allocated_ip_range: The name of the allocated ip range for the private ip CloudSQL instance. For example: "google-managed-services-default". If set, the instance ip will be created in the allocated range. The range name must comply with [RFC 1035](https://datatracker.ietf.org/doc/html/rfc1035). Specifically, the name must be 1-63 characters long and match the regular expression a-z?. @@ -1516,6 +1519,7 @@ def __init__(__self__, *, This setting can be updated, but it cannot be removed after it is set. :param Sequence['DatabaseInstanceSettingsIpConfigurationPscConfigArgs'] psc_configs: PSC settings for a Cloud SQL instance. :param str server_ca_mode: Specify how the server certificate's Certificate Authority is hosted. Supported values are `GOOGLE_MANAGED_INTERNAL_CA` and `GOOGLE_MANAGED_CAS_CA`. + :param str server_ca_pool: The resource name of the server CA pool for an instance with `CUSTOMER_MANAGED_CAS_CA` as the `server_ca_mode`. :param str ssl_mode: Specify how SSL connection should be enforced in DB connections. Supported values are `ALLOW_UNENCRYPTED_AND_ENCRYPTED`, `ENCRYPTED_ONLY`, and `TRUSTED_CLIENT_CERTIFICATE_REQUIRED` (not supported for SQL Server). See [API reference doc](https://cloud.google.com/sql/docs/postgres/admin-api/rest/v1/instances#ipconfiguration) for details. """ if allocated_ip_range is not None: @@ -1532,6 +1536,8 @@ def __init__(__self__, *, pulumi.set(__self__, "psc_configs", psc_configs) if server_ca_mode is not None: pulumi.set(__self__, "server_ca_mode", server_ca_mode) + if server_ca_pool is not None: + pulumi.set(__self__, "server_ca_pool", server_ca_pool) if ssl_mode is not None: pulumi.set(__self__, "ssl_mode", ssl_mode) @@ -1594,6 +1600,14 @@ def server_ca_mode(self) -> Optional[str]: """ return pulumi.get(self, "server_ca_mode") + @property + @pulumi.getter(name="serverCaPool") + def server_ca_pool(self) -> Optional[str]: + """ + The resource name of the server CA pool for an instance with `CUSTOMER_MANAGED_CAS_CA` as the `server_ca_mode`. + """ + return pulumi.get(self, "server_ca_pool") + @property @pulumi.getter(name="sslMode") def ssl_mode(self) -> Optional[str]: @@ -3249,6 +3263,7 @@ def __init__(__self__, *, private_network: str, psc_configs: Sequence['outputs.GetDatabaseInstanceSettingIpConfigurationPscConfigResult'], server_ca_mode: str, + server_ca_pool: str, ssl_mode: str): """ :param str allocated_ip_range: The name of the allocated ip range for the private ip CloudSQL instance. For example: "google-managed-services-default". If set, the instance ip will be created in the allocated range. The range name must comply with RFC 1035. Specifically, the name must be 1-63 characters long and match the regular expression a-z?. @@ -3257,6 +3272,7 @@ def __init__(__self__, *, :param str private_network: The VPC network from which the Cloud SQL instance is accessible for private IP. For example, projects/myProject/global/networks/default. Specifying a network enables private IP. At least ipv4_enabled must be enabled or a private_network must be configured. This setting can be updated, but it cannot be removed after it is set. :param Sequence['GetDatabaseInstanceSettingIpConfigurationPscConfigArgs'] psc_configs: PSC settings for a Cloud SQL instance. :param str server_ca_mode: Specify how the server certificate's Certificate Authority is hosted. + :param str server_ca_pool: The resource name of the server CA pool for an instance with "CUSTOMER_MANAGED_CAS_CA" as the "server_ca_mode". :param str ssl_mode: Specify how SSL connection should be enforced in DB connections. """ pulumi.set(__self__, "allocated_ip_range", allocated_ip_range) @@ -3266,6 +3282,7 @@ def __init__(__self__, *, pulumi.set(__self__, "private_network", private_network) pulumi.set(__self__, "psc_configs", psc_configs) pulumi.set(__self__, "server_ca_mode", server_ca_mode) + pulumi.set(__self__, "server_ca_pool", server_ca_pool) pulumi.set(__self__, "ssl_mode", ssl_mode) @property @@ -3321,6 +3338,14 @@ def server_ca_mode(self) -> str: """ return pulumi.get(self, "server_ca_mode") + @property + @pulumi.getter(name="serverCaPool") + def server_ca_pool(self) -> str: + """ + The resource name of the server CA pool for an instance with "CUSTOMER_MANAGED_CAS_CA" as the "server_ca_mode". + """ + return pulumi.get(self, "server_ca_pool") + @property @pulumi.getter(name="sslMode") def ssl_mode(self) -> str: @@ -4814,6 +4839,7 @@ def __init__(__self__, *, private_network: str, psc_configs: Sequence['outputs.GetDatabaseInstancesInstanceSettingIpConfigurationPscConfigResult'], server_ca_mode: str, + server_ca_pool: str, ssl_mode: str): """ :param str allocated_ip_range: The name of the allocated ip range for the private ip CloudSQL instance. For example: "google-managed-services-default". If set, the instance ip will be created in the allocated range. The range name must comply with RFC 1035. Specifically, the name must be 1-63 characters long and match the regular expression a-z?. @@ -4822,6 +4848,7 @@ def __init__(__self__, *, :param str private_network: The VPC network from which the Cloud SQL instance is accessible for private IP. For example, projects/myProject/global/networks/default. Specifying a network enables private IP. At least ipv4_enabled must be enabled or a private_network must be configured. This setting can be updated, but it cannot be removed after it is set. :param Sequence['GetDatabaseInstancesInstanceSettingIpConfigurationPscConfigArgs'] psc_configs: PSC settings for a Cloud SQL instance. :param str server_ca_mode: Specify how the server certificate's Certificate Authority is hosted. + :param str server_ca_pool: The resource name of the server CA pool for an instance with "CUSTOMER_MANAGED_CAS_CA" as the "server_ca_mode". :param str ssl_mode: Specify how SSL connection should be enforced in DB connections. """ pulumi.set(__self__, "allocated_ip_range", allocated_ip_range) @@ -4831,6 +4858,7 @@ def __init__(__self__, *, pulumi.set(__self__, "private_network", private_network) pulumi.set(__self__, "psc_configs", psc_configs) pulumi.set(__self__, "server_ca_mode", server_ca_mode) + pulumi.set(__self__, "server_ca_pool", server_ca_pool) pulumi.set(__self__, "ssl_mode", ssl_mode) @property @@ -4886,6 +4914,14 @@ def server_ca_mode(self) -> str: """ return pulumi.get(self, "server_ca_mode") + @property + @pulumi.getter(name="serverCaPool") + def server_ca_pool(self) -> str: + """ + The resource name of the server CA pool for an instance with "CUSTOMER_MANAGED_CAS_CA" as the "server_ca_mode". + """ + return pulumi.get(self, "server_ca_pool") + @property @pulumi.getter(name="sslMode") def ssl_mode(self) -> str: diff --git a/sdk/python/pulumi_gcp/transcoder/_inputs.py b/sdk/python/pulumi_gcp/transcoder/_inputs.py index 30ad641d04..1db0e4df00 100644 --- a/sdk/python/pulumi_gcp/transcoder/_inputs.py +++ b/sdk/python/pulumi_gcp/transcoder/_inputs.py @@ -682,7 +682,7 @@ class JobConfigElementaryStreamVideoStreamArgsDict(TypedDict): Structure is documented below. - The `h264` block supports: + The `h264` block supports: """ elif False: JobConfigElementaryStreamVideoStreamArgsDict: TypeAlias = Mapping[str, Any] @@ -696,7 +696,7 @@ def __init__(__self__, *, Structure is documented below. - The `h264` block supports: + The `h264` block supports: """ if h264 is not None: pulumi.set(__self__, "h264", h264) @@ -709,7 +709,7 @@ def h264(self) -> Optional[pulumi.Input['JobConfigElementaryStreamVideoStreamH26 Structure is documented below. - The `h264` block supports: + The `h264` block supports: """ return pulumi.get(self, "h264") @@ -2607,7 +2607,7 @@ class JobTemplateConfigElementaryStreamVideoStreamArgsDict(TypedDict): Structure is documented below. - The `h264` block supports: + The `h264` block supports: """ elif False: JobTemplateConfigElementaryStreamVideoStreamArgsDict: TypeAlias = Mapping[str, Any] @@ -2621,7 +2621,7 @@ def __init__(__self__, *, Structure is documented below. - The `h264` block supports: + The `h264` block supports: """ if h264 is not None: pulumi.set(__self__, "h264", h264) @@ -2634,7 +2634,7 @@ def h264(self) -> Optional[pulumi.Input['JobTemplateConfigElementaryStreamVideoS Structure is documented below. - The `h264` block supports: + The `h264` block supports: """ return pulumi.get(self, "h264") diff --git a/sdk/python/pulumi_gcp/transcoder/outputs.py b/sdk/python/pulumi_gcp/transcoder/outputs.py index eb3d48f16f..445945397c 100644 --- a/sdk/python/pulumi_gcp/transcoder/outputs.py +++ b/sdk/python/pulumi_gcp/transcoder/outputs.py @@ -510,7 +510,7 @@ def __init__(__self__, *, Structure is documented below. - The `h264` block supports: + The `h264` block supports: """ if h264 is not None: pulumi.set(__self__, "h264", h264) @@ -523,7 +523,7 @@ def h264(self) -> Optional['outputs.JobConfigElementaryStreamVideoStreamH264']: Structure is documented below. - The `h264` block supports: + The `h264` block supports: """ return pulumi.get(self, "h264") @@ -1929,7 +1929,7 @@ def __init__(__self__, *, Structure is documented below. - The `h264` block supports: + The `h264` block supports: """ if h264 is not None: pulumi.set(__self__, "h264", h264) @@ -1942,7 +1942,7 @@ def h264(self) -> Optional['outputs.JobTemplateConfigElementaryStreamVideoStream Structure is documented below. - The `h264` block supports: + The `h264` block supports: """ return pulumi.get(self, "h264") diff --git a/upstream b/upstream index 8e9f825507..9ea7b0adf3 160000 --- a/upstream +++ b/upstream @@ -1 +1 @@ -Subproject commit 8e9f8255077bc3fd322249cbababb50b56328e8c +Subproject commit 9ea7b0adf3c63370005aef1d6ed92d0baaf429e5